[FFmpeg-devel] [PATCH 4/4] Implement ffserver generic metadata settings in the stream.
Stefano Sabatini
stefano.sabatini-lala
Sun Apr 11 20:36:22 CEST 2010
This patch is absolutely untested, if someone wants to try it and report back
that's fine, otherwise maybe I'll do it myself but who can say.
Regards.
---
ffserver.c | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/ffserver.c b/ffserver.c
index 4404511..7b60517 100644
--- a/ffserver.c
+++ b/ffserver.c
@@ -217,6 +217,8 @@ typedef struct FFStream {
char title[512];
char copyright[512];
char comment[512];
+ unsigned metadata_count;
+ AVMetadataTag *metadata;
pid_t pid; /* Of ffmpeg process */
time_t pid_start; /* Of ffmpeg process */
char **child_argv;
@@ -2236,6 +2238,10 @@ static int http_prepare_data(HTTPContext *c)
av_metadata_set(&c->fmt_ctx.metadata, "comment" ,c->stream->comment);
av_metadata_set(&c->fmt_ctx.metadata, "copyright",c->stream->copyright);
av_metadata_set(&c->fmt_ctx.metadata, "title" ,c->stream->title);
+ for (i = 0; i < c->stream->metadata_count; i++) {
+ AVMetadataTag *tag = &(c->stream->metadata[i]);
+ av_metadata_set(&c->fmt_ctx.metadata, tag->key, tag->value);
+ }
for(i=0;i<c->stream->nb_streams;i++) {
AVStream *st;
@@ -4257,6 +4263,20 @@ static int parse_ffconfig(const char *filename)
} else if (!strcasecmp(cmd, "Title")) {
if (stream)
get_arg(stream->title, sizeof(stream->title), &p);
+ } else if (!strcasecmp(cmd, "Metadata")) {
+ if (stream) {
+ char *mid;
+ get_arg(arg, sizeof(arg), &p);
+ if (!(mid = strchr(arg, '=')))
+ ERROR("Missing '=' in value for Metadata: %s\n", arg);
+ else {
+ *mid++= 0;
+ stream->metadata = av_realloc(stream->metadata,
+ sizeof(*stream->metadata) * (++stream->metadata_count));
+ stream->metadata[stream->metadata_count-1].key = av_strdup(arg);
+ stream->metadata[stream->metadata_count-1].value= av_strdup(mid);
+ }
+ }
} else if (!strcasecmp(cmd, "Preroll")) {
get_arg(arg, sizeof(arg), &p);
if (stream)
--
1.7.0
More information about the ffmpeg-devel
mailing list