[FFmpeg-devel] [RFC] ac3dec: use dsputil.clear_block
Reimar Döffinger
Reimar.Doeffinger
Wed Jan 13 23:07:33 CET 2010
On Wed, Jan 13, 2010 at 09:03:32PM +0000, M?ns Rullg?rd wrote:
> Reimar D?ffinger <Reimar.Doeffinger at gmx.de> writes:
>
> > Hello,
> > this gives an overall speedup of about 1.1 % on Intel Atom with my sample.
> > Testing with other CPUs and samples heavily welcome, I suspect a slowdown may
> > be possible, beside it being a bit ugly.
> > Index: libavcodec/ac3dec.c
> > ===================================================================
> > --- libavcodec/ac3dec.c (revision 21191)
> > +++ libavcodec/ac3dec.c (working copy)
> > @@ -565,6 +566,7 @@
> > */
> > static void decode_transform_coeffs(AC3DecodeContext *s, int blk)
> > {
> > + const int clearsize = 64 * sizeof(DCTELEM) / sizeof(s->fixed_coeffs[0][0]);
> > int ch, end;
> > int got_cplchan = 0;
> > mant_groups m;
> > @@ -586,9 +588,12 @@
> > } else {
> > end = s->end_freq[ch];
> > }
> > - do
> > - s->fixed_coeffs[ch][end] = 0;
> > - while(++end < 256);
> > + while (end & (clearsize - 1))
> > + s->fixed_coeffs[ch][end++] = 0;
> > + while (end < 256) {
> > + s->dsp.clear_block((DCTELEM *)s->fixed_coeffs[ch] + end);
> > + end += clearsize;
> > + }
> > }
>
> Did you try a simple memset()?
In the variants I tried it it was horribly slow.
More information about the ffmpeg-devel
mailing list