From 738487f8db8a5e1f95c276d308210046feda130c Mon Sep 17 00:00:00 2001 From: Marton Balint Date: Wed, 13 Mar 2013 01:26:21 +0100 Subject: [PATCH] ffplay: use refcounted frames for audio Signed-off-by: Marton Balint --- ffplay.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ffplay.c b/ffplay.c index 34ebe476ae..8adac1c719 100644 --- a/ffplay.c +++ b/ffplay.c @@ -2063,8 +2063,10 @@ static int audio_decode_frame(VideoState *is) if (!is->frame) { if (!(is->frame = avcodec_alloc_frame())) return AVERROR(ENOMEM); - } else + } else { + av_frame_unref(is->frame); avcodec_get_frame_defaults(is->frame); + } if (is->audioq.serial != is->audio_pkt_temp_serial) break; @@ -2349,7 +2351,7 @@ static int stream_component_open(VideoState *is, int stream_index) opts = filter_codec_opts(codec_opts, avctx->codec_id, ic, ic->streams[stream_index], codec); if (!av_dict_get(opts, "threads", NULL, 0)) av_dict_set(&opts, "threads", "auto", 0); - if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) + if (avctx->codec_type == AVMEDIA_TYPE_VIDEO || avctx->codec_type == AVMEDIA_TYPE_AUDIO) av_dict_set(&opts, "refcounted_frames", "1", 0); if (avcodec_open2(avctx, codec, &opts) < 0) return -1; @@ -2426,7 +2428,7 @@ static void stream_component_close(VideoState *is, int stream_index) av_freep(&is->audio_buf1); is->audio_buf1_size = 0; is->audio_buf = NULL; - avcodec_free_frame(&is->frame); + av_frame_free(&is->frame); if (is->rdft) { av_rdft_end(is->rdft);