1*4882a593SmuzhiyunFrom 1e7a40138eae8082887eb8a8672189588d86ff24 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com>
3*4882a593SmuzhiyunDate: Thu, 20 Jun 2019 12:43:20 +0800
4*4882a593SmuzhiyunSubject: [PATCH 05/41] kmssink: Request window handle
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
7*4882a593Smuzhiyun---
8*4882a593Smuzhiyun sys/kms/gstkmssink.c | 13 +++++++++++++
9*4882a593Smuzhiyun sys/kms/gstkmssink.h |  2 ++
10*4882a593Smuzhiyun 2 files changed, 15 insertions(+)
11*4882a593Smuzhiyun
12*4882a593Smuzhiyundiff --git a/sys/kms/gstkmssink.c b/sys/kms/gstkmssink.c
13*4882a593Smuzhiyunindex 797f57c..e20740f 100644
14*4882a593Smuzhiyun--- a/sys/kms/gstkmssink.c
15*4882a593Smuzhiyun+++ b/sys/kms/gstkmssink.c
16*4882a593Smuzhiyun@@ -470,11 +470,22 @@ gst_kms_sink_expose (GstVideoOverlay * overlay)
17*4882a593Smuzhiyun   gst_kms_sink_show_frame (GST_VIDEO_SINK (self), NULL);
18*4882a593Smuzhiyun }
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun+static void
21*4882a593Smuzhiyun+gst_kms_sink_set_window_handle (GstVideoOverlay * overlay, guintptr handle)
22*4882a593Smuzhiyun+{
23*4882a593Smuzhiyun+  GstKMSSink *self = GST_KMS_SINK (overlay);
24*4882a593Smuzhiyun+
25*4882a593Smuzhiyun+  g_return_if_fail (self != NULL);
26*4882a593Smuzhiyun+
27*4882a593Smuzhiyun+  self->window_handle = handle;
28*4882a593Smuzhiyun+}
29*4882a593Smuzhiyun+
30*4882a593Smuzhiyun static void
31*4882a593Smuzhiyun gst_kms_sink_video_overlay_init (GstVideoOverlayInterface * iface)
32*4882a593Smuzhiyun {
33*4882a593Smuzhiyun   iface->expose = gst_kms_sink_expose;
34*4882a593Smuzhiyun   iface->set_render_rectangle = gst_kms_sink_set_render_rectangle;
35*4882a593Smuzhiyun+  iface->set_window_handle = gst_kms_sink_set_window_handle;
36*4882a593Smuzhiyun }
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun static int
39*4882a593Smuzhiyun@@ -1475,6 +1486,8 @@ gst_kms_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
40*4882a593Smuzhiyun   }
41*4882a593Smuzhiyun   GST_OBJECT_UNLOCK (self);
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun+  gst_video_overlay_prepare_window_handle (GST_VIDEO_OVERLAY (bsink));
44*4882a593Smuzhiyun+
45*4882a593Smuzhiyun   GST_DEBUG_OBJECT (self, "negotiated caps = %" GST_PTR_FORMAT, caps);
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun   return TRUE;
48*4882a593Smuzhiyundiff --git a/sys/kms/gstkmssink.h b/sys/kms/gstkmssink.h
49*4882a593Smuzhiyunindex 317f789..a769d9b 100644
50*4882a593Smuzhiyun--- a/sys/kms/gstkmssink.h
51*4882a593Smuzhiyun+++ b/sys/kms/gstkmssink.h
52*4882a593Smuzhiyun@@ -109,6 +109,8 @@ struct _GstKMSSink {
53*4882a593Smuzhiyun   GstVideoMasteringDisplayInfo hdr_minfo;
54*4882a593Smuzhiyun   GstVideoContentLightLevel hdr_cll;
55*4882a593Smuzhiyun #endif
56*4882a593Smuzhiyun+
57*4882a593Smuzhiyun+  guintptr window_handle;
58*4882a593Smuzhiyun };
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun struct _GstKMSSinkClass {
61*4882a593Smuzhiyun--
62*4882a593Smuzhiyun2.20.1
63*4882a593Smuzhiyun
64