From ae6ec7a194257ddc72b8fa55f8a39486fb01b4c2 Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Mon, 26 Apr 2021 18:05:43 +0200 Subject: [PATCH] Unref decoder AVFrame immediately The frame can be unref immediately after it is pushed to the frame sinks. It was not really a memory leak because the frame was unref every time by avcodec_receive_frame() (and freed on close), but a reference was unnecessarily kept for too long. --- app/src/decoder.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/decoder.c b/app/src/decoder.c index 476158d9..dbaa3d39 100644 --- a/app/src/decoder.c +++ b/app/src/decoder.c @@ -111,6 +111,8 @@ decoder_push(struct decoder *decoder, const AVPacket *packet) { // A frame lost should not make the whole pipeline fail. The error, if // any, is already logged. (void) ok; + + av_frame_unref(decoder->frame); } else if (ret != AVERROR(EAGAIN)) { LOGE("Could not receive video frame: %d", ret); return false;