[FFmpeg-devel] [PATCH] atrac1 decoder and aea demuxer

Vitor Sessak vitor1001
Wed Sep 2 00:49:48 CEST 2009


Benjamin Larsson wrote:
> Revision 5 or something, changes to previous patches are:
> 
> aea demuxer:
> Better probe logic
> 
> atrac1 decoder:
> Uses mdct_half now
> 
> Still missing is: the documentation patch, will be added when the code
> is ok and the split out of the atrac common transform code, will be
> fixed when the decoder code is ok.

Just a couple of comments...

> +typedef struct {
> +    GetBitContext       gb;

This is used only in one function, can be a local var.

> +        /* copy the 2nd half of the transformed samples into the prev_frame buffer */
> +        /* so it can be used as reference by the following frame */
> +        memcpy(&su->prev_spec[ref_pos], &q->long_buf[band_samples/2], sizeof(float) * band_samples/2);

Can this memcpy() be avoided by swapping buffers?

> +    /* round, convert to 16bit and interleave */
> +    if (q->channels == 1) {
> +        /* mono */
> +        for (i = 0; i<AT1_SU_SAMPLES; i++)
> +            samples[i]     = av_clipf(q->out_samples[0][i], -32700./(1<<15), 32700./(1<<15));

DSPContext.vector_clipf()

> +static av_cold void init_mdct_windows()
> +{
> +    int i;
> +    /* Generate the short window */
> +    ff_sine_window_init(short_window,32);
> +
> +    /** The mid and long windows uses the same sine window splitted
> +     *  in the middle and wrapped into zero/one regions as follows:
> +     *
> +     *                   region of "ones"
> +     *               -------------
> +     *              /
> +     *             / 1st half
> +     *            / of the sine
> +     *           /  window
> +     * ---------/
> +     * zero region
> +     */

I think it has already mentioned in a previous review and cannot be done 
cleanly, but it would be nice not to spend cycles multiplying by one or 
zero...

-Vitor



More information about the ffmpeg-devel mailing list