[FFmpeg-devel] [PATCH] Add AMR-NB decoder, next try

Vitor Sessak vitor1001
Sun Jan 3 19:29:39 CET 2010


Diego Biurrun wrote:
> On Sun, Jan 03, 2010 at 06:01:49PM +0100, Vitor Sessak wrote:
>> Hi, the SoC AMR decoder is in a pretty nice shape and have already gone  
>> through a few review rounds, so I'll give my try in getting it committed.
>>
>> --- libavcodec/amrnbdata.h	(revision 0)
>> +++ libavcodec/amrnbdata.h	(revision 0)
>> @@ -0,0 +1,1801 @@
>> +
>> +#define AMR_BLOCK_SIZE              160   ///< Samples per frame
>> +#define AMR_SUBFRAME_SIZE            40   ///< Samples per subframe
>> +#define AMR_SAMPLE_BOUND        32768.0   ///< Threshold for synthesis overflow
> 
> Lowercase all these comments.
> 
>> +static const int16_t lsf_3_1_MODE_7k95[512][3] = {
>> +{ -890,-1550,-2541},{ -819, -970,  175},{ -826,-1234, -762},
> 
> Spaces after the commas would IMO help readability here and in
> other tables.
> 
>> +#define LSF_R_FAC          (8000.0/32768.0) ///< LSF residual tables to Hertz
> 
> I'd place spaces around the /.
> 
>> +static const uint16_t gains_MODE_4k75[512][2] = {
>> +{  812,  128}, {  542,  140}, { 2873, 1135}, { 2266, 3402}, { 2067,  563},
> 
> Oh, here we have spaces in a similar table..

Fixed in soc.

>> +/** Number of impulse response coefficients used for tilt factor */
>> +#define AMR_TILT_RESPONSE   22
>> +/** Tilt factor = 1st reflection coefficient * gamma_t */
>> +#define AMR_TILT_GAMMA_T   0.8
>> +/** Adaptive gain control factor used in post-filter */
>> +#define AMR_AGC_ALPHA      0.9
> 
> The bottom of a *huge* header file with tables does not seem like
> a good place for these..

They are there because the header is nicely separated in different 
sections. A possible solution would be moving the defines to the C file, 
but I'm undecided.

> Maybe you can commit the tables right away, they are so big that
> they make the patch unwieldy.

Michael, fine for you?

>> --- libavcodec/Makefile	(revision 20995)
>> +++ libavcodec/Makefile	(working copy)
>> @@ -49,6 +49,7 @@
>>  OBJS-$(CONFIG_ALS_DECODER)             += alsdec.o
>> +OBJS-$(CONFIG_AMRNB_DECODER)           += amrnbdec.o celp_filters.o celp_math.o acelp_filters.o acelp_vectors.o lsp.o acelp_pitch_delay.o
> 
> Break this long line please.
> 
> Also, I wonder if some of these CELP dependencies could be refactored.
> 
>> --- libavcodec/amrnbdec.c	(revision 0)
>> +++ libavcodec/amrnbdec.c	(revision 0)
>> @@ -0,0 +1,1036 @@
>> +
>> +/** Double version of ff_weighted_vector_sumf() */
>> +void weighted_vector_sumd(double *out, const double *in_a, const double *in_b,
>> +                          double weight_coeff_a, double weight_coeff_b,
>> +                          int length)
> 
> Shouldn't this be static?
> 
>> +    for(i=0; i<length; i++)
> 
> for (i = 0; i < length; i++)

Rest also done.

-Vitor



More information about the ffmpeg-devel mailing list