mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-18 14:26:43 +00:00
shout2send: Adding send-title-info and user-agent options
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2420>
This commit is contained in:
parent
e22314a6bd
commit
fedb48c68f
4 changed files with 84 additions and 8 deletions
|
@ -15477,6 +15477,8 @@
|
||||||
"GstShout2send:timeout",
|
"GstShout2send:timeout",
|
||||||
"GstShout2send:url",
|
"GstShout2send:url",
|
||||||
"GstShout2send:username",
|
"GstShout2send:username",
|
||||||
|
"GstShout2send:send-title-info",
|
||||||
|
"GstShout2send:user-agent",
|
||||||
"GstSidClock",
|
"GstSidClock",
|
||||||
"GstSidClock::ntsc",
|
"GstSidClock::ntsc",
|
||||||
"GstSidClock::pal",
|
"GstSidClock::pal",
|
||||||
|
@ -64940,6 +64942,8 @@
|
||||||
"shout2send:timeout",
|
"shout2send:timeout",
|
||||||
"shout2send:url",
|
"shout2send:url",
|
||||||
"shout2send:username",
|
"shout2send:username",
|
||||||
|
"shout2send:send-title-info",
|
||||||
|
"shout2send:user-agent",
|
||||||
"siddec",
|
"siddec",
|
||||||
"siddec:blocksize",
|
"siddec:blocksize",
|
||||||
"siddec:clock",
|
"siddec:clock",
|
||||||
|
|
|
@ -21672,6 +21672,18 @@
|
||||||
"type": "gboolean",
|
"type": "gboolean",
|
||||||
"writable": true
|
"writable": true
|
||||||
},
|
},
|
||||||
|
"send-title-info": {
|
||||||
|
"blurb": "Update stream metadata with song title and artist information",
|
||||||
|
"conditionally-available": false,
|
||||||
|
"construct": false,
|
||||||
|
"construct-only": false,
|
||||||
|
"controllable": false,
|
||||||
|
"default": "true",
|
||||||
|
"mutable": "null",
|
||||||
|
"readable": true,
|
||||||
|
"type": "gboolean",
|
||||||
|
"writable": true
|
||||||
|
},
|
||||||
"streamname": {
|
"streamname": {
|
||||||
"blurb": "name of the stream",
|
"blurb": "name of the stream",
|
||||||
"conditionally-available": false,
|
"conditionally-available": false,
|
||||||
|
@ -21710,6 +21722,18 @@
|
||||||
"type": "gchararray",
|
"type": "gchararray",
|
||||||
"writable": true
|
"writable": true
|
||||||
},
|
},
|
||||||
|
"user-agent": {
|
||||||
|
"blurb": "User agent of the source",
|
||||||
|
"conditionally-available": false,
|
||||||
|
"construct": false,
|
||||||
|
"construct-only": false,
|
||||||
|
"controllable": false,
|
||||||
|
"default": "GStreamer 1.21.0.1",
|
||||||
|
"mutable": "null",
|
||||||
|
"readable": true,
|
||||||
|
"type": "gchararray",
|
||||||
|
"writable": true
|
||||||
|
},
|
||||||
"username": {
|
"username": {
|
||||||
"blurb": "username",
|
"blurb": "username",
|
||||||
"conditionally-available": false,
|
"conditionally-available": false,
|
||||||
|
|
|
@ -72,22 +72,26 @@ enum
|
||||||
ARG_MOUNT, /* mountpoint of stream (icecast only) */
|
ARG_MOUNT, /* mountpoint of stream (icecast only) */
|
||||||
ARG_URL, /* the stream's homepage URL */
|
ARG_URL, /* the stream's homepage URL */
|
||||||
|
|
||||||
ARG_TIMEOUT /* The max amount of time to wait for
|
ARG_TIMEOUT, /* The max amount of time to wait for
|
||||||
network activity */
|
network activity */
|
||||||
|
ARG_SEND_TITLE_INFO, /* If stream song title updates should be made */
|
||||||
|
ARG_USERAGENT /* User-Agent setting */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DEFAULT_IP "127.0.0.1"
|
#define DEFAULT_IP "127.0.0.1"
|
||||||
#define DEFAULT_PORT 8000
|
#define DEFAULT_PORT 8000
|
||||||
#define DEFAULT_PASSWORD "hackme"
|
#define DEFAULT_PASSWORD "hackme"
|
||||||
#define DEFAULT_USERNAME "source"
|
#define DEFAULT_USERNAME "source"
|
||||||
#define DEFAULT_PUBLIC FALSE
|
#define DEFAULT_PUBLIC FALSE
|
||||||
#define DEFAULT_STREAMNAME ""
|
#define DEFAULT_STREAMNAME ""
|
||||||
#define DEFAULT_DESCRIPTION ""
|
#define DEFAULT_DESCRIPTION ""
|
||||||
|
#define DEFAULT_USERAGENT "GStreamer " PACKAGE_VERSION
|
||||||
#define DEFAULT_GENRE ""
|
#define DEFAULT_GENRE ""
|
||||||
#define DEFAULT_MOUNT ""
|
#define DEFAULT_MOUNT ""
|
||||||
#define DEFAULT_URL ""
|
#define DEFAULT_URL ""
|
||||||
#define DEFAULT_PROTOCOL SHOUT2SEND_PROTOCOL_HTTP
|
#define DEFAULT_PROTOCOL SHOUT2SEND_PROTOCOL_HTTP
|
||||||
#define DEFAULT_TIMEOUT 10000
|
#define DEFAULT_TIMEOUT 10000
|
||||||
|
#define DEFAULT_SEND_TITLE_INFO TRUE
|
||||||
|
|
||||||
#ifdef SHOUT_FORMAT_WEBM
|
#ifdef SHOUT_FORMAT_WEBM
|
||||||
#define WEBM_CAPS "; video/webm; audio/webm"
|
#define WEBM_CAPS "; video/webm; audio/webm"
|
||||||
|
@ -219,6 +223,32 @@ gst_shout2send_class_init (GstShout2sendClass * klass)
|
||||||
GST_TYPE_SHOUT_PROTOCOL, DEFAULT_PROTOCOL,
|
GST_TYPE_SHOUT_PROTOCOL, DEFAULT_PROTOCOL,
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GstShout2send:send-title-info
|
||||||
|
*
|
||||||
|
* Update stream metadata with song title and artist information
|
||||||
|
*
|
||||||
|
* Since: 1.22
|
||||||
|
**/
|
||||||
|
|
||||||
|
g_object_class_install_property (G_OBJECT_CLASS (klass),
|
||||||
|
ARG_SEND_TITLE_INFO,
|
||||||
|
g_param_spec_boolean ("send-title-info", "send-title-info",
|
||||||
|
"Update stream metadata with song title and artist information",
|
||||||
|
DEFAULT_SEND_TITLE_INFO, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GstShout2send:user-agent
|
||||||
|
*
|
||||||
|
* User agent of the source
|
||||||
|
*
|
||||||
|
* Since: 1.22
|
||||||
|
**/
|
||||||
|
|
||||||
|
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_USERAGENT,
|
||||||
|
g_param_spec_string ("user-agent", "user-agent",
|
||||||
|
"User agent of the source", DEFAULT_USERAGENT,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
/* icecast only */
|
/* icecast only */
|
||||||
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MOUNT,
|
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MOUNT,
|
||||||
|
@ -296,6 +326,8 @@ gst_shout2send_init (GstShout2send * shout2send)
|
||||||
shout2send->songmetadata = NULL;
|
shout2send->songmetadata = NULL;
|
||||||
shout2send->songartist = NULL;
|
shout2send->songartist = NULL;
|
||||||
shout2send->songtitle = NULL;
|
shout2send->songtitle = NULL;
|
||||||
|
shout2send->send_title_info = DEFAULT_SEND_TITLE_INFO;
|
||||||
|
shout2send->user_agent = g_strdup (DEFAULT_USERAGENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -309,6 +341,7 @@ gst_shout2send_finalize (GstShout2send * shout2send)
|
||||||
g_free (shout2send->genre);
|
g_free (shout2send->genre);
|
||||||
g_free (shout2send->mount);
|
g_free (shout2send->mount);
|
||||||
g_free (shout2send->url);
|
g_free (shout2send->url);
|
||||||
|
g_free (shout2send->user_agent);
|
||||||
|
|
||||||
gst_tag_list_unref (shout2send->tags);
|
gst_tag_list_unref (shout2send->tags);
|
||||||
|
|
||||||
|
@ -358,6 +391,10 @@ set_shout_metadata (const GstTagList * list, const gchar * tag,
|
||||||
if (*shout_metadata != NULL)
|
if (*shout_metadata != NULL)
|
||||||
g_free (*shout_metadata);
|
g_free (*shout_metadata);
|
||||||
|
|
||||||
|
if (!shout2send->send_title_info) {
|
||||||
|
*shout_metadata = NULL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (*song_title && *song_artist) {
|
if (*song_title && *song_artist) {
|
||||||
*shout_metadata = g_strdup_printf ("%s - %s", *song_artist, *song_title);
|
*shout_metadata = g_strdup_printf ("%s - %s", *song_artist, *song_title);
|
||||||
|
@ -461,7 +498,6 @@ gst_shout2send_start (GstBaseSink * basesink)
|
||||||
GstShout2send *sink = GST_SHOUT2SEND (basesink);
|
GstShout2send *sink = GST_SHOUT2SEND (basesink);
|
||||||
const gchar *cur_prop;
|
const gchar *cur_prop;
|
||||||
gshort proto = 3;
|
gshort proto = 3;
|
||||||
gchar *version_string;
|
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (sink, "starting");
|
GST_DEBUG_OBJECT (sink, "starting");
|
||||||
|
|
||||||
|
@ -530,15 +566,12 @@ gst_shout2send_start (GstBaseSink * basesink)
|
||||||
if (shout_set_user (sink->conn, sink->username) != SHOUTERR_SUCCESS)
|
if (shout_set_user (sink->conn, sink->username) != SHOUTERR_SUCCESS)
|
||||||
goto set_failed;
|
goto set_failed;
|
||||||
|
|
||||||
version_string = gst_version_string ();
|
|
||||||
cur_prop = "agent";
|
cur_prop = "agent";
|
||||||
GST_DEBUG_OBJECT (sink, "setting %s: %s", cur_prop, version_string);
|
GST_DEBUG_OBJECT (sink, "setting %s: %s", cur_prop, sink->user_agent);
|
||||||
if (shout_set_agent (sink->conn, version_string) != SHOUTERR_SUCCESS) {
|
if (shout_set_agent (sink->conn, sink->user_agent) != SHOUTERR_SUCCESS) {
|
||||||
g_free (version_string);
|
|
||||||
goto set_failed;
|
goto set_failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free (version_string);
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
/* ERROR */
|
/* ERROR */
|
||||||
|
@ -876,6 +909,13 @@ gst_shout2send_set_property (GObject * object, guint prop_id,
|
||||||
case ARG_TIMEOUT:
|
case ARG_TIMEOUT:
|
||||||
shout2send->timeout = g_value_get_uint (value);
|
shout2send->timeout = g_value_get_uint (value);
|
||||||
break;
|
break;
|
||||||
|
case ARG_SEND_TITLE_INFO:
|
||||||
|
shout2send->send_title_info = g_value_get_boolean (value);
|
||||||
|
break;
|
||||||
|
case ARG_USERAGENT:
|
||||||
|
g_free (shout2send->user_agent);
|
||||||
|
shout2send->user_agent = g_value_dup_string (value);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
@ -927,6 +967,12 @@ gst_shout2send_get_property (GObject * object, guint prop_id,
|
||||||
case ARG_TIMEOUT:
|
case ARG_TIMEOUT:
|
||||||
g_value_set_uint (value, shout2send->timeout);
|
g_value_set_uint (value, shout2send->timeout);
|
||||||
break;
|
break;
|
||||||
|
case ARG_SEND_TITLE_INFO:
|
||||||
|
g_value_set_boolean (value, shout2send->send_title_info);
|
||||||
|
break;
|
||||||
|
case ARG_USERAGENT:
|
||||||
|
g_value_set_string (value, shout2send->user_agent);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -68,6 +68,8 @@ struct _GstShout2send {
|
||||||
gchar *songmetadata;
|
gchar *songmetadata;
|
||||||
gchar *songartist;
|
gchar *songartist;
|
||||||
gchar *songtitle;
|
gchar *songtitle;
|
||||||
|
gboolean send_title_info;
|
||||||
|
gchar *user_agent;
|
||||||
gint format;
|
gint format;
|
||||||
guint timeout;
|
guint timeout;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue