summaryrefslogtreecommitdiff
path: root/ext/shout2
diff options
context:
space:
mode:
authorPhilippe Valembois <lephilousophe@users.sf.net>2006-04-17 19:57:10 +0000
committerTim-Philipp Müller <tim@centricular.net>2006-04-17 19:57:10 +0000
commit52563ea213aa5f1b59595450ac59146a1a45dea3 (patch)
tree68f3d7e7c020704ce8288b827a73c099e6119f62 /ext/shout2
parent3c4e9ffec175e574295208aa47b3c52b7b458a3d (diff)
downloadgstreamer-plugins-good-52563ea213aa5f1b59595450ac59146a1a45dea3.tar.gz
ext/shout2/gstshout2.*: Handle tags being received before the connection to the server is established properly (see #...
Original commit message from CVS: Patch by: Philippe Valembois * ext/shout2/gstshout2.c: (gst_shout2send_init), (gst_shout2send_set_metadata), (gst_shout2send_event), (gst_shout2send_render), (gst_shout2send_change_state): * ext/shout2/gstshout2.h: Handle tags being received before the connection to the server is established properly (see #338636).
Diffstat (limited to 'ext/shout2')
-rw-r--r--ext/shout2/gstshout2.c32
-rw-r--r--ext/shout2/gstshout2.h1
2 files changed, 22 insertions, 11 deletions
diff --git a/ext/shout2/gstshout2.c b/ext/shout2/gstshout2.c
index 2fc3bdd41..df0865f6f 100644
--- a/ext/shout2/gstshout2.c
+++ b/ext/shout2/gstshout2.c
@@ -235,7 +235,7 @@ gst_shout2send_init (GstShout2send * shout2send)
shout2send->audio_format = SHOUT_FORMAT_VORBIS;
shout2send->sync = FALSE;
shout2send->started = FALSE;
-
+ shout2send->songmetadata = NULL;
}
static void
@@ -281,10 +281,10 @@ set_shout_metadata (const GstTagList * list, const gchar * tag,
GST_DEBUG ("shout metadata is now: %s", *shout_metadata);
}
+#if 0
static void
gst_shout2send_set_metadata (GstShout2send * shout2send)
{
-#if 0
const GstTagList *user_tags;
GstTagList *copy;
char *tempmetadata;
@@ -311,16 +311,14 @@ gst_shout2send_set_metadata (GstShout2send * shout2send)
}
gst_tag_list_free (copy);
-#endif
}
+#endif
static gboolean
gst_shout2send_event (GstBaseSink * sink, GstEvent * event)
{
GstShout2send *shout2send;
- shout_metadata_t *pmetadata;
- char *tempmetadata;
shout2send = GST_SHOUT2SEND (sink);
@@ -337,13 +335,14 @@ gst_shout2send_event (GstBaseSink * sink, GstEvent * event)
list,
gst_tag_setter_get_tag_merge_mode (GST_TAG_SETTER (shout2send)));
/* lets get the artist and song tags */
- tempmetadata = NULL;
gst_tag_list_foreach ((GstTagList *) shout2send->tags,
- set_shout_metadata, (gpointer) & tempmetadata);
- if (tempmetadata) {
- GST_DEBUG ("shout metadata now: %s", tempmetadata);
+ set_shout_metadata, &shout2send->songmetadata);
+ if (shout2send->songmetadata) {
+ shout_metadata_t *pmetadata;
+
+ GST_DEBUG ("shout metadata now: %s", shout2send->songmetadata);
pmetadata = shout_metadata_new ();
- shout_metadata_add (pmetadata, "song", tempmetadata);
+ shout_metadata_add (pmetadata, "song", shout2send->songmetadata);
shout_set_metadata (shout2send->conn, pmetadata);
shout_metadata_free (pmetadata);
}
@@ -380,7 +379,16 @@ gst_shout2send_render (GstBaseSink * sink, GstBuffer * buf)
if (shout_open (shout2send->conn) == SHOUTERR_SUCCESS) {
g_print ("connected to server...\n");
/* lets set metadata */
- gst_shout2send_set_metadata (shout2send);
+ if (shout2send->songmetadata) {
+ shout_metadata_t *pmetadata;
+
+ GST_DEBUG ("shout metadata now: %s", shout2send->songmetadata);
+ pmetadata = shout_metadata_new ();
+ shout_metadata_add (pmetadata, "song", shout2send->songmetadata);
+ shout_set_metadata (shout2send->conn, pmetadata);
+ shout_metadata_free (pmetadata);
+ }
+
shout2send->started = TRUE;
} else {
@@ -687,6 +695,8 @@ gst_shout2send_change_state (GstElement * element, GstStateChange transition)
shout_close (shout2send->conn);
shout_free (shout2send->conn);
shout2send->started = FALSE;
+ g_free (shout2send->songmetadata);
+ shout2send->songmetadata = NULL;
}
break;
case GST_STATE_CHANGE_READY_TO_NULL:
diff --git a/ext/shout2/gstshout2.h b/ext/shout2/gstshout2.h
index 3e2fb650e..665622093 100644
--- a/ext/shout2/gstshout2.h
+++ b/ext/shout2/gstshout2.h
@@ -56,6 +56,7 @@ struct _GstShout2send {
gchar *url;
gboolean sync;
gboolean started;
+ gchar *songmetadata;
guint16 audio_format;