Commit 0e7cbe67 authored by michael's avatar michael

Make lsf_sf_expand() 4 times faster.


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@23096 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 54b792bc
......@@ -1318,24 +1318,32 @@ static int mp_decode_layer2(MPADecodeContext *s)
return 3 * 12;
}
//FIXME optimze this shit
static inline void lsf_sf_expand(int *slen,
#define SPLIT(dst,sf,n)\
if(n==3){\
int m= (sf*171)>>9;\
dst= sf - 3*m;\
sf=m;\
}else if(n==4){\
dst= sf&3;\
sf>>=2;\
}else if(n==5){\
int m= (sf*205)>>10;\
dst= sf - 5*m;\
sf=m;\
}else if(n==6){\
int m= (sf*171)>>10;\
dst= sf - 6*m;\
sf=m;\
}else{\
dst=0;\
}
static av_always_inline void lsf_sf_expand(int *slen,
int sf, int n1, int n2, int n3)
{
if (n3) {
slen[3] = sf % n3;
sf /= n3;
} else {
slen[3] = 0;
}
if (n2) {
slen[2] = sf % n2;
sf /= n2;
} else {
slen[2] = 0;
}
slen[1] = sf % n1;
sf /= n1;
SPLIT(slen[3], sf, n3)
SPLIT(slen[2], sf, n2)
SPLIT(slen[1], sf, n1)
slen[0] = sf;
}
......
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