diff mbox series

[FFmpeg-devel,13/54] avformat/dashdec: Simplify cleanup after read_header failure

Message ID HE1PR0301MB215433070DC2D364DC897F548F309@HE1PR0301MB2154.eurprd03.prod.outlook.com
State Accepted
Commit c3ba8f0d7e2932174239d31216f913febc20dc0d
Headers show
Series [FFmpeg-devel,01/54] avformat: Add internal flags for AV(In|Out)putFormat
Related show

Checks

Context Check Description
andriy/x86_make success Make finished
andriy/x86_make_fate success Make fate finished
andriy/PPC64_make success Make finished
andriy/PPC64_make_fate success Make fate finished

Commit Message

Andreas Rheinhardt June 15, 2021, 11:32 p.m. UTC
by setting the FF_FMT_INIT_CLEANUP flag.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
 libavformat/dashdec.c | 34 +++++++++++++---------------------
 1 file changed, 13 insertions(+), 21 deletions(-)
diff mbox series

Patch

diff --git a/libavformat/dashdec.c b/libavformat/dashdec.c
index bc27c96c97..11966f905c 100644
--- a/libavformat/dashdec.c
+++ b/libavformat/dashdec.c
@@ -2037,8 +2037,6 @@  static int copy_init_section(struct representation *rep_dest, struct representat
     return 0;
 }
 
-static int dash_close(AVFormatContext *s);
-
 static void move_metadata(AVStream *st, const char *key, char **value)
 {
     if (*value) {
@@ -2059,10 +2057,10 @@  static int dash_read_header(AVFormatContext *s)
     c->interrupt_callback = &s->interrupt_callback;
 
     if ((ret = save_avio_options(s)) < 0)
-        goto fail;
+        return ret;
 
     if ((ret = parse_manifest(s, s->url, s->pb)) < 0)
-        goto fail;
+        return ret;
 
     /* If this isn't a live stream, fill the total duration of the
      * stream. */
@@ -2081,12 +2079,12 @@  static int dash_read_header(AVFormatContext *s)
         if (i > 0 && c->is_init_section_common_video) {
             ret = copy_init_section(rep, c->videos[0]);
             if (ret < 0)
-                goto fail;
+                return ret;
         }
         ret = open_demux_for_component(s, rep);
 
         if (ret)
-            goto fail;
+            return ret;
         rep->stream_index = stream_index;
         ++stream_index;
     }
@@ -2099,12 +2097,12 @@  static int dash_read_header(AVFormatContext *s)
         if (i > 0 && c->is_init_section_common_audio) {
             ret = copy_init_section(rep, c->audios[0]);
             if (ret < 0)
-                goto fail;
+                return ret;
         }
         ret = open_demux_for_component(s, rep);
 
         if (ret)
-            goto fail;
+            return ret;
         rep->stream_index = stream_index;
         ++stream_index;
     }
@@ -2117,27 +2115,23 @@  static int dash_read_header(AVFormatContext *s)
         if (i > 0 && c->is_init_section_common_subtitle) {
             ret = copy_init_section(rep, c->subtitles[0]);
             if (ret < 0)
-                goto fail;
+                return ret;
         }
         ret = open_demux_for_component(s, rep);
 
         if (ret)
-            goto fail;
+            return ret;
         rep->stream_index = stream_index;
         ++stream_index;
     }
 
-    if (!stream_index) {
-        ret = AVERROR_INVALIDDATA;
-        goto fail;
-    }
+    if (!stream_index)
+        return AVERROR_INVALIDDATA;
 
     /* Create a program */
     program = av_new_program(s, 0);
-    if (!program) {
-        ret = AVERROR(ENOMEM);
-        goto fail;
-    }
+    if (!program)
+        return AVERROR(ENOMEM);
 
     for (i = 0; i < c->n_videos; i++) {
         rep = c->videos[i];
@@ -2165,9 +2159,6 @@  static int dash_read_header(AVFormatContext *s)
     }
 
     return 0;
-fail:
-    dash_close(s);
-    return ret;
 }
 
 static void recheck_discard_flags(AVFormatContext *s, struct representation **p, int n)
@@ -2402,6 +2393,7 @@  const AVInputFormat ff_dash_demuxer = {
     .long_name      = NULL_IF_CONFIG_SMALL("Dynamic Adaptive Streaming over HTTP"),
     .priv_class     = &dash_class,
     .priv_data_size = sizeof(DASHContext),
+    .flags_internal = FF_FMT_INIT_CLEANUP,
     .read_probe     = dash_probe,
     .read_header    = dash_read_header,
     .read_packet    = dash_read_packet,