Opened 3 years ago

Closed 3 years ago

Last modified 3 years 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 years ago.
DNxHR Tests

Download all attachments as: .zip

Change History (5)

by pdr0, 3 years ago

Attachment: DNxHR_tests.7z added

DNxHR Tests

comment:1 by Carl Eugen Hoyos, 3 years ago

Component: undeterminedavcodec
Keywords: dnxhd added
Version: unspecifiedgit-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 by Elon Musk, 3 years ago

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 by Carl Eugen Hoyos, 3 years ago

Resolution: duplicate
Status: newclosed

Maybe a warning message should be shown...

comment:4 by pdr0, 3 years ago

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.