[FFmpeg-devel] [PATCH] wmadec.c: SIMD optimization using float_to_int16_interleave

Michael Niedermayer michaelni
Tue Mar 9 19:44:34 CET 2010


On Wed, Mar 10, 2010 at 12:45:03AM +0800, Zhou Zongyi wrote:
> > cosmetics
> OK. I removed indent.
> 
> > looks odd
> It seems my mail client is broken. Fixed.
> 
> Updated patch:
> 
> Index: libavcodec/wmadec.c
> ===================================================================
> --- libavcodec/wmadec.c (revision 22281)
> +++ libavcodec/wmadec.c (working copy)
> @@ -790,6 +790,7 @@
>      /* convert frame to integer */
>      n = s->frame_len;
>      incr = s->nb_channels;
> +    if (s->dsp.float_to_int16_interleave == ff_float_to_int16_interleave_c) {
>      for(ch = 0; ch < s->nb_channels; ch++) {
>          ptr = samples + ch;
>          iptr = s->frame_out[ch];
> @@ -802,6 +803,16 @@
>          memmove(&s->frame_out[ch][0], &s->frame_out[ch][s->frame_len],
>                  s->frame_len * sizeof(float));
>      }
> +    } else {
> +        float *output[MAX_CHANNELS];
> +        for (ch = 0; ch < MAX_CHANNELS; ch++)
> +            output[ch] = s->frame_out[ch];
> +        s->dsp.float_to_int16_interleave(samples, (const float **)output, n, incr);
> +        for(ch = 0; ch < incr; ch++) {
> +            /* prepare for next block */
> +            memmove(&s->frame_out[ch][0], &s->frame_out[ch][n], n * sizeof(float));
> +        }
> +    }

why is this code not also used for the ff_float_to_int16_interleave_c case?


[..]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

I have never wished to cater to the crowd; for what I know they do not
approve, and what they approve I do not know. -- Epicurus
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100309/90a2cf57/attachment.pgp>



More information about the ffmpeg-devel mailing list