[FFmpeg-devel] [PATCH 1/3] avformat/aiffenc: Use standard packet list functions

Michael Niedermayer michael at niedermayer.cc
Thu Oct 3 22:04:31 EEST 2019


On Wed, Oct 02, 2019 at 09:05:35AM +0200, Matthieu Bouron wrote:
> On Wed, Oct 02, 2019 at 06:04:10AM +0200, Andreas Rheinhardt wrote:
> > Up until now, aiffenc didn't rely on the standard functions for adding
> > an element to a linked list and freeing the list, but instead
> > reimplemented them. This has been changed.
> > 
> > Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> > ---
> >  libavformat/aiffenc.c | 33 ++++-----------------------------
> >  1 file changed, 4 insertions(+), 29 deletions(-)
> > 
> > diff --git a/libavformat/aiffenc.c b/libavformat/aiffenc.c
> > index aab37418f0..dd8b8c3d01 100644
> > --- a/libavformat/aiffenc.c
> > +++ b/libavformat/aiffenc.c
> > @@ -36,7 +36,7 @@ typedef struct AIFFOutputContext {
> >      int64_t frames;
> >      int64_t ssnd;
> >      int audio_stream_idx;
> > -    AVPacketList *pict_list;
> > +    AVPacketList *pict_list, *pict_list_end;
> >      int write_id3v2;
> >      int id3v2_version;
> >  } AIFFOutputContext;
> > @@ -215,9 +215,6 @@ static int aiff_write_packet(AVFormatContext *s, AVPacket *pkt)
> >      if (pkt->stream_index == aiff->audio_stream_idx)
> >          avio_write(pb, pkt->data, pkt->size);
> >      else {
> > -        int ret;
> > -        AVPacketList *pict_list, *last;
> > -
> >          if (s->streams[pkt->stream_index]->codecpar->codec_type != AVMEDIA_TYPE_VIDEO)
> >              return 0;
> >  
> > @@ -229,24 +226,8 @@ static int aiff_write_packet(AVFormatContext *s, AVPacket *pkt)
> >          if (s->streams[pkt->stream_index]->nb_frames >= 1)
> >              return 0;
> >  
> > -        pict_list = av_mallocz(sizeof(AVPacketList));
> > -        if (!pict_list)
> > -            return AVERROR(ENOMEM);
> > -
> > -        ret = av_packet_ref(&pict_list->pkt, pkt);
> > -        if (ret < 0) {
> > -            av_freep(&pict_list);
> > -            return ret;
> > -        }
> > -
> > -        if (!aiff->pict_list)
> > -            aiff->pict_list = pict_list;
> > -        else {
> > -            last = aiff->pict_list;
> > -            while (last->next)
> > -                last = last->next;
> > -            last->next = pict_list;
> > -        }
> > +        return ff_packet_list_put(&aiff->pict_list, &aiff->pict_list_end,
> > +                                  pkt, FF_PACKETLIST_FLAG_REF_PACKET);
> >      }
> >  
> >      return 0;
> > @@ -257,7 +238,6 @@ static int aiff_write_trailer(AVFormatContext *s)
> >      int ret;
> >      AVIOContext *pb = s->pb;
> >      AIFFOutputContext *aiff = s->priv_data;
> > -    AVPacketList *pict_list = aiff->pict_list;
> >      AVCodecParameters *par = s->streams[aiff->audio_stream_idx]->codecpar;
> >  
> >      /* Chunks sizes must be even */
> > @@ -293,12 +273,7 @@ static int aiff_write_trailer(AVFormatContext *s)
> >          avio_flush(pb);
> >      }
> >  
> > -    while (pict_list) {
> > -        AVPacketList *next = pict_list->next;
> > -        av_packet_unref(&pict_list->pkt);
> > -        av_freep(&pict_list);
> > -        pict_list = next;
> > -    }
> > +    ff_packet_list_free(&aiff->pict_list, &aiff->pict_list_end);
> >  
> >      return 0;
> >  }
> > -- 
> > 2.21.0
> 
> LGTM.
> 
> Fate passes and patch tested with a few remux of aiff files containing
> id3v2 tags + attached pics (ffmpeg -i input.aiff -write_id3v2 1
> output.aiff).

will apply

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Modern terrorism, a quick summary: Need oil, start war with country that
has oil, kill hundread thousand in war. Let country fall into chaos,
be surprised about raise of fundamantalists. Drop more bombs, kill more
people, be surprised about them taking revenge and drop even more bombs
and strip your own citizens of their rights and freedoms. to be continued
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20191003/c27d61d4/attachment.sig>


More information about the ffmpeg-devel mailing list