[FFmpeg-trac] #2524(avcodec:new): vc1 error concealment
FFmpeg
trac at avcodec.org
Wed May 1 14:36:57 CEST 2013
#2524: vc1 error concealment
---------------------------------------+---------------------------------
Reporter: cehoyos | Owner:
Type: enhancement | Status: new
Priority: wish | Component: avcodec
Version: git-master | Keywords: vc1
Blocked By: | Blocking:
Reproduced by developer: 0 | Analyzed by developer: 0
---------------------------------------+---------------------------------
Original sample:
http://samples.ffmpeg.org/archive/all/vc1+vc1+++artifacts7.vc1
I will attach a vc1 sample containing 13 frames (first and last are
I-frames, both decoded bit-exact). The reference decoder fails to decode
the 12th frame (a B-frame afaict) with "FATAL ERROR: DecodeACRunLevel: AC
coef array overrun", ffmpeg shows artefacts that can probably be concealed
better.
{{{
$ ffmpeg -loglevel debug -i vc1+vc1+++artifacts7_cut.vc1 -qscale 2 out.avi
ffmpeg version N-52608-g0061ba0 Copyright (c) 2000-2013 the FFmpeg
developers
built on May 1 2013 10:57:35 with gcc 4.7 (SUSE Linux)
configuration: --enable-gpl --disable-indev=jack
libavutil 52. 27.101 / 52. 27.101
libavcodec 55. 6.100 / 55. 6.100
libavformat 55. 3.100 / 55. 3.100
libavdevice 55. 0.100 / 55. 0.100
libavfilter 3. 61.101 / 3. 61.101
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 3.100 / 52. 3.100
Splitting the commandline.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging
level) with argument 'debug'.
Reading option '-i' ... matched as input file with argument
'vc1+vc1+++artifacts7_cut.vc1'.
Reading option '-qscale' ... matched as option 'qscale' (use fixed quality
scale (VBR)) with argument '2'.
Reading option 'out.avi' ... matched as output file.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option loglevel (set logging level) with argument debug.
Successfully parsed a group of options.
Parsing a group of options: input file vc1+vc1+++artifacts7_cut.vc1.
Successfully parsed a group of options.
Opening an input file: vc1+vc1+++artifacts7_cut.vc1.
[vc1 @ 0x2c6d7e0] Format vc1 probed with size=2048 and score=50
[vc1 @ 0x2c6d7e0] File position before avformat_find_stream_info() is 0
[NULL @ 0x2c6e380] Header: DBFE3BF2
[NULL @ 0x2c6e380] Advanced Profile level 3:
frmrtq_postproc=7, bitrtq_postproc=31
LoopFilter=0, ChromaFormat=1, Pulldown=1, Interlace: 1
TFCTRflag=0, FINTERPflag=0
[NULL @ 0x2c6e380] Display extended info:
[NULL @ 0x2c6e380] Display dimensions: 1920x1080
[NULL @ 0x2c6e380] Aspect: 1:1
[NULL @ 0x2c6e380] Entry point: 1ADFFCEF
[NULL @ 0x2c6e380] Entry point info:
BrokenLink=0, ClosedEntry=0, PanscanFlag=0
RefDist=1, Postproc=1, FastUVMC=0, ExtMV=1
DQuant=1, VSTransform=1, Overlap=0, Qmode=3
[vc1 @ 0x2c6e380] Header: DBFE3BF2
[vc1 @ 0x2c6e380] Advanced Profile level 3:
frmrtq_postproc=7, bitrtq_postproc=31
LoopFilter=0, ChromaFormat=1, Pulldown=1, Interlace: 1
TFCTRflag=0, FINTERPflag=0
[vc1 @ 0x2c6e380] Display extended info:
[vc1 @ 0x2c6e380] Display dimensions: 1920x1080
[vc1 @ 0x2c6e380] Aspect: 1:1
[vc1 @ 0x2c6e380] Entry point: 1ADFFCEF
[vc1 @ 0x2c6e380] Entry point info:
BrokenLink=0, ClosedEntry=0, PanscanFlag=0
RefDist=1, Postproc=1, FastUVMC=0, ExtMV=1
DQuant=1, VSTransform=1, Overlap=0, Qmode=3
[vc1 @ 0x2c6e380] Header: DBFE3BF2
[vc1 @ 0x2c6e380] Advanced Profile level 3:
frmrtq_postproc=7, bitrtq_postproc=31
LoopFilter=1, ChromaFormat=1, Pulldown=1, Interlace: 1
TFCTRflag=0, FINTERPflag=0
[vc1 @ 0x2c6e380] Display extended info:
[vc1 @ 0x2c6e380] Display dimensions: 1920x1080
[vc1 @ 0x2c6e380] Aspect: 1:1
[vc1 @ 0x2c6e380] Entry point: 1ADFFCEF
[vc1 @ 0x2c6e380] Entry point info:
BrokenLink=0, ClosedEntry=0, PanscanFlag=0
RefDist=1, Postproc=1, FastUVMC=0, ExtMV=1
DQuant=1, VSTransform=1, Overlap=0, Qmode=3
[vc1 @ 0x2c6d7e0] File position after avformat_find_stream_info() is
919438
Input #0, vc1, from 'vc1+vc1+++artifacts7_cut.vc1':
Duration: N/A, bitrate: N/A
Stream #0:0, 13, 1/1200000: Video: vc1 (Advanced), yuv420p, 1920x1080
[SAR 1:1 DAR 16:9], 1001/60000, 29.97 fps, 29.97 tbr, 1200k tbn, 59.94 tbc
Successfully opened the file.
Parsing a group of options: output file out.avi.
Applying option qscale (use fixed quality scale (VBR)) with argument 2.
Please use -q:a or -q:v, -qscale is ambiguous
Successfully parsed a group of options.
Opening an output file: out.avi.
Successfully opened the file.
[graph 0 input from stream 0:0 @ 0x2ccf1a0] Setting 'video_size' to value
'1920x1080'
[graph 0 input from stream 0:0 @ 0x2ccf1a0] Setting 'pix_fmt' to value '0'
[graph 0 input from stream 0:0 @ 0x2ccf1a0] Setting 'time_base' to value
'1/1200000'
[graph 0 input from stream 0:0 @ 0x2ccf1a0] Setting 'pixel_aspect' to
value '1/1'
[graph 0 input from stream 0:0 @ 0x2ccf1a0] Setting 'sws_param' to value
'flags=2'
[graph 0 input from stream 0:0 @ 0x2ccf1a0] Setting 'frame_rate' to value
'60000/2002'
[graph 0 input from stream 0:0 @ 0x2ccf1a0] w:1920 h:1080 pixfmt:yuv420p
tb:1/1200000 fr:30000/1001 sar:1/1 sws_param:flags=2
[format @ 0x2c6ece0] compat: called with args=[yuv420p]
[format @ 0x2c6ece0] Setting 'pix_fmts' to value 'yuv420p'
[AVFilterGraph @ 0x2c75dc0] query_formats: 4 queried, 3 merged, 0 already
done, 0 delayed
[mpeg4 @ 0x2c755e0] detected 8 logical cores
[mpeg4 @ 0x2c755e0] intra_quant_bias = 0 inter_quant_bias = -64
[vc1 @ 0x2c6e380] Header: DBFE3BF2
[vc1 @ 0x2c6e380] Advanced Profile level 3:
frmrtq_postproc=7, bitrtq_postproc=31
LoopFilter=0, ChromaFormat=1, Pulldown=1, Interlace: 1
TFCTRflag=0, FINTERPflag=0
[vc1 @ 0x2c6e380] Display extended info:
[vc1 @ 0x2c6e380] Display dimensions: 1920x1080
[vc1 @ 0x2c6e380] Aspect: 1:1
[vc1 @ 0x2c6e380] Entry point: 1ADFFCEF
[vc1 @ 0x2c6e380] Entry point info:
BrokenLink=0, ClosedEntry=0, PanscanFlag=0
RefDist=1, Postproc=1, FastUVMC=0, ExtMV=1
DQuant=1, VSTransform=1, Overlap=0, Qmode=3
Output #0, avi, to 'out.avi':
Metadata:
ISFT : Lavf55.3.100
Stream #0:0, 0, 1001/30000: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p,
1920x1080 [SAR 1:1 DAR 16:9], 1001/30000, q=2-31, 200 kb/s, 29.97 tbn,
29.97 tbc
Stream mapping:
Stream #0:0 -> #0:0 (vc1 -> mpeg4)
Press [q] to stop, [?] for help
[vc1 @ 0x2c6e380] Entry point: 1ADFFCEF
[vc1 @ 0x2c6e380] Entry point info:
BrokenLink=0, ClosedEntry=0, PanscanFlag=0
RefDist=1, Postproc=1, FastUVMC=0, ExtMV=1
DQuant=1, VSTransform=1, Overlap=0, Qmode=3
[vc1 @ 0x2c6e380] ACPRED plane encoding: Imode: 4, Invert: 0
[vc1 @ 0x2c6e380] VOP DQuant info
[vc1 @ 0x2c6e380] MB Skip plane encoding: Imode: 4, Invert: 0
[vc1 @ 0x2c6e380] VOP DQuant info
[vc1 @ 0x2c6e380] MB Direct Type plane encoding: Imode: 4, Invert: 0
[vc1 @ 0x2c6e380] MB Skip plane encoding: Imode: 4, Invert: 0
[vc1 @ 0x2c6e380] VOP DQuant info
[vc1 @ 0x2c6e380] MB Direct Type plane encoding: Imode: 5, Invert: 0
[vc1 @ 0x2c6e380] MB Skip plane encoding: Imode: 4, Invert: 0
[vc1 @ 0x2c6e380] VOP DQuant info
[vc1 @ 0x2c6e380] MB Skip plane encoding: Imode: 4, Invert: 0
[vc1 @ 0x2c6e380] VOP DQuant info
[vc1 @ 0x2c6e380] MB Direct Type plane encoding: Imode: 5, Invert: 0
[vc1 @ 0x2c6e380] MB Skip plane encoding: Imode: 2, Invert: 0
[vc1 @ 0x2c6e380] VOP DQuant info
[vc1 @ 0x2c6e380] MB Direct Type plane encoding: Imode: 5, Invert: 0
[vc1 @ 0x2c6e380] MB Skip plane encoding: Imode: 4, Invert: 0
[vc1 @ 0x2c6e380] VOP DQuant info
[vc1 @ 0x2c6e380] MB Skip plane encoding: Imode: 4, Invert: 0
[vc1 @ 0x2c6e380] VOP DQuant info
[vc1 @ 0x2c6e380] MB Direct Type plane encoding: Imode: 5, Invert: 0
[vc1 @ 0x2c6e380] MB Skip plane encoding: Imode: 4, Invert: 0
[vc1 @ 0x2c6e380] VOP DQuant info
[vc1 @ 0x2c6e380] MB Direct Type plane encoding: Imode: 5, Invert: 0
[vc1 @ 0x2c6e380] MB Skip plane encoding: Imode: 4, Invert: 1
[vc1 @ 0x2c6e380] VOP DQuant info
[vc1 @ 0x2c6e380] MB Skip plane encoding: Imode: 4, Invert: 0
[vc1 @ 0x2c6e380] VOP DQuant info
[vc1 @ 0x2c6e380] MB Direct Type plane encoding: Imode: 4, Invert: 0
[vc1 @ 0x2c6e380] MB Skip plane encoding: Imode: 4, Invert: 0
[vc1 @ 0x2c6e380] VOP DQuant info
[vc1 @ 0x2c6e380] Entry point: 1ADFFCEF
[vc1 @ 0x2c6e380] Entry point info:
BrokenLink=0, ClosedEntry=0, PanscanFlag=0
RefDist=1, Postproc=1, FastUVMC=0, ExtMV=1
DQuant=1, VSTransform=1, Overlap=0, Qmode=3
[vc1 @ 0x2c6e380] ACPRED plane encoding: Imode: 4, Invert: 0
[vc1 @ 0x2c6e380] VOP DQuant info
[output stream 0:0 @ 0x2cd03c0] EOF on sink link output stream
0:0:default.
No more output streams to write to, finishing.
frame= 13 fps=0.0 q=2.0 Lsize= 420kB time=00:00:00.56
bitrate=6059.0kbits/s
video:414kB audio:0kB subtitle:0 global headers:0kB muxing overhead
1.458072%
14 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0x2c75c40] Statistics: 9 seeks, 25 writeouts
[AVIOContext @ 0x2c75e60] Statistics: 919438 bytes read, 0 seeks
}}}
It could be considered a bug imo that FFmpeg does not warn about the
broken frame.
--
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/2524>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list