gl: add convenience function for the start of a video frame
authorMatthew Waters <matthew@centricular.com>
Mon, 14 Dec 2015 01:26:01 +0000 (12:26 +1100)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 9 Dec 2017 19:32:12 +0000 (19:32 +0000)
Get's the start of the video frame based on a GstVideoInfo and
GstVideoAlignment.

gst-libs/gst/gl/gstglutils.c
gst-libs/gst/gl/gstglutils.h

index a57bbda..080c17b 100644 (file)
@@ -904,6 +904,25 @@ gst_gl_get_plane_data_size (GstVideoInfo * info, GstVideoAlignment * align,
   return plane_size;
 }
 
+/* find the difference between the start of the plane and where the video
+ * data starts in the plane */
+gsize
+gst_gl_get_plane_start (GstVideoInfo * info, GstVideoAlignment * valign,
+    guint plane)
+{
+  gsize plane_start;
+  gint i;
+
+  /* find the start of the plane data including padding */
+  plane_start = 0;
+  for (i = 0; i < plane; i++) {
+    plane_start += gst_gl_get_plane_data_size (info, valign, i);
+  }
+
+  /* offset between the plane data start and where the video frame starts */
+  return (GST_VIDEO_INFO_PLANE_OFFSET (info, plane)) - plane_start;
+}
+
 GstCaps *
 gst_gl_caps_replace_all_caps_features (const GstCaps * caps,
     const gchar * feature_name)
index ee606e0..3c8460b 100644 (file)
@@ -106,6 +106,8 @@ gboolean gst_gl_run_query (GstElement * element,
     GstQuery * query, GstPadDirection direction);
 gsize gst_gl_get_plane_data_size (GstVideoInfo * info, GstVideoAlignment * align,
     guint plane);
+gsize gst_gl_get_plane_start (GstVideoInfo * info, GstVideoAlignment * valign,
+    guint plane);
 GstCaps * gst_gl_caps_replace_all_caps_features (const GstCaps * caps,
     const gchar * feature_name);