[FFmpeg-user] yuv422p16le silently converted to yuv422p10le - even if pix_fmt is set to 16bit
Peter B.
pb at das-werkstatt.com
Thu Oct 4 12:55:32 CEST 2012
I just came across another oddity with the VQEG YUV10 material and ffmpeg:
If encoded to FFv1.1, once with and once without a target pix_fmt
specified, both files have the exact identical properties (according
to ffprobe), but differ in filesize.
without pix_fmt: 143.863.496 Bytes
with pix_fmt given: 144.422.286 Bytes
Then I did framemd5 comparisons and found out that their checksums
don't match.
//-------------------------
$ffmpeg -s 720x576 -r 25 -i
client/VQEG/HDTV/SVT_exports/SVT_YUV10_Exports_/NewMobCal_YUV10_576i25_/%05d.yuv10 -an -vcodec ffv1
client/output/yuv10/NewMobCal_576i25-ffv1_without_pixfmt.avi
ffmpeg version N-44894-g5f1c3c7 Copyright (c) 2000-2012 the FFmpeg developers
built on Sep 30 2012 04:26:08 with gcc 4.4.5 (Debian 4.4.5-8)
configuration: --prefix=/usr/local --enable-gpl --enable-nonfree
--enable-version3 --enable-postproc --enable-swscale --enable-avfilter
--enable-pthreads --enable-bzlib --enable-libmp3lame
--enable-libvorbis --enable-libxvid --enable-zlib --enable-libopenjpeg
--enable-decoder=png --enable-encoder=png --enable-libfreetype
--enable-libschroedinger
libavutil 51. 73.101 / 51. 73.101
libavcodec 54. 61.100 / 54. 61.100
libavformat 54. 29.105 / 54. 29.105
libavdevice 54. 3.100 / 54. 3.100
libavfilter 3. 18.100 / 3. 18.100
libswscale 2. 1.101 / 2. 1.101
libswresample 0. 16.100 / 0. 16.100
libpostproc 52. 1.100 / 52. 1.100
Input #0, image2, from
'client/VQEG/HDTV/SVT_exports/SVT_YUV10_Exports_/NewMobCal_YUV10_576i25_/%05d.yuv10':
Duration: 00:00:10.08, start: 0.000000, bitrate: N/A
Stream #0:0: Video: v210x, yuv422p16le, 720x576, 25 fps, 25 tbr,
25 tbn, 25 tbc
[ffv1 @ 0x970fba0] bits_per_raw_sample > 8, forcing coder 1
Output #0, avi, to
'client/output/yuv10/NewMobCal_576i25-ffv1_without_pixfmt.avi':
Metadata:
ISFT : Lavf54.29.105
Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv422p16le,
720x576, q=2-31, 200 kb/s, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (v210x -> ffv1)
Press [q] to stop, [?] for help
frame= 252 fps=4.8 q=0.0 Lsize= 140492kB time=00:00:10.08
bitrate=114177.4kbits/s
video:140480kB audio:0kB subtitle:0 global headers:0kB muxing overhead
0.008249%
//-------------------------
ffmpeg -s 720x576 -r 25 -i
client/VQEG/HDTV/SVT_exports/SVT_YUV10_Exports_/NewMob
Cal_YUV10_576i25_/%05d.yuv10 -an -vcodec ffv1 -pix_fmt yuv422p10le
client/output/yuv10/NewMobCal_576i25-ffv1_with_p
ixfmt.avi
ffmpeg version N-44894-g5f1c3c7 Copyright (c) 2000-2012 the FFmpeg developers
built on Sep 30 2012 04:26:08 with gcc 4.4.5 (Debian 4.4.5-8)
configuration: --prefix=/usr/local --enable-gpl --enable-nonfree
--enable-version3 --enable-postproc --enable-sws
cale --enable-avfilter --enable-pthreads --enable-bzlib
--enable-libmp3lame --enable-libvorbis --enable-libxvid --e
nable-zlib --enable-libopenjpeg --enable-decoder=png
--enable-encoder=png --enable-libfreetype --enable-libschroedi
nger
libavutil 51. 73.101 / 51. 73.101
libavcodec 54. 61.100 / 54. 61.100
libavformat 54. 29.105 / 54. 29.105
libavdevice 54. 3.100 / 54. 3.100
libavfilter 3. 18.100 / 3. 18.100
libswscale 2. 1.101 / 2. 1.101
libswresample 0. 16.100 / 0. 16.100
libpostproc 52. 1.100 / 52. 1.100
Input #0, image2, from
'client/VQEG/HDTV/SVT_exports/SVT_YUV10_Exports_/NewMobCal_YUV10_576i25_/%05d.yuv10':
Duration: 00:00:10.08, start: 0.000000, bitrate: N/A
Stream #0:0: Video: v210x, yuv422p16le, 720x576, 25 fps, 25 tbr,
25 tbn, 25 tbc
[ffv1 @ 0x937cba0] bits_per_raw_sample > 8, forcing coder 1
Output #0, avi, to
'client/output/yuv10/NewMobCal_576i25-ffv1_with_pixfmt.avi':
Metadata:
ISFT : Lavf54.29.105
Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), yuv422p10le,
720x576, q=2-31, 200 kb/s, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (v210x -> ffv1)
Press [q] to stop, [?] for help
frame= 252 fps=5.3 q=0.0 Lsize= 141037kB time=00:00:10.08
bitrate=114620.9kbits/s
video:141026kB audio:0kB subtitle:0 global headers:0kB muxing overhead
0.008212%
//-------------------------
Here's ffprobe's output of both files:
//-------------------------
ffprobe -v debug client/output/yuv10/NewMobCal_576i25-ffv1_without_pixfmt.avi
ffprobe version N-44894-g5f1c3c7 Copyright (c) 2007-2012 the FFmpeg developers
built on Sep 30 2012 04:26:08 with gcc 4.4.5 (Debian 4.4.5-8)
configuration: --prefix=/usr/local --enable-gpl --enable-nonfree
--enable-version3 --enable-postproc --enable-swscale --enable-avfilter
--enable-pthreads --enable-bzlib --enable-libmp3lame
--enable-libvorbis --enable-libxvid --enable-zlib --enable-libopenjpeg
--enable-decoder=png --enable-encoder=png --enable-libfreetype
--enable-libschroedinger
libavutil 51. 73.101 / 51. 73.101
libavcodec 54. 61.100 / 54. 61.100
libavformat 54. 29.105 / 54. 29.105
libavdevice 54. 3.100 / 54. 3.100
libavfilter 3. 18.100 / 3. 18.100
libswscale 2. 1.101 / 2. 1.101
libswresample 0. 16.100 / 0. 16.100
libpostproc 52. 1.100 / 52. 1.100
[avi @ 0x95c8e80] Format avi probed with size=2048 and score=100
[avi @ 0x95c9420] use odml:1
[avi @ 0x95c8e80] File position before avformat_find_stream_info() is 5674
[avi @ 0x95c8e80] parser not found for codec ffv1, packets or times
may be invalid.
Last message repeated 1 times
[avi @ 0x95c8e80] All info found
[avi @ 0x95c8e80] File position after avformat_find_stream_info() is 441623
Input #0, avi, from
'client/output/yuv10/NewMobCal_576i25-ffv1_without_pixfmt.avi':
Metadata:
encoder : Lavf54.29.105
Duration: 00:00:10.08, start: 0.000000, bitrate: 114177 kb/s
Stream #0:0, 1, 1/25: Video: ffv1 (FFV1 / 0x31564646),
yuv422p10le, 720x576, 1/25, 25 tbr, 25 tbn, 25 tbc
[ffv1 @ 0x95cf160] detected 4 logical cores
[AVIOContext @ 0x95d1460] Statistics: 509557 bytes read, 4 seeks
//-------------------------
ffprobe -v debug client/output/yuv10/NewMobCal_576i25-ffv1_with_pixfmt.avi
ffprobe version N-44894-g5f1c3c7 Copyright (c) 2007-2012 the FFmpeg developers
built on Sep 30 2012 04:26:08 with gcc 4.4.5 (Debian 4.4.5-8)
configuration: --prefix=/usr/local --enable-gpl --enable-nonfree
--enable-version3 --enable-postproc --enable-swscale --enable-avfilter
--enable-pthreads --enable-bzlib --enable-libmp3lame
--enable-libvorbis --enable-libxvid --enable-zlib --enable-libopenjpeg
--enable-decoder=png --enable-encoder=png --enable-libfreetype
--enable-libschroedinger
libavutil 51. 73.101 / 51. 73.101
libavcodec 54. 61.100 / 54. 61.100
libavformat 54. 29.105 / 54. 29.105
libavdevice 54. 3.100 / 54. 3.100
libavfilter 3. 18.100 / 3. 18.100
libswscale 2. 1.101 / 2. 1.101
libswresample 0. 16.100 / 0. 16.100
libpostproc 52. 1.100 / 52. 1.100
[avi @ 0xa347e80] Format avi probed with size=2048 and score=100
[avi @ 0xa348400] use odml:1
[avi @ 0xa347e80] File position before avformat_find_stream_info() is 5674
[avi @ 0xa347e80] parser not found for codec ffv1, packets or times
may be invalid.
Last message repeated 1 times
[avi @ 0xa347e80] All info found
[avi @ 0xa347e80] File position after avformat_find_stream_info() is 445734
Input #0, avi, from
'client/output/yuv10/NewMobCal_576i25-ffv1_with_pixfmt.avi':
Metadata:
encoder : Lavf54.29.105
Duration: 00:00:10.08, start: 0.000000, bitrate: 114620 kb/s
Stream #0:0, 1, 1/25: Video: ffv1 (FFV1 / 0x31564646),
yuv422p10le, 720x576, 1/25, 25 tbr, 25 tbn, 25 tbc
[ffv1 @ 0xa34e140] detected 4 logical cores
[AVIOContext @ 0xa350440] Statistics: 513668 bytes read, 4 seeks
//-------------------------
I think that this behavior is very confusing, and I thought you might
want to know.
I'll try this again by converting the source to raw yuv422p16le, as
the source input of v210x might introduce some oddities here.
Thanks,
Pb
More information about the ffmpeg-user
mailing list