Opened 3 months ago

Closed 3 months ago

Last modified 3 months ago

#8157 closed defect (duplicate)

DNxHR 444 variants decoding bug

Reported by: pdr0 Owned by:
Priority: normal Component: avcodec
Version: git-master Keywords: dnxhd
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

The DNxHR 444 12bit and 10bit variants are not decoded correctly with ffmpeg, but are decoded correctly with Davinci Resolve, Adobe

I have included 12bit444,12bit422, 10bit444, 10bit422 in MOV container . It does not matter if it's MXF wrapped, same issue

Attachments (1)

DNxHR_tests.7z (411.4 KB) - added by pdr0 3 months ago.
DNxHR Tests

Download all attachments as: .zip

Change History (5)

Changed 3 months ago by pdr0

DNxHR Tests

comment:1 Changed 3 months ago by cehoyos

  • Component changed from undetermined to avcodec
  • Keywords dnxhd added
  • Version changed from unspecified to git-master
$ ffmpeg -i DNxHR_10bit444.mov -qscale 2 out.avi 
ffmpeg version N-94943-g1db6e47e85 Copyright (c) 2000-2019 the FFmpeg developers
  built with clang version 8.0.1 (tags/RELEASE_801/final 366581)
  configuration: --cc=clang --enable-gpl --enable-gnutls --enable-libxml2 --enable-libx264 --enable-libx265 --enable-libvpx --enable-libaom
  libavutil      56. 35.100 / 56. 35.100
  libavcodec     58. 56.102 / 58. 56.102
  libavformat    58. 32.104 / 58. 32.104
  libavdevice    58.  9.100 / 58.  9.100
  libavfilter     7. 58.102 /  7. 58.102
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'DNxHR_10bit444.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf57.25.100
  Duration: 00:00:00.08, start: 0.000000, bitrate: 1492007 kb/s
    Stream #0:0(eng): Video: dnxhd (DNXHR 444) (AVdh / 0x68645641), yuv444p10le(pc, bt709), 4096x2160, 1491861 kb/s, SAR 1:1 DAR 256:135, 24 fps, 24 tbr, 12288 tbn, 12288 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      timecode        : 01:00:00:00
    Stream #0:1(eng): Data: none (tmcd / 0x64636D74), 0 kb/s
    Metadata:
      handler_name    : TimeCodeHandler
      timecode        : 01:00:00:00
Please use -q:a or -q:v, -qscale is ambiguous
Stream mapping:
  Stream #0:0 -> #0:0 (dnxhd (native) -> mpeg4 (native))
Press [q] to stop, [?] for help
Output #0, avi, to 'out.avi':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    ISFT            : Lavf58.32.104
    Stream #0:0(eng): Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 4096x2160 [SAR 1:1 DAR 256:135], q=2-31, 200 kb/s, 24 fps, 24 tbn, 24 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      timecode        : 01:00:00:00
      encoder         : Lavc58.56.102 mpeg4
    Side data:
      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
frame=    2 fps=0.0 q=2.0 Lsize=     182kB time=00:00:00.08 bitrate=17864.3kbits/s speed=0.443x    
video:176kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 3.223409%
$ ffmpeg -i DNxHR_12bit444.mov -qscale 2 out.avi
ffmpeg version N-94943-g1db6e47e85 Copyright (c) 2000-2019 the FFmpeg developers
  built with clang version 8.0.1 (tags/RELEASE_801/final 366581)
  configuration: --cc=clang --enable-gpl --enable-gnutls --enable-libxml2 --enable-libx264 --enable-libx265 --enable-libvpx --enable-libaom
  libavutil      56. 35.100 / 56. 35.100
  libavcodec     58. 56.102 / 58. 56.102
  libavformat    58. 32.104 / 58. 32.104
  libavdevice    58.  9.100 / 58.  9.100
  libavfilter     7. 58.102 /  7. 58.102
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'DNxHR_12bit444.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf57.25.100
  Duration: 00:00:00.08, start: 0.000000, bitrate: 1492007 kb/s
    Stream #0:0(eng): Video: dnxhd (DNXHR 444) (AVdh / 0x68645641), yuv444p12le(pc, bt709), 4096x2160, 1491861 kb/s, SAR 1:1 DAR 256:135, 24 fps, 24 tbr, 12288 tbn, 12288 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      timecode        : 01:00:00:00
    Stream #0:1(eng): Data: none (tmcd / 0x64636D74), 0 kb/s
    Metadata:
      handler_name    : TimeCodeHandler
      timecode        : 01:00:00:00
Please use -q:a or -q:v, -qscale is ambiguous
Stream mapping:
  Stream #0:0 -> #0:0 (dnxhd (native) -> mpeg4 (native))
Press [q] to stop, [?] for help
Output #0, avi, to 'out.avi':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    ISFT            : Lavf58.32.104
    Stream #0:0(eng): Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 4096x2160 [SAR 1:1 DAR 256:135], q=2-31, 200 kb/s, 24 fps, 24 tbn, 24 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      timecode        : 01:00:00:00
      encoder         : Lavc58.56.102 mpeg4
    Side data:
      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
frame=    2 fps=0.0 q=2.0 Lsize=     182kB time=00:00:00.08 bitrate=17923.5kbits/s speed=0.454x    
video:177kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 3.211861%

comment:2 Changed 3 months ago by richardpl

Duplicate of #7342.

This is because files use ACT, adaptive color transform, when some blocks are encoded in RGB instead of YUV and vice versa.

comment:3 Changed 3 months ago by cehoyos

  • Resolution set to duplicate
  • Status changed from new to closed

Maybe a warning message should be shown...

comment:4 Changed 3 months ago by pdr0

Yes, I think a warning should be shown

These were encode with Resolve, so it can be said they are "official" DNxHR samples

Otherwise people using ffmpeg for DNxHR 444 decoding might assume it's working correctly.

Is a fix planned ?


Note: See TracTickets for help on using tickets.