[FFmpeg-trac] #2165(undetermined:new): h264 lossless encoding, decoding does not produce same video content
FFmpeg
trac at avcodec.org
Mon Jan 21 14:08:22 CET 2013
#2165: h264 lossless encoding, decoding does not produce same video content
-------------------------------------+-------------------------------------
Reporter: silviob | Type: defect
Status: new | Priority: normal
Component: | Version:
undetermined | unspecified
Keywords: h264, | Blocked By:
lossless | Reproduced by developer: 0
Blocking: |
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
''Encoding'' a UYVY avi file [[BR]]
lossless_h264_encoding.avi [[BR]]
using ''lossless encoding (libx264)'' and then ''decoding'' it back to an
avi file [[BR]]
lossless_h264_encoding_check.avi [[BR]]
then the resulting video is ''different'' from the original one.
Sample files are on upload.ffmpeg.org.
I am using a recent windows binary (ffmpeg-20130115-git-5ce023b-
win64-static), and the following command lines:
{{{
<..>\ffmpeg-20130115-git-5ce023b-win64-static\bin\ffmpeg.exe -v 9
-loglevel 99 -i lossless_h264_encoding.avi -c:v libx264 -profile:v
high444 -crf 0 lossless_h264_encoding.h264
<..>\ffmpeg-20130115-git-5ce023b-win64-static\bin\ffmpeg.exe -v 9
-loglevel 99 -i lossless_h264_encoding.h264 -f avi -pix_fmt uyvy422
-vcodec rawvideo lossless_h264_encoding_check.avi
}}}
Following are the command lines used including output:
{{{
<..>\ffmpeg-20130115-git-5ce023b-win64-static\bin\ffmpeg.exe -v 9
-loglevel 99 -i lossless_h264_encoding.avi -c:v libx264 -profile:v
high444 -crf 0 lossless_h264_encoding.h264
ffmpeg version N-48886-g5ce023b Copyright (c) 2000-2013 the FFmpeg
developers
built on Jan 14 2013 19:21:37 with gcc 4.7.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads
--enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r
--enable-gnutls --enable-libass --enable-libbluray --enable-libcaca
--enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-
libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
--enable-libopus --enable-librtmp --enable-libschroedinger --enable-
libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc
--enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-
libx264 --enable-libxavs --enable-libxvid --enable-zlib --enable-
filter=frei0r
libavutil 52. 14.100 / 52. 14.100
libavcodec 54. 89.100 / 54. 89.100
libavformat 54. 59.107 / 54. 59.107
libavdevice 54. 3.102 / 54. 3.102
libavfilter 3. 32.100 / 3. 32.100
libswscale 2. 1.103 / 2. 1.103
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 2.100 / 52. 2.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set libav* logging level)
with argument '9'.
Reading option '-loglevel' ... matched as option 'loglevel' (set libav*
logging level) with argument '99'.
Reading option '-i' ... matched as input file with argument
'lossless_h264_encoding.avi'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument
'libx264'.
Reading option '-profile:v' ... matched as option 'profile' (set profile)
with argument 'high444'.
Reading option '-crf' ... matched as AVOption 'crf' with argument '0'.
Reading option 'lossless_h264_encoding.h264' ... matched as output file.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set libav* logging level) with argument 9.
Successfully parsed a group of options.
Parsing a group of options: input file lossless_h264_encoding.avi.
Successfully parsed a group of options.
Opening an input file: lossless_h264_encoding.avi.
[avi @ 000000000032baa0] Format avi probed with size=2048 and score=100
[avi @ 0000000000340ea0] use odml:1
[avi @ 000000000032baa0] File position before avformat_find_stream_info()
is 8204
[avi @ 000000000032baa0] parser not found for codec rawvideo, packets or
times may be invalid.
Last message repeated 1 times
[avi @ 000000000032baa0] All info found
[avi @ 000000000032baa0] File position after avformat_find_stream_info()
is 622612
Input #0, avi, from 'lossless_h264_encoding.avi':
Duration: 00:00:00.07, start: 0.000000, bitrate: 148446 kb/s
Stream #0:0, 1, 1/30: Video: rawvideo (UYVY / 0x59565955), uyvy422,
640x480, 1/30, 30 tbr, 30 tbn, 30 tbc
Successfully openened the file.
Parsing a group of options: output file lossless_h264_encoding.h264.
Applying option c:v (codec name) with argument libx264.
Applying option profile:v (set profile) with argument high444.
Successfully parsed a group of options.
Opening an output file: lossless_h264_encoding.h264.
Successfully openened the file.
[buffer @ 0000000000329e00] Setting entry with key 'video_size' to value
'640x480'
[buffer @ 0000000000329e00] Setting entry with key 'pix_fmt' to value '17'
[buffer @ 0000000000329e00] Setting entry with key 'time_base' to value
'1/30'
[buffer @ 0000000000329e00] Setting entry with key 'pixel_aspect' to value
'0/1'
[buffer @ 0000000000329e00] Setting entry with key 'sws_param' to value
'flags=2'
[buffer @ 0000000000329e00] Setting entry with key 'frame_rate' to value
'30/1'
[graph 0 input from stream 0:0 @ 0000000000341280] w:640 h:480
pixfmt:uyvy422 tb:1/30 fr:30/1 sar:0/1 sws_param:flags=2
[scale @ 000000000032a120] Setting 'w' to value '0'
[scale @ 000000000032a120] Setting 'h' to value '0'
[scale @ 000000000032a120] Setting 'flags' to value '0x4'
[auto-inserted scaler 0 @ 00000000003410e0] w:0 h:0 flags:'0x4' interl:0
[format @ 0000000000341200] auto-inserting filter 'auto-inserted scaler 0'
between the filter 'Parsed_null_0' and the filter 'format'
[auto-inserted scaler 0 @ 00000000003410e0] picking yuv422p out of 4
ref:uyvy422 alpha:0
[auto-inserted scaler 0 @ 00000000003410e0] w:640 h:480 fmt:uyvy422
sar:0/1 -> w:640 h:480 fmt:yuv422p sar:0/1 flags:0x4
[libx264 @ 0000000000328540] using mv_range_thread = 24
[libx264 @ 0000000000328540] using cpu capabilities: MMX2 SSE2Fast SSSE3
FastShuffle SSE4.2
[libx264 @ 0000000000328540] profile High 4:4:4 Predictive, level 3.0,
4:2:2 8-bit
Output #0, h264, to 'lossless_h264_encoding.h264':
Metadata:
encoder : Lavf54.59.107
Stream #0:0, 0, 1/90000: Video: h264, yuv422p, 640x480, 1/30, q=-1--1,
90k tbn, 30 tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo -> libx264)
Press [q] to stop, [?] for help
[libx264 @ 0000000000328540] using mv_range_thread = 24
[output stream 0:0 @ 0000000000341160] EOF on sink link output stream
0:0:default.
No more output streams to write to, finishing.
[libx264 @ 0000000000328540] frame= 0 QP=0.00 NAL=3 Slice:I Poc:0
I:1200 P:0 SKIP:0 size=169429 bytes
[libx264 @ 0000000000328540] frame= 1 QP=0.00 NAL=2 Slice:P Poc:2
I:848 P:345 SKIP:7 size=162549 bytes
frame= 2 fps=0.0 q=-1.0 Lsize= 324kB time=00:00:00.06
bitrate=39837.2kbits/s
video:324kB audio:0kB subtitle:0 global headers:0kB muxing overhead
0.000000%
[libx264 @ 0000000000328540] frame I:1 Avg QP: 0.00 size:169429
[libx264 @ 0000000000328540] frame P:1 Avg QP: 0.00 size:162549
[libx264 @ 0000000000328540] mb I I16..4: 14.8% 10.3% 74.9%
[libx264 @ 0000000000328540] mb P I16..4: 7.8% 31.4% 31.5% P16..4:
11.9% 9.4% 7.4% 0.0% 0.0% skip: 0.6%
[libx264 @ 0000000000328540] 8x8 transform intra:24.4% inter:78.3%
[libx264 @ 0000000000328540] coded y,uvDC,uvAC intra: 98.0% 99.2% 99.1%
inter: 96.6% 97.4% 97.2%
[libx264 @ 0000000000328540] i16 v,h,dc,p: 39% 59% 2% 0%
[libx264 @ 0000000000328540] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 30% 67% 0%
0% 1% 0% 0% 0% 0%
[libx264 @ 0000000000328540] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 32% 46% 3%
2% 5% 3% 4% 2% 2%
[libx264 @ 0000000000328540] i8c dc,h,v,p: 3% 47% 51% 0%
[libx264 @ 0000000000328540] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0000000000328540] kb/s:39837.36
[AVIOContext @ 00000000023993a0] Statistics: 1294464 bytes read, 4 seeks
<..>\ffmpeg-20130115-git-5ce023b-win64-static\bin\ffmpeg.exe -v 9
-loglevel 99 -i lossless_h264_encoding.h264 -f avi -pix_fmt uyvy422
-vcodec rawvideo lossless_h264_encoding_check.avi
ffmpeg version N-48886-g5ce023b Copyright (c) 2000-2013 the FFmpeg
developers
built on Jan 14 2013 19:21:37 with gcc 4.7.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads
--enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r
--enable-gnutls --enable-libass --enable-libbluray --enable-libcaca
--enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-
libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
--enable-libopus --enable-librtmp --enable-libschroedinger --enable-
libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc
--enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-
libx264 --enable-libxavs --enable-libxvid --enable-zlib --enable-
filter=frei0r
libavutil 52. 14.100 / 52. 14.100
libavcodec 54. 89.100 / 54. 89.100
libavformat 54. 59.107 / 54. 59.107
libavdevice 54. 3.102 / 54. 3.102
libavfilter 3. 32.100 / 3. 32.100
libswscale 2. 1.103 / 2. 1.103
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 2.100 / 52. 2.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set libav* logging level)
with argument '9'.
Reading option '-loglevel' ... matched as option 'loglevel' (set libav*
logging level) with argument '99'.
Reading option '-i' ... matched as input file with argument
'lossless_h264_encoding.h264'.
Reading option '-f' ... matched as option 'f' (force format) with argument
'avi'.
Reading option '-pix_fmt' ... matched as option 'pix_fmt' (set pixel
format) with argument 'uyvy422'.
Reading option '-vcodec' ... matched as option 'vcodec' (force video codec
('copy' to copy stream)) with argument 'rawvideo'.
Reading option 'lossless_h264_encoding_check.avi' ... matched as output
file.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set libav* logging level) with argument 9.
Successfully parsed a group of options.
Parsing a group of options: input file lossless_h264_encoding.h264.
Successfully parsed a group of options.
Opening an input file: lossless_h264_encoding.h264.
[h264 @ 000000000204e620] Format h264 probed with size=2048 and score=51
[h264 @ 000000000204e620] File position before avformat_find_stream_info()
is 0
[h264 @ 000000000204e620] decoding for stream 0 failed
[h264 @ 000000000204e620] Estimating duration from bitrate, this may be
inaccurate
[h264 @ 000000000204e620] File position after avformat_find_stream_info()
is 331978
Input #0, h264, from 'lossless_h264_encoding.h264':
Duration: N/A, bitrate: N/A
Stream #0:0, 2, 1/1200000: Video: h264 (High 4:4:4 Predictive),
yuv422p, 640x480, 1/60, 30 tbr, 1200k tbn, 60 tbc
Successfully openened the file.
Parsing a group of options: output file lossless_h264_encoding_check.avi.
Applying option f (force format) with argument avi.
Applying option pix_fmt (set pixel format) with argument uyvy422.
Applying option vcodec (force video codec ('copy' to copy stream)) with
argument rawvideo.
Successfully parsed a group of options.
Opening an output file: lossless_h264_encoding_check.avi.
Successfully openened the file.
[buffer @ 00000000020b92e0] Setting entry with key 'video_size' to value
'640x480'
[buffer @ 00000000020b92e0] Setting entry with key 'pix_fmt' to value '4'
[buffer @ 00000000020b92e0] Setting entry with key 'time_base' to value
'1/1200000'
[buffer @ 00000000020b92e0] Setting entry with key 'pixel_aspect' to value
'0/1'
[buffer @ 00000000020b92e0] Setting entry with key 'sws_param' to value
'flags=2'
[buffer @ 00000000020b92e0] Setting entry with key 'frame_rate' to value
'60/2'
[graph 0 input from stream 0:0 @ 00000000020d0dc0] w:640 h:480
pixfmt:yuv422p tb:1/1200000 fr:30/1 sar:0/1 sws_param:flags=2
[scale @ 00000000020b8fc0] Setting 'w' to value '0'
[scale @ 00000000020b8fc0] Setting 'h' to value '0'
[scale @ 00000000020b8fc0] Setting 'flags' to value '0x4'
[auto-inserted scaler 0 @ 00000000020d0b80] w:0 h:0 flags:'0x4' interl:0
[format @ 00000000020d0ca0] auto-inserting filter 'auto-inserted scaler 0'
between the filter 'Parsed_null_0' and the filter 'format'
[auto-inserted scaler 0 @ 00000000020d0b80] w:640 h:480 fmt:yuv422p
sar:0/1 -> w:640 h:480 fmt:uyvy422 sar:0/1 flags:0x4
[h264 @ 000000000204b140] detected 8 logical cores
Output #0, avi, to 'lossless_h264_encoding_check.avi':
Metadata:
ISFT : Lavf54.59.107
Stream #0:0, 0, 1/30: Video: rawvideo (UYVY / 0x59565955), uyvy422,
640x480, 1/30, q=2-31, 200 kb/s, 30 tbn, 30 tbc
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> rawvideo)
Press [q] to stop, [?] for help
[h264 @ 0000000004650b60] Using externally provided dimensions
[output stream 0:0 @ 00000000020d0d20] EOF on sink link output stream
0:0:default.
No more output streams to write to, finishing.
frame= 2 fps=0.0 q=0.0 Lsize= 1206kB time=00:00:00.06
bitrate=148142.9kbits/s
video:1200kB audio:0kB subtitle:0 global headers:0kB muxing overhead
0.466309%
[AVIOContext @ 000000000204bd40] Statistics: 331978 bytes read, 0 seeks
}}}
--
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/2165>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list