On Wed, Jan 18, 2012 at 2:29 PM, Alex Converse <[email protected]> wrote:
> On Wed, Jan 18, 2012 at 12:39 AM, Nathan Caldwell <[email protected]> wrote:
>> ---
>>  libavcodec/aacenc.c   |   12 ++++++------
>>  libavcodec/aacenc.h   |    2 +-
>>  libavcodec/aacpsy.c   |   10 ++++++----
>>  libavcodec/psymodel.c |    7 +++----
>>  libavcodec/psymodel.h |    7 +++----
>>  5 files changed, 19 insertions(+), 19 deletions(-)
>>
>> diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c
>> index 33396b2..3bd04bf 100644
>> --- a/libavcodec/aacenc.c
>> +++ b/libavcodec/aacenc.c
>> @@ -167,7 +167,7 @@ static void put_audio_specific_config(AVCodecContext 
>> *avctx)
>>  }
>>
>>  static void apply_window_and_mdct(AVCodecContext *avctx, AACEncContext *s,
>> -                                  SingleChannelElement *sce, short *audio)
>> +                                  SingleChannelElement *sce, float *audio)
>>  {
>>     int i, k;
>>     const int chans = avctx->channels;
>> @@ -434,7 +434,7 @@ static int aac_encode_frame(AVCodecContext *avctx,
>>                             uint8_t *frame, int buf_size, void *data)
>>  {
>>     AACEncContext *s = avctx->priv_data;
>> -    int16_t *samples = s->samples, *samples2, *la;
>> +    float *samples   = s->samples, *samples2, *la;
>>     ChannelElement *cpe;
>>     int i, ch, w, g, chans, tag, start_ch;
>>     int chan_el_counter[4];
>> @@ -452,7 +452,7 @@ static int aac_encode_frame(AVCodecContext *avctx,
>>             for (i = 0; i < s->chan_map[0]; i++) {
>>                 tag = s->chan_map[i+1];
>>                 chans = tag == TYPE_CPE ? 2 : 1;
>> -                ff_psy_preprocess(s->psypp, (uint16_t*)data + start_ch,
>> +                ff_psy_preprocess(s->psypp, (float*)data + start_ch,
>>                                   samples2 + start_ch, start_ch, chans);
>>                 start_ch += chans;
>>             }
>> @@ -621,9 +621,9 @@ static av_cold int dsp_init(AVCodecContext *avctx, 
>> AACEncContext *s)
>>     ff_init_ff_sine_windows(10);
>>     ff_init_ff_sine_windows(7);
>>
>> -    if (ret = ff_mdct_init(&s->mdct1024, 11, 0, 1.0))
>> +    if (ret = ff_mdct_init(&s->mdct1024, 11, 0, 32768.0))
>>         return ret;
>> -    if (ret = ff_mdct_init(&s->mdct128,   8, 0, 1.0))
>> +    if (ret = ff_mdct_init(&s->mdct128,   8, 0, 32768.0))
>>         return ret;
>>
>>     return 0;
>> @@ -722,7 +722,7 @@ AVCodec ff_aac_encoder = {
>>     .encode         = aac_encode_frame,
>>     .close          = aac_encode_end,
>>     .capabilities = CODEC_CAP_SMALL_LAST_FRAME | CODEC_CAP_DELAY | 
>> CODEC_CAP_EXPERIMENTAL,
>> -    .sample_fmts = (const enum 
>> AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE},
>> +    .sample_fmts = (const enum 
>> AVSampleFormat[]){AV_SAMPLE_FMT_FLT,AV_SAMPLE_FMT_NONE},
>>     .long_name = NULL_IF_CONFIG_SMALL("Advanced Audio Coding"),
>>     .priv_class = &aacenc_class,
>>  };
>> diff --git a/libavcodec/aacenc.h b/libavcodec/aacenc.h
>> index acd185a..1f5e650 100644
>> --- a/libavcodec/aacenc.h
>> +++ b/libavcodec/aacenc.h
>> @@ -58,7 +58,7 @@ typedef struct AACEncContext {
>>     FFTContext mdct1024;                         ///< long (1024 samples) 
>> frame transform context
>>     FFTContext mdct128;                          ///< short (128 samples) 
>> frame transform context
>>     DSPContext  dsp;
>> -    int16_t *samples;                            ///< saved preprocessed 
>> input
>> +    float *samples;                              ///< saved preprocessed 
>> input
>>
>>     int samplerate_index;                        ///< MPEG-4 samplerate index
>>     const uint8_t *chan_map;                     ///< channel configuration 
>> map
>> diff --git a/libavcodec/aacpsy.c b/libavcodec/aacpsy.c
>> index 577d8fb..adaab7a 100644
>> --- a/libavcodec/aacpsy.c
>> +++ b/libavcodec/aacpsy.c
>> @@ -776,9 +776,8 @@ static void lame_apply_block_type(AacPsyChannel *ctx, 
>> FFPsyWindowInfo *wi, int u
>>     ctx->next_window_seq = blocktype;
>>  }
>>
>> -static FFPsyWindowInfo psy_lame_window(FFPsyContext *ctx,
>> -                                       const int16_t *audio, const int16_t 
>> *la,
>> -                                       int channel, int prev_type)
>> +static FFPsyWindowInfo psy_lame_window(FFPsyContext *ctx, const float 
>> *audio,
>> +                                       const float *la, int channel, int 
>> prev_type)
>>  {
>>     AacPsyContext *pctx = (AacPsyContext*) ctx->model_priv_data;
>>     AacPsyChannel *pch  = &pctx->ch[channel];
>> @@ -796,7 +795,7 @@ static FFPsyWindowInfo psy_lame_window(FFPsyContext *ctx,
>>         float energy_subshort[(AAC_NUM_BLOCKS_SHORT + 1) * 
>> PSY_LAME_NUM_SUBBLOCKS];
>>         float energy_short[AAC_NUM_BLOCKS_SHORT + 1] = { 0 };
>>         int chans = ctx->avctx->channels;
>> -        const int16_t *firbuf = la + (AAC_BLOCK_SIZE_SHORT/4 - 
>> PSY_LAME_FIR_LEN) * chans;
>> +        const float *firbuf = la + (AAC_BLOCK_SIZE_SHORT/4 - 
>> PSY_LAME_FIR_LEN) * chans;
>>         int j, att_sum = 0;
>>
>>         /* LAME comment: apply high pass filter of fs/4 */
>> @@ -808,6 +807,9 @@ static FFPsyWindowInfo psy_lame_window(FFPsyContext *ctx,
>>                 sum1 += psy_fir_coeffs[j] * (firbuf[(i + j) * chans] + 
>> firbuf[(i + PSY_LAME_FIR_LEN - j) * chans]);
>>                 sum2 += psy_fir_coeffs[j + 1] * (firbuf[(i + j + 1) * chans] 
>> + firbuf[(i + PSY_LAME_FIR_LEN - j - 1) * chans]);
>>             }
>> +            /* NOTE: The LAME psymodel expects it's input in the range 
>> -32768 to 32768. Tuning this for normalized floats would be difficult. */
>> +            sum1 *= 32768.0f;
>> +            sum2 *= 32768.0f;
>>             hpfsmpl[i] = sum1 + sum2;
>
> Why not hpfsmp[i] = 32768.0f * (sum1 + sum2); rather than scaling the
> two individual sums?

I wasn't thinking. Fixed.

-- 
-Nathan Caldwell
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to