[FFmpeg-devel] [PATCH] Common ACELP code & G.729 [1/7] - filters

Michael Niedermayer michaelni
Sun May 4 22:42:08 CEST 2008


On Sun, May 04, 2008 at 01:19:10PM +0700, Vladimir Voroshilov wrote:
> On Sat, May 3, 2008 at 7:23 PM, Michael Niedermayer <michaelni at gmx.at> wrote:
> > On Sat, May 03, 2008 at 03:24:54PM +0700, Vladimir Voroshilov wrote:
> >  > Michael Niedermayer wrote:
> >  [...]
> >  > +void ff_acelp_convolve_circ(
> >  > +        int16_t* fc_out,
> >  > +        const int16_t* fc_in,
> >  > +        const int16_t* filter,
> >  > +        int subframe_size)
> >  > +{
> >  > +    int i, k;
> >  > +
> >  > +    memset(fc_out, 0, subframe_size * sizeof(int16_t));
> >
> > > +
> >  > +    /* Since there are few pulses over all subframe (i.e. almost all
> >
> > > +       fc_in[i] are zero, in case of G.729D it is only two non-zero
> >  > +       samples of total 40), it is faster to swap two loops and process
> >  > +       non-zero samples only. This will reduce number of multiplications
> >
> > > +       from 40*40 to 2*40 for G.729D */
> >
> >  doesnt ff_acelp_fc_enchance_harmonics() increase the number of non 0
> >  elements above 2 ?
> 
> Perhaps i misspelled sentence.
> I meant that using swapped loops with checking for non-zero will
> require 2*40 multiplications,

The sentance is fine.
What i meant is that ff_acelp_fc_enchance_harmonics() can increase the number
of non zero samples above 2. Or do i miss somehing that prevents this?


> while using not swapped loops without check will require 40*40 multiplications.
> 2*40 is exact in case when "in" and "out" are different buffers (and
> this is required!)
> since "in" buffer is not touched in loop
> 
> I'll be thankful for correct and clean english phrase.
> 
> [...]
> 
> >  > + */
> >  > +void ff_acelp_weighted_filter(
> >  > +        int16_t *out,
> >  > +        const int16_t* in,
> >  > +        const int16_t *weight_pow,
> >  > +        int filter_length);
> >
> >  > +
> >  > +/**
> >  > + * \brief high-pass filtering and upscaling (4.2.5 of G.729)
> >
> >  just G729 ? or is it also used by others?
> 
> AMR (according to spec) uses mostly same filter (same formula, but
> filter coefficients differs in 5th sign).
> In fixed-point implementation all filter coefficients are equal.
> I'll add clarification in next update.

ok

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

The worst form of inequality is to try to make unequal things equal.
-- Aristotle
-------------- 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/20080504/7f372bdc/attachment.pgp>



More information about the ffmpeg-devel mailing list