Add untested get-video-size function (bug 104360)
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>
Thu, 30 Jan 2003 20:47:43 +0000 (20:47 +0000)
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>
Thu, 30 Jan 2003 20:47:43 +0000 (20:47 +0000)
Original commit message from CVS:
Add untested get-video-size function (bug 104360)

gst-libs/gst/video/video.c
gst-libs/gst/video/video.h

index 7b63d81..7c8b485 100644 (file)
@@ -33,22 +33,55 @@ gst_video_frame_rate (GstPad *pad)
 
   /* do a convert request on the source pad */
   if (!gst_pad_convert(pad,
-                       GST_FORMAT_TIME, GST_SECOND * NUM_UNITS,
-                       &dest_format, &dest_value))
+                       GST_FORMAT_TIME, GST_SECOND * NUM_UNITS,
+                       &dest_format, &dest_value))
   {
     g_warning("gstvideo: pad %s:%s failed to convert time to unit!\n",
-               GST_ELEMENT_NAME(gst_pad_get_parent (pad)), GST_PAD_NAME(pad));
+              GST_ELEMENT_NAME(gst_pad_get_parent (pad)), GST_PAD_NAME(pad));
     return 0.;
   }
 
   fps = ((gdouble) dest_value) / NUM_UNITS;
 
   GST_DEBUG(GST_CAT_ELEMENT_PADS, "Framerate request on pad %s:%s - %f fps",
-               GST_ELEMENT_NAME(gst_pad_get_parent (pad)), GST_PAD_NAME(pad), fps);
+            GST_ELEMENT_NAME(gst_pad_get_parent (pad)), GST_PAD_NAME(pad), fps);
 
   return fps;
 }
 
+gboolean
+gst_video_get_size (GstPad *pad,
+                    gint   *width,
+                    gint   *height)
+{
+  GstCaps *caps;
+
+  g_return_val_if_fail(pad != NULL, FALSE);
+
+  caps = GST_PAD_CAPS(pad);
+  if (!caps) {
+    g_warning("gstvideo: failed to get caps of pad %s:%s",
+              GST_ELEMENT_NAME(gst_pad_get_parent (pad)), GST_PAD_NAME(pad));
+    return FALSE;
+  }
+  if (!gst_caps_has_property(caps, "width") ||
+      !gst_caps_has_property(caps, "height")) {
+    g_warning("gstvideo: resulting caps doesn't have width/height properties");
+    return FALSE;
+  }
+
+  if (width)
+    gst_caps_get_int(caps, "width", width);
+  if (height)
+    gst_caps_get_int(caps, "height", height);
+
+  GST_DEBUG(GST_CAT_ELEMENT_PADS, "size request on pad %s:%s: %dx%d",
+           GST_ELEMENT_NAME(gst_pad_get_parent (pad)), GST_PAD_NAME(pad),
+            width?*width:0, height?*height:0);
+
+  return TRUE;
+}
+
 static gboolean
 plugin_init (GModule *module, GstPlugin *plugin)
 {
index 6062b92..802520d 100644 (file)
@@ -23,6 +23,9 @@
 
 #include <gst/gst.h>
 
-gdouble gst_video_frame_rate (GstPad *pad);
+gdouble  gst_video_frame_rate (GstPad *pad);
+gboolean gst_video_get_size   (GstPad *pad,
+                               gint   *width,
+                               gint   *height);
 
 #endif /* __GST_VIDEO_H__ */