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;
|
return 3 * 12;
|
||||||
}
|
}
|
||||||
|
|
||||||
//FIXME optimze this shit
|
#define SPLIT(dst,sf,n)\
|
||||||
static inline void lsf_sf_expand(int *slen,
|
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)
|
int sf, int n1, int n2, int n3)
|
||||||
{
|
{
|
||||||
if (n3) {
|
SPLIT(slen[3], sf, n3)
|
||||||
slen[3] = sf % n3;
|
SPLIT(slen[2], sf, n2)
|
||||||
sf /= n3;
|
SPLIT(slen[1], sf, n1)
|
||||||
} else {
|
|
||||||
slen[3] = 0;
|
|
||||||
}
|
|
||||||
if (n2) {
|
|
||||||
slen[2] = sf % n2;
|
|
||||||
sf /= n2;
|
|
||||||
} else {
|
|
||||||
slen[2] = 0;
|
|
||||||
}
|
|
||||||
slen[1] = sf % n1;
|
|
||||||
sf /= n1;
|
|
||||||
slen[0] = sf;
|
slen[0] = sf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user