-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Test for maximum frame and frame color component size #130
Comments
The above means that there are really no constraints on actual bitrate. Bitrate constraint is really just a consequence of two constraints on each frame:
From these two variable you could derive a maximum bitrate, but this is not the limiting factor (according to the docs at least) This is important, because a single frame out of spec can make the composition unplayable on some hardware. This is the result when ingesting such a DCP on a Dolby DSS200 with Cat745 mediablock with latest software, v4.9.4(5), from the logs:
In this case both the average and max bitrate is well within the capacity of the Cat745. It is enough for one single frame out of spec to make it unplayable! |
After som light reverse-engineering, I was able to find the specifications for Dolby mediablocks (those made before they bought Doremi):
Sizes in bytes. It is interesting to note that the older mediablocks (DSP100 and Cat862) have an higher per-frame buffer than the newer Cat745 mediablock. Though the Cat745 has a higher average bit rate capacity. And indeed, I have tested the above DCP, and it plays totally fine on a Cat862! But not on the newer (and 4K capable) Cat745. |
I just discovered that the ISO/IEC 15444-1 has been revised, the current version is ISO/IEC 15444-1:2019 ( https://www.iso.org/standard/78321.html ). The contents appears to be the same as ITU-T Rec. T.800 which is freely available. Here the writing has shifted to specify the bitrate first, and then derive the maximum frame and component sizes. SMPTE ST 429-2:2013 has been amended to reference the next newest version of 15444-1, but the current versions of the DCSS, CTP, 429-4 and ISDCF's HFR spec all reference the old, 15444-1:2004/Amd 1:2006. The 429-2 ammendment also contains additional frame rates. SMPTE ST429-2.2013Am1.2018
TU-T Rec. T.800 (06/2019) ( https://www.itu.int/rec/T-REC-T.800/en )
|
There was an interesting thread on openjpeg list on how to use the library to extract the color component sizes: https://groups.google.com/forum/#!msg/openjpeg/_a8LvT4FrwA/xYuzfr7GAgAJ This could probably also be done by using jpylyzer and looking at the |
Thanks for the analysis @matmat So far we have been relying on asdcplib to check that the bitrate is under the specified limit, if I remember correctly, this only take the maximum size per frame (and not component) into account (then multiplying by the framerate to obtain the maximum bitrate). We definitively need to start doing per frame analysis, do you think jpylyzer could be used to check for valid encoding of JP2K cinema profile frames ? Other validation tools use commercial JP2K decoder to do that (like Kakadu). |
Have you made any progress on this point? |
Not that I'm aware of @bioleyl, are you having issue relating to these tests missing ? As discussed above, it's probably not enough to rely only on MXF headers / asdcplib to perform this kind of tests, we would need to start parsing the JP2K stream which is more complex and involve introducing dependencies like jpylyzer. Also not clear whether encrypted essence would be able to be analysed or not. This is certainly one of the main area that needs improvement at this time, related to #10. |
Yes we got a DCP passing validation on Clairmeta and failing due to video asset bitrate on the new version of EasyDCP Player. If you want to start working on the feature, I can help testing on a whole bunch of DCP. We are validating for test purpose more than 10 DCP per day with your tool and we try to compare with other validating software like EasyDCP Player to see the differences. |
Thanks @bioleyl, would you have some DCPs showing this issue to share privately like trailers, so we have test content to develop ? |
The only DCP with that problem that we have now is a 180GB DCP. I have cut with ffmpeg the part of the video asset which is problematic. It is now a mxf j2k of 130Mo. Is it good for your tests ? I don't have tools with me to produce or edit a DCP. |
That could a start yes, would be nice to have a look. |
You could also do a quick creation of a DCP with DCP-O-Matic and specifically make it do higher then recommended bitrate for the video. That should result in a DCP that would trigger such a failure. If you want I could make one later today. Or send me the 130MG slice of video. It's the original J2K encoded files I expect? After creating a DCP around these files, I can run them through my online QC tool and send the PDF reports to those interested. But yes, warning/error may need to be indicated. But this does bring up the question of if its a error or a warning as 500mbit streams are supported in all DCI-players these days. |
I have created a higher bitrate then 250 example. |
Thanks for the DCP @jamiegau. I noticed a typo in the checking of the issue date resulting in an error, will fix that asap. The IssueDate was not validated because there is no time zone in the date string and it was effectively issue after my current local time. However this DCP is already detected as above maximum threshold by ClairMeta which was not the case @bioleyl reported where EasyDCP reported an error whereas ClairMeta didn't. Would be still interested to see such a sample. |
Get the problematic example J2K stream to me and I'll make it into a DCP. |
Here is the MXF If you use Resolve with kakadu, I don't think you will be able to make a failing DCP. Resolve re-encode the video asset. |
Thanks @bioleyl got your file, will have a look at it. |
Ok, got distracted.. Maybe I can use asdcplib to extract the j2k files directly. But I need to get get that all together.. |
I just cut the mxf asset with ffmpeg. If you have a better solution, I can do it differently. |
Sorry for the long overdue answer @bioleyl, I can not process your file either. It looks like it is an OP1a encoded MXF, which is what you would get from ffmpeg by default but not what is used for DCP IIRC, you could try using |
I don't have access to that DCP anymore but next time I will try with mxf_opatom |
Please see the following references:
ISO 15444-1:2006 Amendment 1
DCSS v1.3 ( https://www.dcimovies.com/specification/DCI_DCSS_Ver1-3_2018-0627.pdf )
CTP v1.2 ( https://www.dcimovies.com/compliance_test_plan/DCI_CTP_v12.pdf )
SMPTE ST 429-2:2013
SMPTE ST 429-4:2006
P-HFR -- Prototype DCP for High Frame Rate Projection ( https://isdcf.com/papers/ISDCF-HighFrameRate-DCP.pdf )
The text was updated successfully, but these errors were encountered: