summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2011-11-21 13:35:34 +0100
committerWim Taymans <wim.taymans@collabora.co.uk>2011-11-21 13:35:34 +0100
commit8fc2a217757359939fcabde681c56790f551c35b (patch)
tree75f09b3edcd8da3051c091735f12a53a89848566
parent3233f09adff07fcd9afdc745c7c89be4410c3462 (diff)
update for activation changes
-rw-r--r--ext/ogg/gstoggdemux.c67
-rw-r--r--gst-libs/gst/audio/gstaudioencoder.c12
-rw-r--r--gst-libs/gst/tag/gsttagdemux.c32
3 files changed, 55 insertions, 56 deletions
diff --git a/ext/ogg/gstoggdemux.c b/ext/ogg/gstoggdemux.c
index 1e4cd4e04..b0907baea 100644
--- a/ext/ogg/gstoggdemux.c
+++ b/ext/ogg/gstoggdemux.c
@@ -1783,10 +1783,8 @@ static GstFlowReturn gst_ogg_demux_chain (GstPad * pad, GstObject * parent,
GstBuffer * buffer);
static gboolean gst_ogg_demux_sink_activate (GstPad * sinkpad,
GstObject * parent);
-static gboolean gst_ogg_demux_sink_activate_pull (GstPad * sinkpad,
- GstObject * parent, gboolean active);
-static gboolean gst_ogg_demux_sink_activate_push (GstPad * sinkpad,
- GstObject * parent, gboolean active);
+static gboolean gst_ogg_demux_sink_activate_mode (GstPad * sinkpad,
+ GstObject * parent, GstPadMode mode, gboolean active);
static GstStateChangeReturn gst_ogg_demux_change_state (GstElement * element,
GstStateChange transition);
@@ -1828,10 +1826,8 @@ gst_ogg_demux_init (GstOggDemux * ogg)
gst_pad_set_event_function (ogg->sinkpad, gst_ogg_demux_sink_event);
gst_pad_set_chain_function (ogg->sinkpad, gst_ogg_demux_chain);
gst_pad_set_activate_function (ogg->sinkpad, gst_ogg_demux_sink_activate);
- gst_pad_set_activatepull_function (ogg->sinkpad,
- gst_ogg_demux_sink_activate_pull);
- gst_pad_set_activatepush_function (ogg->sinkpad,
- gst_ogg_demux_sink_activate_push);
+ gst_pad_set_activatemode_function (ogg->sinkpad,
+ gst_ogg_demux_sink_activate_mode);
gst_element_add_pad (GST_ELEMENT (ogg), ogg->sinkpad);
ogg->chain_lock = g_mutex_new ();
@@ -4327,51 +4323,46 @@ gst_ogg_demux_sink_activate (GstPad * sinkpad, GstObject * parent)
goto activate_push;
GST_DEBUG_OBJECT (sinkpad, "activating pull");
- return gst_pad_activate_pull (sinkpad, TRUE);
+ return gst_pad_activate_mode (sinkpad, GST_PAD_MODE_PULL, TRUE);
activate_push:
{
GST_DEBUG_OBJECT (sinkpad, "activating push");
- return gst_pad_activate_push (sinkpad, TRUE);
+ return gst_pad_activate_mode (sinkpad, GST_PAD_MODE_PUSH, TRUE);
}
}
-/* this function gets called when we activate ourselves in push mode.
- * We cannot seek (ourselves) in the stream */
static gboolean
-gst_ogg_demux_sink_activate_push (GstPad * sinkpad, GstObject * parent,
- gboolean active)
-{
- GstOggDemux *ogg;
-
- ogg = GST_OGG_DEMUX (parent);
-
- ogg->pullmode = FALSE;
- ogg->resync = FALSE;
-
- return TRUE;
-}
-
-/* this function gets called when we activate ourselves in pull mode.
- * We can perform random access to the resource and we start a task
- * to start reading */
-static gboolean
-gst_ogg_demux_sink_activate_pull (GstPad * sinkpad, GstObject * parent,
- gboolean active)
+gst_ogg_demux_sink_activate_mode (GstPad * sinkpad, GstObject * parent,
+ GstPadMode mode, gboolean active)
{
+ gboolean res;
GstOggDemux *ogg;
ogg = GST_OGG_DEMUX (parent);
- if (active) {
- ogg->need_chains = TRUE;
- ogg->pullmode = TRUE;
+ switch (mode) {
+ case GST_PAD_MODE_PUSH:
+ ogg->pullmode = FALSE;
+ ogg->resync = FALSE;
+ res = TRUE;
+ break;
+ case GST_PAD_MODE_PULL:
+ if (active) {
+ ogg->need_chains = TRUE;
+ ogg->pullmode = TRUE;
- return gst_pad_start_task (sinkpad, (GstTaskFunction) gst_ogg_demux_loop,
- sinkpad);
- } else {
- return gst_pad_stop_task (sinkpad);
+ res = gst_pad_start_task (sinkpad, (GstTaskFunction) gst_ogg_demux_loop,
+ sinkpad);
+ } else {
+ res = gst_pad_stop_task (sinkpad);
+ }
+ break;
+ default:
+ res = FALSE;
+ break;
}
+ return res;
}
static GstStateChangeReturn
diff --git a/gst-libs/gst/audio/gstaudioencoder.c b/gst-libs/gst/audio/gstaudioencoder.c
index fe5619b39..72061d4ca 100644
--- a/gst-libs/gst/audio/gstaudioencoder.c
+++ b/gst-libs/gst/audio/gstaudioencoder.c
@@ -293,8 +293,8 @@ static void gst_audio_encoder_set_property (GObject * object,
static void gst_audio_encoder_get_property (GObject * object,
guint prop_id, GValue * value, GParamSpec * pspec);
-static gboolean gst_audio_encoder_sink_activate_push (GstPad * pad,
- GstObject * parent, gboolean active);
+static gboolean gst_audio_encoder_sink_activate_mode (GstPad * pad,
+ GstObject * parent, GstPadMode mode, gboolean active);
static GstCaps *gst_audio_encoder_getcaps_default (GstAudioEncoder * enc,
GstCaps * filter);
@@ -370,8 +370,8 @@ gst_audio_encoder_init (GstAudioEncoder * enc, GstAudioEncoderClass * bclass)
GST_DEBUG_FUNCPTR (gst_audio_encoder_sink_query));
gst_pad_set_chain_function (enc->sinkpad,
GST_DEBUG_FUNCPTR (gst_audio_encoder_chain));
- gst_pad_set_activatepush_function (enc->sinkpad,
- GST_DEBUG_FUNCPTR (gst_audio_encoder_sink_activate_push));
+ gst_pad_set_activatemode_function (enc->sinkpad,
+ GST_DEBUG_FUNCPTR (gst_audio_encoder_sink_activate_mode));
gst_element_add_pad (GST_ELEMENT (enc), enc->sinkpad);
GST_DEBUG_OBJECT (enc, "sinkpad created");
@@ -1701,8 +1701,8 @@ gst_audio_encoder_activate (GstAudioEncoder * enc, gboolean active)
static gboolean
-gst_audio_encoder_sink_activate_push (GstPad * pad, GstObject * parent,
- gboolean active)
+gst_audio_encoder_sink_activate_mode (GstPad * pad, GstObject * parent,
+ GstPadMode mode, gboolean active)
{
gboolean result = TRUE;
GstAudioEncoder *enc;
diff --git a/gst-libs/gst/tag/gsttagdemux.c b/gst-libs/gst/tag/gsttagdemux.c
index c84ef325b..04e9c463a 100644
--- a/gst-libs/gst/tag/gsttagdemux.c
+++ b/gst-libs/gst/tag/gsttagdemux.c
@@ -139,8 +139,8 @@ static GstFlowReturn gst_tag_demux_chain (GstPad * pad, GstObject * parent,
static gboolean gst_tag_demux_sink_event (GstPad * pad, GstObject * parent,
GstEvent * event);
-static gboolean gst_tag_demux_src_activate_pull (GstPad * pad,
- GstObject * parent, gboolean active);
+static gboolean gst_tag_demux_src_activate_mode (GstPad * pad,
+ GstObject * parent, GstPadMode mode, gboolean active);
static GstFlowReturn gst_tag_demux_read_range (GstTagDemux * tagdemux,
GstObject * parent, guint64 offset, guint length, GstBuffer ** buffer);
@@ -311,8 +311,8 @@ gst_tag_demux_init (GstTagDemux * demux, GstTagDemuxClass * gclass)
GST_DEBUG_FUNCPTR (gst_tag_demux_pad_query));
gst_pad_set_event_function (demux->priv->srcpad,
GST_DEBUG_FUNCPTR (gst_tag_demux_srcpad_event));
- gst_pad_set_activatepull_function (demux->priv->srcpad,
- GST_DEBUG_FUNCPTR (gst_tag_demux_src_activate_pull));
+ gst_pad_set_activatemode_function (demux->priv->srcpad,
+ GST_DEBUG_FUNCPTR (gst_tag_demux_src_activate_mode));
gst_pad_set_getrange_function (demux->priv->srcpad,
GST_DEBUG_FUNCPTR (gst_tag_demux_src_getrange));
gst_pad_use_fixed_caps (demux->priv->srcpad);
@@ -1129,7 +1129,7 @@ gst_tag_demux_sink_activate (GstPad * sinkpad, GstObject * parent)
if (!pull_mode)
goto activate_push;
- if (!gst_pad_activate_pull (sinkpad, TRUE))
+ if (!gst_pad_activate_mode (sinkpad, GST_PAD_MODE_PULL, TRUE))
goto activate_push;
/* Look for tags at start and end of file */
@@ -1185,7 +1185,7 @@ gst_tag_demux_sink_activate (GstPad * sinkpad, GstObject * parent)
"probability of %u", caps, probability);
/* 4 - Deactivate pull mode */
- if (!gst_pad_activate_pull (sinkpad, FALSE)) {
+ if (!gst_pad_activate_mode (sinkpad, GST_PAD_MODE_PULL, FALSE)) {
if (caps)
gst_caps_unref (caps);
GST_DEBUG_OBJECT (demux, "Could not deactivate sinkpad after reading tags");
@@ -1210,8 +1210,8 @@ gst_tag_demux_sink_activate (GstPad * sinkpad, GstObject * parent)
* done, otherwise switch to push */
ret = TRUE;
if (!gst_pad_is_active (sinkpad)) {
- ret = gst_pad_activate_push (demux->priv->srcpad, TRUE);
- ret &= gst_pad_activate_push (sinkpad, TRUE);
+ ret = gst_pad_activate_mode (demux->priv->srcpad, GST_PAD_MODE_PUSH, TRUE);
+ ret &= gst_pad_activate_mode (sinkpad, GST_PAD_MODE_PUSH, TRUE);
}
done_activate:
@@ -1226,17 +1226,25 @@ activate_push:
GST_DEBUG_OBJECT (demux, "No pull mode. Changing to push, but won't be "
"able to read end tags");
demux->priv->state = GST_TAG_DEMUX_READ_START_TAG;
- return gst_pad_activate_push (sinkpad, TRUE);
+ return gst_pad_activate_mode (sinkpad, GST_PAD_MODE_PUSH, TRUE);
}
}
static gboolean
-gst_tag_demux_src_activate_pull (GstPad * pad, GstObject * parent,
- gboolean active)
+gst_tag_demux_src_activate_mode (GstPad * pad, GstObject * parent,
+ GstPadMode mode, gboolean active)
{
+ gboolean res = TRUE;
GstTagDemux *demux = GST_TAG_DEMUX (parent);
- return gst_pad_activate_pull (demux->priv->sinkpad, active);
+ switch (mode) {
+ case GST_PAD_MODE_PULL:
+ res = gst_pad_activate_mode (demux->priv->sinkpad, mode, active);
+ break;
+ default:
+ break;
+ }
+ return res;
}
static GstFlowReturn