comparison cabac.c @ 3991:72bae00a317f libavcodec

make lps_range a global table its constant anyway (saves 1 addition for accessing it)
author michael
date Wed, 11 Oct 2006 13:21:42 +0000
parents bb186452e7da
children 8b7c59b7af01
comparison
equal deleted inserted replaced
3990:746a60ba3177 3991:72bae00a317f
29 29
30 #include "common.h" 30 #include "common.h"
31 #include "bitstream.h" 31 #include "bitstream.h"
32 #include "cabac.h" 32 #include "cabac.h"
33 33
34 const uint8_t ff_h264_lps_range[64][4]= { 34 static const uint8_t lps_range[64][4]= {
35 {128,176,208,240}, {128,167,197,227}, {128,158,187,216}, {123,150,178,205}, 35 {128,176,208,240}, {128,167,197,227}, {128,158,187,216}, {123,150,178,205},
36 {116,142,169,195}, {111,135,160,185}, {105,128,152,175}, {100,122,144,166}, 36 {116,142,169,195}, {111,135,160,185}, {105,128,152,175}, {100,122,144,166},
37 { 95,116,137,158}, { 90,110,130,150}, { 85,104,123,142}, { 81, 99,117,135}, 37 { 95,116,137,158}, { 90,110,130,150}, { 85,104,123,142}, { 81, 99,117,135},
38 { 77, 94,111,128}, { 73, 89,105,122}, { 69, 85,100,116}, { 66, 80, 95,110}, 38 { 77, 94,111,128}, { 73, 89,105,122}, { 69, 85,100,116}, { 66, 80, 95,110},
39 { 62, 76, 90,104}, { 59, 72, 86, 99}, { 56, 69, 81, 94}, { 53, 65, 77, 89}, 39 { 62, 76, 90,104}, { 59, 72, 86, 99}, { 56, 69, 81, 94}, { 53, 65, 77, 89},
48 { 10, 12, 14, 16}, { 9, 11, 13, 15}, { 9, 11, 12, 14}, { 8, 10, 12, 14}, 48 { 10, 12, 14, 16}, { 9, 11, 13, 15}, { 9, 11, 12, 14}, { 8, 10, 12, 14},
49 { 8, 9, 11, 13}, { 7, 9, 11, 12}, { 7, 9, 10, 12}, { 7, 8, 10, 11}, 49 { 8, 9, 11, 13}, { 7, 9, 11, 12}, { 7, 9, 10, 12}, { 7, 8, 10, 11},
50 { 6, 8, 9, 11}, { 6, 7, 9, 10}, { 6, 7, 8, 9}, { 2, 2, 2, 2}, 50 { 6, 8, 9, 11}, { 6, 7, 9, 10}, { 6, 7, 8, 9}, { 2, 2, 2, 2},
51 }; 51 };
52 52
53 uint8_t ff_h264_lps_range[2*65][4];
54
53 const uint8_t ff_h264_mps_state[64]= { 55 const uint8_t ff_h264_mps_state[64]= {
54 1, 2, 3, 4, 5, 6, 7, 8, 56 1, 2, 3, 4, 5, 6, 7, 8,
55 9,10,11,12,13,14,15,16, 57 9,10,11,12,13,14,15,16,
56 17,18,19,20,21,22,23,24, 58 17,18,19,20,21,22,23,24,
57 25,26,27,28,29,30,31,32, 59 25,26,27,28,29,30,31,32,
117 #endif 119 #endif
118 c->low+= ((*c->bytestream++)<<2) + 2; 120 c->low+= ((*c->bytestream++)<<2) + 2;
119 c->range= 0x1FE<<(CABAC_BITS + 1); 121 c->range= 0x1FE<<(CABAC_BITS + 1);
120 } 122 }
121 123
122 void ff_init_cabac_states(CABACContext *c, uint8_t const (*lps_range)[4], 124 void ff_init_cabac_states(CABACContext *c,
123 uint8_t const *mps_state, uint8_t const *lps_state, int state_count){ 125 uint8_t const *mps_state, uint8_t const *lps_state, int state_count){
124 int i, j; 126 int i, j;
125 127
126 for(i=0; i<state_count; i++){ 128 for(i=0; i<state_count; i++){
127 for(j=0; j<4; j++){ //FIXME check if this is worth the 1 shift we save 129 for(j=0; j<4; j++){ //FIXME check if this is worth the 1 shift we save
128 c->lps_range[2*i+0][j+4]= 130 ff_h264_lps_range[2*i+0][j+4]=
129 c->lps_range[2*i+1][j+4]= lps_range[i][j]; 131 ff_h264_lps_range[2*i+1][j+4]= lps_range[i][j];
130 } 132 }
131 133
132 c->mps_state[2*i+0]= 2*mps_state[i]+0; 134 c->mps_state[2*i+0]= 2*mps_state[i]+0;
133 c->mps_state[2*i+1]= 2*mps_state[i]+1; 135 c->mps_state[2*i+1]= 2*mps_state[i]+1;
134 136