summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--gst/apetag/gsttagdemux.c18
-rw-r--r--gst/id3demux/gstid3demux.c26
3 files changed, 17 insertions, 33 deletions
diff --git a/ChangeLog b/ChangeLog
index db10ddf7..8b2eeeda 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-06-11 Tim-Philipp Müller <tim at centricular dot net>
+
+ * gst/apetag/gsttagdemux.c: (gst_tag_demux_get_upstream_size):
+ * gst/id3demux/gstid3demux.c: (id3demux_get_upstream_size):
+ Use gst_pad_query_peer_duration() utility function here.
+
2006-06-11 Thomas Vander Stichele <thomas at apestaart dot org>
* autogen.sh:
diff --git a/gst/apetag/gsttagdemux.c b/gst/apetag/gsttagdemux.c
index 6e56b14a..ef9dc8c5 100644
--- a/gst/apetag/gsttagdemux.c
+++ b/gst/apetag/gsttagdemux.c
@@ -665,27 +665,21 @@ gst_tag_demux_sink_event (GstPad * pad, GstEvent * event)
static gboolean
gst_tag_demux_get_upstream_size (GstTagDemux * tagdemux)
{
- GstPad *peer = NULL;
GstFormat format;
- gint64 result;
- gboolean res = FALSE;
+ gint64 len;
/* Short-cut if we already queried upstream */
if (tagdemux->priv->upstream_size > 0)
return TRUE;
- if ((peer = gst_pad_get_peer (tagdemux->priv->sinkpad)) == NULL)
- return FALSE;
-
format = GST_FORMAT_BYTES;
- if (gst_pad_query_duration (peer, &format, &result) &&
- format == GST_FORMAT_BYTES && result > 0) {
- tagdemux->priv->upstream_size = result;
- res = TRUE;
+ if (!gst_pad_query_peer_duration (tagdemux->priv->sinkpad, &format, &len) ||
+ len <= 0) {
+ return FALSE;
}
- gst_object_unref (peer);
- return res;
+ tagdemux->priv->upstream_size = len;
+ return TRUE;
}
static gboolean
diff --git a/gst/id3demux/gstid3demux.c b/gst/id3demux/gstid3demux.c
index 40fdf657..e03a1939 100644
--- a/gst/id3demux/gstid3demux.c
+++ b/gst/id3demux/gstid3demux.c
@@ -600,37 +600,21 @@ gst_id3demux_get_property (GObject * object, guint prop_id,
static gboolean
id3demux_get_upstream_size (GstID3Demux * id3demux)
{
- GstQuery *query;
- GstPad *peer = NULL;
GstFormat format;
gint64 result;
- gboolean res = FALSE;
/* Short-cut if we already queried upstream */
if (id3demux->upstream_size > 0)
return TRUE;
- if ((peer = gst_pad_get_peer (id3demux->sinkpad)) == NULL)
+ format = GST_FORMAT_BYTES;
+ if (!gst_pad_query_peer_duration (id3demux->sinkpad, &format, &result) ||
+ result < 0) {
return FALSE;
-
- query = gst_query_new_duration (GST_FORMAT_BYTES);
- gst_query_set_duration (query, GST_FORMAT_BYTES, -1);
-
- if (!gst_pad_query (peer, query))
- goto out;
-
- gst_query_parse_duration (query, &format, &result);
- gst_query_unref (query);
-
- if (format != GST_FORMAT_BYTES || result == -1)
- goto out;
+ }
id3demux->upstream_size = result;
- res = TRUE;
-
-out:
- gst_object_unref (peer);
- return res;
+ return TRUE;
}
static gboolean