[FFmpeg-trac] #7163(avcodec:closed): 12-bit ProRes not supported

FFmpeg trac at avcodec.org
Thu Apr 26 01:47:38 EEST 2018


#7163: 12-bit ProRes not supported
-------------------------------------+-------------------------------------
             Reporter:               |                    Owner:
  spookybathtub                      |                   Status:  closed
                 Type:  enhancement  |                Component:  avcodec
             Priority:  wish         |               Resolution:
              Version:  unspecified  |  needs_more_info
             Keywords:  prores       |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------

Comment (by spookybathtub):

 Here is my test.  I make a 16-bit TIFF in Photoshop with a gray ramp from
 RGB value 12850 to 15420.  This makes the result easier to see than doing
 a full black to white ramp.  This is 2570 code values in an image 1920
 pixels wide, so it looks perfectly smooth on a waveform.

 I import this TIFF to Resolve, and render three ways: Prores 444, Prores
 422, and DPX 12 bit RGB, all using full-range levels.  Then I bring those
 renders back into Resolve and I stretch the contrast out so this gray
 section fills the whole waveform.

 Now in the Prores 422, I count 80 code values in the waveform, which is
 exactly what I would expect for 10-bit precision.  The PR444 and the DPX
 look nearly identical.  I expect there to be 320 steps, but I’m not going
 to count them all.  The PR444 looks a bit smoother due to dithering.  This
 proves that the Prores 444 is 12-bit.

 With ffmpeg, I convert the PR444 to 16-bit TIFF.  I bring this TIFF into
 Resolve, and stretch the contrast, and here I count 80 steps in the
 waveform.  This proves that ffmpeg is decoding the PR444 using 10-bit
 precision.

 I have attached screenshots of each waveform.  The original TIFF is too
 large to upload here, but I included the PR444 rendered from Resolve,
 which you can use to replicate my test.

 {{{
 $ ffmpeg -i ResolvePR444full.mov -pix_fmt rgb48le PR444full_ffmpeg16b.tif
 ffmpeg version 3.4.git Copyright (c) 2000-2018 the FFmpeg developers
   built with Apple LLVM version 9.1.0 (clang-902.0.39.1)
   configuration: --prefix=/opt/local --enable-swscale --enable-avfilter
 --enable-avresample --enable-libmp3lame --enable-libvorbis --enable-
 libopus --enable-librsvg --enable-libtheora --enable-libopenjpeg --enable-
 libmodplug --enable-libvpx --enable-libsoxr --enable-libspeex --enable-
 libass --enable-libbluray --enable-lzma --enable-gnutls --enable-
 fontconfig --enable-libfreetype --enable-libfribidi --disable-libjack
 --disable-libopencore-amrnb --disable-libopencore-amrwb --disable-libxcb
 --disable-libxcb-shm --disable-libxcb-xfixes --disable-indev=jack
 --enable-opencl --disable-outdev=xv --enable-audiotoolbox --enable-
 videotoolbox --enable-sdl2 --mandir=/opt/local/share/man --enable-shared
 --enable-pthreads --cc=/usr/bin/clang --arch=x86_64 --enable-x86asm
 --enable-libx265 --enable-gpl --enable-postproc --enable-libx264 --enable-
 libxvid --enable-nonfree --enable-libfdk-aac
   libavutil      56. 12.100 / 56. 12.100
   libavcodec     58. 15.100 / 58. 15.100
   libavformat    58. 10.100 / 58. 10.100
   libavdevice    58.  2.100 / 58.  2.100
   libavfilter     7. 13.100 /  7. 13.100
   libavresample   4.  0.  0 /  4.  0.  0
   libswscale      5.  0.102 /  5.  0.102
   libswresample   3.  0.101 /  3.  0.101
   libpostproc    55.  0.100 / 55.  0.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'ResolvePR444full.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 0
     compatible_brands: qt
     creation_time   : 2018-04-25T22:00:22.000000Z
   Duration: 00:00:00.04, start: 0.000000, bitrate: 9062 kb/s
     Stream #0:0(und): Video: prores (ap4h / 0x68347061),
 yuv444p10le(bt709/bt709/bt470m, progressive), 1920x1080, 8788 kb/s, SAR
 1:1 DAR 16:9, 24 fps, 24 tbr, 24 tbn, 24 tbc (default)
     Metadata:
       creation_time   : 2018-04-25T22:00:22.000000Z
       handler_name    : Core Media Data Handler
       encoder         : Apple ProRes 4444
       timecode        : 01:00:01:04
     Stream #0:1(und): Data: none (tmcd / 0x64636D74), 0 kb/s (default)
     Metadata:
       creation_time   : 2018-04-25T22:00:22.000000Z
       handler_name    : Core Media Data Handler
       timecode        : 01:00:01:04
 File 'PR444full_ffmpeg16b.tif' already exists. Overwrite ? [y/N] y
 Stream mapping:
   Stream #0:0 -> #0:0 (prores (native) -> tiff (native))
 Press [q] to stop, [?] for help
 Output #0, image2, to 'PR444full_ffmpeg16b.tif':
   Metadata:
     major_brand     : qt
     minor_version   : 0
     compatible_brands: qt
     encoder         : Lavf58.10.100
     Stream #0:0(und): Video: tiff, rgb48le, 1920x1080 [SAR 1:1 DAR 16:9],
 q=2-31, 200 kb/s, 24 fps, 24 tbn, 24 tbc (default)
     Metadata:
       creation_time   : 2018-04-25T22:00:22.000000Z
       handler_name    : Core Media Data Handler
       timecode        : 01:00:01:04
       encoder         : Lavc58.15.100 tiff
 frame=    1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
 speed=0.352x
 video:12129kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: unknown

 }}}

--
Ticket URL: <https://trac.ffmpeg.org/ticket/7163#comment:2>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list