Opened 2 years ago
Last modified 3 months ago
#10001 new defect
mxf muxer writes the wrong bit depth and uses the CDCI essence descriptor UL instead of the RGBA essence descriptor UL for Full Range RGB48 MJPEG2000
Reported by: | Francesco Bucciantini | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | avformat |
Version: | git-master | Keywords: | mxf |
Cc: | Francesco Bucciantini, Jérôme Martinez | Blocked By: | |
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
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.
Attachments (1)
Change History (14)
comment:1 by , 2 years ago
comment:2 by , 2 years ago
Summary: | 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 → mxf muxer writes the wrong bit depth and uses the CDCI essence descriptor UL instead of the RGBA essence descriptor UL for Full Range RGB48 MJPEG2000 |
---|
comment:3 by , 2 years ago
Keywords: | mxf added |
---|
Please provide the command line you tested together with the complete, uncut console output to make this a valid ticket.
comment:4 by , 2 years ago
Just looking at the code it appears the muxer indeed always writes CDCIDescriptor, never RGBADescriptor. AV_PIX_FMT_FLAG_RGB needs to be checked for this, and the muxer is currently not really architectured for this. A stop gap would be to error out if the essence is RGB, until a proper solution is written.
I'm working on j2k stuff lately, so it's possible I may get some time to fix this.
follow-up: 8 comment:5 by , 2 years ago
Hi Tom,
please don't make it error out as I'm currently using the remux after reading the CPL in an automated fashion as I have a workflow based on that.
It's basically FFMpeg that reads the CPL and remuxes to .mxf and then Avisynth indexes it and gets it ready to encode to XAVC with x264, so if it errors out it would break my workflow.
I would say to wait until a proper fix is implemented, but thank you for looking into that, Thomas! :)
comment:6 by , 2 years ago
Without having to download the whole huge package, I created a fake ("broken or empty index" warning must be ignored) small file "RGBA_example.mxf".
> ffmpeg -i .\RGBA_example.mxf -c copy buggy.mxf ffmpeg version 2022-09-19-git-4ba68639ca-full_build-www.gyan.dev Copyright (c) 2000-2022 the FFmpeg developers built with gcc 12.1.0 (Rev2, Built by MSYS2 project) configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint libavutil 57. 36.102 / 57. 36.102 libavcodec 59. 44.100 / 59. 44.100 libavformat 59. 32.100 / 59. 32.100 libavdevice 59. 8.101 / 59. 8.101 libavfilter 8. 49.100 / 8. 49.100 libswscale 6. 8.112 / 6. 8.112 libswresample 4. 9.100 / 4. 9.100 libpostproc 56. 7.100 / 56. 7.100 [mxf @ 000002054e07e480] broken or empty index Input #0, mxf, from '.\RGBA_example.mxf': Metadata: operational_pattern_ul: 060e2b34.04010101.0d010201.01010100 uid : fac91339-668e-4d99-86ab-3273187e34b0 generation_uid : bc056b60-8d8b-4cb2-aaa8-2c5a978cf6b4 company_name : Colorfront product_name : Transkoder product_version_num: 2020.0.0.51469.1 product_version : 2020.51469.2.10.38 product_uid : 7d836e16-37c7-4c22-b2e0-46a717e84f42 modification_date: 2022-06-09T18:31:39.000000Z toolkit_version_num: 2.10.38.27240.1 application_platform: win32 material_package_umid: 0x060A2B340101010501010F2013000000F62F901B2E8247A5935D0D50B05B89D4 material_package_name: Material Package Duration: 00:17:26.42, start: 0.000000, bitrate: 0 kb/s Stream #0:0: Video: jpeg2000, rgb48le(10 bpc, bt709, progressive), 4096x1716, SAR 1:1 DAR 1024:429, 24 tbr, 24 tbn Metadata: file_package_umid: 0x060A2B340101010501010F201300000072DA4BAA76994154B11FFA0633762E39 file_package_name: File Package: SMPTE ST 422 / ST 2067-5 frame wrapping of JPEG 2000 codestreams track_name : Image Track Output #0, mxf, to 'buggy.mxf': Metadata: operational_pattern_ul: 060e2b34.04010101.0d010201.01010100 uid : fac91339-668e-4d99-86ab-3273187e34b0 generation_uid : bc056b60-8d8b-4cb2-aaa8-2c5a978cf6b4 material_package_name: Material Package material_package_umid: 0x060A2B340101010501010F2013000000F62F901B2E8247A5935D0D50B05B89D4 product_version_num: 2020.0.0.51469.1 application_platform: win32 product_uid : 7d836e16-37c7-4c22-b2e0-46a717e84f42 modification_date: 2022-06-09T18:31:39.000000Z toolkit_version_num: 2.10.38.27240.1 encoder : Lavf59.32.100 Stream #0:0: Video: jpeg2000, rgb48le(10 bpc, bt709, progressive), 4096x1716 [SAR 1:1 DAR 1024:429], q=2-31, 24 tbr, 24 tbn Metadata: file_package_umid: 0x060A2B340101010501010F201300000072DA4BAA76994154B11FFA0633762E39 file_package_name: File Package: SMPTE ST 422 / ST 2067-5 frame wrapping of JPEG 2000 codestreams track_name : Image Track Stream mapping: Stream #0:0 -> #0:0 (copy) Press [q] to stop, [?] for help frame= 1 fps=0.0 q=-1.0 Lsize= 61kB time=00:00:00.00 bitrate=N/A speed= 0x video:53kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 15.153484%
But the issue is in the produced file, not visible in the FFmpeg output. With
mediainfo --Details=1 buggy.mxf:
12A8 CDCI Essence Descriptor (312 bytes) 12A8 Header (20 bytes) 12A8 Code (16 bytes) 12A8 Start (0x06): 6 (0x06) 12A9 Length of the remaining key (0x0E): 14 (0x0E) 12AA ISO, ORG (0x2B): 43 (0x2B) 12AB SMPTE (0x34): 52 (0x34) 12AC Category: 2 (0x02) - Group (Set/Pack) 12AD Registry: 83 (0x53) - 2-byte tag, 2-byte length 12AE Structure: 1 (0x01) - 12AF Version: 1 (0x01) 12B0 Item Designator: 13 (0x0D) - User Organisation Registered For Public Use 12B1 Organization: 1 (0x01) - AAF 12B2 Application: 1 (0x01) - Structural Metadata Sets 12B3 Structure Version: 1 (0x01) - Version 1 12B4 Structure Kind: 1 (0x01) - MXF / AAF Association compatible sets & packs 12B5 Set Kind (1): 1 (0x01) 12B6 Set Kind (2): 40 (0x28) 12B7 Reserved: 0 (0x00) 12B8 Length: 131 (0x83) 12B9 Length: 292 (0x000124)
It is the CDCI descriptor UL, it should be the RGBA descriptor label (byte at 12B6 should be 0x29).
1350 Horizontal colour subsampling - 1 (0x1) (8 bytes) 1350 Header (4 bytes) 1350 Code: 13058 (0x3302) 1352 Length: 4 (0x0004) 1354 Data: 1 (0x00000001) 1358 Vertical colour subsampling - 1 (0x1) (8 bytes) 1358 Header (4 bytes) 1358 Code: 13064 (0x3308) 135A Length: 4 (0x0004) 135C Data: 1 (0x00000001)
Chroma subsampling is not in the source file, it is there (legit but non sense), they should be removed when RGB.
1348 Active bits per sample - 16 (0x10) (8 bytes) 1348 Header (4 bytes) 1348 Code: 13057 (0x3301) 134A Length: 4 (0x0004) 134C Data: 16 (0x00000010)
Bit depth is wrong, even if it is well detected by FFmpeg (indicated as "rgb48 10 bpc"), byte at 134C should be 0x0A.
Initial check of the issue is from https://github.com/MediaArea/MediaInfo/issues/657 .
comment:7 by , 2 years ago
Cc: | added |
---|
comment:8 by , 2 years ago
Replying to Francesco Bucciantini:
Hi Tom,
please don't make it error out as I'm currently using the remux after reading the CPL in an automated fashion as I have a workflow based on that.
It's basically FFMpeg that reads the CPL and remuxes to .mxf and then Avisynth indexes it and gets it ready to encode to XAVC with x264, so if it errors out it would break my workflow.
I would say to wait until a proper fix is implemented, but thank you for looking into that, Thomas! :)
I'm having email problems at the moment, so my stop gap hasn't even made it to the list. But yeah RGBADescriptor should be used, not CDCI. Might as well implement all RGB(A) pixel formats while at it.
comment:9 by , 2 years ago
Do you happen to know what the name of the JPEG2000 MXF wrapping spec is?
comment:10 by , 2 years ago
Do you happen to know what the name of the JPEG2000 MXF wrapping spec is?
SMPTE ST 422:2019
https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8984770
(surprisingly it seems free of charge)
Note that the attached file RGBA_example.mxf is from an official IMF evaluation package, and it has good descriptors (essence descriptor with link to jp2k specific descriptor), it also has the J2CLayout ("The nature and order of the image components in the compressed domain as carried in the J2C codestream.") with the RGBALayout (from ST 377) part set to RGB, having the CDCI descriptor replaced by the RGBA descriptor would be a fix of the main issue (catching that this is RGB and not YUV), but having the J2CLayout (or the whole JP2k descriptor) transferred from the input file to the output file would be even better (more compliant to specs, but to be honest RGBALayout is optional so not the biggest problem, RGB can be guessed with RGBA descriptor UL alone and the readout of 3 JP2k components).
comment:11 by , 14 months ago
Just to add to this to avoid making it go into the list of forgotten items, unfortunately it's not limited to mxf only but also to other containers.
For instance, remuxing to mkv and mov also shows "YUV".
This is particularly problematic if you're gonna use the remuxed file on quite literally anything else other than FFMpeg as plenty of decoders have issues while trying to decode something that claims to be YUV 4:4:4 16bit Limited TV Range and it's actually RGB48 Full Range.
comment:12 by , 3 months ago
mxfenc writes RGBADescriptor since 2023-03-14 (0fbae2178b4). Try again with master
comment:13 by , 3 months ago
Hi Tomas,
thank you for the heads up, but unfortunately the issue is still there. :(
I downloaded and compiled the latest master yesterday, namely N-117613-g72e5381123-20241020.
I then tried to read the CPL of an IMF package and remux the MJPEG2000 in it to an mxf container with the following command:
ffmpeg.exe -f imf -i "G:\mg0\DigitalSupplyChain\WatchfolderMMA\Wacthfolder_UHD\IMF_to_UHD_HLG_AVISYNTH\In\Itendswithus_2024_Th_IT_10977168\CPL_SPE_Itendswithus_11402860_FE_RLI-10977168_CRID-101164127.xml" -map 0:0? -map 0:1? -map 0:2? -map 0:3? -map 0:4? -map 0:5? -map 0:6? -map 0:7? -map 0:8? -c:v copy -c:a copy -f mxf -y "A:\MEDIA\temp\Test.mxf" pause
and unfortunately the error is still there.
In the logs we can see that FFMpeg detects that the source video is indeed RGB48, but it's still writing the CDCI essence descriptor UL instead of the RGBA essence descriptor UL.
This is the full log in FFMpeg:
>ffmpeg.exe -f imf -i "G:\mg0\DigitalSupplyChain\WatchfolderMMA\Wacthfolder_UHD\IMF_to_UHD_HLG_AVISYNTH\In\Itendswithus_2024_Th_IT_10977168\CPL_SPE_Itendswithus_11402860_FE_RLI-10977168_CRID-101164127.xml" -map 0:0? -map 0:1? -map 0:2? -map 0:3? -map 0:4? -map 0:5? -map 0:6? -map 0:7? -map 0:8? -c:v copy -c:a copy -f mxf -y "A:\MEDIA\temp\Test.mxf" ffmpeg version N-117613-g72e5381123-20241020 Copyright (c) 2000-2024 the FFmpeg developers built with gcc 14.2.0 (crosstool-NG 1.26.0.120_4d36f27) configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-libxml2 --enable-lzma --enable-fontconfig --enable-libharfbuzz --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --enable-libdvdread --enable-libdvdnav --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libaribcaption --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-libzmq --enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --enable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libvvenc --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-libs=-lgomp --extra-ldflags=-pthread --extra-ldexeflags= --cc=x86_64-w64-mingw32-gcc --cxx=x86_64-w64-mingw32-g++ --ar=x86_64-w64-mingw32-gcc-ar --ranlib=x86_64-w64-mingw32-gcc-ranlib --nm=x86_64-w64-mingw32-gcc-nm --extra-version=20241020 libavutil 59. 44.100 / 59. 44.100 libavcodec 61. 22.100 / 61. 22.100 libavformat 61. 9.100 / 61. 9.100 libavdevice 61. 4.100 / 61. 4.100 libavfilter 10. 6.100 / 10. 6.100 libswscale 8. 6.100 / 8. 6.100 libswresample 5. 4.100 / 5. 4.100 libpostproc 58. 4.100 / 58. 4.100 [imf @ 000002596f44db80] IMF CPL ContentTitle: IT ENDS WITH US [imf @ 000002596f44db80] IMF CPL Id: 05fec57c-e3e9-4eb4-9254-14389e742045 [imf @ 000002596f44db80] Setting timecode to IMF CPL timecode 00:59:30:00 [imf @ 000002596f44db80] Opening 'G:\mg0\DigitalSupplyChain\WatchfolderMMA\Wacthfolder_UHD\IMF_to_UHD_HLG_AVISYNTH\In\Itendswithus_2024_Th_IT_10977168/ASSETMAP.xml' for reading Input #0, imf, from 'G:\mg0\DigitalSupplyChain\WatchfolderMMA\Wacthfolder_UHD\IMF_to_UHD_HLG_AVISYNTH\In\Itendswithus_2024_Th_IT_10977168\CPL_SPE_Itendswithus_11402860_FE_RLI-10977168_CRID-101164127.xml': Metadata: timecode : 00:59:30:00 Duration: 02:11:27.71, start: 0.000000, bitrate: 0 kb/s Stream #0:0: Video: jpeg2000, rgb48le(12 bpc, bt2020nc/bt2020/smpte2084, progressive), 3840x2160, 23.98 fps, 23.98 tbr, 23.98 tbn Metadata: file_package_umid: 0x060A2B340101010501010F2013000000DF59946E76E94090AF53B803A3FE86E1 file_package_name: File Package: SMPTE ST 422 / ST 2067-5 frame wrapping of JPEG 2000 codestreams track_name : Image Track Side data: Mastering Display Metadata, has_primaries:1 has_luminance:1 r(0.6800,0.3200) g(0.2650,0.6900) b(0.1500 0.0600) wp(0.3127, 0.3290) min_luminance=0.000100, max_luminance=1000.000000 Stream #0:1(ita): Audio: pcm_s24le, 48000 Hz, downmix, s32 (24 bit), 2304 kb/s Metadata: file_package_umid: 0x060A2B340101010501010F20130000003B151C4B2EF94FC5BD5A3EDC867D9BCE file_package_name: File Package: SMPTE 382M clip wrapping of wave audio track_name : Sound Track Stream #0:2(eng): Audio: pcm_s24le, 48000 Hz, downmix, s32 (24 bit), 2304 kb/s Metadata: file_package_umid: 0x060A2B340101010501010F20130000001FEFC2C8E7DC4A37BC520E37DC233D8A file_package_name: File Package: SMPTE 382M clip wrapping of wave audio track_name : Sound Track Stream #0:3(ita): Audio: pcm_s24le, 48000 Hz, 5.1(side), s32 (24 bit), 6912 kb/s Metadata: file_package_umid: 0x060A2B340101010501010F2013000000A52279CEB6474274A6CD03553A658D20 file_package_name: File Package: SMPTE 382M clip wrapping of wave audio track_name : Sound Track Stream #0:4(eng): Audio: pcm_s24le, 48000 Hz, 5.1(side), s32 (24 bit), 6912 kb/s Metadata: file_package_umid: 0x060A2B340101010501010F2013000000514D9AA46E1D464FA2889FE79AEBA705 file_package_name: File Package: SMPTE 382M clip wrapping of wave audio track_name : Sound Track Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (copy) Stream #0:2 -> #0:2 (copy) Stream #0:3 -> #0:3 (copy) Stream #0:4 -> #0:4 (copy) Output #0, mxf, to 'A:\MEDIA\temp\Test.mxf': Metadata: timecode : 00:59:30:00 encoder : Lavf61.9.100 Stream #0:0: Video: jpeg2000, rgb48le(12 bpc, bt2020nc/bt2020/smpte2084, progressive), 3840x2160, q=2-31, 23.98 fps, 23.98 tbr, 23.98 tbn Metadata: file_package_umid: 0x060A2B340101010501010F2013000000DF59946E76E94090AF53B803A3FE86E1 file_package_name: File Package: SMPTE ST 422 / ST 2067-5 frame wrapping of JPEG 2000 codestreams track_name : Image Track Side data: Mastering Display Metadata, has_primaries:1 has_luminance:1 r(0.6800,0.3200) g(0.2650,0.6900) b(0.1500 0.0600) wp(0.3127, 0.3290) min_luminance=0.000100, max_luminance=1000.000000 Stream #0:1(ita): Audio: pcm_s24le, 48000 Hz, downmix, s32 (24 bit), 2304 kb/s (default) Metadata: file_package_umid: 0x060A2B340101010501010F20130000003B151C4B2EF94FC5BD5A3EDC867D9BCE file_package_name: File Package: SMPTE 382M clip wrapping of wave audio track_name : Sound Track Stream #0:2(eng): Audio: pcm_s24le, 48000 Hz, downmix, s32 (24 bit), 2304 kb/s Metadata: file_package_umid: 0x060A2B340101010501010F20130000001FEFC2C8E7DC4A37BC520E37DC233D8A file_package_name: File Package: SMPTE 382M clip wrapping of wave audio track_name : Sound Track Stream #0:3(ita): Audio: pcm_s24le, 48000 Hz, 5.1(side), s32 (24 bit), 6912 kb/s Metadata: file_package_umid: 0x060A2B340101010501010F2013000000A52279CEB6474274A6CD03553A658D20 file_package_name: File Package: SMPTE 382M clip wrapping of wave audio track_name : Sound Track Stream #0:4(eng): Audio: pcm_s24le, 48000 Hz, 5.1(side), s32 (24 bit), 6912 kb/s Metadata: file_package_umid: 0x060A2B340101010501010F2013000000514D9AA46E1D464FA2889FE79AEBA705 file_package_name: File Package: SMPTE 382M clip wrapping of wave audio track_name : Sound Track Press [q] to stop, [?] for help [mxf @ 0000025971540900] Incoherence about components image number. frame= 866 fps= 76 q=-1.0 size= 732928KiB time=00:00:36.16 bitrate=166043.9kbits/s speed=3.19x [q] command received. Exiting. [out#0/mxf @ 000002596f4227c0] video:702725KiB audio:82586KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.219279% frame= 880 fps= 73 q=-1.0 Lsize= 787034KiB time=00:00:36.68 bitrate=175773.7kbits/s speed=3.06x >pause Press any key to continue . . .
and this is the result as we can see it from Mediainfo:
General Complete name : A:\MEDIA\temp\Test.mxf Format : MXF Format version : 1.3 Format profile : OP-1a Format settings : Closed / Complete File size : 769 MiB Duration : 36 s 703 ms Overall bit rate : 176 Mb/s Frame rate : 23.976 FPS Package name : File Package: SMPTE ST 422 / ST 2067-5 frame wrapping of JPEG 2000 codestreams Encoded date : 0-00-00 00:00:00.000 Writing application : FFmpeg OP1a Muxer 61.9.100.0.0 Writing library : Lavf (mingw32) 61.9.100.0.0 Video ID : 2 Format : JPEG 2000 Format profile : IMFS4k@ML6SL4 HDR format : SMPTE ST 2086, HDR10 compatible Format settings, wrapping mode : Frame Codec ID : 0D010301020C0100-0401020203010100 Duration : 36 s 703 ms Bit rate : 157 Mb/s Width : 3 840 pixels Height : 2 160 pixels Display aspect ratio : 16:9 Frame rate : 23.976 (24000/1001) FPS Color space : YUV Chroma subsampling : 4:4:4 Bit depth : 12 bits Scan type : Progressive Bits/(Pixel*Frame) : 0.791 Stream size : 688 MiB (90%) Color primaries : BT.2020 Transfer characteristics : PQ Matrix coefficients : BT.2020 non-constant Mastering display color primaries : Display P3 Mastering display luminance : min: 0.0001 cd/m2, max: 1000 cd/m2 BitDepth_Container : 16 Audio #1 ID : 3 Format : PCM Format settings : Little Format settings, wrapping mode : Frame (AES) Codec ID : 0D01030102060300 Duration : 36 s 703 ms Bit rate mode : Constant Bit rate : 2 304 kb/s Channel(s) : 2 channels Sampling rate : 48.0 kHz Frame rate : 23.976 FPS (2002 SPF) Bit depth : 24 bits Stream size : 10.1 MiB (1%) Locked : Yes Audio #2 ID : 4 Format : PCM Format settings : Little Format settings, wrapping mode : Frame (AES) Codec ID : 0D01030102060300 Duration : 36 s 703 ms Bit rate mode : Constant Bit rate : 2 304 kb/s Channel(s) : 2 channels Sampling rate : 48.0 kHz Frame rate : 23.976 FPS (2002 SPF) Bit depth : 24 bits Stream size : 10.1 MiB (1%) Locked : Yes Audio #3 ID : 5 Format : PCM Format settings : Little Format settings, wrapping mode : Frame (AES) Codec ID : 0D01030102060300 Duration : 36 s 703 ms Bit rate mode : Constant Bit rate : 6 912 kb/s Channel(s) : 6 channels Sampling rate : 48.0 kHz Frame rate : 23.976 FPS (2002 SPF) Bit depth : 24 bits Stream size : 30.2 MiB (4%) Locked : Yes Audio #4 ID : 6 Format : PCM Format settings : Little Format settings, wrapping mode : Frame (AES) Codec ID : 0D01030102060300 Duration : 36 s 703 ms Bit rate mode : Constant Bit rate : 6 912 kb/s Channel(s) : 6 channels Sampling rate : 48.0 kHz Frame rate : 23.976 FPS (2002 SPF) Bit depth : 24 bits Stream size : 30.2 MiB (4%) Locked : Yes Other #1 ID : 1-Material Type : Time code Format : MXF TC Frame rate : 23.976 (24000/1001) FPS Time code of first frame : 00:59:30:00 Time code of last frame : 01:00:06:15 Time code settings : Material Package Time code, stripped : Yes Other #2 ID : 1-Source Type : Time code Format : MXF TC Frame rate : 23.976 (24000/1001) FPS Time code of first frame : 00:59:30:00 Time code of last frame : 01:00:06:15 Time code settings : Source Package Time code, stripped : Yes Other #3 Type : Time code Format : SMPTE TC Muxing mode : SDTI Frame rate : 23.976 (24000/1001) FPS Time code of first frame : 00:59:30:00
as you can see, Mediainfo still shows YUV 4:4:4 12bit which is wrong but it's not Mediainfo at fault here, as Jerome said, it's the FFMpeg mxf muxer writing the wrong info in the container.
If we perform the Mediainfo of the source, in fact, we can see that RGB is correctly reported:
General Complete name : G:\mg0\DigitalSupplyChain\WatchfolderMMA\Wacthfolder_UHD\IMF_to_UHD_HLG_AVISYNTH\In\Itendswithus_2024_Th_IT_10977168\CPL_SPE_Itendswithus_11402860_FE_RLI-10977168_CRID-101164127.xml Format : IMF CPL File size : 555 GiB Duration : 2 h 11 min Overall bit rate : 604 Mb/s Frame rate : 23.976 FPS Video ID : 2-2 Format : JPEG 2000 Format profile : IMFS4k@ML6SL4 HDR format : SMPTE ST 2086, HDR10 compatible Muxing mode : MXF Codec ID : 0D010301020C0600-0401020203010313 Duration : 2 h 11 min Bit rate : 586 Mb/s Width : 3 840 pixels Height : 2 160 pixels Display aspect ratio : 16:9 Frame rate : 23.976 (24000/1001) FPS Color space : RGB Bit depth : 12 bits Scan type : Progressive Bits/(Pixel*Frame) : 2.944 Stream size : 538 GiB (97%) Title : Image Track Color range : Full Color primaries : BT.2020 Transfer characteristics : PQ Matrix coefficients : BT.2020 non-constant Mastering display color primaries : Display P3 Mastering display luminance : min: 0.0001 cd/m2, max: 1000 cd/m2 Source : SPE_Itendswithus_11402860_FE_IT_3840x2160_HDR_CompID-101164105.mxf Audio #1 ID : 3-2 Format : PCM Format settings : Little Format settings, wrapping mode : Clip (BWF) Muxing mode : MXF Codec ID : 0D01030102060200 Duration : 2 h 11 min Bit rate mode : Constant Bit rate : 2 304 kb/s Channel(s) : 2 channels Channel layout : Lt Rt Sampling rate : 48.0 kHz Bit depth : 24 bits Stream size : 2.12 GiB (0%) Title : Sound Track Language : Italian Locked : No MCA Title : MCA Title MCA Title Version : MCA Title Version MCA Audio Content Kind : MCA Audio Content Kind MCA Audio Element Kind : MCA Audio Element Kind Source : SPE_Itendswithus_11402860_FE_IT_AudioOnly_CompID-101164104.mxf Audio #2 ID : 4-2 Format : PCM Format settings : Little Format settings, wrapping mode : Clip (BWF) Muxing mode : MXF Codec ID : 0D01030102060200 Duration : 2 h 11 min Bit rate mode : Constant Bit rate : 2 304 kb/s Channel(s) : 2 channels Channel layout : Lt Rt Sampling rate : 48.0 kHz Bit depth : 24 bits Stream size : 2.12 GiB (0%) Title : Sound Track Language : English Locked : No MCA Title : MCA Title MCA Title Version : MCA Title Version MCA Audio Content Kind : MCA Audio Content Kind MCA Audio Element Kind : MCA Audio Element Kind Source : SPE_Itendswithus_11402860_FE_EN_AudioOnly_CompID-101164103.mxf Audio #3 ID : 5-2 Format : PCM Format settings : Little Format settings, wrapping mode : Clip (BWF) Muxing mode : MXF Codec ID : 0D01030102060200 Duration : 2 h 11 min Bit rate mode : Constant Bit rate : 6 912 kb/s Channel(s) : 6 channels Channel layout : L R C LFE Ls Rs Sampling rate : 48.0 kHz Bit depth : 24 bits Stream size : 6.35 GiB (1%) Title : Sound Track Language : Italian Locked : No MCA Title : MCA Title MCA Title Version : MCA Title Version MCA Audio Content Kind : MCA Audio Content Kind MCA Audio Element Kind : MCA Audio Element Kind Source : SPE_Itendswithus_11402860_FE_IT_AudioOnly_CompID-101164102.mxf Audio #4 ID : 6-2 Format : PCM Format settings : Little Format settings, wrapping mode : Clip (BWF) Muxing mode : MXF Codec ID : 0D01030102060200 Duration : 2 h 11 min Bit rate mode : Constant Bit rate : 6 912 kb/s Channel(s) : 6 channels Channel layout : L R C LFE Ls Rs Sampling rate : 48.0 kHz Bit depth : 24 bits Stream size : 6.35 GiB (1%) Title : Sound Track Language : English Locked : No MCA Title : MCA Title MCA Title Version : MCA Title Version MCA Audio Content Kind : MCA Audio Content Kind MCA Audio Element Kind : MCA Audio Element Kind Source : SPE_Itendswithus_11402860_FE_EN_AudioOnly_CompID-101164101.mxf Other ID : 1 Type : Time code Format : CPL TC Frame rate : 24 FPS Time code of first frame : 00:59:30:00 Time code, stripped : Yes
https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/libavformat/mxfdec.c#l3224
Check line 3224, that's CDCI, while line 3225 is RGBA