Open GoogleCodeExporter opened 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
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
Original issue reported on code.google.com by
ramprasa...@gmail.com
on 8 Jun 2010 at 12:47