mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Make lsf_sf_expand() 4 times faster.
Originally committed as revision 23096 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
b91d46614d
commit
fd9451c68f
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user