avformat/dashdec: add ProgramInformation parser

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
This commit is contained in:
Steven Liu 2019-04-15 19:18:30 +08:00
parent df9ef925f9
commit 613ca7b100
1 changed files with 30 additions and 0 deletions

View File

@ -1161,6 +1161,34 @@ static int parse_manifest_adaptationset(AVFormatContext *s, const char *url,
return 0;
}
static int parse_programinformation(AVFormatContext *s, xmlNodePtr node)
{
xmlChar *val = NULL;
node = xmlFirstElementChild(node);
while (node) {
if (!av_strcasecmp(node->name, "Title")) {
val = xmlNodeGetContent(node);
if (val) {
av_dict_set(&s->metadata, "Title", val, 0);
}
} else if (!av_strcasecmp(node->name, "Source")) {
val = xmlNodeGetContent(node);
if (val) {
av_dict_set(&s->metadata, "Source", val, 0);
}
} else if (!av_strcasecmp(node->name, "Copyright")) {
val = xmlNodeGetContent(node);
if (val) {
av_dict_set(&s->metadata, "Copyright", val, 0);
}
}
node = xmlNextElementSibling(node);
xmlFree(val);
}
return 0;
}
static int parse_manifest(AVFormatContext *s, const char *url, AVIOContext *in)
{
DASHContext *c = s->priv_data;
@ -1310,6 +1338,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, "ProgramInformation")) {
parse_programinformation(s, node);
}
node = xmlNextElementSibling(node);
}