From 20e99a9c10cdbe9ad659dce5bdec569d744f8219 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Tue, 16 Apr 2013 14:16:03 +0200 Subject: [PATCH] avutil/pixdesc: support for self-checking the descriptors Signed-off-by: Michael Niedermayer --- libavutil/pixdesc.c | 25 +++++++++++++++++++++++++ libavutil/pixdesc.h | 1 + libavutil/utils.c | 3 +++ 3 files changed, 29 insertions(+) diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c index d3cec170ea..c03964faef 100644 --- a/libavutil/pixdesc.c +++ b/libavutil/pixdesc.c @@ -22,6 +22,7 @@ #include #include +#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; iname && !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; jcomp); 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); + } + } +} diff --git a/libavutil/pixdesc.h b/libavutil/pixdesc.h index 0947fd1f88..538e6a55d2 100644 --- a/libavutil/pixdesc.h +++ b/libavutil/pixdesc.h @@ -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 */ diff --git a/libavutil/utils.c b/libavutil/utils.c index 291c736454..8f83c02d83 100644 --- a/libavutil/utils.c +++ b/libavutil/utils.c @@ -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; }