From 6aaf79f72d0267b840ff951ca47149865fb820d8 Mon Sep 17 00:00:00 2001
From: philippegorley <philippe.gorley@savoirfairelinux.com>
Date: Wed, 22 Aug 2018 15:34:54 -0400
Subject: [PATCH] media: fix memory leaks

avcodec_close leaks memory, while avcodec_free_context doesn't.

FFmpeg documentation specifies not to use avcodec_close, as opening and
closing a context multiple times is no longer supported.

Change-Id: I230891f2510c355b9d44d918dcf387399d79a8aa
Reviewed-by: Sebastien Blin <sebastien.blin@savoirfairelinux.com>
---
 src/media/media_decoder.cpp | 2 +-
 src/media/media_encoder.cpp | 3 +--
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/media/media_decoder.cpp b/src/media/media_decoder.cpp
index fd09f52e3f..bbd39a6aa4 100644
--- a/src/media/media_decoder.cpp
+++ b/src/media/media_decoder.cpp
@@ -64,7 +64,7 @@ MediaDecoder::~MediaDecoder()
         av_buffer_unref(&decoderCtx_->hw_device_ctx);
 #endif
     if (decoderCtx_)
-        avcodec_close(decoderCtx_);
+        avcodec_free_context(&decoderCtx_);
     if (inputCtx_)
         avformat_close_input(&inputCtx_);
 
diff --git a/src/media/media_encoder.cpp b/src/media/media_encoder.cpp
index acf052b6c9..69155b9e6b 100644
--- a/src/media/media_encoder.cpp
+++ b/src/media/media_encoder.cpp
@@ -54,8 +54,7 @@ MediaEncoder::~MediaEncoder()
             av_write_trailer(outputCtx_);
 
         for (auto encoderCtx : encoders_)
-            if (encoderCtx)
-                avcodec_close(encoderCtx);
+            avcodec_free_context(&encoderCtx);
 
         avformat_free_context(outputCtx_);
     }
-- 
GitLab