Mercurial > libavcodec.hg
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 |