Commit ff765159 authored by Michael Niedermayer's avatar Michael Niedermayer

11% faster decode_subband()

Originally committed as revision 3421 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 0cea8a03
......@@ -1921,8 +1921,8 @@ static inline void decode_subband(SnowContext *s, SubBand *b, DWTELEM *src, DWTE
int v=0;
int lt=0, t=0, rt=0;
if(y){
rt= src[(y-1)*stride];
if(y && b->x[prev_index] == 0){
rt= b->coeff[prev_index];
}
for(x=0; x<w; x++){
int p=0;
......@@ -1930,19 +1930,21 @@ static inline void decode_subband(SnowContext *s, SubBand *b, DWTELEM *src, DWTE
lt= t; t= rt;
if(y && x + 1 < w){
rt= src[x + 1 + (y-1)*stride];
}else
rt= 0;
if(y){
if(b->x[prev_index] <= x) //FIXME if
prev_index++;
if(b->x[prev_index] == x + 1)
rt= b->coeff[prev_index];
else
rt=0;
}
if(parent){
int px= x>>1;
int py= y>>1;
if(px<b->parent->width && py<b->parent->height)
p= parent[px + py*2*stride];
if(x>>1 > b->parent->x[parent_index]){
parent_index++;
}
if(x>>1 == b->parent->x[parent_index]){
p= b->parent->coeff[parent_index];
}
}
if(/*ll|*/l|lt|t|rt|p){
int context= av_log2(/*ABS(ll) + */3*ABS(l) + ABS(lt) + 2*ABS(t) + ABS(rt) + ABS(p));
......@@ -1958,8 +1960,6 @@ static inline void decode_subband(SnowContext *s, SubBand *b, DWTELEM *src, DWTE
if(y && parent){
int max_run;
while(b->x[prev_index] < x)
prev_index++;
max_run= FFMIN(run, b->x[prev_index] - x - 2);
max_run= FFMIN(max_run, 2*b->parent->x[parent_index] - x - 1);
......@@ -1974,8 +1974,8 @@ static inline void decode_subband(SnowContext *s, SubBand *b, DWTELEM *src, DWTE
if(get_cabac(&s->c, &b->state[0][16 + 1 + 3 + quant3b[l&0xFF] + 3*quant3b[t&0xFF]]))
v= -v;
src[x + y*stride]= v;
b->x[index++]=x; //FIXME interleave x/coeff
// b->coeff[index++]= v;
b->x[index]=x; //FIXME interleave x/coeff
b->coeff[index++]= v;
}
}
b->x[index++]= w+1; //end marker
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment