[FFmpeg-devel] [PATCH] Common ACELP routines (2/3) - filters
Michael Niedermayer
michaelni
Thu Apr 24 20:17:56 CEST 2008
On Fri, Apr 25, 2008 at 12:07:15AM +0700, Vladimir Voroshilov wrote:
> On Thu, Apr 24, 2008 at 10:13 AM, Michael Niedermayer <michaelni at gmx.at> wrote:
[...]
> > > > > + filter_data[10+n] = out[n] = sum;
> > > >
> > > > This duplicated storeage is unacceptable.
> > >
> > > First for all assigned to filter data values will be used in loop later.
> > > Thus filter_data can not be eliminated.
> > > I can't use "out" instead of it due to necessary 10 items
> > > with data from previous subframe at top).
> > > Extending out with 10 items at top will require another temporary buffer
> > > one memcpy somewhere later (because i will not be able to use output buffer
> > > directly).
> >
> > The double write is definitly useless after the first 10 iterations as
> > after that you can just work in the out buffer.
> >
> > foobar_filter(filter_data+10, 10);
> > memcpy(out, filter_data+10, 10);
> > foobar_filter(out+10, N-10);
> >
> > should work fine and will for large N (dunno how large it is, so maybe
> > this isnt worth it ...) be faster. Also it allows filter_data to be smaller.
>
> ... and code will look like :(
>
> if(foobar_filter(filter_data+10, 10)!=OVERFLOW)
> {
> memcpy(out, filter_data+10, 10);
> if(foobar_filter(out+10, N-10)==OVERFLOW)
> {
> for(i=0;i<len;i++) out>>=2;
> foobar_filter(filter_data+10, 10);
> memcpy(out, filter_data+10, 10);
> foobar_filter(out+10, N-10);
> }
> }
> else
> {
> for(i=0;i<len;i++) out>>=2;
> foobar_filter(filter_data+10, 10);
> memcpy(out, filter_data+10, 10);
> foobar_filter(out+10, N-10);
> }
for(;;){
overflow= foobar_filter(filter_data+10, 10);
memcpy(out, filter_data+10, 10);
overflow|= foobar_filter(out+10, N-10);
if(!overflow)
break;
for(i=0;i<len;i++) out>>=2;
}
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
If you really think that XML is the answer, then you definitly missunderstood
the question -- Attila Kinali
-------------- 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/20080424/c0a1fdf7/attachment.pgp>
More information about the ffmpeg-devel
mailing list