[gst-cvs] gst-plugins-bad: photo iface: Add caps object to preparation API for requested and actual capture format

René Stadler cymacs at kemper.freedesktop.org
Mon Feb 23 04:27:04 PST 2009


Module: gst-plugins-bad
Branch: master
Commit: 617f34895c99c41b4515ecc4c499576773599883
URL:    http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=617f34895c99c41b4515ecc4c499576773599883

Author: Lasse Laukkanen <ext-lasse.2.laukkanen at nokia.com>
Date:   Fri Feb 20 12:03:03 2009 +0200

photo iface: Add caps object to preparation API for requested and actual capture format

Allow requesting of certain format with prepare_for_capture() and return
the actual format in GstPhotoCapturePrepared callback.

---

 gst-libs/gst/interfaces/photography.c |   15 +++++++++++----
 gst-libs/gst/interfaces/photography.h |   13 ++++++++-----
 2 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/gst-libs/gst/interfaces/photography.c b/gst-libs/gst/interfaces/photography.c
index 7e93b50..4d62cf4 100644
--- a/gst-libs/gst/interfaces/photography.c
+++ b/gst-libs/gst/interfaces/photography.c
@@ -325,22 +325,29 @@ gst_photography_get_capabilities (GstPhotography * photo)
  * gst_photography_prepare_for_capture:
  * @photo: #GstPhotography interface of a #GstElement
  * @func: callback that is called after capturing has been prepared
+ * @caps: #GstCaps defining the desired format of the captured image
  * @user_data: user data that will be passed to the callback @func
  *
  * Start preparations for capture. @func callback is called after
  * preparations are done.
+ *
+ * Returns: TRUE if preparations were started (caps were OK), otherwise FALSE.
  */
-void
+gboolean
 gst_photography_prepare_for_capture (GstPhotography * photo,
-    GstPhotoCapturePrepared func, gpointer user_data)
+    GstPhotoCapturePrepared func, GstCaps * capture_caps, gpointer user_data)
 {
   GstPhotographyInterface *iface;
-  g_return_if_fail (photo != NULL);
+  gboolean ret = TRUE;
+
+  g_return_val_if_fail (photo != NULL, FALSE);
 
   iface = GST_PHOTOGRAPHY_GET_IFACE (photo);
   if (iface->prepare_for_capture) {
-    iface->prepare_for_capture (photo, func, user_data);
+    ret = iface->prepare_for_capture (photo, func, capture_caps, user_data);
   }
+
+  return ret;
 }
 
 /**
diff --git a/gst-libs/gst/interfaces/photography.h b/gst-libs/gst/interfaces/photography.h
index 199a700..afa4631 100644
--- a/gst-libs/gst/interfaces/photography.h
+++ b/gst-libs/gst/interfaces/photography.h
@@ -143,11 +143,14 @@ typedef struct
 /**
  * GstPhotoCapturePrepared:
  * @data: user data that has been given, when registering the callback
+ * @configured_caps: #GstCaps defining the configured capture format.
+ *     Ownership of these caps stays in the element.
  *
  * This callback will be called when the element has finished preparations
  * for photo capture.
  */
-typedef void (*GstPhotoCapturePrepared) (gpointer data);
+typedef void (*GstPhotoCapturePrepared) (gpointer data,
+    const GstCaps *configured_caps);
 
 /**
  * GstPhotographyInterface:
@@ -210,8 +213,8 @@ typedef struct _GstPhotographyInterface
     gboolean (*set_zoom) (GstPhotography * photo, gfloat zoom);
 
     GstPhotoCaps (*get_capabilities) (GstPhotography * photo);
-  void (*prepare_for_capture) (GstPhotography * photo,
-      GstPhotoCapturePrepared func, gpointer user_data);
+    gboolean (*prepare_for_capture) (GstPhotography * photo,
+      GstPhotoCapturePrepared func, GstCaps *capture_caps, gpointer user_data);
   void (*set_autofocus) (GstPhotography * photo, gboolean on);
 
   /*< private > */
@@ -257,8 +260,8 @@ gboolean gst_photography_set_zoom (GstPhotography * photo, gfloat zoom);
 
 GstPhotoCaps gst_photography_get_capabilities (GstPhotography * photo);
 
-void gst_photography_prepare_for_capture (GstPhotography * photo,
-    GstPhotoCapturePrepared func, gpointer user_data);
+gboolean gst_photography_prepare_for_capture (GstPhotography * photo,
+    GstPhotoCapturePrepared func, GstCaps *capture_caps, gpointer user_data);
 
 void gst_photography_set_autofocus (GstPhotography * photo, gboolean on);
 





More information about the Gstreamer-commits mailing list