# HG changeset patch # User michael # Date 1095465096 0 # Node ID c46fed9b7575a1f19275f5b7d39dfd26c79eca73 # Parent 506fdbb9d19cdcc4c9d5937e1840607425b021bd simplify getsymbol patch by (Loren Merritt ) diff -r 506fdbb9d19c -r c46fed9b7575 snow.c --- a/snow.c Fri Sep 17 11:21:52 2004 +0000 +++ b/snow.c Fri Sep 17 23:51:36 2004 +0000 @@ -507,27 +507,18 @@ if(get_cabac(c, state+0)) return 0; else{ - int i, e, a, el; - //FIXME try to merge loops with FFMIN() maybe they are equally fast and they are surly cuter - for(e=0; e<10; e++){ - if(get_cabac(c, state + 1 + e)==0) // 1..10 - break; - } - el= e; - - if(e==10){ - while(get_cabac(c, state + 1 + 9)) //10 - e++; - } - a= 1; - for(i=e-1; i>=el; i--){ - a += a + get_cabac(c, state+22+9); //31 - } - for(; i>=0; i--){ - a += a + get_cabac(c, state+22+i); //22..31 + int i, e, a; + e= 0; + while(get_cabac(c, state+1 + FFMIN(e,9))){ //1..10 + e++; } - if(is_signed && get_cabac(c, state+11 + el)) //11..21 + a= 1; + for(i=e-1; i>=0; i--){ + a += a + get_cabac(c, state+22 + FFMIN(i,9)); //22..31 + } + + if(is_signed && get_cabac(c, state+11 + FFMIN(e,10))) //11..21 return -a; else return a;