]> git.sesse.net Git - ffmpeg/commitdiff
avutil/pixdesc: support for self-checking the descriptors
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 16 Apr 2013 12:16:03 +0000 (14:16 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 16 Apr 2013 12:27:14 +0000 (14:27 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavutil/pixdesc.c
libavutil/pixdesc.h
libavutil/utils.c

index d3cec170ea5cfd3d09b0c77d9925c4a7c4281029..c03964faef9c29cbd4b698201d07b4cf1157f3b3 100644 (file)
@@ -22,6 +22,7 @@
 #include <stdio.h>
 #include <string.h>
 
+#include "avassert.h"
 #include "common.h"
 #include "pixfmt.h"
 #include "pixdesc.h"
@@ -1828,3 +1829,27 @@ int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt)
         ret += planes[i];
     return ret;
 }
+
+void ff_check_pixfmt_descriptors(void){
+    int i, j;
+
+    for (i=0; i<FF_ARRAY_ELEMS(av_pix_fmt_descriptors); i++) {
+        const AVPixFmtDescriptor *d = &av_pix_fmt_descriptors[i];
+
+        if (!d->name && !d->nb_components && !d->log2_chroma_w && !d->log2_chroma_h && !d->flags)
+            continue;
+//         av_log(NULL, AV_LOG_DEBUG, "Checking: %s\n", d->name);
+        av_assert0(d->log2_chroma_w <= 3);
+        av_assert0(d->log2_chroma_h <= 3);
+        av_assert0(d->nb_components <= 4);
+        av_assert0(d->name && d->name[0]);
+        av_assert0((d->nb_components==4 || d->nb_components==2) == !!(d->flags & PIX_FMT_ALPHA));
+        av_assert2(av_get_pix_fmt(d->name) == i);
+
+        for (j=0; j<FF_ARRAY_ELEMS(d->comp); j++) {
+            const AVComponentDescriptor *c = &d->comp[j];
+            if(j>=d->nb_components)
+                av_assert0(!c->plane && !c->step_minus1 && !c->offset_plus1 && !c->shift && !c->depth_minus1);
+        }
+    }
+}
index 0947fd1f888291322153aeacdbeaa1216a124dca..538e6a55d2593e94f048367f328370ecdec1763b 100644 (file)
@@ -239,5 +239,6 @@ int av_pix_fmt_get_chroma_sub_sample(enum AVPixelFormat pix_fmt,
  */
 int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt);
 
+void ff_check_pixfmt_descriptors(void);
 
 #endif /* AVUTIL_PIXDESC_H */
index 291c736454904818e536fad55be2afa752464a54..8f83c02d83e9d4d84ee9a78ce328ebba076c3ba7 100644 (file)
@@ -20,6 +20,7 @@
 #include "avutil.h"
 #include "avassert.h"
 #include "samplefmt.h"
+#include "pixdesc.h"
 
 /**
  * @file
@@ -40,6 +41,8 @@ unsigned avutil_version(void)
         abort();
     }
 
+    ff_check_pixfmt_descriptors();
+
     return LIBAVUTIL_VERSION_INT;
 }