[FFmpeg-devel] [PATCH 3/6] libavformat: Add a function for freeing an AVFormatContext

Reinhard Tartler siretart
Thu Feb 3 20:59:55 CET 2011


On Thu, Feb 03, 2011 at 16:07:42 (CET), Martin Storsj? wrote:

> On Thu, 3 Feb 2011, Reinhard Tartler wrote:
>
>> On Thu, Feb 03, 2011 at 13:10:14 (CET), Martin Storsj? wrote:
>> 
>> > This function is useful for freeing data structures allocated by
>> > muxers, which currently have to be freed manually by the caller.
>> > ---
>> >  libavformat/avformat.h |    6 ++++++
>> >  libavformat/utils.c    |   11 ++++++++---
>> >  2 files changed, 14 insertions(+), 3 deletions(-)
>> >
>> > diff --git a/libavformat/avformat.h b/libavformat/avformat.h
>> > index f9f9be5..1cbe274 100644
>> > --- a/libavformat/avformat.h
>> > +++ b/libavformat/avformat.h
>> > @@ -1230,6 +1230,12 @@ void av_close_input_stream(AVFormatContext *s);
>> >  void av_close_input_file(AVFormatContext *s);
>> >  
>> >  /**
>> > + * Free an AVFormatContext and all its streams.
>> > + * @param s context to free
>> > + */
>> > +void av_free_context(AVFormatContext *s);
>> > +
>> > +/**
>> >   * Add a new stream to a media file.
>> >   *
>> >   * Can only be called in the read_header() function. If the flag
>> > diff --git a/libavformat/utils.c b/libavformat/utils.c
>> > index 4f51c26..2d0dea5 100644
>> > --- a/libavformat/utils.c
>> > +++ b/libavformat/utils.c
>> > @@ -2541,12 +2541,17 @@ int av_read_pause(AVFormatContext *s)
>> >  
>> >  void av_close_input_stream(AVFormatContext *s)
>> >  {
>> > -    int i;
>> > -    AVStream *st;
>> > -
>> >      flush_packet_queue(s);
>> >      if (s->iformat->read_close)
>> >          s->iformat->read_close(s);
>> > +    av_free_context(s);
>> > +}
>> > +
>> > +void av_free_context(AVFormatContext *s)
>> > +{
>> > +    int i;
>> > +    AVStream *st;
>> > +
>> >      for(i=0;i<s->nb_streams;i++) {
>> >          /* free all data in a stream component */
>> >          st = s->streams[i];
>> 
>> Patch misses doc/APIchanges update and minor bump.
>
> Ah, yes. I'll add these in the next round of this patch.
>
> Should I add the APIchanges in a separate commit, with a placeholder XXX 
> for the git hash that the applyer hopefully changes to the hash of the 
> preceding commit? Or what's the best procedure for sending full patchsets 
> doing this, without sending APIchanges as a separate patch afterwards, 
> once the actual change has been committed?

I don't think there are rules for this (yet?), but I would 'just' update
this particular patch and repost it as a followup to this thread.

This can be done by first committing the change you want to add and then
use 'git rebase -i $base' with $base being the last common revision with
the master branch, and them squash (combine) the last commit with the
one you are merging. Then use 'git format-patch $base' to generate new
patchsets.

-- 
Gruesse/greetings,
Reinhard Tartler, KeyID 945348A4




More information about the ffmpeg-devel mailing list