comparison h263.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 5d4c95f323d0
children af7ba8d8b43a
comparison
equal deleted inserted replaced
1024:9cc1031e1864 1025:1f9afd8b9131
2333 if(val) 2333 if(val)
2334 return -1; 2334 return -1;
2335 2335
2336 /* We have a GBSC probably with GSTUFF */ 2336 /* We have a GBSC probably with GSTUFF */
2337 skip_bits(&s->gb, 16); /* Drop the zeros */ 2337 skip_bits(&s->gb, 16); /* Drop the zeros */
2338 left= s->gb.size*8 - get_bits_count(&s->gb); 2338 left= s->gb.size_in_bits - get_bits_count(&s->gb);
2339 //MN: we must check the bits left or we might end in a infinite loop (or segfault) 2339 //MN: we must check the bits left or we might end in a infinite loop (or segfault)
2340 for(;left>13; left--){ 2340 for(;left>13; left--){
2341 if(get_bits1(&s->gb)) break; /* Seek the '1' bit */ 2341 if(get_bits1(&s->gb)) break; /* Seek the '1' bit */
2342 } 2342 }
2343 if(left<=13) 2343 if(left<=13)
2433 2433
2434 if(s->workaround_bugs&FF_BUG_NO_PADDING){ 2434 if(s->workaround_bugs&FF_BUG_NO_PADDING){
2435 return 0; 2435 return 0;
2436 } 2436 }
2437 2437
2438 if(bits_count + 8 >= s->gb.size*8){ 2438 if(bits_count + 8 >= s->gb.size_in_bits){
2439 int v= show_bits(&s->gb, 8); 2439 int v= show_bits(&s->gb, 8);
2440 v|= 0x7F >> (7-(bits_count&7)); 2440 v|= 0x7F >> (7-(bits_count&7));
2441 2441
2442 if(v==0x7F) 2442 if(v==0x7F)
2443 return 1; 2443 return 1;
2470 { 2470 {
2471 int mb_num_bits= av_log2(s->mb_num - 1) + 1; 2471 int mb_num_bits= av_log2(s->mb_num - 1) + 1;
2472 int header_extension=0, mb_num, len; 2472 int header_extension=0, mb_num, len;
2473 2473
2474 /* is there enough space left for a video packet + header */ 2474 /* is there enough space left for a video packet + header */
2475 if( get_bits_count(&s->gb) > s->gb.size*8-20) return -1; 2475 if( get_bits_count(&s->gb) > s->gb.size_in_bits-20) return -1;
2476 2476
2477 for(len=0; len<32; len++){ 2477 for(len=0; len<32; len++){
2478 if(get_bits1(&s->gb)) break; 2478 if(get_bits1(&s->gb)) break;
2479 } 2479 }
2480 2480
2602 return 0; 2602 return 0;
2603 } 2603 }
2604 //ok, its not where its supposed to be ... 2604 //ok, its not where its supposed to be ...
2605 s->gb= s->last_resync_gb; 2605 s->gb= s->last_resync_gb;
2606 align_get_bits(&s->gb); 2606 align_get_bits(&s->gb);
2607 left= s->gb.size*8 - get_bits_count(&s->gb); 2607 left= s->gb.size_in_bits - get_bits_count(&s->gb);
2608 2608
2609 for(;left>16+1+5+5; left-=8){ 2609 for(;left>16+1+5+5; left-=8){
2610 if(show_bits(&s->gb, 16)==0){ 2610 if(show_bits(&s->gb, 16)==0){
2611 GetBitContext bak= s->gb; 2611 GetBitContext bak= s->gb;
2612 2612
3056 s->error_status_table[xy]&= ~AC_ERROR; 3056 s->error_status_table[xy]&= ~AC_ERROR;
3057 3057
3058 /* per-MB end of slice check */ 3058 /* per-MB end of slice check */
3059 3059
3060 if(--s->mb_num_left <= 0){ 3060 if(--s->mb_num_left <= 0){
3061 //printf("%06X %d\n", show_bits(&s->gb, 24), s->gb.size*8 - get_bits_count(&s->gb)); 3061 //printf("%06X %d\n", show_bits(&s->gb, 24), s->gb.size_in_bits - get_bits_count(&s->gb));
3062 if(mpeg4_is_resync(s)) 3062 if(mpeg4_is_resync(s))
3063 return SLICE_END; 3063 return SLICE_END;
3064 else 3064 else
3065 return SLICE_NOEND; 3065 return SLICE_NOEND;
3066 }else{ 3066 }else{
3420 return SLICE_END; 3420 return SLICE_END;
3421 } 3421 }
3422 }else{ 3422 }else{
3423 int v= show_bits(&s->gb, 16); 3423 int v= show_bits(&s->gb, 16);
3424 3424
3425 if(get_bits_count(&s->gb) + 16 > s->gb.size*8){ 3425 if(get_bits_count(&s->gb) + 16 > s->gb.size_in_bits){
3426 v>>= get_bits_count(&s->gb) + 16 - s->gb.size*8; 3426 v>>= get_bits_count(&s->gb) + 16 - s->gb.size_in_bits;
3427 } 3427 }
3428 3428
3429 if(v==0) 3429 if(v==0)
3430 return SLICE_END; 3430 return SLICE_END;
3431 } 3431 }
4686 4686
4687 if(s->avctx->debug&FF_DEBUG_PICT_INFO){ 4687 if(s->avctx->debug&FF_DEBUG_PICT_INFO){
4688 printf("qp:%d fc:%d,%d %s size:%d pro:%d alt:%d top:%d %spel part:%d resync:%d w:%d a:%d\n", 4688 printf("qp:%d fc:%d,%d %s size:%d pro:%d alt:%d top:%d %spel part:%d resync:%d w:%d a:%d\n",
4689 s->qscale, s->f_code, s->b_code, 4689 s->qscale, s->f_code, s->b_code,
4690 s->pict_type == I_TYPE ? "I" : (s->pict_type == P_TYPE ? "P" : (s->pict_type == B_TYPE ? "B" : "S")), 4690 s->pict_type == I_TYPE ? "I" : (s->pict_type == P_TYPE ? "P" : (s->pict_type == B_TYPE ? "B" : "S")),
4691 gb->size,s->progressive_sequence, s->alternate_scan, s->top_field_first, 4691 gb->size_in_bits,s->progressive_sequence, s->alternate_scan, s->top_field_first,
4692 s->quarter_sample ? "q" : "h", s->data_partitioning, s->resync_marker, s->num_sprite_warping_points, 4692 s->quarter_sample ? "q" : "h", s->data_partitioning, s->resync_marker, s->num_sprite_warping_points,
4693 s->sprite_warping_accuracy); 4693 s->sprite_warping_accuracy);
4694 } 4694 }
4695 4695
4696 if(!s->scalability){ 4696 if(!s->scalability){
4741 startcode = 0xff; 4741 startcode = 0xff;
4742 for(;;) { 4742 for(;;) {
4743 v = get_bits(gb, 8); 4743 v = get_bits(gb, 8);
4744 startcode = ((startcode << 8) | v) & 0xffffffff; 4744 startcode = ((startcode << 8) | v) & 0xffffffff;
4745 4745
4746 if(get_bits_count(gb) >= gb->size*8){ 4746 if(get_bits_count(gb) >= gb->size_in_bits){
4747 if(gb->size==1 && s->divx_version){ 4747 if(gb->size_in_bits==8 && s->divx_version){
4748 printf("frame skip %d\n", gb->size); 4748 printf("frame skip %d\n", gb->size_in_bits);
4749 return FRAME_SKIPED; //divx bug 4749 return FRAME_SKIPED; //divx bug
4750 }else 4750 }else
4751 return -1; //end of stream 4751 return -1; //end of stream
4752 } 4752 }
4753 4753