[FFmpeg-devel] [PATCH] avformat/dashdec: add ProgramInformation parser
Steven Liu
lq at chinaffmpeg.org
Mon Apr 15 09:26:04 EEST 2019
Signed-off-by: Steven Liu <lq at chinaffmpeg.org>
---
libavformat/dashdec.c | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/libavformat/dashdec.c b/libavformat/dashdec.c
index eed149cd1a..b6394403b9 100644
--- a/libavformat/dashdec.c
+++ b/libavformat/dashdec.c
@@ -1161,6 +1161,36 @@ static int parse_manifest_adaptationset(AVFormatContext *s, const char *url,
return 0;
}
+static int parse_programinformation(AVFormatContext *s, xmlNodePtr node)
+{
+ xmlNodePtr programinfo_node = NULL;
+ xmlChar *val = NULL;
+ DASHContext *c = s->priv_data;
+
+ programinfo_node = xmlFirstElementChild(node);
+ while (programinfo_node) {
+ if (!av_strcasecmp((const char *)programinfo_node->name, (const char *)"Title")) {
+ val = xmlNodeGetContent(programinfo_node);
+ if (val && strlen(val) < 1024) {
+ av_dict_set(&s->metadata, "Title", val, 0);
+ }
+ } else if (!av_strcasecmp((const char *)programinfo_node->name, (const char *)"Source")) {
+ val = xmlNodeGetContent(programinfo_node);
+ if (val && strlen(val) < 1024) {
+ av_dict_set(&s->metadata, "Source", val, 0);
+ }
+ } else if (!av_strcasecmp((const char *)programinfo_node->name, (const char *)"Copyright")) {
+ val = xmlNodeGetContent(programinfo_node);
+ if (val && strlen(val) < 1024) {
+ av_dict_set(&s->metadata, "Copyright", val, 0);
+ }
+ }
+ programinfo_node = xmlNextElementSibling(programinfo_node);
+ xmlFree(val);
+ }
+ return 0;
+}
+
static int parse_manifest(AVFormatContext *s, const char *url, AVIOContext *in)
{
DASHContext *c = s->priv_data;
@@ -1310,6 +1340,8 @@ static int parse_manifest(AVFormatContext *s, const char *url, AVIOContext *in)
if (c->period_start > 0)
c->media_presentation_duration = c->period_duration;
}
+ } else if (!av_strcasecmp(node->name, (const char *)"ProgramInformation")) {
+ parse_programinformation(s, node);
}
node = xmlNextElementSibling(node);
}
--
2.17.2 (Apple Git-113)
More information about the ffmpeg-devel
mailing list