# HG changeset patch # User kostya # Date 1233335708 0 # Node ID 48442253aac2fac6709984355218da489ec4fe26 # Parent 25aa5388fa971939a8687c3320515e34e9b31f64 Record B-fraction index from frame header and two fields from entry point structure into VC-1 context. Patch by Gwenole Beauchesne (gbeauchesne splitted desktop com) Thread [PATCH][VC-1] Record extra syntax elements for VA API support diff -r 25aa5388fa97 -r 48442253aac2 vc1.c --- a/vc1.c Fri Jan 30 17:13:03 2009 +0000 +++ b/vc1.c Fri Jan 30 17:15:08 2009 +0000 @@ -1075,11 +1075,11 @@ static int decode_entry_point(AVCodecContext *avctx, GetBitContext *gb) { VC1Context *v = avctx->priv_data; - int i, blink, clentry; + int i; av_log(avctx, AV_LOG_DEBUG, "Entry point: %08X\n", show_bits_long(gb, 32)); - blink = get_bits1(gb); // broken link - clentry = get_bits1(gb); // closed entry + v->broken_link = get_bits1(gb); + v->closed_entry = get_bits1(gb); v->panscanflag = get_bits1(gb); v->refdist_flag = get_bits1(gb); v->s.loop_filter = get_bits1(gb); @@ -1115,7 +1115,7 @@ "BrokenLink=%i, ClosedEntry=%i, PanscanFlag=%i\n" "RefDist=%i, Postproc=%i, FastUVMC=%i, ExtMV=%i\n" "DQuant=%i, VSTransform=%i, Overlap=%i, Qmode=%i\n", - blink, clentry, v->panscanflag, v->refdist_flag, v->s.loop_filter, + v->broken_link, v->closed_entry, v->panscanflag, v->refdist_flag, v->s.loop_filter, v->fastuvmc, v->extended_mv, v->dquant, v->vstransform, v->overlap, v->quantizer_mode); return 0; @@ -1139,8 +1139,8 @@ v->bi_type = 0; if(v->s.pict_type == FF_B_TYPE) { - v->bfraction = get_vlc2(gb, ff_vc1_bfraction_vlc.table, VC1_BFRACTION_VLC_BITS, 1); - v->bfraction = ff_vc1_bfraction_lut[v->bfraction]; + v->bfraction_lut_index = get_vlc2(gb, ff_vc1_bfraction_vlc.table, VC1_BFRACTION_VLC_BITS, 1); + v->bfraction = ff_vc1_bfraction_lut[v->bfraction_lut_index]; if(v->bfraction == 0) { v->s.pict_type = FF_BI_TYPE; } @@ -1381,8 +1381,8 @@ v->uvsamp = get_bits1(gb); if(v->finterpflag) v->interpfrm = get_bits1(gb); if(v->s.pict_type == FF_B_TYPE) { - v->bfraction = get_vlc2(gb, ff_vc1_bfraction_vlc.table, VC1_BFRACTION_VLC_BITS, 1); - v->bfraction = ff_vc1_bfraction_lut[v->bfraction]; + v->bfraction_lut_index = get_vlc2(gb, ff_vc1_bfraction_vlc.table, VC1_BFRACTION_VLC_BITS, 1); + v->bfraction = ff_vc1_bfraction_lut[v->bfraction_lut_index]; if(v->bfraction == 0) { v->s.pict_type = FF_BI_TYPE; /* XXX: should not happen here */ } diff -r 25aa5388fa97 -r 48442253aac2 vc1.h --- a/vc1.h Fri Jan 30 17:13:03 2009 +0000 +++ b/vc1.h Fri Jan 30 17:15:08 2009 +0000 @@ -307,6 +307,9 @@ int x8_type; uint32_t *cbp_base, *cbp; + uint8_t bfraction_lut_index;///< Index for BFRACTION value (see Table 40, reproduced into ff_vc1_bfraction_lut[]) + uint8_t broken_link; ///< Broken link flag (BROKEN_LINK syntax element) + uint8_t closed_entry; ///< Closed entry point flag (CLOSED_ENTRY syntax element) } VC1Context; #endif /* AVCODEC_VC1_H */