[FFmpeg-trac] #10391(undetermined:new): mxf with DolbyE and channel_count != 02 is wrongly read by FFMpeg and cannot be remuxed

FFmpeg trac at avcodec.org
Tue May 30 16:59:17 EEST 2023


#10391: mxf with DolbyE and channel_count != 02 is wrongly read by FFMpeg and
cannot be remuxed
-------------------------------------+-------------------------------------
             Reporter:  Francesco    |                     Type:  defect
  Bucciantini                        |
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:  git-
  undetermined                       |  master
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:

 mxf files which carry DolbyE 5.1 + 2.0 audio and whose channel_count value
 in the mxf header is 08 instead of 02 are wrongly read by FFMpeg and
 therefore are remuxed incorrectly.

 Expected behavior:
 files are read and remuxed correctly

 Actual behavior:
 edit unit sync lost on stream 1, jumping from 0 to 1

 How to reproduce:
 {{{
 % ffmpeg -i "video.mxf" -map 0:0 -map 0:1 -map 0:2 -map 0:3 -map 0:4 -c:v
 copy -c:a copy -f mxf -y "output.mxf"

 ffmpeg version n6.1-dev
 built on 30-05-2023
 }}}


 Explanation:
 DolbyE is generally carried as fake stereo pairs in an mxf container so
 that it can be passed through via SDI.
 As such, the channel_count value inside the mxf header is supposed to be
 02 to indicate the fake stereo pairs it's supposed to be spoofed as. In
 other words:

 [[Image(https://i.imgur.com/FuVL7H3.png)]]

 however some muxers like ommcp (the Omneon muxer, from version 7.x 'till
 version 9.5) wrote the actual number of channels of the DolbyE stream
 instead, so for a DolbyE 5.1 + 2.0 (where 5.1 is the surround and 2.0 is
 the stereo downmix), they wrote 08 (6 channels + 2 channels = 8 channels).
 In other words:

 [[Image(https://i.imgur.com/NDmxPWd.png)]]


 As such, instead of reading it as fake stereo pairs and remux it
 correctly:

 [[Image(https://i.imgur.com/VWE3d08.png)]]

 FFMpeg thinks it's an 8 channel stream and fails to remux it, thus
 screwing up the whole audio stream:

 [[Image(https://i.imgur.com/fnkyraE.png)]]
 [[Image(https://i.imgur.com/GryUzHB.png)]]

 so much so that the final remuxed file says PCM and it's undecodable:

 General
 Complete name : A:\MEDIA\temp\original.mxf
 Format : MXF
 Format version : 1.3
 Format profile : OP-1a
 Format settings : Closed / Complete
 File size : 1.54 MiB
 Duration : 20 ms
 Overall bit rate : 645 Mb/s
 Frame rate : 50.000 FPS
 Encoded date : 2023-05-30 13:58:23.372
 Writing application : Omneon Inc. Omneon Media Subsystem 8.3.0.0.1
 Writing library : Omneon Media Api (windows)

 Video
 ID : 2
 Format : AVC
 Format/Info : Advanced Video Codec
 Format profile : High 4:2:2 at L5.2
 Format settings, CABAC : No
 Format settings, wrapping mode : Frame
 Codec ID : 0D01030102106001-0401020201323001
 Duration : 20 ms
 Maximum bit rate : 500 Mb/s
 Width : 3 840 pixels
 Height : 2 160 pixels
 Display aspect ratio : 16:9
 Frame rate : 50.000 FPS
 Standard : Component
 Color space : YUV
 Chroma subsampling : 4:2:2
 Bit depth : 10 bits
 Scan type : Progressive
 Color range : Limited
 Color primaries : BT.2020
 Transfer characteristics : HLG
 Matrix coefficients : BT.2020 non-constant
 Delay_SystemScheme1 : 0
 Format_Profile_Original : High 4:2:2 Intra at L5.2

 Audio
 ID : 3
 Format : Dolby E
 Format settings, wrapping mode : Frame (BWF)
 Codec ID : 0D01030102060100-0402020203021C00
 Duration : 20 ms
 Bit rate : 1 152 kb/s
 Channel(s) : 8 channels
 Sampling rate : 48.0 kHz
 Frame rate : 50.000 FPS (960 SPF)
 Bit depth : 24 bits
 Stream size : 2.81 KiB (0%)
 Delay_SystemScheme1 : 0
 Locked : Yes

 Other #1
 ID : 1-Material
 Type : Time code
 Format : MXF TC
 Frame rate : 50.000 FPS
 Time code of first frame : 10:00:00:00
 Time code of last frame : 10:00:00:00
 Time code settings : Material Package
 Time code, stripped : Yes

 Other #2
 ID : 1-Source
 Type : Time code
 Format : MXF TC
 Frame rate : 50.000 FPS
 Time code of first frame : 00:00:00:00
 Time code of last frame : 00:00:00:00
 Time code settings : Source Package
 Time code, stripped : Yes

 Other #3
 Type : Time code
 Format : SMPTE TC
 Muxing mode : System scheme 1
 Time code of first frame : 00:00:00:00
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/10391>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list