[vlc-devel] [PATCH 3/4] access/http: Add ICY metadata handling
Rémi Denis-Courmont
remi at remlab.net
Wed Nov 1 13:20:18 CET 2017
Le 1 novembre 2017 06:16:35 GMT+02:00, Marvin Scholz <epirat07 at gmail.com> a écrit :
>---
> modules/access/http/access.c | 10 ++++++++++
> modules/access/http/resource.c | 33 +++++++++++++++++++++++++++------
> modules/access/http/resource.h | 12 ++++++++++++
> 3 files changed, 49 insertions(+), 6 deletions(-)
>
>diff --git a/modules/access/http/access.c
>b/modules/access/http/access.c
>index ab72107a04..b9390fdc27 100644
>--- a/modules/access/http/access.c
>+++ b/modules/access/http/access.c
>@@ -227,6 +227,16 @@ static int Open(vlc_object_t *obj)
> goto error;
> }
>
>+ /* ICY data */
>+ int metaint;
>+ const char *icy_name;
>+ const char *icy_genre;
>+
>+ vlc_http_res_get_icy_data(sys->resource, &metaint, &icy_name,
>&icy_genre);
>+ if (metaint > 0)
>+ config_PutInt(access, "icy-metaint", metaint);
>+
>+
> char *redir = vlc_http_res_get_redirect(sys->resource);
> if (redir != NULL)
> {
>diff --git a/modules/access/http/resource.c
>b/modules/access/http/resource.c
>index 4f49a4bff6..4f7d170ec6 100644
>--- a/modules/access/http/resource.c
>+++ b/modules/access/http/resource.c
>@@ -57,6 +57,9 @@ vlc_http_res_req(const struct vlc_http_resource *res,
>void *opaque)
> vlc_http_msg_add_header(req, "Accept-Language", "%s", lang);
> }
>
>+ /* ICY metadata */
>+ vlc_http_msg_add_header(req, "Icy-MetaData", "1");
>+
> /* Authentication */
> if (res->username != NULL && res->password != NULL)
>vlc_http_msg_add_creds_basic(req, false, res->username, res->password);
>@@ -245,6 +248,30 @@ error:
> return -1;
> }
>
>+void vlc_http_res_get_icy_data(struct vlc_http_resource *restrict res,
>+ int *metaint,
>+ const char **icy_name,
>+ const char **icy_genre)
>+{
>+ *metaint = -1;
>+ *icy_name = NULL;
>+ *icy_genre = NULL;
>+
>+ int status = vlc_http_res_get_status(res);
>+ if (status < 0 || (status / 100) != 2)
>+ return;
>+
>+ *icy_name = vlc_http_msg_get_header(res->response, "Icy-Name");
>+ *icy_genre = vlc_http_msg_get_header(res->response, "Icy-Genre");
>+
>+ const char *metaint_str = vlc_http_msg_get_header(res->response,
>"Icy-MetaInt");
>+ if (metaint_str != NULL) {
>+ int metaint_tmp = atoi(metaint_str);
>+ if (metaint_tmp > 0)
>+ *metaint = metaint_tmp;
>+ }
>+}
>+
>char *vlc_http_res_get_redirect(struct vlc_http_resource *restrict res)
> {
> int status = vlc_http_res_get_status(res);
>@@ -259,12 +286,6 @@ char *vlc_http_res_get_redirect(struct
>vlc_http_resource *restrict res)
>if (vlc_http_msg_get_token(res->response, "Pragma", "features") != NULL
> && asprintf(&url, "mmsh://%s%s", res->authority, res->path) >= 0)
> return url;
>-
>- /* HACK: Seems like an ICY server. Redirect to ICYX scheme. */
>- if ((vlc_http_msg_get_header(res->response, "Icy-Name") !=
>NULL
>- || vlc_http_msg_get_header(res->response, "Icy-Genre") !=
>NULL)
>- && asprintf(&url, "icyx://%s%s", res->authority, res->path)
>>= 0)
>- return url;
> }
>
> /* TODO: if (status == 426 Upgrade Required) */
>diff --git a/modules/access/http/resource.h
>b/modules/access/http/resource.h
>index 22b5abac64..e1f2934e8c 100644
>--- a/modules/access/http/resource.h
>+++ b/modules/access/http/resource.h
>@@ -85,6 +85,18 @@ int vlc_http_res_get_status(struct vlc_http_resource
>*res);
> char *vlc_http_res_get_redirect(struct vlc_http_resource *);
>
> /**
>+ * Gets ICY header data
>+ *
>+ * Extracts ICY info about the stream and the ICY metadata interval,
>+ * if ICY metadata is going to be used.
>+ *
>+ */
>+void vlc_http_res_get_icy_data(struct vlc_http_resource *restrict res,
>+ int *metaint,
>+ const char **icy_name,
>+ const char **icy_genre);
>+
>+/**
> * Gets MIME type.
> *
> * @return Heap-allocated MIME type string, or NULL if unknown.
>--
>2.13.5 (Apple Git-94)
>
>_______________________________________________
>vlc-devel mailing list
>To unsubscribe or modify your subscription options:
>https://mailman.videolan.org/listinfo/vlc-devel
This looks totally out of place, as discussed much earlier.
--
Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.
More information about the vlc-devel
mailing list