diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-12-03 14:43:40 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-12-03 14:52:38 +0100 |
commit | c5dc8cc03a2953e32bbc4d064fb54aa7b286ad7e (patch) | |
tree | 6bc9b8be2f1a467c62ef6f8da0c4d45375d5d88e | |
parent | e316caf712b24fecbc1688c25e858618bca69e02 (diff) | |
download | ffmpeg-c5dc8cc03a2953e32bbc4d064fb54aa7b286ad7e.tar.gz |
avcodec/mpegaudiodec_float: Use avpriv_float_dsp_alloc()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/mpegaudiodec_float.c | 4 | ||||
-rw-r--r-- | libavcodec/mpegaudiodec_template.c | 19 |
2 files changed, 20 insertions, 3 deletions
diff --git a/libavcodec/mpegaudiodec_float.c b/libavcodec/mpegaudiodec_float.c index 35f07fabb8..f432c83296 100644 --- a/libavcodec/mpegaudiodec_float.c +++ b/libavcodec/mpegaudiodec_float.c @@ -46,6 +46,7 @@ AVCodec ff_mp1float_decoder = { .id = AV_CODEC_ID_MP1, .priv_data_size = sizeof(MPADecodeContext), .init = decode_init, + .close = decode_close, .decode = decode_frame, .capabilities = CODEC_CAP_DR1, .flush = flush, @@ -63,6 +64,7 @@ AVCodec ff_mp2float_decoder = { .priv_data_size = sizeof(MPADecodeContext), .init = decode_init, .decode = decode_frame, + .close = decode_close, .capabilities = CODEC_CAP_DR1, .flush = flush, .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP, @@ -78,6 +80,7 @@ AVCodec ff_mp3float_decoder = { .id = AV_CODEC_ID_MP3, .priv_data_size = sizeof(MPADecodeContext), .init = decode_init, + .close = decode_close, .decode = decode_frame, .capabilities = CODEC_CAP_DR1, .flush = flush, @@ -94,6 +97,7 @@ AVCodec ff_mp3adufloat_decoder = { .id = AV_CODEC_ID_MP3ADU, .priv_data_size = sizeof(MPADecodeContext), .init = decode_init, + .close = decode_close, .decode = decode_frame_adu, .capabilities = CODEC_CAP_DR1, .flush = flush, diff --git a/libavcodec/mpegaudiodec_template.c b/libavcodec/mpegaudiodec_template.c index 1c97d724f4..bbd07c5f0b 100644 --- a/libavcodec/mpegaudiodec_template.c +++ b/libavcodec/mpegaudiodec_template.c @@ -85,7 +85,7 @@ typedef struct MPADecodeContext { int err_recognition; AVCodecContext* avctx; MPADSPContext mpadsp; - AVFloatDSPContext fdsp; + AVFloatDSPContext *fdsp; AVFrame *frame; } MPADecodeContext; @@ -406,6 +406,16 @@ static av_cold void decode_init_static(void) } } +#if USE_FLOATS +static av_cold int decode_close(AVCodecContext * avctx) +{ + MPADecodeContext *s = avctx->priv_data; + av_freep(&s->fdsp); + + return 0; +} +#endif + static av_cold int decode_init(AVCodecContext * avctx) { static int initialized_tables = 0; @@ -418,7 +428,10 @@ static av_cold int decode_init(AVCodecContext * avctx) s->avctx = avctx; - avpriv_float_dsp_init(&s->fdsp, avctx->flags & CODEC_FLAG_BITEXACT); + s->fdsp = avpriv_float_dsp_alloc(avctx->flags & CODEC_FLAG_BITEXACT); + if (!s->fdsp) + return AVERROR(ENOMEM); + ff_mpadsp_init(&s->mpadsp); if (avctx->request_sample_fmt == OUT_FMT && @@ -1138,7 +1151,7 @@ found2: /* NOTE: the 1/sqrt(2) normalization factor is included in the global gain */ #if USE_FLOATS - s->fdsp.butterflies_float(g0->sb_hybrid, g1->sb_hybrid, 576); + s->fdsp->butterflies_float(g0->sb_hybrid, g1->sb_hybrid, 576); #else tab0 = g0->sb_hybrid; tab1 = g1->sb_hybrid; |