comparison h263.c @ 9104:fd301ba2cbba libavcodec

Enable PB-frames decoding for H.263
author kostya
date Tue, 03 Mar 2009 05:18:39 +0000
parents b626fed816d7
children a031926f7d6b
comparison
equal deleted inserted replaced
9103:b626fed816d7 9104:fd301ba2cbba
5102 return -1; /* SAC: off */ 5102 return -1; /* SAC: off */
5103 } 5103 }
5104 s->obmc= get_bits1(&s->gb); /* Advanced prediction mode */ 5104 s->obmc= get_bits1(&s->gb); /* Advanced prediction mode */
5105 s->unrestricted_mv = s->h263_long_vectors || s->obmc; 5105 s->unrestricted_mv = s->h263_long_vectors || s->obmc;
5106 5106
5107 if (get_bits1(&s->gb) != 0) { 5107 s->pb_frame = get_bits1(&s->gb);
5108 av_log(s->avctx, AV_LOG_ERROR, "H263 PB frame not supported\n");
5109 return -1; /* not PB frame */
5110 }
5111 s->chroma_qscale= s->qscale = get_bits(&s->gb, 5); 5108 s->chroma_qscale= s->qscale = get_bits(&s->gb, 5);
5112 skip_bits1(&s->gb); /* Continuous Presence Multipoint mode: off */ 5109 skip_bits1(&s->gb); /* Continuous Presence Multipoint mode: off */
5113 5110
5114 s->width = width; 5111 s->width = width;
5115 s->height = height; 5112 s->height = height;
5160 /* MPPTYPE */ 5157 /* MPPTYPE */
5161 s->pict_type = get_bits(&s->gb, 3); 5158 s->pict_type = get_bits(&s->gb, 3);
5162 switch(s->pict_type){ 5159 switch(s->pict_type){
5163 case 0: s->pict_type= FF_I_TYPE;break; 5160 case 0: s->pict_type= FF_I_TYPE;break;
5164 case 1: s->pict_type= FF_P_TYPE;break; 5161 case 1: s->pict_type= FF_P_TYPE;break;
5162 case 2: s->pict_type= FF_P_TYPE;s->pb_frame = 3;break;
5165 case 3: s->pict_type= FF_B_TYPE;break; 5163 case 3: s->pict_type= FF_B_TYPE;break;
5166 case 7: s->pict_type= FF_I_TYPE;break; //ZYGO 5164 case 7: s->pict_type= FF_I_TYPE;break; //ZYGO
5167 default: 5165 default:
5168 return -1; 5166 return -1;
5169 } 5167 }
5248 } 5246 }
5249 5247
5250 s->mb_width = (s->width + 15) / 16; 5248 s->mb_width = (s->width + 15) / 16;
5251 s->mb_height = (s->height + 15) / 16; 5249 s->mb_height = (s->height + 15) / 16;
5252 s->mb_num = s->mb_width * s->mb_height; 5250 s->mb_num = s->mb_width * s->mb_height;
5251
5252 if (s->pb_frame) {
5253 skip_bits(&s->gb, 3); /* Temporal reference for B-pictures */
5254 if (s->custom_pcf)
5255 skip_bits(&s->gb, 2); //extended Temporal reference
5256 skip_bits(&s->gb, 2); /* Quantization information for B-pictures */
5257 }
5253 5258
5254 /* PEI */ 5259 /* PEI */
5255 while (get_bits1(&s->gb) != 0) { 5260 while (get_bits1(&s->gb) != 0) {
5256 skip_bits(&s->gb, 8); 5261 skip_bits(&s->gb, 8);
5257 } 5262 }