Commit 7662a532 authored by Hendrik Leppkes's avatar Hendrik Leppkes Committed by Kostya Shishkov

vc1: don't read the interpfrm and bfraction elements for interlaced frames

This matches the spec as well as the reference decoder, and fixes a bug
with interlaced frame decoding.
Signed-off-by: 's avatarKostya Shishkov <kostya.shishkov@gmail.com>
parent 50a3f9a4
...@@ -911,13 +911,15 @@ int vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb) ...@@ -911,13 +911,15 @@ int vc1_parse_frame_header_adv(VC1Context *v, GetBitContext* gb)
} }
goto parse_common_info; goto parse_common_info;
} }
if (v->finterpflag) if (v->fcm == PROGRESSIVE) {
v->interpfrm = get_bits1(gb); if (v->finterpflag)
if (v->s.pict_type == AV_PICTURE_TYPE_B) { v->interpfrm = get_bits1(gb);
v->bfraction_lut_index = get_vlc2(gb, ff_vc1_bfraction_vlc.table, VC1_BFRACTION_VLC_BITS, 1); if (v->s.pict_type == AV_PICTURE_TYPE_B) {
v->bfraction = ff_vc1_bfraction_lut[v->bfraction_lut_index]; v->bfraction_lut_index = get_vlc2(gb, ff_vc1_bfraction_vlc.table, VC1_BFRACTION_VLC_BITS, 1);
if (v->bfraction == 0) { v->bfraction = ff_vc1_bfraction_lut[v->bfraction_lut_index];
v->s.pict_type = AV_PICTURE_TYPE_BI; /* XXX: should not happen here */ if (v->bfraction == 0) {
v->s.pict_type = AV_PICTURE_TYPE_BI; /* XXX: should not happen here */
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment