diff 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
line wrap: on
line diff
--- a/cabac.c	Fri Oct 13 10:48:29 2006 +0000
+++ b/cabac.c	Fri Oct 13 14:21:25 2006 +0000
@@ -50,6 +50,7 @@
 {  6,  8,  9, 11}, {  6,  7,  9, 10}, {  6,  7,  8,  9}, {  2,  2,  2,  2},
 };
 
+uint8_t ff_h264_mlps_state[4*64];
 uint8_t ff_h264_lps_range[2*65][4];
 uint8_t ff_h264_lps_state[2*64];
 uint8_t ff_h264_mps_state[2*64];
@@ -132,16 +133,18 @@
             ff_h264_lps_range[2*i+1][j+4]= lps_range[i][j];
         }
 
+        ff_h264_mlps_state[128+2*i+0]=
         ff_h264_mps_state[2*i+0]= 2*mps_state[i]+0;
+        ff_h264_mlps_state[128+2*i+1]=
         ff_h264_mps_state[2*i+1]= 2*mps_state[i]+1;
 
         if( i ){
 #ifdef BRANCHLESS_CABAC_DECODER
-            ff_h264_mps_state[-2*i-1]= 2*lps_state[i]+0; //FIXME yes this is not valid C but iam lazy, cleanup welcome
-            ff_h264_mps_state[-2*i-2]= 2*lps_state[i]+1;
+            ff_h264_mlps_state[128-2*i-1]= 2*lps_state[i]+0;
+            ff_h264_mlps_state[128-2*i-2]= 2*lps_state[i]+1;
         }else{
-            ff_h264_mps_state[-2*i-1]= 1;
-            ff_h264_mps_state[-2*i-2]= 0;
+            ff_h264_mlps_state[128-2*i-1]= 1;
+            ff_h264_mlps_state[128-2*i-2]= 0;
 #else
             ff_h264_lps_state[2*i+0]= 2*lps_state[i]+0;
             ff_h264_lps_state[2*i+1]= 2*lps_state[i]+1;