[SCM] libav/experimental: Change avfilter_add_colorspace() to make it accept **avff rather than *avff, so that an AVFilterFormats struct is created and returned by the function if *avff is NULL.

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:56:47 UTC 2013


The following commit has been merged in the experimental branch:
commit c1d662fd88db783d505c45fca4c35c625cd10f20
Author: Stefano Sabatini <stefano.sabatini-lala at poste.it>
Date:   Wed Jan 6 16:19:13 2010 +0000

    Change avfilter_add_colorspace() to make it accept **avff rather than
    *avff, so that an AVFilterFormats struct is created and returned by
    the function if *avff is NULL.
    
    Make the function use more convenient.
    
    Originally committed as revision 21035 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h
index 8315a3b..94e6475 100644
--- a/libavfilter/avfilter.h
+++ b/libavfilter/avfilter.h
@@ -25,7 +25,7 @@
 #include "libavutil/avutil.h"
 
 #define LIBAVFILTER_VERSION_MAJOR  1
-#define LIBAVFILTER_VERSION_MINOR 13
+#define LIBAVFILTER_VERSION_MINOR 14
 #define LIBAVFILTER_VERSION_MICRO  0
 
 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
@@ -192,12 +192,14 @@ struct AVFilterFormats
 AVFilterFormats *avfilter_make_format_list(const enum PixelFormat *pix_fmts);
 
 /**
- * Adds pix_fmt to the list of pixel formats contained in avff.
+ * Adds pix_fmt to the list of pixel formats contained in *avff.
+ * If *avff is NULL the function allocates the filter formats struct
+ * and puts its pointer in *avff.
  *
  * @return a non negative value in case of success, or a negative
  * value corresponding to an AVERROR code in case of error
  */
-int avfilter_add_colorspace(AVFilterFormats *avff, enum PixelFormat pix_fmt);
+int avfilter_add_colorspace(AVFilterFormats **avff, enum PixelFormat pix_fmt);
 
 /**
  * Returns a list of all colorspaces supported by FFmpeg.
diff --git a/libavfilter/formats.c b/libavfilter/formats.c
index a289a12..e558195 100644
--- a/libavfilter/formats.c
+++ b/libavfilter/formats.c
@@ -86,28 +86,31 @@ AVFilterFormats *avfilter_make_format_list(const enum PixelFormat *pix_fmts)
     return formats;
 }
 
-int avfilter_add_colorspace(AVFilterFormats *avff, enum PixelFormat pix_fmt)
+int avfilter_add_colorspace(AVFilterFormats **avff, enum PixelFormat pix_fmt)
 {
-    enum PixelFormat *pix_fmts =
-        av_realloc(avff->formats, sizeof(avff->formats) * (avff->format_count+1));
+    enum PixelFormat *pix_fmts;
 
+    if (!(*avff) && !(*avff = av_mallocz(sizeof(AVFilterFormats))))
+        return AVERROR(ENOMEM);
+
+    pix_fmts = av_realloc((*avff)->formats,
+                          sizeof((*avff)->formats) * ((*avff)->format_count+1));
     if (!pix_fmts)
         return AVERROR(ENOMEM);
 
-    avff->formats = pix_fmts;
-    avff->formats[avff->format_count++] = pix_fmt;
+    (*avff)->formats = pix_fmts;
+    (*avff)->formats[(*avff)->format_count++] = pix_fmt;
     return 0;
 }
 
 AVFilterFormats *avfilter_all_colorspaces(void)
 {
-    AVFilterFormats *ret;
+    AVFilterFormats *ret = NULL;
     enum PixelFormat pix_fmt;
 
-    ret = av_mallocz(sizeof(AVFilterFormats));
     for (pix_fmt = 0; pix_fmt < PIX_FMT_NB; pix_fmt++)
         if (!(av_pix_fmt_descriptors[pix_fmt].flags & PIX_FMT_HWACCEL))
-            avfilter_add_colorspace(ret, pix_fmt);
+            avfilter_add_colorspace(&ret, pix_fmt);
 
     return ret;
 }

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list