mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 01:30:38 +00:00
souphttpsrc: Set caps for audio/L16 content-type
When "Content-Type" header is "audio/L16", we need to set the caps on the outgoing buffers so that downstream elements can have means to detect the stream type and handle it appropriately. Tested with HTTP stream provided by pulse-audio's http module (git master).
This commit is contained in:
parent
cd0e75ac1a
commit
1d6fd4b6dd
1 changed files with 33 additions and 0 deletions
|
@ -744,6 +744,8 @@ gst_soup_http_src_got_headers_cb (SoupMessage * msg, GstSoupHTTPSrc * src)
|
|||
|
||||
guint64 newsize;
|
||||
|
||||
GHashTable *params = NULL;
|
||||
|
||||
GST_DEBUG_OBJECT (src, "got headers");
|
||||
|
||||
if (src->automatic_redirect && SOUP_STATUS_IS_REDIRECTION (msg->status_code)) {
|
||||
|
@ -792,8 +794,39 @@ gst_soup_http_src_got_headers_cb (SoupMessage * msg, GstSoupHTTPSrc * src)
|
|||
src->src_caps = gst_caps_new_simple ("application/x-icy",
|
||||
"metadata-interval", G_TYPE_INT, icy_metaint, NULL);
|
||||
}
|
||||
} else if ((value =
|
||||
soup_message_headers_get_content_type (msg->response_headers,
|
||||
¶ms)) != NULL) {
|
||||
GST_DEBUG_OBJECT (src, "Content-Type: %s", value);
|
||||
if (g_ascii_strcasecmp (value, "audio/L16") == 0) {
|
||||
gint channels = 2;
|
||||
gint rate = 44100;
|
||||
char *param;
|
||||
|
||||
if (src->src_caps)
|
||||
gst_caps_unref (src->src_caps);
|
||||
|
||||
param = g_hash_table_lookup (params, "channels");
|
||||
if (param != NULL)
|
||||
channels = atol (param);
|
||||
|
||||
param = g_hash_table_lookup (params, "rate");
|
||||
if (param != NULL)
|
||||
rate = atol (param);
|
||||
|
||||
src->src_caps = gst_caps_new_simple ("audio/x-raw-int",
|
||||
"channels", G_TYPE_INT, channels,
|
||||
"rate", G_TYPE_INT, rate,
|
||||
"width", G_TYPE_INT, 16,
|
||||
"depth", G_TYPE_INT, 16,
|
||||
"signed", G_TYPE_BOOLEAN, TRUE,
|
||||
"endianness", G_TYPE_INT, G_BIG_ENDIAN, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
if (params != NULL)
|
||||
g_hash_table_destroy (params);
|
||||
|
||||
if ((value =
|
||||
soup_message_headers_get (msg->response_headers,
|
||||
"icy-name")) != NULL) {
|
||||
|
|
Loading…
Reference in a new issue