hc
2024-08-16 94ba65e25ce534ec0515708c9e0835242345bc7b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
From b52453ff0b33de99ba4f3da5ae2d4ad2666399ea Mon Sep 17 00:00:00 2001
From: Jeffy Chen <jeffy.chen@rock-chips.com>
Date: Tue, 30 Mar 2021 07:52:42 +0800
Subject: [PATCH 13/17] HACK: gstreamer: Support fill mode
 
Depends on gstreamer-sink property.
 
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
---
 src/gsttools/qgstreamervideooverlay.cpp | 12 ++++++++++++
 1 file changed, 12 insertions(+)
 
diff --git a/src/gsttools/qgstreamervideooverlay.cpp b/src/gsttools/qgstreamervideooverlay.cpp
index 93a32119..592b56ab 100644
--- a/src/gsttools/qgstreamervideooverlay.cpp
+++ b/src/gsttools/qgstreamervideooverlay.cpp
@@ -111,6 +111,7 @@ public:
         m_hasHue = g_object_class_find_property(G_OBJECT_GET_CLASS(m_videoSink), "hue");
         m_hasSaturation = g_object_class_find_property(G_OBJECT_GET_CLASS(m_videoSink), "saturation");
         m_hasShowPrerollFrame = g_object_class_find_property(G_OBJECT_GET_CLASS(m_videoSink), "show-preroll-frame");
+        m_hasFillMode = g_object_class_find_property(G_OBJECT_GET_CLASS(m_videoSink), "fill-mode");
     }
 
     bool hasShowPrerollFrame() const override
@@ -221,12 +222,23 @@ public:
                          (mode == Qt::KeepAspectRatio),
                          nullptr);
         }
+        if (m_hasFillMode) {
+            // HACK: Match the gst-sink properties
+            int modes[] = {
+                [Qt::IgnoreAspectRatio] = 0,
+                [Qt::KeepAspectRatio] = 1,
+                [Qt::KeepAspectRatioByExpanding] = 2,
+            };
+            g_object_set(G_OBJECT(m_videoSink),
+                         "fill-mode", modes[mode], nullptr);
+        }
     }
 
 protected:
 
     GstElement *m_videoSink = nullptr;
     bool m_hasForceAspectRatio = false;
+    bool m_hasFillMode = false;
     bool m_hasBrightness = false;
     bool m_hasContrast = false;
     bool m_hasHue = false;
-- 
2.20.1