mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-26 17:32:06 +00:00
lavc/vorbisdec: use intermediate variables
The compiler cannot infer that the two float vectors do not alias, causing unnecessary extra loads and serialisation. This patch caches the two input values in local variables so that compiler can optimise individual loop iterations.
This commit is contained in:
parent
b52034270a
commit
5c15cb138e
@ -1581,22 +1581,22 @@ static inline int vorbis_residue_decode(vorbis_context *vc, vorbis_residue *vr,
|
||||
|
||||
void ff_vorbis_inverse_coupling(float *mag, float *ang, ptrdiff_t blocksize)
|
||||
{
|
||||
for (ptrdiff_t i = 0; i < blocksize; i++) {
|
||||
if (mag[i] > 0.0) {
|
||||
if (ang[i] > 0.0) {
|
||||
ang[i] = mag[i] - ang[i];
|
||||
for (ptrdiff_t i = 0; i < blocksize; i++) {
|
||||
float angi = ang[i], magi = mag[i];
|
||||
|
||||
if (magi > 0.f) {
|
||||
if (angi > 0.f) {
|
||||
ang[i] = magi - angi;
|
||||
} else {
|
||||
float temp = ang[i];
|
||||
ang[i] = mag[i];
|
||||
mag[i] += temp;
|
||||
ang[i] = magi;
|
||||
mag[i] = magi + angi;
|
||||
}
|
||||
} else {
|
||||
if (ang[i] > 0.0) {
|
||||
ang[i] += mag[i];
|
||||
if (angi > 0.f) {
|
||||
ang[i] = magi + angi;
|
||||
} else {
|
||||
float temp = ang[i];
|
||||
ang[i] = mag[i];
|
||||
mag[i] -= temp;
|
||||
ang[i] = magi;
|
||||
mag[i] = magi - angi;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user