Welcome to our community

Be a part of something great, join today!

  • Hey all, just changed over the backend after 15 years I figured time to give it a bit of an update, its probably gonna be a bit weird for most of you and i am sure there is a few bugs to work out but it should kinda work the same as before... hopefully :)

Digital Cinema Package

Another lurker here, a cine exhibitor at a remote place in India. Professionally I'm an electronics engineer with software and embedded system experience.

For a long time, to be precise, since May 2009 I've been looking at developing an end to end open source system from creating DCPs to exhibiting via an open server hardware. It all happened when my choice was limited to Qube and UFO, who's monopolized the indian film distribution/exhibition system I plan to set up a website with my ideas and would appreciate help from like minded people out here.
Has anyone built a server from scratch and is there any reference design ?
 
Hello everybody.
I've been silently lurking this thread for a while, trying to learn my way in the world of DCP creation.
I happen to work in the digital cinema support field, so I have the opportunity to test the content on various server systems. To make a long story short, I succesfully created a small test clip, using open cinema tools, and starting from a set of 32bit TIFF files generated for me by a friend with After Effects (using color space XYZ). The DCP is perfectly working, but the strange thing is it seems the color depth of the frames has been reduced to 8bit during the wrapping to MXF. I say this because:
a) the same TIFFs were used with Fraunhofer EasyDCP creator and the video colors displayed correctly
b) I inspected the J2K files (created with image_to_j2k) with OPJViewer, and they seem to be ok.
I checked the options in asdcp_test, but I couldn't find anything related to color depth...

Any hints?

P.S.: Sorry for having hijacked the thread, but I thought this problem was related to the argument, and I've been following you for a while...

Maybe you can post a single 32-Bit's TIFF somewhere so we can "try in at home"?

using color space XYZ
You mean X'Y'Z' space, do you?
 
Last edited:
Hi Pavel and Wolfgang. I was a bit in a hurry, and reading my post again I see I've been pretty unclear :)
Of course with 32bit Tiff I was meaning 32 bit per channel (float) source, or a 24bpp tiff... And the color space is DCDM X'Y'Z'. Hope it is more clear now.

The funny thing is the source tiff were the same, but the video made with EasyDCP is perfect, the one made with opencinema tools suffers of a form of banding... Even if the colors are mainly similar between the two.

Here you can download three source frames of the clip. It is a very simple animation of a blurred text, with a very bright (>1 RGB value) color.


Thank you both for your support.

Sebastiano
 
Hi Pavel and Wolfgang. I was a bit in a hurry, and reading my post again I see I've been pretty unclear :)
Of course with 32bit Tiff I was meaning 32 bit per channel (float) source, or a 24bpp tiff... And the color space is DCDM X'Y'Z'. Hope it is more clear now.

The funny thing is the source tiff were the same, but the video made with EasyDCP is perfect, the one made with opencinema tools suffers of a form of banding... Even if the colors are mainly similar between the two.

Here you can download three source frames of the clip. It is a very simple animation of a blurred text, with a very bright (>1 RGB value) color.


Thank you both for your support.

Sebastiano

Here is DCP project from your tifs i compiled by OpenCinema Tools with my bat-file. I can't really test on DCP server in a few days, but EasyDCP player shows the right colors and right colordepth. As for my monitor and eyes :)

2 Sunish Issac.

I have a question.
What is the main goal of your project?
To built a server (linux computer) that can convert film to DCP project or to play DCP projects?
If it's a converter it should convert realtime or what conversion time would be accepable?
 
Thank you Pavel.
My movie, when viewed with EasyDCP Player, looks identical to yours, so in the end we used the same process to create it.
When viewed at the cinema it looks wrong. On the other side, the project assembled with EasyDCP creator looks bad in EasyDCP player, but displays correctly at the cinema (doremi DCP20000+barco DP2000). I'm confused.

This project is just for learning purpose, geared at a better knowledge of the tecnology involved. But I must say I also need to create some DCP every now and then, so if I cannot develop a consistent workflow with open tools (which I'd prefer), I'll have to switch to EasyDCP creator. I even tried Doremi cineasset, but it's really slow compared to fraunhofer software, and crashes a lot. At least in my quick tests.
 
Just a small note. I noticed the file created by EasyDCP is smaller than the one created by opencinema tools, of course always starting from the same set of tiffs. Maybe it uses a better solution for the compression to j2c (it's even much faster...).
 
Hi Wolfgang
U describe the use of opencinema tools to creating DCP.
I have some quesyion in them
1.How to use Open cinema tools for MXF interop (MPEG DCP)
2.Size of JPEG DCP is much higher in the compare of Easy DCP Or Doremi cine asset Package
3. Can we reduce the size of MXF which we create from "asdcp-test".
Thanks
Love
 
Hello everybody!
I'm working at theatre chain in Kiev, Ukraine.
Thanks to Wolfgang and Pavel I have compiled my firs DCP! I tested it on CHRISTIE digital projector with success.
But second reel is a big problem. It's 4 minutes chocolate commercial.
I'm using Pavel's pipeline. It works just fine, EasyDCP player play it correctly, but CHRISTIE projector doesn't accept reel. Any suggestions?
 
Also I discovered that ImageMagic comand line should contain -type truecolor before output image name.
If your movie contains any completely black frame ImageMagic produce 1-component *.tif. After j2c conversion asdcp-test brings error: unexpected number of components 1 with this file. So, your command line should looks like:

convert "img.ppm" -alpha Off -depth 12 -gamma 0.454545 -recolor "0.4124564 0.3575761 0.1804375 0.2126729 0.7151522 0.0721750 0.0193339 0.1191920 0.9503041" -gamma 2.6 -type truecolor "img.tif"

Other question is how to obtain j2c-sequence with After Effects and J2K plug-in (http://www.fnordware.com/j2k/)
When I trying render j2c-sequence After Effects just stops after first frame. It produce 0 Kb file.
 
Last edited:
But second reel is a big problem. It's 4 minutes chocolate commercial.
I'm using Pavel's pipeline. It works just fine, EasyDCP player play it correctly, but CHRISTIE projector doesn't accept reel. Any suggestions?
I had a numbers of fails, when DCP works fine EasyDCP player, but it doesn't on my Server. The problem was in my script - some errors in "if". It caused by not fillin' all the script vars. Did you fill all of the script variables?
 
I know that no one here has mac experience with opencinematools, but has anyone tried? I am really stumbling to compile and make the macosx version. I have no unix experience beyond cd ls ./compile and fsck and none of the above have helped me make the opencinematools install. I have read the README but without understanding what it really means. Please help. Many thanks for this very instructive thread.
 
mpeg2 MXF interop

mpeg2 MXF interop

Hi Wolfgang
U describe the use of opencinema tools to creating DCP.
I have some quesyion in them
1.How to use Open cinema tools for MXF interop (MPEG DCP)
...
Thanks
Love

This is something very interesting. Most of us managed in some way to produce acceptable DCPs, but at the expense of a very long processing time (in my case 2 secs for "convert", 8 seconds for the jpeg2000 conversion, plus the other things about 11 seconds each frame for each single CPU). But sometimes the original material is not worth a 250Mb jpeg2000 encoding.
All DCP servers (I think) support also MPEG2 mxf interop, which as far as I know is a fixed 80Mits/sec mxf wrapped mpeg2. It has been widely used for trailers, even if now trailers and ads (and other "alternative content") is more and more encoded as a normal jpeg2000 encoded DCP.
Who knows how to produce such a thing using open source tools? Did somebody try to actually play it on a server?
What about audio? In any case I imagine the encoding time should be faster than the 11 seconds/frame for cpu I need to encode into jpeg2000.
Any suggestion very appreciated!
 
Fabrizio, yes, MPEG2 MXF Interop makes sense for a lot of stuff. 8 bpc/4:2:0/35Mbit/s material doesn't benefit from 12 bpc/250Mbit/s padding. The encoding is cheap or even just a re-wrap. 25p/25i, too (at least on XDC G3 -- which is still a machine in its infancy, btw -- I don't know if this, framerates, is valid on *all* servers).

Basically you wrap an MPEG2 elementary stream in MXF, same with audio, write the required (pretty much identical) DCP infrastructure. Done.

wrt opencinematools, there's a catch: OCT won't do it for you. Wouldn't be hard, mind you, it's just not implemented.

So back to handwriting it is. Use asdcplib to create uuid's and hashes (-u and -t switches), find out frame duration of your material and put these in cpl/pkl/assetmap templates. Yeah, what a hassle, isn't it? But it works and ingest/playback work just fine. Gamma will need adapting.

Another catch I've ran into was fast-paced 25i material: the XDC's motion adaptive deinterlacing just didn't turn out to be good enough. The film would have died that way so we played back from a tiny HD box. Deinterlacing incredibly good, everyone happy. So there.
 
Thanks Wolfgang for your invaluable suggestions. Immediately I started working, so I understood that:
- ffmpeg can convert to a .m2v video that "asdcp-test -c" can handle without complains. I imagine I should not use the "-L" option. Must I produce the mpeg2 stream at 80Mbit/sec or it really does not matter?
- I can read the uuid of the mxf produced by asdcp-test using the -i -H options
- I can write all the other xml files using scripts, generating uuids and calculating
hashes in the way you explained
- mkcpl and the others dont work and complain that ESS_MPEG2_VES is
not supported.
- Only something I miss: the xml templates. I've used jpeg2000 templates as an
exercise, where can I find an example?

Furthermore, looking into the xml's structure, I noticed that there is no hash for
the pkl (and assetmap too), so that is can be edited without any complain by the DCP server. Is there any reason for that? Maybe having an hash for everything else made it redundant?
Last thing: who knows if the demo easyDcpPlayer (that only plays 30 seconds) can play mpeg2 mxf interop DCPs?
Thanks again.
 
Fabrizio, the hassle to manually pack up MPEG2 material for a DCP bothered me. I stared at asdcplib and opencinematools code. asdcplib provides everything that's needed: MPEG2 reader/writer etc. and the patches for opencinematools turned out to be quite simple. Tested on linux only, works fine. I'll get in touch with Marc Vandenbosch to see if they need fixes etc.

In the meantime the patch is up on http://github.com/wolfgangw/digital_cinema_tools. To apply download http://opencinematools.googlecode.com/files/opencinematools-1.1.2-src.zip and the patch (http://github.com/wolfgangw/digital_cinema_tools/archives/master), put them next to each other in a temp dir, unzip oct and say
Code:
$ cat opencinematools-mpeg2_support.diff | patch -p0

- ffmpeg can convert to a .m2v video that "asdcp-test -c" can handle without complains. I imagine I should not use the "-L" option. Must I produce the mpeg2 stream at 80Mbit/sec or it really does not matter?
Our XDC G3 is spec'd for MPEG2 MP@HL and up to 160 Mbps. Where's the 80Mbps coming from? Anyway, maximum should matter, that's why they call it that, right?
- Only something I miss: the xml templates. I've used jpeg2000 templates as an exercise, where can I find an example?
Use any simple cpl, pkl, assetmap to start with.
Furthermore, looking into the xml's structure, I noticed that there is no hash for the pkl (and assetmap too), so that is can be edited without any complain by the DCP server. Is there any reason for that? Maybe having an hash for everything else made it redundant?
Think of a cpl as another asset next to images, audio and subtitles -- it defines the content. A composition might exclude specific assets (or parts of assets, for that matter) of a DCP distribution and is supposed to not be fiddled with after authoring. Its validity is verified with a digest/hash (and optionally with a signature). No need to do that for a pkl which only lists assets.
 
Has anyone successfully created an mpeg DCP package? I've attempted this on a Dolby SS100 without much luck, it complains the video track is corrupted.

I extracted an existing DCP from a screen ad and re-packaged it using the open source tools and it worked fine, so I'm fairly confident the MXF and XML process is ok. I've additionally modified opencinematools to write the digicine headers for the Dolby.

For my mpeg test, I downloaded an H.264 trailer and ran it through ffmpeg:

ffmpeg -y -i testclip.m4v -flags +ildct+ilme -s 1920x1080 -an -sameq testclip.m2v
ffmpeg -y -i testclip.m4v testclip.wav

asdcp-test -v -c testclip.video.mxf testclip.m2v
asdcp-test -v -c testclip.audio.mxf testclip.wav

mkcpl --annotation "TESTCLIP" --title "TESTCLIP" --kind trailer testclip.video.mxf testclip.audio.mxf > testclip.cpl.xml
mkpkl --annotation "TESTCLIP" --issuer "tjm" testclip.video.mxf testclip.audio.mxf testclip.cpl.xml > testclip.pkl.xml
mkmap --annotation "TESTCLIP" --issuer "tjm" testclip.video.mxf testclip.audio.mxf testclip.cpl.xml testclip.pkl.xml

If anyone has insight, it would be appreciated. Also, on a side note has anyone seen the following warning when creating an audio mxf?

asdcp-test -c testclip.strk.mxf testclip.wav
WARNING: Last frame read was short, PCM input is possibly not frame aligned.
Expecting 8000 bytes, got 7552.

Thanks!
 
Terrence, just a wild guess: Assuming your testclip.m4v (H.264) is really interlaced you might be running into a field-order issue. Field order in the testfile might be inconsistent, flagged incorrectly etc. Try ffmpeg's -top switch (with 1/0 for top/bottom field first or -1 for autosense if the testfile has both).

asdcplib's warning wrt PCM not being frame aligned I've seen too. The case doesn't seem to have code consequences in asdcplib's writer infrastructure. Which makes me think that the audio MXF will not be aligned to a frame boundary if the source PCM isn't.

Like: asdcplib doesn't correct the problem. And it's not a problem on most servers. Might be on some, though.
 
We used 3D max's tiff sequence, generated by 2 cameras. But we couldn't manage flying outside effect. I mean an effect when some object is hanging in the middle of the cinema hall. Can anyone give me advice, information or, i, don't know, book, tips and tricks of stereoscopic content :)

Pavel, hi, had your question stored in the back of my mind and just bumped into "Stereoscopic Rendering in Blender" (http://www.noeol.de/s3d/). Math and blender workflow.
 
Back
Top