summaryrefslogtreecommitdiff
path: root/ffplay.c
diff options
context:
space:
mode:
authorMarton Balint <cus@passwd.hu>2013-03-13 01:26:21 +0100
committerMarton Balint <cus@passwd.hu>2013-03-17 03:31:37 +0100
commit738487f8db8a5e1f95c276d308210046feda130c (patch)
treefac49edd2fb4b6ea4dcd94061d2149db24cb0fe9 /ffplay.c
parent9eafdd518cc804d7be5cabe0af821d878d8e2048 (diff)
ffplay: use refcounted frames for audio
Signed-off-by: Marton Balint <cus@passwd.hu>
Diffstat (limited to 'ffplay.c')
-rw-r--r--ffplay.c8
1 files 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);