[FFmpeg-devel] [PATCH] Add ATRAC3+ decoder

Maxim Polijakowski max_pole at gmx.de
Mon Oct 14 20:52:04 CEST 2013


>> +    const uint8_t *buf  = avpkt->data;
>> +    int buf_size        = avpkt->size;
>> +    ATRAC3PContext *ctx = avctx->priv_data;
>> +    AVFrame *frame      = data;
>> +    int i, ret, ch_unit_id, ch_block = 0, out_ch_index = 0, channels_to_process;
>> +    float **samples_p = (float **)frame->extended_data;
>> +
>> +    frame->nb_samples = ATRAC3P_FRAME_SAMPLES;
>> +    if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) {
>> +        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
>> +        return ret;
>> +    }
>> +
>> +    init_get_bits(&ctx->gb, buf, buf_size * 8);
> if ((ret = init_get_bits8(&ctx->gb, avpkt->data, avpkt->size)) < 0)
>      return ret;

Done.

> [...]
>
>> +
>> +/**
>> + *  @file
>> + *  DSP functions for ATRAC3+ decoder.
>> + */
>> +
>> +#include <math.h>
>> +
>> +#include "libavutil/float_dsp.h"
>> +#include "avcodec.h"
>> +#include "sinewin.h"
>> +#include "fft.h"
>> +#include "atrac3plus.h"
>> +#include "atrac3plus_data.h"
>> +
>> +#define ATRAC3P_MDCT_SIZE (ATRAC3P_SUBBAND_SAMPLES * 2)
>> +
>> +static AVFloatDSPContext atrac3p_dsp;
> This looks strange and is probably incorrect, it probably should be in
> private context.
>

What is wrong with that?

atrac3plusdsp.c is the only part that uses this float DSP context.
Moving it to decoder context will require to pass around pointers to 
this DSP context, which is not very elegant...

Best regards
Maxim


More information about the ffmpeg-devel mailing list