[FFmpeg-cvslog] lavf: simplify format_child_class_next()

Luca Barbato git at videolan.org
Tue Nov 15 03:27:19 CET 2011


ffmpeg | branch: master | Luca Barbato <lu_zero at gentoo.org> | Mon Nov 14 12:24:21 2011 +0100| [caf27e37b654d6f525d47bc62b914cbee4ca6a4b] | committer: Luca Barbato

lavf: simplify format_child_class_next()

And fix the error introduced when adding private option to avio.
See 32caa7b13cecca59213c73fa94dd683c2b003bfd

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=caf27e37b654d6f525d47bc62b914cbee4ca6a4b
---

 libavformat/options.c |   31 +++++++++++++++++--------------
 1 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/libavformat/options.c b/libavformat/options.c
index 66e01a4..a9e2c1c 100644
--- a/libavformat/options.c
+++ b/libavformat/options.c
@@ -53,26 +53,29 @@ static const AVClass *format_child_class_next(const AVClass *prev)
     AVInputFormat  *ifmt = NULL;
     AVOutputFormat *ofmt = NULL;
 
-    while (prev && (ifmt = av_iformat_next(ifmt)))
+    if (!prev)
+#if !FF_API_OLD_AVIO
+        return &ffio_url_class;
+#else
+    prev = (void *)&ifmt; // Dummy pointer;
+#endif
+
+    while ((ifmt = av_iformat_next(ifmt)))
         if (ifmt->priv_class == prev)
             break;
-    if ((prev && ifmt) || (!prev))
+
+    if (!ifmt)
+        while ((ofmt = av_oformat_next(ofmt)))
+            if (ofmt->priv_class == prev)
+                break;
+    if (!ofmt)
         while (ifmt = av_iformat_next(ifmt))
             if (ifmt->priv_class)
                 return ifmt->priv_class;
 
-    while (prev && (ofmt = av_oformat_next(ofmt)))
-        if (ofmt->priv_class == prev)
-            break;
-    if ((prev && ofmt) || (!prev))
-        while (ofmt = av_oformat_next(ofmt))
-            if (ofmt->priv_class)
-                return ofmt->priv_class;
-
-#if !FF_API_OLD_AVIO
-    if (prev != &ffio_url_class)
-        return &ffio_url_class;
-#endif
+    while (ofmt = av_oformat_next(ofmt))
+        if (ofmt->priv_class)
+            return ofmt->priv_class;
 
     return NULL;
 }



More information about the ffmpeg-cvslog mailing list