[FFmpeg-devel] [PATCH 2/2] lavc/vorbisdec: use intermediate variables
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Sat Sep 17 13:44:36 EEST 2022
remi at remlab.net:
> From: Rémi Denis-Courmont <remi at remlab.net>
>
> 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.
> ---
We have av_restrict. (No opinion on this patch, it's just a remark.)
> libavcodec/vorbisdec.c | 22 +++++++++++-----------
> 1 file changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c
> index 9728997370..74e71936ab 100644
> --- a/libavcodec/vorbisdec.c
> +++ b/libavcodec/vorbisdec.c
> @@ -1583,21 +1583,21 @@ void ff_vorbis_inverse_coupling(float *mag, float *ang, intptr_t blocksize)
> {
> ptrdiff_t i;
> for (i = 0; i < blocksize; i++) {
> - if (mag[i] > 0.0) {
> - if (ang[i] > 0.0) {
> - ang[i] = mag[i] - ang[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;
> }
> }
> }
More information about the ffmpeg-devel
mailing list