From fe448bfac30eb1519bdf9340cb0c62a0cf163958 Mon Sep 17 00:00:00 2001 From: Jeffy Chen Date: Tue, 20 Nov 2018 17:33:22 +0800 Subject: [PATCH 04/31] kmssink: Support render rectangle for plane Signed-off-by: Jeffy Chen --- sys/kms/gstkmssink.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sys/kms/gstkmssink.c b/sys/kms/gstkmssink.c index 788cefc..53bf4a1 100644 --- a/sys/kms/gstkmssink.c +++ b/sys/kms/gstkmssink.c @@ -471,6 +471,9 @@ configure_mode_setting (GstKMSSink * self, GstVideoInfo * vinfo) if (err) goto modesetting_failed; + self->hdisplay = mode->hdisplay; + self->vdisplay = mode->vdisplay; + g_clear_pointer (&self->tmp_kmsmem, gst_memory_unref); self->tmp_kmsmem = (GstMemory *) kmsmem; @@ -1606,7 +1609,14 @@ gst_kms_sink_show_frame (GstVideoSink * vsink, GstBuffer * buf) GST_OBJECT_LOCK (self); if (self->modesetting_enabled) { self->buffer_id = fb_id; - goto sync_frame; + + if (!self->render_rect.w || !self->render_rect.h) + goto sync_frame; + + if (!self->render_rect.x && !self->render_rect.y && + self->render_rect.w == self->hdisplay && + self->render_rect.h == self->vdisplay) + goto sync_frame; } if ((crop = gst_buffer_get_video_crop_meta (buffer))) { -- 2.20.1