comparison h263dec.c @ 1025:1f9afd8b9131 libavcodec

GetBitContext.size is allways multiplied by 8 -> use size_in_bits to avoid useless *8 in a few inner loops
author michaelni
date Tue, 21 Jan 2003 17:34:12 +0000
parents 3b9c2ac59ec4
children d6ba0641cc36
comparison
equal deleted inserted replaced
1024:9cc1031e1864 1025:1f9afd8b9131
247 assert(s->mb_x==0 && s->mb_y==s->mb_height); 247 assert(s->mb_x==0 && s->mb_y==s->mb_height);
248 248
249 /* try to detect the padding bug */ 249 /* try to detect the padding bug */
250 if( s->codec_id==CODEC_ID_MPEG4 250 if( s->codec_id==CODEC_ID_MPEG4
251 && (s->workaround_bugs&FF_BUG_AUTODETECT) 251 && (s->workaround_bugs&FF_BUG_AUTODETECT)
252 && s->gb.size*8 - get_bits_count(&s->gb) >=0 252 && s->gb.size_in_bits - get_bits_count(&s->gb) >=0
253 && s->gb.size*8 - get_bits_count(&s->gb) < 48 253 && s->gb.size_in_bits - get_bits_count(&s->gb) < 48
254 // && !s->resync_marker 254 // && !s->resync_marker
255 && !s->data_partitioning){ 255 && !s->data_partitioning){
256 256
257 const int bits_count= get_bits_count(&s->gb); 257 const int bits_count= get_bits_count(&s->gb);
258 const int bits_left = s->gb.size*8 - bits_count; 258 const int bits_left = s->gb.size_in_bits - bits_count;
259 259
260 if(bits_left==0){ 260 if(bits_left==0){
261 s->padding_bug_score+=16; 261 s->padding_bug_score+=16;
262 }else if(bits_left>8){ 262 }else if(bits_left>8){
263 s->padding_bug_score++; 263 s->padding_bug_score++;
272 } 272 }
273 } 273 }
274 274
275 // handle formats which dont have unique end markers 275 // handle formats which dont have unique end markers
276 if(s->msmpeg4_version || (s->workaround_bugs&FF_BUG_NO_PADDING)){ //FIXME perhaps solve this more cleanly 276 if(s->msmpeg4_version || (s->workaround_bugs&FF_BUG_NO_PADDING)){ //FIXME perhaps solve this more cleanly
277 int left= s->gb.size*8 - get_bits_count(&s->gb); 277 int left= s->gb.size_in_bits - get_bits_count(&s->gb);
278 int max_extra=7; 278 int max_extra=7;
279 279
280 /* no markers in M$ crap */ 280 /* no markers in M$ crap */
281 if(s->msmpeg4_version && s->pict_type==I_TYPE) 281 if(s->msmpeg4_version && s->pict_type==I_TYPE)
282 max_extra+= 17; 282 max_extra+= 17;
297 297
298 return 0; 298 return 0;
299 } 299 }
300 300
301 fprintf(stderr, "slice end not reached but screenspace end (%d left %06X)\n", 301 fprintf(stderr, "slice end not reached but screenspace end (%d left %06X)\n",
302 s->gb.size*8 - get_bits_count(&s->gb), 302 s->gb.size_in_bits - get_bits_count(&s->gb),
303 show_bits(&s->gb, 24)); 303 show_bits(&s->gb, 24));
304 return -1; 304 return -1;
305 } 305 }
306 306
307 /** 307 /**
439 } 439 }
440 440
441 retry: 441 retry:
442 442
443 if(s->bitstream_buffer_size && buf_size<20){ //divx 5.01+ frame reorder 443 if(s->bitstream_buffer_size && buf_size<20){ //divx 5.01+ frame reorder
444 init_get_bits(&s->gb, s->bitstream_buffer, s->bitstream_buffer_size); 444 init_get_bits(&s->gb, s->bitstream_buffer, s->bitstream_buffer_size*8);
445 }else 445 }else
446 init_get_bits(&s->gb, buf, buf_size); 446 init_get_bits(&s->gb, buf, buf_size*8);
447 s->bitstream_buffer_size=0; 447 s->bitstream_buffer_size=0;
448 448
449 if (!s->context_initialized) { 449 if (!s->context_initialized) {
450 if (MPV_common_init(s) < 0) //we need the idct permutaton for reading a custom matrix 450 if (MPV_common_init(s) < 0) //we need the idct permutaton for reading a custom matrix
451 return -1; 451 return -1;
458 ret = msmpeg4_decode_picture_header(s); 458 ret = msmpeg4_decode_picture_header(s);
459 } else if (s->h263_pred) { 459 } else if (s->h263_pred) {
460 if(s->avctx->extradata_size && s->picture_number==0){ 460 if(s->avctx->extradata_size && s->picture_number==0){
461 GetBitContext gb; 461 GetBitContext gb;
462 462
463 init_get_bits(&gb, s->avctx->extradata, s->avctx->extradata_size); 463 init_get_bits(&gb, s->avctx->extradata, s->avctx->extradata_size*8);
464 ret = ff_mpeg4_decode_picture_header(s, &gb); 464 ret = ff_mpeg4_decode_picture_header(s, &gb);
465 } 465 }
466 ret = ff_mpeg4_decode_picture_header(s, &s->gb); 466 ret = ff_mpeg4_decode_picture_header(s, &s->gb);
467 467
468 if(s->flags& CODEC_FLAG_LOW_DELAY) 468 if(s->flags& CODEC_FLAG_LOW_DELAY)
630 s->mb_x=0; 630 s->mb_x=0;
631 s->mb_y=0; 631 s->mb_y=0;
632 632
633 decode_slice(s); 633 decode_slice(s);
634 s->error_status_table[0]|= VP_START; 634 s->error_status_table[0]|= VP_START;
635 while(s->mb_y<s->mb_height && s->gb.size*8 - get_bits_count(&s->gb)>16){ 635 while(s->mb_y<s->mb_height && s->gb.size_in_bits - get_bits_count(&s->gb)>16){
636 if(s->msmpeg4_version){ 636 if(s->msmpeg4_version){
637 if(s->mb_x!=0 || (s->mb_y%s->slice_height)!=0) 637 if(s->mb_x!=0 || (s->mb_y%s->slice_height)!=0)
638 break; 638 break;
639 }else{ 639 }else{
640 if(ff_h263_resync(s)<0) 640 if(ff_h263_resync(s)<0)