only check scale once per playback
upstream status: imx specific
Signed-off-by: Haihua Hu <jared.hu@nxp.com>
diff --git a/sys/kms/gstkmssink.c b/sys/kms/gstkmssink.c
index 871fd86..19ea739 100644
--- a/sys/kms/gstkmssink.c
+++ b/sys/kms/gstkmssink.c
@@ -422,7 +422,10 @@
guint32 crtc_w, crtc_h;
GstKMSMemory *kmsmem = NULL;
- if (!self->can_scale)
+ /* we assume driver can scale at initialize,
+ * if scale is checked or can not scale, we
+ * don't need check again */
+ if (self->scale_checked || !self->can_scale)
return;
if (self->conn_id < 0)
@@ -449,6 +452,7 @@
GST_INFO_OBJECT (self, "scale is not support");
}
+ self->scale_checked = TRUE;
g_clear_pointer (&kmsmem, gst_memory_unref);
}
@@ -1912,6 +1916,7 @@
sink->conn_id = -1;
sink->plane_id = -1;
sink->can_scale = TRUE;
+ sink->scale_checked = FALSE;
gst_poll_fd_init (&sink->pollfd);
sink->poll = gst_poll_new (TRUE);
gst_video_info_init (&sink->vinfo);
diff --git a/sys/kms/gstkmssink.h b/sys/kms/gstkmssink.h
index 3767ab8..e8ab54e 100644
--- a/sys/kms/gstkmssink.h
+++ b/sys/kms/gstkmssink.h
@@ -68,6 +68,7 @@
gboolean has_prime_export;
gboolean has_async_page_flip;
gboolean can_scale;
+ gboolean scale_checked;
/* global alpha */
gboolean is_alpha_set;