comparison cabac.h @ 4345:88967250d718 libavcodec

replace a few hardcoded numbers with their correct named ones
author michael
date Sat, 13 Jan 2007 01:00:37 +0000
parents d6f83e2f8804
children 4cceb7c877af
comparison
equal deleted inserted replaced
4344:4aa24216f71a 4345:88967250d718
537 int RangeLPS= ff_h264_lps_range[2*(c->range&0xC0) + s]; 537 int RangeLPS= ff_h264_lps_range[2*(c->range&0xC0) + s];
538 int bit, lps_mask attribute_unused; 538 int bit, lps_mask attribute_unused;
539 539
540 c->range -= RangeLPS; 540 c->range -= RangeLPS;
541 #ifndef BRANCHLESS_CABAC_DECODER 541 #ifndef BRANCHLESS_CABAC_DECODER
542 if(c->low < (c->range<<17)){ 542 if(c->low < (c->range<<(CABAC_BITS+1))){
543 bit= s&1; 543 bit= s&1;
544 *state= ff_h264_mps_state[s]; 544 *state= ff_h264_mps_state[s];
545 renorm_cabac_decoder_once(c); 545 renorm_cabac_decoder_once(c);
546 }else{ 546 }else{
547 bit= ff_h264_norm_shift[RangeLPS]; 547 bit= ff_h264_norm_shift[RangeLPS];
548 c->low -= (c->range<<17); 548 c->low -= (c->range<<(CABAC_BITS+1));
549 *state= ff_h264_lps_state[s]; 549 *state= ff_h264_lps_state[s];
550 c->range = RangeLPS<<bit; 550 c->range = RangeLPS<<bit;
551 c->low <<= bit; 551 c->low <<= bit;
552 bit= (s&1)^1; 552 bit= (s&1)^1;
553 553
554 if(!(c->low & 0xFFFF)){ 554 if(!(c->low & CABAC_MASK)){
555 refill2(c); 555 refill2(c);
556 } 556 }
557 } 557 }
558 #else /* BRANCHLESS_CABAC_DECODER */ 558 #else /* BRANCHLESS_CABAC_DECODER */
559 lps_mask= ((c->range<<17) - c->low)>>31; 559 lps_mask= ((c->range<<(CABAC_BITS+1)) - c->low)>>31;
560 560
561 c->low -= (c->range<<17) & lps_mask; 561 c->low -= (c->range<<(CABAC_BITS+1)) & lps_mask;
562 c->range += (RangeLPS - c->range) & lps_mask; 562 c->range += (RangeLPS - c->range) & lps_mask;
563 563
564 s^=lps_mask; 564 s^=lps_mask;
565 *state= (ff_h264_mlps_state+128)[s]; 565 *state= (ff_h264_mlps_state+128)[s];
566 bit= s&1; 566 bit= s&1;
618 c->low += c->low; 618 c->low += c->low;
619 619
620 if(!(c->low & CABAC_MASK)) 620 if(!(c->low & CABAC_MASK))
621 refill(c); 621 refill(c);
622 622
623 range= c->range<<17; 623 range= c->range<<(CABAC_BITS+1);
624 if(c->low < range){ 624 if(c->low < range){
625 return 0; 625 return 0;
626 }else{ 626 }else{
627 c->low -= range; 627 c->low -= range;
628 return 1; 628 return 1;
667 c->low += c->low; 667 c->low += c->low;
668 668
669 if(!(c->low & CABAC_MASK)) 669 if(!(c->low & CABAC_MASK))
670 refill(c); 670 refill(c);
671 671
672 range= c->range<<17; 672 range= c->range<<(CABAC_BITS+1);
673 c->low -= range; 673 c->low -= range;
674 mask= c->low >> 31; 674 mask= c->low >> 31;
675 range &= mask; 675 range &= mask;
676 c->low += range; 676 c->low += range;
677 return (val^mask)-mask; 677 return (val^mask)-mask;
792 * 792 *
793 * @return the number of bytes read or 0 if no end 793 * @return the number of bytes read or 0 if no end
794 */ 794 */
795 static int get_cabac_terminate(CABACContext *c){ 795 static int get_cabac_terminate(CABACContext *c){
796 c->range -= 2; 796 c->range -= 2;
797 if(c->low < c->range<<17){ 797 if(c->low < c->range<<(CABAC_BITS+1)){
798 renorm_cabac_decoder_once(c); 798 renorm_cabac_decoder_once(c);
799 return 0; 799 return 0;
800 }else{ 800 }else{
801 return c->bytestream - c->bytestream_start; 801 return c->bytestream - c->bytestream_start;
802 } 802 }