ffmpeg | branch: master | Michael Niedermayer <michae...@gmx.at> | Wed Dec 3 14:43:40 2014 +0100| [c5dc8cc03a2953e32bbc4d064fb54aa7b286ad7e] | committer: Michael Niedermayer
avcodec/mpegaudiodec_float: Use avpriv_float_dsp_alloc() Signed-off-by: Michael Niedermayer <michae...@gmx.at> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c5dc8cc03a2953e32bbc4d064fb54aa7b286ad7e --- libavcodec/mpegaudiodec_float.c | 4 ++++ 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 35f07fa..f432c83 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 1c97d72..bbd07c5 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; _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog