From 21bdc03908369098d144b3b6143fb6fb5192bc1d Mon Sep 17 00:00:00 2001
From: Valentin Vanelslande <valentinvanelslandeacnl@gmail.com>
Date: Fri, 21 Sep 2018 18:28:46 -0500
Subject: [PATCH 1/3] Force camera pixel format to RGB565 on Linux

---
 src/citra_qt/camera/qt_multimedia_camera.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/citra_qt/camera/qt_multimedia_camera.cpp b/src/citra_qt/camera/qt_multimedia_camera.cpp
index e18508c24..dabccac94 100644
--- a/src/citra_qt/camera/qt_multimedia_camera.cpp
+++ b/src/citra_qt/camera/qt_multimedia_camera.cpp
@@ -172,6 +172,9 @@ void QtMultimediaCameraHandler::CreateCamera(const std::string& camera_name) {
     }
     settings.setMinimumFrameRate(30);
     settings.setMaximumFrameRate(30);
+#ifdef __linux__
+    settings.setPixelFormat(QVideoFrame::PixelFormat::Format_RGB565);
+#endif
     camera->setViewfinder(&camera_surface);
     camera->load();
 }

From 19ef115f50710c0cd9708d69dfcc66ac77d77125 Mon Sep 17 00:00:00 2001
From: Valentin Vanelslande <valentinvanelslandeacnl@gmail.com>
Date: Fri, 5 Oct 2018 07:22:26 -0500
Subject: [PATCH 2/3] Address comment

---
 src/citra_qt/camera/qt_multimedia_camera.cpp | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/citra_qt/camera/qt_multimedia_camera.cpp b/src/citra_qt/camera/qt_multimedia_camera.cpp
index dabccac94..5c0b73f2b 100644
--- a/src/citra_qt/camera/qt_multimedia_camera.cpp
+++ b/src/citra_qt/camera/qt_multimedia_camera.cpp
@@ -172,9 +172,12 @@ void QtMultimediaCameraHandler::CreateCamera(const std::string& camera_name) {
     }
     settings.setMinimumFrameRate(30);
     settings.setMaximumFrameRate(30);
-#ifdef __linux__
-    settings.setPixelFormat(QVideoFrame::PixelFormat::Format_RGB565);
-#endif
+    if (camera->supportedViewfinderPixelFormats().isEmpty()) {
+        // The gstreamer plugin (used on linux systems) returns an empty list on querying supported
+        // viewfinder pixel formats, and will not work without expliciting setting it to some value,
+        // so we are defaulting to RGB565 here which should be fairly widely supported.
+        settings.setPixelFormat(QVideoFrame::PixelFormat::Format_RGB565);
+    }
     camera->setViewfinder(&camera_surface);
     camera->load();
 }

From 53afb1cc2d6888a3732f13ef2d5838b28ff80994 Mon Sep 17 00:00:00 2001
From: Valentin Vanelslande <valentinvanelslandeacnl@gmail.com>
Date: Fri, 5 Oct 2018 09:27:16 -0500
Subject: [PATCH 3/3] Move if

---
 src/citra_qt/camera/qt_multimedia_camera.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/citra_qt/camera/qt_multimedia_camera.cpp b/src/citra_qt/camera/qt_multimedia_camera.cpp
index 5c0b73f2b..1c9d07f76 100644
--- a/src/citra_qt/camera/qt_multimedia_camera.cpp
+++ b/src/citra_qt/camera/qt_multimedia_camera.cpp
@@ -172,14 +172,14 @@ void QtMultimediaCameraHandler::CreateCamera(const std::string& camera_name) {
     }
     settings.setMinimumFrameRate(30);
     settings.setMaximumFrameRate(30);
+    camera->setViewfinder(&camera_surface);
+    camera->load();
     if (camera->supportedViewfinderPixelFormats().isEmpty()) {
         // The gstreamer plugin (used on linux systems) returns an empty list on querying supported
         // viewfinder pixel formats, and will not work without expliciting setting it to some value,
         // so we are defaulting to RGB565 here which should be fairly widely supported.
         settings.setPixelFormat(QVideoFrame::PixelFormat::Format_RGB565);
     }
-    camera->setViewfinder(&camera_surface);
-    camera->load();
 }
 
 void QtMultimediaCameraHandler::StopCamera() {