Mercurial > libavcodec.hg
comparison vc1.c @ 3693:e9be5d4bad80 libavcodec
Support for BI-frames in Advanced Profile
author | kostya |
---|---|
date | Sat, 09 Sep 2006 11:32:36 +0000 |
parents | 7857ae840b0b |
children | 8765ee4eaa45 |
comparison
equal
deleted
inserted
replaced
3692:7857ae840b0b | 3693:e9be5d4bad80 |
---|---|
1324 VC1Context *v = avctx->priv_data; | 1324 VC1Context *v = avctx->priv_data; |
1325 int i; | 1325 int i; |
1326 | 1326 |
1327 av_log(avctx, AV_LOG_DEBUG, "Entry point: %08X\n", show_bits_long(gb, 32)); | 1327 av_log(avctx, AV_LOG_DEBUG, "Entry point: %08X\n", show_bits_long(gb, 32)); |
1328 get_bits1(gb); // broken link | 1328 get_bits1(gb); // broken link |
1329 get_bits1(gb); // closed entry | 1329 avctx->max_b_frames = 1 - get_bits1(gb); // 'closed entry' also signalize possible B-frames |
1330 v->panscanflag = get_bits1(gb); | 1330 v->panscanflag = get_bits1(gb); |
1331 get_bits1(gb); // refdist flag | 1331 get_bits1(gb); // refdist flag |
1332 v->s.loop_filter = get_bits1(gb); | 1332 v->s.loop_filter = get_bits1(gb); |
1333 v->fastuvmc = get_bits1(gb); | 1333 v->fastuvmc = get_bits1(gb); |
1334 v->extended_mv = get_bits1(gb); | 1334 v->extended_mv = get_bits1(gb); |
1590 case 2: | 1590 case 2: |
1591 v->s.pict_type = I_TYPE; | 1591 v->s.pict_type = I_TYPE; |
1592 break; | 1592 break; |
1593 case 3: | 1593 case 3: |
1594 v->s.pict_type = BI_TYPE; | 1594 v->s.pict_type = BI_TYPE; |
1595 return -1; | 1595 break; |
1596 // break; | |
1597 case 4: | 1596 case 4: |
1598 v->s.pict_type = P_TYPE; // skipped pic | 1597 v->s.pict_type = P_TYPE; // skipped pic |
1599 v->p_frame_skipped = 1; | 1598 v->p_frame_skipped = 1; |
1600 return 0; | 1599 return 0; |
1601 } | 1600 } |
1634 if (v->quantizer_mode == QUANT_FRAME_EXPLICIT) | 1633 if (v->quantizer_mode == QUANT_FRAME_EXPLICIT) |
1635 v->pquantizer = get_bits(gb, 1); | 1634 v->pquantizer = get_bits(gb, 1); |
1636 | 1635 |
1637 switch(v->s.pict_type) { | 1636 switch(v->s.pict_type) { |
1638 case I_TYPE: | 1637 case I_TYPE: |
1638 case BI_TYPE: | |
1639 status = bitplane_decoding(v->acpred_plane, &v->acpred_is_raw, v); | 1639 status = bitplane_decoding(v->acpred_plane, &v->acpred_is_raw, v); |
1640 if (status < 0) return -1; | 1640 if (status < 0) return -1; |
1641 av_log(v->s.avctx, AV_LOG_DEBUG, "ACPRED plane encoding: " | 1641 av_log(v->s.avctx, AV_LOG_DEBUG, "ACPRED plane encoding: " |
1642 "Imode: %i, Invert: %i\n", status>>1, status&1); | 1642 "Imode: %i, Invert: %i\n", status>>1, status&1); |
1643 v->condover = CONDOVER_NONE; | 1643 v->condover = CONDOVER_NONE; |
1754 if (v->s.pict_type == I_TYPE && v->dquant) { | 1754 if (v->s.pict_type == I_TYPE && v->dquant) { |
1755 av_log(v->s.avctx, AV_LOG_DEBUG, "VOP DQuant info\n"); | 1755 av_log(v->s.avctx, AV_LOG_DEBUG, "VOP DQuant info\n"); |
1756 vop_dquant_decoding(v); | 1756 vop_dquant_decoding(v); |
1757 } | 1757 } |
1758 | 1758 |
1759 v->bi_type = 0; | |
1760 if(v->s.pict_type == BI_TYPE) { | |
1761 v->s.pict_type = B_TYPE; | |
1762 v->bi_type = 1; | |
1763 } | |
1759 return 0; | 1764 return 0; |
1760 } | 1765 } |
1761 | 1766 |
1762 /***********************************************************************/ | 1767 /***********************************************************************/ |
1763 /** | 1768 /** |