[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