[FFmpeg-devel] [PATCH] ffserver: add stream Metadata option

Stefano Sabatini stefasab at gmail.com
Sun Dec 15 23:35:02 CET 2013


On date Sunday 2013-12-15 11:34:26 +0100, Stefano Sabatini encoded:
> On date Saturday 2013-12-14 17:10:15 +0100, Michael Niedermayer encoded:
> > On Fri, Nov 29, 2013 at 08:43:58AM +0100, Stefano Sabatini wrote:
> > > Deprecate Author, Comment, Copyright, Title options.
> > > 
> > > Note that the old options (and the new), has no effect with FFM output
> > > because the format does not export metadata.
> > > ---
> > >  doc/ffserver.texi |  6 +++++-
> > >  ffserver.c        | 60 +++++++++++++++++++++++++++++++++----------------------
> > >  2 files changed, 41 insertions(+), 25 deletions(-)
> > > 
> > > diff --git a/doc/ffserver.texi b/doc/ffserver.texi
> > > index efaa664..290f6e0 100644
> > > --- a/doc/ffserver.texi
> > > +++ b/doc/ffserver.texi
> > > @@ -451,7 +451,11 @@ for regular streams.
> > >  @item Comment @var{value}
> > >  @item Copyright @var{value}
> > >  @item Title @var{value}
> > > -Set metadata corresponding to the option.
> > > +Set metadata corresponding to the option. All these options are
> > > +deprecated in favor of @option{Metadata}.
> > > +
> > > + at item Metadata @var{key} @var{value}
> > > +Set metadata value on the output stream.
> > >  
> > >  @item NoAudio
> > >  @item NoVideo
> > > diff --git a/ffserver.c b/ffserver.c
> > > index 6ce09c4..f9efaf7 100644
> > > --- a/ffserver.c
> > > +++ b/ffserver.c
> > > @@ -216,6 +216,7 @@ typedef struct FFStream {
> > >      struct FFStream *feed;   /* feed we are using (can be null if
> > >                                  coming from file) */
> > >      AVDictionary *in_opts;   /* input parameters */
> > > +    AVDictionary *metadata;  /* metadata to set on the stream */
> > >      AVInputFormat *ifmt;       /* if non NULL, force input format */
> > >      AVOutputFormat *fmt;
> > >      IPAddressACL *acl;
> > > @@ -228,10 +229,6 @@ typedef struct FFStream {
> > >      int feed_streams[MAX_STREAMS]; /* index of streams in the feed */
> > >      char feed_filename[1024]; /* file name of the feed storage, or
> > >                                   input file name for a stream */
> > > -    char author[512];
> > > -    char title[512];
> > > -    char copyright[512];
> > > -    char comment[512];
> > >      pid_t pid;  /* Of ffmpeg process */
> > >      time_t pid_start;  /* Of ffmpeg process */
> > >      char **child_argv;
> > > @@ -2279,11 +2276,7 @@ static int http_prepare_data(HTTPContext *c)
> > >      switch(c->state) {
> > >      case HTTPSTATE_SEND_DATA_HEADER:
> > >          memset(&c->fmt_ctx, 0, sizeof(c->fmt_ctx));
> > > -        av_dict_set(&c->fmt_ctx.metadata, "author"   , c->stream->author   , 0);
> > > -        av_dict_set(&c->fmt_ctx.metadata, "comment"  , c->stream->comment  , 0);
> > > -        av_dict_set(&c->fmt_ctx.metadata, "copyright", c->stream->copyright, 0);
> > > -        av_dict_set(&c->fmt_ctx.metadata, "title"    , c->stream->title    , 0);
> > > -
> > > +        av_dict_copy(&(c->fmt_ctx.metadata), c->stream->metadata, 0);
> > >          c->fmt_ctx.streams = av_mallocz(sizeof(AVStream *) * c->stream->nb_streams);
> > >  
> > >          for(i=0;i<c->stream->nb_streams;i++) {
> > > @@ -2991,6 +2984,7 @@ static int prepare_sdp_description(FFStream *stream, uint8_t **pbuffer,
> > >      AVFormatContext *avc;
> > >      AVStream *avs = NULL;
> > >      AVOutputFormat *rtp_format = av_guess_format("rtp", NULL, NULL);
> > > +    AVDictionaryEntry *entry = av_dict_get(stream->metadata, "title", NULL, 0);
> > >      int i;
> > >  
> > >      avc =  avformat_alloc_context();
> > > @@ -2999,7 +2993,7 @@ static int prepare_sdp_description(FFStream *stream, uint8_t **pbuffer,
> > >      }
> > >      avc->oformat = rtp_format;
> > >      av_dict_set(&avc->metadata, "title",
> > > -               stream->title[0] ? stream->title : "No Title", 0);
> > > +               entry->key[0] ? entry->key : "No Title", 0);
> > 
> > entry can be NULL here i think
> 
> Changed.

Second attempt.
-- 
FFmpeg = Frightening & Fanciful Maxi Pitiful Excellent Game
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0004-ffserver-add-stream-Metadata-option.patch
Type: text/x-diff
Size: 6348 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20131215/ceba993f/attachment.bin>


More information about the ffmpeg-devel mailing list