[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