comparison cabac.c @ 4014:b2582438effe libavcodec

dehack *ps_state indexing in the branchless decoder
author michael
date Fri, 13 Oct 2006 14:21:25 +0000
parents 8b7c59b7af01
children d550343b5dac
comparison
equal deleted inserted replaced
4013:aace6b74fddc 4014:b2582438effe
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_mlps_state[4*64];
53 uint8_t ff_h264_lps_range[2*65][4]; 54 uint8_t ff_h264_lps_range[2*65][4];
54 uint8_t ff_h264_lps_state[2*64]; 55 uint8_t ff_h264_lps_state[2*64];
55 uint8_t ff_h264_mps_state[2*64]; 56 uint8_t ff_h264_mps_state[2*64];
56 57
57 static const uint8_t mps_state[64]= { 58 static const uint8_t mps_state[64]= {
130 for(j=0; j<4; j++){ //FIXME check if this is worth the 1 shift we save 131 for(j=0; j<4; j++){ //FIXME check if this is worth the 1 shift we save
131 ff_h264_lps_range[2*i+0][j+4]= 132 ff_h264_lps_range[2*i+0][j+4]=
132 ff_h264_lps_range[2*i+1][j+4]= lps_range[i][j]; 133 ff_h264_lps_range[2*i+1][j+4]= lps_range[i][j];
133 } 134 }
134 135
136 ff_h264_mlps_state[128+2*i+0]=
135 ff_h264_mps_state[2*i+0]= 2*mps_state[i]+0; 137 ff_h264_mps_state[2*i+0]= 2*mps_state[i]+0;
138 ff_h264_mlps_state[128+2*i+1]=
136 ff_h264_mps_state[2*i+1]= 2*mps_state[i]+1; 139 ff_h264_mps_state[2*i+1]= 2*mps_state[i]+1;
137 140
138 if( i ){ 141 if( i ){
139 #ifdef BRANCHLESS_CABAC_DECODER 142 #ifdef BRANCHLESS_CABAC_DECODER
140 ff_h264_mps_state[-2*i-1]= 2*lps_state[i]+0; //FIXME yes this is not valid C but iam lazy, cleanup welcome 143 ff_h264_mlps_state[128-2*i-1]= 2*lps_state[i]+0;
141 ff_h264_mps_state[-2*i-2]= 2*lps_state[i]+1; 144 ff_h264_mlps_state[128-2*i-2]= 2*lps_state[i]+1;
142 }else{ 145 }else{
143 ff_h264_mps_state[-2*i-1]= 1; 146 ff_h264_mlps_state[128-2*i-1]= 1;
144 ff_h264_mps_state[-2*i-2]= 0; 147 ff_h264_mlps_state[128-2*i-2]= 0;
145 #else 148 #else
146 ff_h264_lps_state[2*i+0]= 2*lps_state[i]+0; 149 ff_h264_lps_state[2*i+0]= 2*lps_state[i]+0;
147 ff_h264_lps_state[2*i+1]= 2*lps_state[i]+1; 150 ff_h264_lps_state[2*i+1]= 2*lps_state[i]+1;
148 }else{ 151 }else{
149 ff_h264_lps_state[2*i+0]= 1; 152 ff_h264_lps_state[2*i+0]= 1;