[FFmpeg-trac] #10001(avformat:new): mxf muxer writes the wrong bit depth and uses the CDCI essence descriptor UL instead of the RGBA essence descriptor UL for Full Range RGB MJPEG2000

FFmpeg trac at avcodec.org
Tue Nov 1 11:06:18 EET 2022


#10001: mxf muxer writes the wrong bit depth and uses the CDCI essence descriptor
UL instead of the RGBA essence descriptor UL for Full Range RGB MJPEG2000
-------------------------------------+-------------------------------------
             Reporter:  Francesco    |                     Type:  defect
  Bucciantini                        |
               Status:  new          |                 Priority:  normal
            Component:  avformat     |                  Version:  git-
                                     |  master
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:

 When muxing a MJPEG2000 RGB Full Range stream, the mxf muxer is using the
 CDCI essence descriptor UL instead of the RGBA essence descriptor UL.
 In other words, it's using


 {{{
 { {
 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x28,0x00
 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /*
 CDCI */
 }}}

 instead of


 {{{
 { {
 0x06,0x0e,0x2b,0x34,0x02,0x53,0x01,0x01,0x0d,0x01,0x01,0x01,0x01,0x01,0x29,0x00
 }, mxf_read_generic_descriptor, sizeof(MXFDescriptor), Descriptor }, /*
 RGBA */
 }}}

 On top of this, the mxf muxer adds the color sampling descriptor as 4:4:4
 which doesn't make sense as it's RGB, not YUV.

 Last but not least, instead of writing 10bit for 10bit RGB sources and
 12bit for 12bit RGB sources, it always writes 16bit, which of course is
 also wrong.
 This results from the fact that FFMpeg is trying to the first compatible
 match when there is no colr atom.


 How to reproduce:

 1) Download the standard IMF evaluation package from here: https://aswf-
 dpel-assets.s3.amazonaws.com/asc-
 stem2/IMF/StEM2_TST_SDR_Rec709_IMF_App2e_Lossy.zip

 2) Create the final mxf file by reading the CPL with FFMpeg like
 ffmpeg.exe -f imf -i "CPL.xml" -c:v copy -c:a copy -f mxf -y "IMF.mxf"

 3) Check the resulting file: it was supposed to be rgb48le 10bit BT709,
 however the muxed file has all the above mentioned things wrong: wrong bit
 depth inside the container, CDCI wrongly populated instead of RGBA,
 causing it to be interpreted as YUV 4:4:4 16bit by other softwares other
 than ffmpeg and ffprobe themselves.
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/10001>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list