mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-24 12:09:55 +00:00
avcodec/opus_celt: Use avpriv_float_dsp_alloc()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
3384d76503
commit
00d4759134
@ -62,7 +62,7 @@ struct CeltContext {
|
||||
// constant values that do not change during context lifetime
|
||||
AVCodecContext *avctx;
|
||||
CeltIMDCTContext *imdct[4];
|
||||
AVFloatDSPContext dsp;
|
||||
AVFloatDSPContext *dsp;
|
||||
int output_channels;
|
||||
|
||||
// values that have inter-frame effect and must be reset on flush
|
||||
@ -2072,7 +2072,7 @@ int ff_celt_decode_frame(CeltContext *s, OpusRangeCoder *rc,
|
||||
|
||||
/* stereo -> mono downmix */
|
||||
if (s->output_channels < s->coded_channels) {
|
||||
s->dsp.vector_fmac_scalar(s->coeffs[0], s->coeffs[1], 1.0, FFALIGN(frame_size, 16));
|
||||
s->dsp->vector_fmac_scalar(s->coeffs[0], s->coeffs[1], 1.0, FFALIGN(frame_size, 16));
|
||||
imdct_scale = 0.5;
|
||||
} else if (s->output_channels > s->coded_channels)
|
||||
memcpy(s->coeffs[1], s->coeffs[0], frame_size * sizeof(float));
|
||||
@ -2098,7 +2098,7 @@ int ff_celt_decode_frame(CeltContext *s, OpusRangeCoder *rc,
|
||||
|
||||
imdct->imdct_half(imdct, dst + CELT_OVERLAP / 2, s->coeffs[i] + j,
|
||||
s->blocks, imdct_scale);
|
||||
s->dsp.vector_fmul_window(dst, dst, dst + CELT_OVERLAP / 2,
|
||||
s->dsp->vector_fmul_window(dst, dst, dst + CELT_OVERLAP / 2,
|
||||
celt_window, CELT_OVERLAP / 2);
|
||||
}
|
||||
|
||||
@ -2181,6 +2181,7 @@ void ff_celt_free(CeltContext **ps)
|
||||
for (i = 0; i < FF_ARRAY_ELEMS(s->imdct); i++)
|
||||
ff_celt_imdct_uninit(&s->imdct[i]);
|
||||
|
||||
av_freep(&s->dsp);
|
||||
av_freep(ps);
|
||||
}
|
||||
|
||||
@ -2208,7 +2209,11 @@ int ff_celt_init(AVCodecContext *avctx, CeltContext **ps, int output_channels)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
avpriv_float_dsp_init(&s->dsp, avctx->flags & CODEC_FLAG_BITEXACT);
|
||||
s->dsp = avpriv_float_dsp_alloc(avctx->flags & CODEC_FLAG_BITEXACT);
|
||||
if (!s->dsp) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
ff_celt_flush(s);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user