[FFmpeg-devel] AMR-NB decoder

Colin McQuillan m.niloc
Sun Aug 9 17:05:51 CEST 2009


2009/8/8 Michael Niedermayer <michaelni at gmx.at>:
> On Sat, Aug 08, 2009 at 04:09:39PM +0100, Colin McQuillan wrote:
>> 2009/8/8 Michael Niedermayer <michaelni at gmx.at>:
>> > On Fri, Aug 07, 2009 at 08:23:53PM +0100, Colin McQuillan wrote:
>> >> 2009/8/6 Michael Niedermayer <michaelni at gmx.at>:
>> >> > On Wed, Aug 05, 2009 at 05:51:36PM +0100, Colin McQuillan wrote:
>> >> >> Attached is a patch for an AMR-NB decoder.
>>
>> [...]
>>
>> >> > that should e a seperate patch
>> >>
>> >> I'll leave this one until I investigate a version for sparse vectors. Attached:
>> >>
>> >> 1. Helper functions for gain control in floating-point codecs
>> >> I couldn't find a similar fixed point function to copy the function name.
>> >>
>> >> 2. Floating-point version of ff_acelp_high_pass_filter
>> >
>> >> ?acelp_vectors.c | ? 22 ++++++++++++++++++++++
>> >> ?acelp_vectors.h | ? 27 +++++++++++++++++++++++++++
>> >> ?2 files changed, 49 insertions(+)
>> >> f1abbee9b62c1779fd5fb1c634d4ab4294d8611d ?get-set-energyf.patch
>> >> Index: libavcodec/acelp_vectors.c
>> >> ===================================================================
>> >> --- libavcodec/acelp_vectors.c ? ? ? ?(revision 19606)
>> >> +++ libavcodec/acelp_vectors.c ? ? ? ?(working copy)
>> >> @@ -155,3 +155,25 @@
>> >> ? ? ? ? ?out[i] = weight_coeff_a * in_a[i]
>> >> ? ? ? ? ? ? ? ? + weight_coeff_b * in_b[i];
>> >> ?}
>> >> +
>> >> +float ff_energyf(const float *v, int length)
>> >> +{
>> >> + ? ?float sum = 0;
>> >> + ? ?int i;
>> >> +
>> >> + ? ?for (i = 0; i < length; i++)
>> >> + ? ? ? ?sum += v[i] * v[i];
>> >> +
>> >> + ? ?return sum;
>> >> +}
>> >
>> > ff_dot_productf)(
>>
>> Do you mean that ff_energyf is redundant? I've taken it out.
>
> hmm well, as you say it that way, ff_energyf() could be faster due to
> fewer mem reads, if that is te case in practice it could be kept

ff_energyf is reliably 4% faster in my test, so I'll add it back in.

>
>
> [...]
>> Index: libavcodec/acelp_vectors.h
>> ===================================================================
>> --- libavcodec/acelp_vectors.h ? ? ? ?(revision 19574)
>> +++ libavcodec/acelp_vectors.h ? ? ? ?(working copy)
>> @@ -164,4 +164,22 @@
>> ?void ff_weighted_vector_sumf(float *out, const float *in_a, const float *in_b,
>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? float weight_coeff_a, float weight_coeff_b, int length);
>>
>> +/**
>> + * Set the energy of a vector by scaling
>> + *
>> + * @param v_out output vector
>> + * @param v_in vector to set energy of
>> + * @param energy new energy
>
>> + * @param length vectors length
>
> i dont like how you use the term length here, the length of a vector is
> something different

Here it meant the number of elements. To avoid confusion, I can
instead call it the number of samples in a signal.

[...]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: agc-2.patch
Type: text/x-diff
Size: 3437 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20090809/f12da9f0/attachment.patch>



More information about the ffmpeg-devel mailing list