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