wtay gstreamer: gstreamer/ gstreamer/libs/gst/base/

[email protected] Mon, 8 Dec 2008 10:35:59 -0800 (PST)
Newsgroups gmane.comp.video.gstreamer.cvs
Message-ID <[email protected]>
CVS Root:       /cvs/gstreamer
Module:         gstreamer
Changes by:     wtay
Date:           Mon Dec 08 2008  18:35:59 UTC

Log message:
* libs/gst/base/gstbasetransform.c:
(gst_base_transform_prepare_output_buffer),
(gst_base_transform_getrange), (gst_base_transform_chain):
* libs/gst/base/gstbasetransform.h:
Add vmethod that is called before we start the transform and which can
be used to configure the transform, such as dynamic properties.

Modified files:
    .               : ChangeLog
    libs/gst/base   : gstbasetransform.c gstbasetransform.h

Links:
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.4182&r2=1.4183
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/libs/gst/base/gstbasetransform.c.diff?r1=1.132&r2=1.133
http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/libs/gst/base/gstbasetransform.h.diff?r1=1.40&r2=1.41

====Begin Diffs====
Index: ChangeLog
===================================================================
RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v
retrieving revision 1.4182
retrieving revision 1.4183
diff -u -d -r1.4182 -r1.4183
--- ChangeLog	5 Dec 2008 20:32:01 -0000	1.4182
+++ ChangeLog	8 Dec 2008 18:35:42 -0000	1.4183
@@ -1,3 +1,12 @@
+2008-12-08  Wim Taymans  <[email protected]>
+
+	* libs/gst/base/gstbasetransform.c:
+	(gst_base_transform_prepare_output_buffer),
+	(gst_base_transform_getrange), (gst_base_transform_chain):
+	* libs/gst/base/gstbasetransform.h:
+	Add vmethod that is called before we start the transform and which can
+	be used to configure the transform, such as dynamic properties.
 2008-12-05  David Schleef  <[email protected]>
 
 	* gst/gst.c:
Index: gstbasetransform.c
RCS file: /cvs/gstreamer/gstreamer/libs/gst/base/gstbasetransform.c,v
retrieving revision 1.132
retrieving revision 1.133
diff -u -d -r1.132 -r1.133
--- gstbasetransform.c	24 Nov 2008 15:27:55 -0000	1.132
+++ gstbasetransform.c	8 Dec 2008 18:35:44 -0000	1.133
@@ -1185,6 +1185,7 @@
       /* only discard it when the input was not writable, otherwise, we reuse
        * the input buffer. */
       discard = gst_buffer_is_writable (in_buf);
+      GST_DEBUG_OBJECT (trans, "discard: %d", discard);
     } else {
       GST_DEBUG_OBJECT (trans, "getting output size for copy transform");
       /* copy transform, figure out the output size */
@@ -1948,6 +1949,7 @@
     guint length, GstBuffer ** buffer)
 {
   GstBaseTransform *trans;
+  GstBaseTransformClass *klass;
   GstFlowReturn ret;
   GstBuffer *inbuf;
@@ -1957,6 +1959,10 @@
   if (G_UNLIKELY (ret != GST_FLOW_OK))
     goto pull_error;
+  klass = GST_BASE_TRANSFORM_GET_CLASS (trans);
+  if (klass->before_transform)
+    klass->before_transform (trans, inbuf);
   GST_BASE_TRANSFORM_LOCK (trans);
   ret = gst_base_transform_handle_buffer (trans, inbuf, buffer);
   GST_BASE_TRANSFORM_UNLOCK (trans);
@@ -1979,6 +1985,7 @@
 gst_base_transform_chain (GstPad * pad, GstBuffer * buffer)
   GstClockTime last_stop = GST_CLOCK_TIME_NONE;
   GstBuffer *outbuf = NULL;
@@ -1993,6 +2000,10 @@
       last_stop = GST_BUFFER_TIMESTAMP (buffer);
   }
+    klass->before_transform (trans, buffer);
   /* protect transform method and concurrent buffer alloc */
   ret = gst_base_transform_handle_buffer (trans, buffer, &outbuf);
Index: gstbasetransform.h
RCS file: /cvs/gstreamer/gstreamer/libs/gst/base/gstbasetransform.h,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -d -r1.40 -r1.41
--- gstbasetransform.h	20 Aug 2008 10:52:09 -0000	1.40
+++ gstbasetransform.h	8 Dec 2008 18:35:44 -0000	1.41
@@ -182,6 +182,10 @@
  *                         analysis can return a subbuffer or even just
  *                         increment the reference to the input buffer (if in
  *                         passthrough mode)
+ * @before_transform: Optional. Since 0.10.22
+ *                    This method is called right before the base class will
+ *                    start processing. Dynamic properties or other delayed
+ *                    configuration could be performed in this method.
  *
  * Subclasses can override any of the available virtual methods or not, as
  * needed. At minimum either @transform or @transform_ip need to be overridden.
@@ -231,8 +235,10 @@
   /* src event */
   gboolean      (*src_event)      (GstBaseTransform *trans, GstEvent *event);
+  void          (*before_transform)  (GstBaseTransform *trans, GstBuffer *buffer);
   /*< private >*/
-  gpointer       _gst_reserved[GST_PADDING_LARGE - 1];
+  gpointer       _gst_reserved[GST_PADDING_LARGE - 2];
 };
 GType           gst_base_transform_get_type         (void);

------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/