[FFmpeg-cvslog] lavfi/formats: avoid using AV_{PIX,SAMPLE}_FMT_NB

Anton Khirnov git at videolan.org
Tue May 27 03:28:26 CEST 2014


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Sat May 24 11:15:15 2014 +0200| [7cc4c9f32f446feaec5447e3d097e8147e35f156] | committer: Anton Khirnov

lavfi/formats: avoid using AV_{PIX,SAMPLE}_FMT_NB

Thatt hardcodes the number of formats into lavfi and will break when a
shared lavu is updated, adding new formats.

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

 libavfilter/formats.c |   18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/libavfilter/formats.c b/libavfilter/formats.c
index 1441161..24a4fab 100644
--- a/libavfilter/formats.c
+++ b/libavfilter/formats.c
@@ -209,15 +209,19 @@ int ff_add_channel_layout(AVFilterChannelLayouts **l, uint64_t channel_layout)
 AVFilterFormats *ff_all_formats(enum AVMediaType type)
 {
     AVFilterFormats *ret = NULL;
-    int fmt;
-    int num_formats = type == AVMEDIA_TYPE_VIDEO ? AV_PIX_FMT_NB    :
-                      type == AVMEDIA_TYPE_AUDIO ? AV_SAMPLE_FMT_NB : 0;
 
-    for (fmt = 0; fmt < num_formats; fmt++) {
-        const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(fmt);
-        if ((type != AVMEDIA_TYPE_VIDEO) ||
-            (type == AVMEDIA_TYPE_VIDEO && !(desc->flags & AV_PIX_FMT_FLAG_HWACCEL)))
+    if (type == AVMEDIA_TYPE_VIDEO) {
+        const AVPixFmtDescriptor *desc = NULL;
+        while ((desc = av_pix_fmt_desc_next(desc))) {
+            if (!(desc->flags & AV_PIX_FMT_FLAG_HWACCEL))
+                ff_add_format(&ret, av_pix_fmt_desc_get_id(desc));
+        }
+    } else if (type == AVMEDIA_TYPE_AUDIO) {
+        enum AVSampleFormat fmt = 0;
+        while (av_get_sample_fmt_name(fmt)) {
             ff_add_format(&ret, fmt);
+            fmt++;
+        }
     }
 
     return ret;



More information about the ffmpeg-cvslog mailing list