[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