From 821ec73a3d9dc617de4236e2013735cea8e95eb3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Fri, 26 Feb 2021 11:59:49 -0500
Subject: [PATCH] accel: don't try to transfer null frame

Change-Id: Ia9cf5638678c0e92127ec9bf3631235a2827d49d
---
 src/media/video/accel.cpp       | 2 ++
 src/media/video/video_mixer.cpp | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/media/video/accel.cpp b/src/media/video/accel.cpp
index 45a730d4c6..69a1b1f14d 100644
--- a/src/media/video/accel.cpp
+++ b/src/media/video/accel.cpp
@@ -374,6 +374,8 @@ std::unique_ptr<VideoFrame>
 HardwareAccel::transferToMainMemory(const VideoFrame& frame, AVPixelFormat desiredFormat)
 {
     auto input = frame.pointer();
+    if (not input)
+        throw std::runtime_error("Cannot transfer null frame");
     auto out = std::make_unique<VideoFrame>();
 
     auto desc = av_pix_fmt_desc_get(static_cast<AVPixelFormat>(input->format));
diff --git a/src/media/video/video_mixer.cpp b/src/media/video/video_mixer.cpp
index 7d121365a9..3964e1076d 100644
--- a/src/media/video/video_mixer.cpp
+++ b/src/media/video/video_mixer.cpp
@@ -231,11 +231,11 @@ VideoMixer::update(Observable<std::shared_ptr<MediaFrame>>* ob,
             std::shared_ptr<VideoFrame> frame;
             try {
                 frame = HardwareAccel::transferToMainMemory(*std::static_pointer_cast<VideoFrame>(frame_p), AV_PIX_FMT_NV12);
+                x->atomic_copy(*std::static_pointer_cast<VideoFrame>(frame));
             } catch (const std::runtime_error& e) {
                 JAMI_ERR("Accel failure: %s", e.what());
                 return;
             }
-            x->atomic_copy(*std::static_pointer_cast<VideoFrame>(frame));
 #else
             x->atomic_copy(*std::static_pointer_cast<VideoFrame>(frame_p));
 #endif
-- 
GitLab