From 3623cec7d2753ec7e7bf1ca73580203acb3347c8 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sun, 24 Jul 2016 19:06:00 +0200 Subject: af_lavcac3enc: use common code for AVFrame setup --- audio/audio.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'audio/audio.c') diff --git a/audio/audio.c b/audio/audio.c index 306401b5a4..710cc03193 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -394,12 +394,9 @@ fail: return NULL; } -// Returns NULL on failure. The input is always unreffed. -struct AVFrame *mp_audio_to_avframe_and_unref(struct mp_audio *frame) +int mp_audio_to_avframe(struct mp_audio *frame, struct AVFrame *avframe) { - struct AVFrame *avframe = av_frame_alloc(); - if (!avframe) - goto fail; + av_frame_unref(avframe); avframe->nb_samples = frame->samples; avframe->format = af_to_avformat(frame->format); @@ -457,6 +454,23 @@ struct AVFrame *mp_audio_to_avframe_and_unref(struct mp_audio *frame) avframe = tmp; } + return 0; + +fail: + av_frame_unref(avframe); + return -1; +} + +// Returns NULL on failure. The input is always unreffed. +struct AVFrame *mp_audio_to_avframe_and_unref(struct mp_audio *frame) +{ + struct AVFrame *avframe = av_frame_alloc(); + if (!avframe) + goto fail; + + if (mp_audio_to_avframe(frame, avframe) < 0) + goto fail; + talloc_free(frame); return avframe; -- cgit v1.2.3