summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2006-10-09 21:14:16 +0000
committerMichael Niedermayer <michaelni@gmx.at>2006-10-09 21:14:16 +0000
commit7822e1c1ffaa054728075d5189345c8c3618daa1 (patch)
tree039fe41c6e80cedf24280295e77a078d98327285
parentef0090a9989062416aa734abffe4658e09b254a8 (diff)
reverse remainder of the failed attempt to optimize *state=c->mps_state[s]
Originally committed as revision 6609 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavcodec/cabac.c24
-rw-r--r--libavcodec/cabac.h16
-rw-r--r--libavcodec/h264.c4
3 files changed, 22 insertions, 22 deletions
diff --git a/libavcodec/cabac.c b/libavcodec/cabac.c
index f69b100d60..01efcdb65c 100644
--- a/libavcodec/cabac.c
+++ b/libavcodec/cabac.c
@@ -125,26 +125,26 @@ void ff_init_cabac_states(CABACContext *c, uint8_t const (*lps_range)[4],
for(i=0; i<state_count; i++){
for(j=0; j<4; j++){ //FIXME check if this is worth the 1 shift we save
- c->lps_range[2*i+2][j+4]=
- c->lps_range[2*i+3][j+4]= lps_range[i][j];
+ c->lps_range[2*i+0][j+4]=
+ c->lps_range[2*i+1][j+4]= lps_range[i][j];
}
- c->mps_state[2*i+2]= 2*mps_state[i]+2;
- c->mps_state[2*i+3]= 2*mps_state[i]+3;
+ c->mps_state[2*i+0]= 2*mps_state[i]+0;
+ c->mps_state[2*i+1]= 2*mps_state[i]+1;
if( i ){
#ifdef BRANCHLESS_CABAD
- c->mps_state[-2*i-3]= 2*lps_state[i]+2; //FIXME yes this is not valid C but iam lazy, cleanup welcome
- c->mps_state[-2*i-4]= 2*lps_state[i]+3;
+ c->mps_state[-2*i-1]= 2*lps_state[i]+0; //FIXME yes this is not valid C but iam lazy, cleanup welcome
+ c->mps_state[-2*i-2]= 2*lps_state[i]+1;
}else{
- c->mps_state[-2*i-3]= 3;
- c->mps_state[-2*i-4]= 2;
+ c->mps_state[-2*i-1]= 1;
+ c->mps_state[-2*i-2]= 0;
#else
- c->lps_state[2*i+2]= 2*lps_state[i]+2;
- c->lps_state[2*i+3]= 2*lps_state[i]+3;
+ c->lps_state[2*i+0]= 2*lps_state[i]+0;
+ c->lps_state[2*i+1]= 2*lps_state[i]+1;
}else{
- c->lps_state[2*i+2]= 3;
- c->lps_state[2*i+3]= 2;
+ c->lps_state[2*i+0]= 1;
+ c->lps_state[2*i+1]= 0;
#endif
}
}
diff --git a/libavcodec/cabac.h b/libavcodec/cabac.h
index 800d0d17bd..2fb439c1ec 100644
--- a/libavcodec/cabac.h
+++ b/libavcodec/cabac.h
@@ -40,9 +40,9 @@ typedef struct CABACContext{
#ifdef STRICT_LIMITS
int symCount;
#endif
- uint8_t lps_range[2*66][4]; ///< rangeTabLPS
- uint8_t lps_state[2*65]; ///< transIdxLPS
- uint8_t mps_state[2*65]; ///< transIdxMPS
+ uint8_t lps_range[2*65][4]; ///< rangeTabLPS
+ uint8_t lps_state[2*64]; ///< transIdxLPS
+ uint8_t mps_state[2*64]; ///< transIdxMPS
const uint8_t *bytestream_start;
const uint8_t *bytestream;
const uint8_t *bytestream_end;
@@ -370,11 +370,11 @@ static int get_cabac(CABACContext *c, uint8_t * const state){
#define LOW "0"
#define RANGE "4"
#define LPS_RANGE "12"
-#define LPS_STATE "12+2*66*4"
-#define MPS_STATE "12+2*66*4+2*65"
-#define BYTESTART "12+2*66*4+4*65"
-#define BYTE "16+2*66*4+4*65"
-#define BYTEEND "20+2*66*4+4*65"
+#define LPS_STATE "12+2*65*4"
+#define MPS_STATE "12+2*65*4+2*64"
+#define BYTESTART "12+2*65*4+4*64"
+#define BYTE "16+2*65*4+4*64"
+#define BYTEEND "20+2*65*4+4*64"
#ifndef BRANCHLESS_CABAD
asm volatile(
"movzbl (%1), %%eax \n\t"
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index bbd179d797..210005a828 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -7401,9 +7401,9 @@ static int decode_slice(H264Context *h){
pre = clip( ((cabac_context_init_PB[h->cabac_init_idc][i][0] * s->qscale) >>4 ) + cabac_context_init_PB[h->cabac_init_idc][i][1], 1, 126 );
if( pre <= 63 )
- h->cabac_state[i] = 2 * ( 63 - pre ) + 2;
+ h->cabac_state[i] = 2 * ( 63 - pre ) + 0;
else
- h->cabac_state[i] = 2 * ( pre - 64 ) + 3;
+ h->cabac_state[i] = 2 * ( pre - 64 ) + 1;
}
for(;;){