# HG changeset patch # User michael # Date 1113512043 0 # Node ID fde7b6fe2aaffb1c22fd226cf9f7699184a9ab89 # Parent 2649aeaadc44f2065a1da04a0817885a736beb7a replace complicated pointer dereference + index stuff by pointers in unpack_coeffs() diff -r 2649aeaadc44 -r fde7b6fe2aaf snow.c --- a/snow.c Thu Apr 14 20:30:08 2005 +0000 +++ b/snow.c Thu Apr 14 20:54:03 2005 +0000 @@ -1777,19 +1777,19 @@ if(1){ int run; - int index=0; - int prev_index=-1; - int prev2_index=0; - int parent_index= 0; - int prev_parent_index= 0; + x_and_coeff *xc= b->x_coeff; + x_and_coeff *prev_xc= NULL; + x_and_coeff *prev2_xc= xc; + x_and_coeff *parent_xc= parent ? parent->x_coeff : NULL; + x_and_coeff *prev_parent_xc= parent_xc; run= get_symbol2(&s->c, b->state[1], 3); for(y=0; yx_coeff[prev_index].x == 0){ - rt= b->x_coeff[prev_index].coeff; + if(y && prev_xc->x == 0){ + rt= prev_xc->coeff; } for(x=0; xx_coeff[prev_index].x <= x) - prev_index++; - if(b->x_coeff[prev_index].x == x + 1) - rt= b->x_coeff[prev_index].coeff; + if(prev_xc->x <= x) + prev_xc++; + if(prev_xc->x == x + 1) + rt= prev_xc->coeff; else rt=0; } - if(parent){ - if(x>>1 > parent->x_coeff[parent_index].x){ - parent_index++; + if(parent_xc){ + if(x>>1 > parent_xc->x){ + parent_xc++; } - if(x>>1 == parent->x_coeff[parent_index].x){ - p= parent->x_coeff[parent_index].coeff; + if(x>>1 == parent_xc->x){ + p= parent_xc->coeff; } } if(/*ll|*/l|lt|t|rt|p){ @@ -1821,8 +1821,8 @@ v= 2*(get_symbol2(&s->c, b->state[context + 2], context-4) + 1); v+=get_rac(&s->c, &b->state[0][16 + 1 + 3 + quant3bA[l&0xFF] + 3*quant3bA[t&0xFF]]); - b->x_coeff[index].x=x; - b->x_coeff[index++].coeff= v; + xc->x=x; + (xc++)->coeff= v; } }else{ if(!run){ @@ -1830,39 +1830,39 @@ v= 2*(get_symbol2(&s->c, b->state[0 + 2], 0-4) + 1); v+=get_rac(&s->c, &b->state[0][16 + 1 + 3]); - b->x_coeff[index].x=x; - b->x_coeff[index++].coeff= v; + xc->x=x; + (xc++)->coeff= v; }else{ int max_run; run--; v=0; - if(y) max_run= FFMIN(run, b->x_coeff[prev_index].x - x - 2); + if(y) max_run= FFMIN(run, prev_xc->x - x - 2); else max_run= FFMIN(run, w-x-1); - if(parent) - max_run= FFMIN(max_run, 2*parent->x_coeff[parent_index].x - x - 1); + if(parent_xc) + max_run= FFMIN(max_run, 2*parent_xc->x - x - 1); x+= max_run; run-= max_run; } } } - b->x_coeff[index++].x= w+1; //end marker - prev_index= prev2_index; - prev2_index= index; + (xc++)->x= w+1; //end marker + prev_xc= prev2_xc; + prev2_xc= xc; - if(parent){ + if(parent_xc){ if(y&1){ - while(parent->x_coeff[parent_index].x != parent->width+1) - parent_index++; - parent_index++; - prev_parent_index= parent_index; + while(parent_xc->x != parent->width+1) + parent_xc++; + parent_xc++; + prev_parent_xc= parent_xc; }else{ - parent_index= prev_parent_index; + parent_xc= prev_parent_xc; } } } - b->x_coeff[index++].x= w+1; //end marker + (xc++)->x= w+1; //end marker } }