shout2send: Add 'public' property
Adds a property to set 'public' flag on libshout, making
the stream listed on the server's stream directory.
Fixes #605269
diff --git a/ext/shout2/gstshout2.c b/ext/shout2/gstshout2.c
index 3385db3..b20278d 100644
--- a/ext/shout2/gstshout2.c
+++ b/ext/shout2/gstshout2.c
@@ -68,6 +68,7 @@
#define DEFAULT_PORT 8000
#define DEFAULT_PASSWORD "hackme"
#define DEFAULT_USERNAME "source"
+#define DEFAULT_PUBLIC FALSE
#define DEFAULT_STREAMNAME ""
#define DEFAULT_DESCRIPTION ""
#define DEFAULT_GENRE ""
@@ -204,6 +205,11 @@
G_PARAM_READWRITE));
/* metadata */
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PUBLIC,
+ g_param_spec_boolean ("public", "public",
+ "If the stream should be listed on the server's stream directory",
+ DEFAULT_PUBLIC, G_PARAM_READWRITE));
+
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_STREAMNAME,
g_param_spec_string ("streamname", "streamname", "name of the stream",
DEFAULT_STREAMNAME, G_PARAM_READWRITE));
@@ -266,6 +272,7 @@
shout2send->mount = g_strdup (DEFAULT_MOUNT);
shout2send->url = g_strdup (DEFAULT_URL);
shout2send->protocol = DEFAULT_PROTOCOL;
+ shout2send->ispublic = DEFAULT_PUBLIC;
shout2send->tags = gst_tag_list_new ();
shout2send->conn = NULL;
@@ -479,6 +486,12 @@
if (shout_set_password (sink->conn, sink->password) != SHOUTERR_SUCCESS)
goto set_failed;
+ cur_prop = "public";
+ GST_DEBUG_OBJECT (sink, "setting %s: %u", cur_prop, sink->ispublic);
+ if (shout_set_public (sink->conn,
+ (sink->ispublic ? 1 : 0)) != SHOUTERR_SUCCESS)
+ goto set_failed;
+
cur_prop = "streamname";
GST_DEBUG_OBJECT (sink, "setting %s: %s", cur_prop, sink->streamname);
if (shout_set_name (sink->conn, sink->streamname) != SHOUTERR_SUCCESS)
@@ -693,6 +706,9 @@
g_free (shout2send->username);
shout2send->username = g_strdup (g_value_get_string (value));
break;
+ case ARG_PUBLIC:
+ shout2send->ispublic = g_value_get_boolean (value);
+ break;
case ARG_STREAMNAME: /* Name of the stream */
if (shout2send->streamname)
g_free (shout2send->streamname);
@@ -748,6 +764,9 @@
case ARG_USERNAME:
g_value_set_string (value, shout2send->username);
break;
+ case ARG_PUBLIC:
+ g_value_set_boolean (value, shout2send->ispublic);
+ break;
case ARG_STREAMNAME: /* Name of the stream */
g_value_set_string (value, shout2send->streamname);
break;
diff --git a/ext/shout2/gstshout2.h b/ext/shout2/gstshout2.h
index 6f97c77..1e3cd5b 100644
--- a/ext/shout2/gstshout2.h
+++ b/ext/shout2/gstshout2.h
@@ -56,6 +56,7 @@
gchar *mount;
gchar *url;
gboolean connected;
+ gboolean ispublic;
gchar *songmetadata;
gchar *songartist;
gchar *songtitle;