[gstreamermm] Wrapped some functions from GstPad: * gst_pad_set_activate_function * gst_pad_set_activatemode_fun
- From: Marcin Kolny <mkolny src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gstreamermm] Wrapped some functions from GstPad: * gst_pad_set_activate_function * gst_pad_set_activatemode_fun
- Date: Tue, 27 May 2014 12:14:33 +0000 (UTC)
commit b5febd3db5f0519d6e07021f250ea688a58259fe
Author: Marcin Kolny <marcin kolny flytronic pl>
Date: Tue May 27 14:07:39 2014 +0200
Wrapped some functions from GstPad:
* gst_pad_set_activate_function
* gst_pad_set_activatemode_function
* gst_pad_set_getrange_function
gstreamer/src/pad.ccg | 83 +++++++++++++++++++++++++++++++++++++++++++++++++
gstreamer/src/pad.hg | 15 +++++++++
2 files changed, 98 insertions(+), 0 deletions(-)
---
diff --git a/gstreamer/src/pad.ccg b/gstreamer/src/pad.ccg
index cf16eac..f2b4d2a 100644
--- a/gstreamer/src/pad.ccg
+++ b/gstreamer/src/pad.ccg
@@ -246,6 +246,71 @@ gboolean Pad_Event_gstreamermm_callback(GstPad* pad, GstObject* parent, GstEvent
return false;
}
+gboolean Pad_Activate_gstreamermm_callback(GstPad* pad, GstObject* parent)
+{
+ Gst::Pad *pad_wrapper = dynamic_cast<Gst::Pad*>
+ (static_cast<Glib::ObjectBase*>(
+ Glib::ObjectBase::_get_current_wrapper((GObject*)pad)
+ )
+ );
+ g_assert(pad);
+
+ try
+ {
+ return pad_wrapper->slot_activate(Glib::wrap(pad, true));
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+
+ return false;
+}
+
+gboolean Pad_Activatemode_gstreamermm_callback(GstPad* pad, GstObject* parent, GstPadMode mode, gboolean
active)
+{
+ Gst::Pad *pad_wrapper = dynamic_cast<Gst::Pad*>
+ (static_cast<Glib::ObjectBase*>(
+ Glib::ObjectBase::_get_current_wrapper((GObject*)pad)
+ )
+ );
+ g_assert(pad);
+
+ try
+ {
+ return pad_wrapper->slot_activatemode(Glib::wrap(pad, true), static_cast<PadMode>(mode), active);
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+
+ return false;
+}
+
+GstFlowReturn Pad_Getrange_gstreamermm_callback(GstPad* pad, GstObject* parent, guint64 offset, guint
length, GstBuffer **buffer)
+{
+ Gst::Pad *pad_wrapper = dynamic_cast<Gst::Pad*>
+ (static_cast<Glib::ObjectBase*>(
+ Glib::ObjectBase::_get_current_wrapper((GObject*)pad)
+ )
+ );
+ g_assert(pad);
+ Glib::RefPtr<Buffer> buf = Glib::wrap(*buffer, false);
+ try
+ {
+ return static_cast<GstFlowReturn>(
+ pad_wrapper->slot_getrange(Glib::wrap(pad, true), offset, length, buf)
+ );
+ }
+ catch(...)
+ {
+ Glib::exception_handlers_invoke();
+ }
+
+ return GST_FLOW_ERROR;
+}
+
void Pad::set_chain_function(const SlotChain& slot)
{
slot_chain = slot;
@@ -264,6 +329,24 @@ void Pad::set_event_function(const SlotEvent& slot)
gst_pad_set_event_function(GST_PAD(gobj()), &Pad_Event_gstreamermm_callback);
}
+void Pad::set_activate_function(const SlotActivate& slot)
+{
+ slot_activate = slot;
+ gst_pad_set_activate_function(GST_PAD(gobj()), &Pad_Activate_gstreamermm_callback);
+}
+
+void Pad::set_activatemode_function(const SlotActivatemode& slot)
+{
+ slot_activatemode= slot;
+ gst_pad_set_activatemode_function(GST_PAD(gobj()), &Pad_Activatemode_gstreamermm_callback);
+}
+
+void Pad::set_getrange_function(const SlotGetrange& slot)
+{
+ slot_getrange = slot;
+ gst_pad_set_getrange_function(GST_PAD(gobj()), &Pad_Getrange_gstreamermm_callback);
+}
+
bool Pad::is_ghost_pad() const
{
return GST_IS_GHOST_PAD(gobj());
diff --git a/gstreamer/src/pad.hg b/gstreamer/src/pad.hg
index ca56ee7..64adba6 100644
--- a/gstreamer/src/pad.hg
+++ b/gstreamer/src/pad.hg
@@ -123,6 +123,12 @@ public:
typedef sigc::slot< gboolean, const Glib::RefPtr<Gst::Pad>&, /*transfer none*/ const
Glib::RefPtr<Gst::Query>& > SlotQuery;
+ typedef sigc::slot< bool, const Glib::RefPtr<Gst::Pad>& > SlotActivate;
+
+ typedef sigc::slot< bool, const Glib::RefPtr<Gst::Pad>&, Gst::PadMode, bool > SlotActivatemode;
+
+ typedef sigc::slot< Gst::FlowReturn, const Glib::RefPtr<Gst::Pad>&, guint64, guint,
Glib::RefPtr<Gst::Buffer>& > SlotGetrange;
+
/** Creates a new pad with the given name in the given direction.
*
* @param name The name of the new pad.
@@ -353,6 +359,12 @@ public:
void set_event_function(const SlotEvent& slot);
friend gboolean Pad_Query_gstreamermm_callback(GstPad* pad, GstObject* parent, GstQuery* query);
void set_query_function(const SlotQuery& slot);
+ friend gboolean Pad_Activate_gstreamermm_callback(GstPad* pad, GstObject* parent);
+ void set_activate_function(const SlotActivate& slot);
+ friend gboolean Pad_Activatemode_gstreamermm_callback(GstPad* pad, GstObject* parent, GstPadMode mode,
gboolean active);
+ void set_activatemode_function(const SlotActivatemode& slot);
+ friend GstFlowReturn Pad_Getrange_gstreamermm_callback(GstPad* pad, GstObject* parent, guint64 offset,
guint length, GstBuffer **buffer);
+ void set_getrange_function(const SlotGetrange& slot);
//C API specific pad callback setting functions are ignored.
_IGNORE(
@@ -404,6 +416,9 @@ private:
SlotChain slot_chain;
SlotEvent slot_event;
SlotQuery slot_query;
+ SlotActivate slot_activate;
+ SlotActivatemode slot_activatemode;
+ SlotGetrange slot_getrange;
};
class PadProbeInfo
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]