]> git.sesse.net Git - ffmpeg/commitdiff
avformat/utils: re-factor freeing AVStreams
authorHendrik Leppkes <h.leppkes@gmail.com>
Wed, 11 Nov 2015 13:31:10 +0000 (14:31 +0100)
committerHendrik Leppkes <h.leppkes@gmail.com>
Wed, 11 Nov 2015 13:36:53 +0000 (14:36 +0100)
This matches the Libav signature and simplifies merging future changes.

libavformat/utils.c

index e55b29479be5ec37e05d60f77759d427ff61c0e8..6b426e94928e10c5edc1beda82ac42ecf7765368 100644 (file)
@@ -3651,13 +3651,16 @@ int av_read_pause(AVFormatContext *s)
     return AVERROR(ENOSYS);
 }
 
-void ff_free_stream(AVFormatContext *s, AVStream *st) {
-    int j;
-    av_assert0(s->nb_streams>0);
-    av_assert0(s->streams[ s->nb_streams - 1 ] == st);
+static void free_stream(AVStream **pst)
+{
+    AVStream *st = *pst;
+    int i;
+
+    if (!st)
+        return;
 
-    for (j = 0; j < st->nb_side_data; j++)
-        av_freep(&st->side_data[j].data);
+    for (i = 0; i < st->nb_side_data; i++)
+        av_freep(&st->side_data[i].data);
     av_freep(&st->side_data);
 
     if (st->parser)
@@ -3678,7 +3681,16 @@ void ff_free_stream(AVFormatContext *s, AVStream *st) {
     av_freep(&st->info);
     av_freep(&st->recommended_encoder_configuration);
     av_freep(&st->priv_pts);
-    av_freep(&s->streams[ --s->nb_streams ]);
+
+    av_freep(pst);
+}
+
+void ff_free_stream(AVFormatContext *s, AVStream *st)
+{
+    av_assert0(s->nb_streams>0);
+    av_assert0(s->streams[ s->nb_streams - 1 ] == st);
+
+    free_stream(&s->streams[ --s->nb_streams ]);
 }
 
 void avformat_free_context(AVFormatContext *s)