summaryrefslogtreecommitdiffstats
path: root/gst-libs
diff options
context:
space:
mode:
Diffstat (limited to 'gst-libs')
-rw-r--r--gst-libs/gst/Makefile.am3
-rw-r--r--gst-libs/gst/audio/gstaudiofilter.c39
-rw-r--r--gst-libs/gst/audio/testchannels.c2
-rw-r--r--gst-libs/gst/gconf/gconf.c25
-rw-r--r--gst-libs/gst/media-info/media-info-priv.c21
-rw-r--r--gst-libs/gst/media-info/media-info.c17
-rw-r--r--gst-libs/gst/riff/riff-read.c13
7 files changed, 71 insertions, 49 deletions
diff --git a/gst-libs/gst/Makefile.am b/gst-libs/gst/Makefile.am
index ac8f5952..ec5cc915 100644
--- a/gst-libs/gst/Makefile.am
+++ b/gst-libs/gst/Makefile.am
@@ -27,8 +27,7 @@ SUBDIRS = \
video \
xoverlay \
$(X_DIR) \
- . \
- play
+ .
DIST_SUBDIRS = \
audio \
diff --git a/gst-libs/gst/audio/gstaudiofilter.c b/gst-libs/gst/audio/gstaudiofilter.c
index 70ae6bf9..c5ba9e35 100644
--- a/gst-libs/gst/audio/gstaudiofilter.c
+++ b/gst-libs/gst/audio/gstaudiofilter.c
@@ -51,7 +51,7 @@ static void gst_audiofilter_set_property (GObject * object, guint prop_id,
static void gst_audiofilter_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
-static void gst_audiofilter_chain (GstPad * pad, GstData * _data);
+static GstFlowReturn gst_audiofilter_chain (GstPad * pad, GstBuffer * buffer);
GstCaps *gst_audiofilter_class_get_capslist (GstAudiofilterClass * klass);
static GstElementClass *parent_class = NULL;
@@ -113,18 +113,20 @@ gst_audiofilter_class_init (gpointer g_class, gpointer class_data)
}
static GstPadLinkReturn
-gst_audiofilter_link (GstPad * pad, const GstCaps * caps)
+gst_audiofilter_link (GstPad * pad, GstPad * peer)
{
GstAudiofilter *audiofilter;
- GstPadLinkReturn ret;
- GstPadLinkReturn link_ret;
- GstStructure *structure;
+
+ //GstPadLinkReturn ret;
+ //GstPadLinkReturn link_ret;
+ //GstStructure *structure;
GstAudiofilterClass *audiofilter_class;
GST_DEBUG ("gst_audiofilter_link");
audiofilter = GST_AUDIOFILTER (gst_pad_get_parent (pad));
audiofilter_class = GST_AUDIOFILTER_CLASS (G_OBJECT_GET_CLASS (audiofilter));
+#if 0
ret = GST_PAD_LINK_DELAYED; /* intialise with dummy value */
if (pad == audiofilter->srcpad) {
link_ret = gst_pad_try_set_caps (audiofilter->sinkpad, caps);
@@ -158,6 +160,7 @@ gst_audiofilter_link (GstPad * pad, const GstCaps * caps)
if (audiofilter_class->setup)
(audiofilter_class->setup) (audiofilter);
+#endif
return GST_PAD_LINK_OK;
}
@@ -177,7 +180,7 @@ gst_audiofilter_init (GTypeInstance * instance, gpointer g_class)
gst_element_add_pad (GST_ELEMENT (audiofilter), audiofilter->sinkpad);
gst_pad_set_chain_function (audiofilter->sinkpad, gst_audiofilter_chain);
gst_pad_set_link_function (audiofilter->sinkpad, gst_audiofilter_link);
- gst_pad_set_getcaps_function (audiofilter->sinkpad, gst_pad_proxy_getcaps);
+ //gst_pad_set_getcaps_function (audiofilter->sinkpad, gst_pad_proxy_getcaps);
pad_template =
gst_element_class_get_pad_template (GST_ELEMENT_CLASS (g_class), "src");
@@ -185,24 +188,24 @@ gst_audiofilter_init (GTypeInstance * instance, gpointer g_class)
audiofilter->srcpad = gst_pad_new_from_template (pad_template, "src");
gst_element_add_pad (GST_ELEMENT (audiofilter), audiofilter->srcpad);
gst_pad_set_link_function (audiofilter->srcpad, gst_audiofilter_link);
- gst_pad_set_getcaps_function (audiofilter->srcpad, gst_pad_proxy_getcaps);
+ //gst_pad_set_getcaps_function (audiofilter->srcpad, gst_pad_proxy_getcaps);
audiofilter->inited = FALSE;
}
-static void
-gst_audiofilter_chain (GstPad * pad, GstData * data)
+static GstFlowReturn
+gst_audiofilter_chain (GstPad * pad, GstBuffer * buffer)
{
- GstBuffer *inbuf = GST_BUFFER (data);
+ GstBuffer *inbuf = GST_BUFFER (buffer);
GstAudiofilter *audiofilter;
GstBuffer *outbuf;
GstAudiofilterClass *audiofilter_class;
GST_DEBUG ("gst_audiofilter_chain");
- g_return_if_fail (pad != NULL);
- g_return_if_fail (GST_IS_PAD (pad));
- g_return_if_fail (inbuf != NULL);
+ g_return_val_if_fail (pad != NULL, GST_FLOW_ERROR);
+ g_return_val_if_fail (GST_IS_PAD (pad), GST_FLOW_ERROR);
+ g_return_val_if_fail (inbuf != NULL, GST_FLOW_ERROR);
audiofilter = GST_AUDIOFILTER (gst_pad_get_parent (pad));
//g_return_if_fail (audiofilter->inited);
@@ -212,14 +215,14 @@ gst_audiofilter_chain (GstPad * pad, GstData * data)
GST_BUFFER_SIZE (inbuf), GST_OBJECT_NAME (audiofilter));
if (audiofilter->passthru) {
- gst_pad_push (audiofilter->srcpad, data);
- return;
+ gst_pad_push (audiofilter->srcpad, buffer);
+ return GST_FLOW_OK;
}
audiofilter->size = GST_BUFFER_SIZE (inbuf);
audiofilter->n_samples = audiofilter->size / audiofilter->bytes_per_sample;
- if (gst_data_is_writable (data)) {
+ if (gst_data_is_writable (GST_DATA (buffer))) {
if (audiofilter_class->filter_inplace) {
(audiofilter_class->filter_inplace) (audiofilter, inbuf);
outbuf = inbuf;
@@ -246,7 +249,9 @@ gst_audiofilter_chain (GstPad * pad, GstData * data)
gst_buffer_unref (inbuf);
}
- gst_pad_push (audiofilter->srcpad, GST_DATA (outbuf));
+ gst_pad_push (audiofilter->srcpad, outbuf);
+
+ return GST_FLOW_OK;
}
static void
diff --git a/gst-libs/gst/audio/testchannels.c b/gst-libs/gst/audio/testchannels.c
index b886c820..3f226f31 100644
--- a/gst-libs/gst/audio/testchannels.c
+++ b/gst-libs/gst/audio/testchannels.c
@@ -49,7 +49,7 @@ main (gint argc, gchar * argv[])
str = gst_caps_to_string (caps);
g_print ("Test caps #2: %s\n", str);
g_free (str);
- gst_caps_free (caps);
+ gst_caps_unref (caps);
return 0;
}
diff --git a/gst-libs/gst/gconf/gconf.c b/gst-libs/gst/gconf/gconf.c
index 00b35a22..b3c56681 100644
--- a/gst-libs/gst/gconf/gconf.c
+++ b/gst-libs/gst/gconf/gconf.c
@@ -55,25 +55,34 @@ gst_bin_find_unconnected_pad (GstBin * bin, GstPadDirection direction)
const GList *pads = NULL;
GstElement *element = NULL;
- elements = (GList *) gst_bin_get_list (bin);
+ GST_LOCK (bin);
+ elements = bin->children;
/* traverse all elements looking for unconnected pads */
while (elements && pad == NULL) {
element = GST_ELEMENT (elements->data);
- pads = gst_element_get_pad_list (element);
+ GST_LOCK (element);
+ pads = element->pads;
while (pads) {
+ GstPad *testpad = GST_PAD (pads->data);
+
/* check if the direction matches */
- if (GST_PAD_DIRECTION (GST_PAD (pads->data)) == direction) {
- if (GST_PAD_PEER (GST_PAD (pads->data)) == NULL) {
+ if (GST_PAD_DIRECTION (testpad) == direction) {
+ GST_LOCK (pad);
+ if (GST_PAD_PEER (testpad) == NULL) {
+ GST_UNLOCK (pad);
/* found it ! */
- pad = GST_PAD (pads->data);
+ pad = testpad;
+ break;
}
+ GST_UNLOCK (pad);
}
- if (pad)
- break; /* found one already */
pads = g_list_next (pads);
}
+ GST_UNLOCK (element);
elements = g_list_next (elements);
}
+ GST_UNLOCK (bin);
+
return pad;
}
@@ -147,7 +156,7 @@ gst_gconf_render_bin_from_description (const gchar * description)
/* parse the pipeline to a bin */
desc = g_strdup_printf ("bin.( %s )", description);
- bin = GST_ELEMENT (gst_parse_launch (desc, &error));
+ //bin = GST_ELEMENT (gst_parse_launch (desc, &error));
g_free (desc);
if (error) {
g_print ("DEBUG: gstgconf: error parsing pipeline %s\n%s\n",
diff --git a/gst-libs/gst/media-info/media-info-priv.c b/gst-libs/gst/media-info/media-info-priv.c
index 27fadde5..37f29a84 100644
--- a/gst-libs/gst/media-info/media-info-priv.c
+++ b/gst-libs/gst/media-info/media-info-priv.c
@@ -273,7 +273,7 @@ G_STMT_START { \
#define CAPS_RESET(target) \
G_STMT_START { \
- if (target) gst_caps_free (target); \
+ if (target) gst_caps_unref (target); \
target = NULL; \
} G_STMT_END
CAPS_RESET (priv->type);
@@ -509,7 +509,9 @@ gmip_find_type (GstMediaInfoPriv * priv, GError ** error)
if (!gmip_find_type_pre (priv, error))
return FALSE;
GST_DEBUG ("gmip_find_type: iterating");
- while ((priv->type == NULL) && gst_bin_iterate (GST_BIN (priv->pipeline)))
+ while ((priv->type == NULL)
+ // && gst_bin_iterate (GST_BIN (priv->pipeline))
+ )
GMI_DEBUG ("+");
GMI_DEBUG ("\n");
return gmip_find_type_post (priv);
@@ -616,7 +618,7 @@ gmip_find_stream (GstMediaInfoPriv * priv)
/* iterate until caps are found */
/* FIXME: this should be done through the plugin sending some signal
* that it is ready for queries */
- while (gst_bin_iterate (GST_BIN (priv->pipeline)) && priv->format == NULL);
+ //while (gst_bin_iterate (GST_BIN (priv->pipeline)) && priv->format == NULL);
if (gst_element_set_state (priv->pipeline, GST_STATE_PAUSED)
== GST_STATE_FAILURE)
g_warning ("Couldn't set to paused");
@@ -659,7 +661,9 @@ gmip_find_track_metadata (GstMediaInfoPriv * priv)
{
gmip_find_track_metadata_pre (priv);
GST_DEBUG ("gmip_find_metadata: iterating");
- while ((priv->metadata == NULL) && gst_bin_iterate (GST_BIN (priv->pipeline)))
+ while ((priv->metadata == NULL)
+ //&& gst_bin_iterate (GST_BIN (priv->pipeline))
+ )
GMI_DEBUG ("+");
GMI_DEBUG ("\n");
gmip_find_track_metadata_post (priv);
@@ -729,8 +733,9 @@ gmip_find_track_streaminfo (GstMediaInfoPriv * priv)
{
gmip_find_track_streaminfo_pre (priv);
GST_DEBUG ("DEBUG: gmip_find_streaminfo: iterating");
- while ((priv->streaminfo == NULL) &&
- gst_bin_iterate (GST_BIN (priv->pipeline)))
+ while ((priv->streaminfo == NULL)
+ // && gst_bin_iterate (GST_BIN (priv->pipeline))
+ )
GMI_DEBUG ("+");
GMI_DEBUG ("\n");
gmip_find_track_streaminfo_post (priv);
@@ -766,7 +771,9 @@ gmip_find_track_format (GstMediaInfoPriv * priv)
{
gmip_find_track_format_pre (priv);
GST_DEBUG ("DEBUG: gmip_find_format: iterating");
- while ((priv->format == NULL) && gst_bin_iterate (GST_BIN (priv->pipeline)))
+ while ((priv->format == NULL)
+ //&& gst_bin_iterate (GST_BIN (priv->pipeline))
+ )
GMI_DEBUG ("+");
GMI_DEBUG ("\n");
gmip_find_track_format_post (priv);
diff --git a/gst-libs/gst/media-info/media-info.c b/gst-libs/gst/media-info/media-info.c
index 16a66250..8e1ecee4 100644
--- a/gst-libs/gst/media-info/media-info.c
+++ b/gst-libs/gst/media-info/media-info.c
@@ -266,7 +266,8 @@ gst_media_info_read_idler (GstMediaInfo * info, GstMediaInfoStream ** streamp,
gchar *mime;
GST_LOG ("STATE_TYPEFIND");
- if ((priv->type == NULL) && gst_bin_iterate (GST_BIN (priv->pipeline))) {
+ //if ((priv->type == NULL) && gst_bin_iterate (GST_BIN (priv->pipeline))) {
+ if ((priv->type == NULL)) {
GST_DEBUG ("iterating while in STATE_TYPEFIND");
GMI_DEBUG ("?");
return TRUE;
@@ -298,7 +299,8 @@ gst_media_info_read_idler (GstMediaInfo * info, GstMediaInfoStream ** streamp,
case GST_MEDIA_INFO_STATE_STREAM:
{
GST_LOG ("STATE_STREAM");
- if ((priv->format == NULL) && gst_bin_iterate (GST_BIN (priv->pipeline))) {
+ //if ((priv->format == NULL) && gst_bin_iterate (GST_BIN (priv->pipeline))) {
+ if ((priv->format == NULL)) {
GMI_DEBUG ("?");
return TRUE;
}
@@ -317,7 +319,7 @@ gst_media_info_read_idler (GstMediaInfo * info, GstMediaInfoStream ** streamp,
case GST_MEDIA_INFO_STATE_METADATA:
{
if ((priv->metadata == NULL) &&
- gst_bin_iterate (GST_BIN (priv->pipeline)) &&
+ //gst_bin_iterate (GST_BIN (priv->pipeline)) &&
priv->metadata_iters < MAX_METADATA_ITERS) {
GMI_DEBUG ("?");
priv->metadata_iters++;
@@ -338,8 +340,9 @@ gst_media_info_read_idler (GstMediaInfo * info, GstMediaInfoStream ** streamp,
}
case GST_MEDIA_INFO_STATE_STREAMINFO:
{
- if ((priv->streaminfo == NULL) &&
- gst_bin_iterate (GST_BIN (priv->pipeline))) {
+ if ((priv->streaminfo == NULL)
+ //&& gst_bin_iterate (GST_BIN (priv->pipeline))
+ ) {
GMI_DEBUG ("?");
return TRUE;
}
@@ -355,7 +358,9 @@ gst_media_info_read_idler (GstMediaInfo * info, GstMediaInfoStream ** streamp,
}
case GST_MEDIA_INFO_STATE_FORMAT:
{
- if ((priv->format == NULL) && gst_bin_iterate (GST_BIN (priv->pipeline))) {
+ if ((priv->format == NULL)
+ // && gst_bin_iterate (GST_BIN (priv->pipeline))
+ ) {
GMI_DEBUG ("?");
return TRUE;
}
diff --git a/gst-libs/gst/riff/riff-read.c b/gst-libs/gst/riff/riff-read.c
index d5394711..7c7e1d09 100644
--- a/gst-libs/gst/riff/riff-read.c
+++ b/gst-libs/gst/riff/riff-read.c
@@ -174,10 +174,6 @@ gst_riff_read_use_event (GstRiffRead * riff, GstEvent * event)
gst_pad_event_default (riff->sinkpad, event);
return FALSE;
- case GST_EVENT_INTERRUPT:
- gst_event_unref (event);
- return FALSE;
-
case GST_EVENT_DISCONTINUOUS:
GST_WARNING_OBJECT (riff, "Unexpected discont - might lose sync");
gst_event_unref (event);
@@ -941,15 +937,16 @@ gst_riff_read_info (GstRiffRead * riff)
const GList *padlist;
/* let the world know about this wonderful thing */
- for (padlist = gst_element_get_pad_list (element);
- padlist != NULL; padlist = padlist->next) {
+ /* FIXME, MT unsafe */
+ for (padlist = element->pads; padlist != NULL; padlist = padlist->next) {
if (GST_PAD_IS_SRC (padlist->data) && GST_PAD_IS_USABLE (padlist->data)) {
gst_event_ref (event);
- gst_pad_push (GST_PAD (padlist->data), GST_DATA (event));
+ gst_pad_push_event (GST_PAD (padlist->data), event);
}
}
- gst_element_found_tags (element, taglist);
+ gst_element_post_message (GST_ELEMENT (element),
+ gst_message_new_tag (GST_OBJECT (element), taglist));
gst_event_unref (event);
} else {