[FFmpeg-devel] [PATCH] avcodec/dpx: Support for RGB 12-bit packed decoding

Kieran O Leary kieran.o.leary at gmail.com
Tue Apr 10 14:13:28 EEST 2018


Hi

On Tue, Apr 10, 2018 at 11:34 AM, Carl Eugen Hoyos <ceffmpeg at gmail.com> wrote:
> 2018-04-10 12:28 GMT+02:00, Kieran O Leary <kieran.o.leary at gmail.com>:
>> I just tested this patch non packed to 16-bit gbrp12le DPX from DaVinci
>> Resolve.
>
> Testing is good, apart from more brackets (and less comments) it would
> be better if Jerome sends his public keys to Michael and pushes the patch.
>
>> Encoding to FFV1 and back again to DPX produced the same
>> framemd5 values.
>
> (I believe we already discussed in public that testing FFmpeg's bugs
> with FFmpeg makes limited sense.)
>

Yes, and at the risk of making a fool of myself, here's some slightly
different testing sing the graphicsmagick dpx encoder:
The following console outputs have 4 steps:

1. Use gm convert to decode 12-bit DPX to 12-bit DPX (padded to 16-bit DPX)
2. Use ffmpeg convert to decode 12-bit DPX to 12-bit DPX (padded to 16-bit DPX)
3. Use ffmpeg to decode the graphicsmagick file with the md5 muxer
4. Use ffmpeg to decode the ffmpeg file with the md5 muxer

The same md5 values are produced in steps 3 and 4- not sure what it
proves exactly, maybe that even if the ffmpeg decoder is buggy, at
least it decodes the files produced by Jerome's patch and the existing
GM decoder in the same way?

$ gm convert -verbose
6e0edc3b-7d89-4710-8b9a-66c8c990f9dc_1_00094787.dpx gm_dpx_to_dpx.dpx

6e0edc3b-7d89-4710-8b9a-66c8c990f9dc_1_00094787.dpx DPX 1600x1168+0+0
DirectClass 12-bit 8.0Mi 0.030u 0m:0.050000s

6e0edc3b-7d89-4710-8b9a-66c8c990f9dc_1_00094787.dpx=>gm_dpx_to_dpx.dpx
DPX 1600x1168+0+0 DirectClass 12-bit 10.7Mi 0.040u 0m:0.150000s
(11.9Mi pixels/s)



$ ./ffmpeg  -i 6e0edc3b-7d89-4710-8b9a-66c8c990f9dc_1_00094787.dpx
ffmpeg_dpx_to_dpx.dpx

ffmpeg version N-90642-gd64183e Copyright (c) 2000-2018 the FFmpeg developers

  built with Apple LLVM version 8.0.0 (clang-800.0.42.1)

  configuration:

  libavutil      56. 13.100 / 56. 13.100

  libavcodec     58. 17.100 / 58. 17.100

  libavformat    58. 11.101 / 58. 11.101

  libavdevice    58.  2.100 / 58.  2.100

  libavfilter     7. 14.100 /  7. 14.100

  libswscale      5.  0.102 /  5.  0.102

  libswresample   3.  0.101 /  3.  0.101

[dpx_pipe @ 0x7f80db809000] Stream #0: not enough frames to estimate
rate; consider increasing probesize

Input #0, dpx_pipe, from '6e0edc3b-7d89-4710-8b9a-66c8c990f9dc_1_00094787.dpx':

  Duration: N/A, bitrate: N/A

    Stream #0:0: Video: dpx, gbrp12le, 1600x1168 [SAR 1:1 DAR 100:73],
24 tbr, 25 tbn, 24 tbc

Stream mapping:

  Stream #0:0 -> #0:0 (dpx (native) -> dpx (native))

Press [q] to stop, [?] for help

Output #0, image2, to 'ffmpeg_dpx_to_dpx.dpx':

  Metadata:

    encoder         : Lavf58.11.101

    Stream #0:0: Video: dpx, gbrp12le, 1600x1168 [SAR 1:1 DAR 100:73],
q=2-31, 200 kb/s, 24 fps, 24 tbn, 24 tbc

    Metadata:

      encoder         : Lavc58.17.100 dpx

frame=    1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
speed=0.286x

video:10952kB audio:0kB subtitle:0kB other streams:0kB global
headers:0kB muxing overhead: unknown



$ ./ffmpeg -i ffmpeg_dpx_to_dpx.dpx -f md5 -

ffmpeg version N-90642-gd64183e Copyright (c) 2000-2018 the FFmpeg developers

  built with Apple LLVM version 8.0.0 (clang-800.0.42.1)

  configuration:

  libavutil      56. 13.100 / 56. 13.100

  libavcodec     58. 17.100 / 58. 17.100

  libavformat    58. 11.101 / 58. 11.101

  libavdevice    58.  2.100 / 58.  2.100

  libavfilter     7. 14.100 /  7. 14.100

  libswscale      5.  0.102 /  5.  0.102

  libswresample   3.  0.101 /  3.  0.101

[dpx_pipe @ 0x7ff76b009000] Stream #0: not enough frames to estimate
rate; consider increasing probesize

Input #0, dpx_pipe, from 'ffmpeg_dpx_to_dpx.dpx':

  Duration: N/A, bitrate: N/A

    Stream #0:0: Video: dpx, gbrp12le, 1600x1168 [SAR 1:1 DAR 100:73],
25 tbr, 25 tbn, 25 tbc

Stream mapping:

  Stream #0:0 -> #0:0 (dpx (native) -> rawvideo (native))

Press [q] to stop, [?] for help

Output #0, md5, to 'pipe:':

  Metadata:

    encoder         : Lavf58.11.101

    Stream #0:0: Video: rawvideo (G3[0][12] / 0xC003347), gbrp12le,
1600x1168 [SAR 1:1 DAR 100:73], q=2-31, 1681920 kb/s, 25 fps, 25 tbn,
25 tbc

    Metadata:

      encoder         : Lavc58.17.100 rawvideo

MD5=aa43e3ec1c2a8e4499b3bc796a35185b

frame=    1 fps=0.0 q=-0.0 Lsize=       0kB time=00:00:00.04 bitrate=
 7.4kbits/s speed=1.25x

video:10950kB audio:0kB subtitle:0kB other streams:0kB global
headers:0kB muxing overhead: unknown



$ ./ffmpeg -i gm_dpx_to_dpx.dpx -f md5 -

ffmpeg version N-90642-gd64183e Copyright (c) 2000-2018 the FFmpeg developers

  built with Apple LLVM version 8.0.0 (clang-800.0.42.1)

  configuration:

  libavutil      56. 13.100 / 56. 13.100

  libavcodec     58. 17.100 / 58. 17.100

  libavformat    58. 11.101 / 58. 11.101

  libavdevice    58.  2.100 / 58.  2.100

  libavfilter     7. 14.100 /  7. 14.100

  libswscale      5.  0.102 /  5.  0.102

  libswresample   3.  0.101 /  3.  0.101

[dpx_pipe @ 0x7fe9d2809000] Stream #0: not enough frames to estimate
rate; consider increasing probesize

Input #0, dpx_pipe, from 'gm_dpx_to_dpx.dpx':

  Duration: N/A, bitrate: N/A

    Stream #0:0: Video: dpx, gbrp12le, 1600x1168 [SAR 1:1 DAR 100:73],
24 tbr, 25 tbn, 24 tbc

Stream mapping:

  Stream #0:0 -> #0:0 (dpx (native) -> rawvideo (native))

Press [q] to stop, [?] for help

Output #0, md5, to 'pipe:':

  Metadata:

    encoder         : Lavf58.11.101

    Stream #0:0: Video: rawvideo (G3[0][12] / 0xC003347), gbrp12le,
1600x1168 [SAR 1:1 DAR 100:73], q=2-31, 1614643 kb/s, 24 fps, 24 tbn,
24 tbc

    Metadata:

      encoder         : Lavc58.17.100 rawvideo

MD5=aa43e3ec1c2a8e4499b3bc796a35185b

frame=    1 fps=0.0 q=-0.0 Lsize=       0kB time=00:00:00.04 bitrate=
 7.1kbits/s speed=1.32x

video:10950kB audio:0kB subtitle:0kB other streams:0kB global
headers:0kB muxing overhead: unknown


More information about the ffmpeg-devel mailing list