1From f9ad5d9c8e1a5c364c3d7bfa10c5f7723e3341da Mon Sep 17 00:00:00 2001
2From: Jeffy Chen <jeffy.chen@rock-chips.com>
3Date: Tue, 20 Nov 2018 17:33:22 +0800
4Subject: [PATCH 04/33] kmssink: Support render rectangle for plane
5
6Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
7---
8 sys/kms/gstkmssink.c | 12 +++++++++++-
9 1 file changed, 11 insertions(+), 1 deletion(-)
10
11diff --git a/sys/kms/gstkmssink.c b/sys/kms/gstkmssink.c
12index 788cefc..53bf4a1 100644
13--- a/sys/kms/gstkmssink.c
14+++ b/sys/kms/gstkmssink.c
15@@ -471,6 +471,9 @@ configure_mode_setting (GstKMSSink * self, GstVideoInfo * vinfo)
16   if (err)
17     goto modesetting_failed;
18
19+  self->hdisplay = mode->hdisplay;
20+  self->vdisplay = mode->vdisplay;
21+
22   g_clear_pointer (&self->tmp_kmsmem, gst_memory_unref);
23   self->tmp_kmsmem = (GstMemory *) kmsmem;
24
25@@ -1606,7 +1609,14 @@ gst_kms_sink_show_frame (GstVideoSink * vsink, GstBuffer * buf)
26   GST_OBJECT_LOCK (self);
27   if (self->modesetting_enabled) {
28     self->buffer_id = fb_id;
29-    goto sync_frame;
30+
31+    if (!self->render_rect.w || !self->render_rect.h)
32+      goto sync_frame;
33+
34+    if (!self->render_rect.x && !self->render_rect.y &&
35+        self->render_rect.w == self->hdisplay &&
36+        self->render_rect.h == self->vdisplay)
37+      goto sync_frame;
38   }
39
40   if ((crop = gst_buffer_get_video_crop_meta (buffer))) {
41--
422.20.1
43
44