RicoCasta / opencinematools

Automatically exported from code.google.com/p/opencinematools
0 stars 0 forks source link

simple playback of DCP #36

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
like the DcpMaker GUI of opencinematools, how about developing a simple GUI 
which can playback a DCP. If some experienced one can describe the steps 
involved and the difficulty level, some one interested may give it a try.

Original issue reported on code.google.com by ramprasa...@gmail.com on 8 Jun 2010 at 12:47

GoogleCodeExporter commented 8 years ago
To have an opensource DCP player would be quite neat.

2 problems:

1) JPEG 2000 decoding is relatively cpu-expensive. To produce 24fps output (let 
alone higher framerates) at full (or even half) resolution without dedicated 
hardware (CUDA card etc.) is still just that bit out of range for current CPU 
archs.
   Kakadu comes close. Fraunhofer use that and they have customized CUJ2K (for CUDA devices, if present) for their player application and they are close as well, but not quite there. Peter Wimmer, the developer of StereoscopicPlayer (http://www.3dtv.at/Index_de.aspx -- German), has put a lot of effort into openjpeg optimizations but in addition he is using clever tricks and fallbacks to make it happen.

2) The player would have to be a DCP validator to be useful beyond playing an 
mxf trackfile (which you can already do with tools like ffplay). It needs to 
handle Reels, at least. While not exceptionally hard to do it right it's not 
trivial either. Then there's a number of smart things you can do with 
CompositionPlaylists, Reels, PackingLists. And subtitle rendering (text and 
images).

All in all it's a lot of work and I'm just glad someone (you) finally stepped 
up to do it :)

Wolfgang Woehl

Original comment by photonra...@gmail.com on 9 Jun 2010 at 5:50

GoogleCodeExporter commented 8 years ago
Hello Wolfgang Woelh,

Thank you very much for your explanation.

I am beginner for DCP and having little knowledge on DCP.

Now I am planning to write DCP player on VC++. As my first step I am writing 
code to play only mxf files with out any keys and encryption.

I configure asdcp library and openssl and began coding to develop a DCP player.

Here I am listing what I did

1) Created a video mxf file using asdcp-test.exe as "new_trackfile.mxf"

2) Opened this mxf file in my program using asdcp library.

The asdcp library is reading frame by frame from mxf file and is giving frame 
data in to a "JP2K::FrameBuffer". 

I am taking buffer data into a byte array (as byte_t* buf=FrameBuffer.Data()) 
and preparing a device indipent bitmap for this data and bitblting (displaying) 
to the screen. The same action i am doing for every frame. 

But I am getting some garbage on screen instead of image.

I did this in another way, First write the frame on to physical device(given in 
asdcp-test.cpp) and reading this using some thirdpary JPEG2000 library and 
bitblting(displaying) on to screen. If this is ok for video mxf, then what 
about sound mxf. I need to synctonizing video and sound while playing. I think 
this is not correct method.

My doubt is do i need to decode this buffer data again using JPEG 2000 library? 
I am not able to send this byte array to my 3rd party JPEG 2000 library.

Where can i get complete information about DCP player things?

Can anyone plase help me how to proceed?

Thanks in advance 
nah.w

Original comment by nah...@gmail.com on 24 Nov 2010 at 7:27