From c978997a88267d046c752fb2c0599de81f38f4ae Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Tue, 3 Mar 2009 05:18:39 +0000 Subject: [PATCH] Enable PB-frames decoding for H.263 Originally committed as revision 17746 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/h263.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/libavcodec/h263.c b/libavcodec/h263.c index 4a1f8496ec..b2adae6e8a 100644 --- a/libavcodec/h263.c +++ b/libavcodec/h263.c @@ -5104,10 +5104,7 @@ int h263_decode_picture_header(MpegEncContext *s) s->obmc= get_bits1(&s->gb); /* Advanced prediction mode */ s->unrestricted_mv = s->h263_long_vectors || s->obmc; - if (get_bits1(&s->gb) != 0) { - av_log(s->avctx, AV_LOG_ERROR, "H263 PB frame not supported\n"); - return -1; /* not PB frame */ - } + s->pb_frame = get_bits1(&s->gb); s->chroma_qscale= s->qscale = get_bits(&s->gb, 5); skip_bits1(&s->gb); /* Continuous Presence Multipoint mode: off */ @@ -5162,6 +5159,7 @@ int h263_decode_picture_header(MpegEncContext *s) switch(s->pict_type){ case 0: s->pict_type= FF_I_TYPE;break; case 1: s->pict_type= FF_P_TYPE;break; + case 2: s->pict_type= FF_P_TYPE;s->pb_frame = 3;break; case 3: s->pict_type= FF_B_TYPE;break; case 7: s->pict_type= FF_I_TYPE;break; //ZYGO default: @@ -5251,6 +5249,13 @@ int h263_decode_picture_header(MpegEncContext *s) s->mb_height = (s->height + 15) / 16; s->mb_num = s->mb_width * s->mb_height; + if (s->pb_frame) { + skip_bits(&s->gb, 3); /* Temporal reference for B-pictures */ + if (s->custom_pcf) + skip_bits(&s->gb, 2); //extended Temporal reference + skip_bits(&s->gb, 2); /* Quantization information for B-pictures */ + } + /* PEI */ while (get_bits1(&s->gb) != 0) { skip_bits(&s->gb, 8);