* qatar/master:
vc1: Always reset numref when parsing a new frame header.
Conflicts:
libavcodec/vc1.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Fixes an issue where the B-frame coding mode switches from interlaced
fields to interlaced frames, causing incorrect decisions in the motion
compensation code and resulting in visual artifacts.
CC: libav-stable@libav.org
Signed-off-by: Tim Walker <tdskywalker@gmail.com>
1 is the only valid value for VC-1/WMV3, and setting it here makes sure
no invalid value is send to a hw accelerator, for example.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Introduced by 28243b0d35
Intensity compensation is always used once it was encountered, because
v->next_use_ic is never set back to zero.
Reset v->next_use_ic, when resetting v->next_luty/uv.
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Fix https://trac.ffmpeg.org/ticket/3204
The problem was that intensity compensation was always used once it was
encountered. This is because v->next_use_ic was never set back to zero.
To fix this, when resetting v->next_luty/uv, also reset v->next_use_ic.
This improved (restored) performance by 85% when decoding
http://bit.ly/bbbwmv
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Tables are always allocated now with sufficient space for either progressive
or interlaced content. The alternative would be to detect a change
and reallocate.
This fixes decoding of a sample.
Signed-off-by: Martin Storsjö <martin@martin.st>
Fixes ticket2531
Tables are always allocated now with sufficient space for either progressive
or interlaced content. The alternative would be to detect a change
and reallocate.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* commit 'de44dfc7c0ec02bda7d846ef713145c890bfae3f':
vc1: Reset numref if fieldmode is not set
This change is redundant, numref is already reset
Merged-by: Michael Niedermayer <michaelni@gmx.at>
There are samples in the wild with B-frames and P-frames with different
interlace mode.
CC: libav-stable@libav.org
Reported-by: Jean-Baptiste Kempf <jb@videolan.org>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Use the intensity-compensated reference frame for subsequent
fields/B-frames.
Since we currently don't change the reference frame we have to
maintain lookup tables for intensity compensation in the following
dependent frames.
Signed-off-by: Martin Storsjö <martin@martin.st>
* qatar/master:
configure: Use linker hardening flags on mingw
vc1: Make INIT_LUT() self contained
vc1: Simplify code by using INIT_LUT()
vc1: Move INIT_LUT() further up to allow using it in more places
vc1dec: Remove some now unused variables
vc1dec: Do not allow field_mode to change after the first header
vc1, mss2: Check for any negative return value from ff_vc1_parse_frame_header
vc1dec: Fix current ptr selection in vc1_mc_4mv_chroma()
vc1dec: Factorize picture pointer selection in vc1_mc_4mv_chroma()
vc1dec: Factorize picture pointer selection code
vc1dec: Factorize srcU/V offseting
vc1dec: Fix tff == 0 handling in init_block_index()
vc1dec: Update destination pointers in context for fields
Conflicts:
libavcodec/vc1.c
libavcodec/vc1dec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
The existing implementation had little to do with VC1.
This could be implemented by adjusting the reference frames
ithemselfs but that would make frame multi-threading difficult.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* qatar/master:
vc1: Use codec ID from AVCodecContext while parsing frame header
avplay: support mid-stream sample rate changes
Conflicts:
ffplay.c
libavcodec/vc1.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
This fixes a segfault with samples that I have (both of them MPEG-TS). Looks like
avctx->codec is not being set during parsing.
Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
The existing code is not in the right place and it should cover both
interlaced frame and field pictures.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>