[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