From 0a7068fa5ddaa708d26c27eb17347985d6f1b36d Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sat, 6 Oct 2012 13:29:37 +0200 Subject: sws: do not use av_pix_fmt_descriptors directly. --- libswscale/swscale_internal.h | 130 ++++++++++++++++++++++++++++-------------- 1 file changed, 86 insertions(+), 44 deletions(-) (limited to 'libswscale/swscale_internal.h') diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 20caba0fc1..011626aaa4 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -27,6 +27,7 @@ #include #endif +#include "libavutil/avassert.h" #include "libavutil/avutil.h" #include "libavutil/common.h" #include "libavutil/log.h" @@ -542,26 +543,47 @@ void ff_bfin_get_unscaled_swscale(SwsContext *c); const char *sws_format_name(enum AVPixelFormat format); -#define is16BPS(x) \ - (av_pix_fmt_descriptors[x].comp[0].depth_minus1 == 15) - -#define is9_OR_10BPS(x) \ - (av_pix_fmt_descriptors[x].comp[0].depth_minus1 == 8 || \ - av_pix_fmt_descriptors[x].comp[0].depth_minus1 == 9) - -#define isBE(x) \ - (av_pix_fmt_descriptors[x].flags & PIX_FMT_BE) - -#define isYUV(x) \ - (!(av_pix_fmt_descriptors[x].flags & PIX_FMT_RGB) && \ - av_pix_fmt_descriptors[x].nb_components >= 2) - -#define isPlanarYUV(x) \ - ((av_pix_fmt_descriptors[x].flags & PIX_FMT_PLANAR) && \ - isYUV(x)) - -#define isRGB(x) \ - (av_pix_fmt_descriptors[x].flags & PIX_FMT_RGB) +static av_always_inline int is16BPS(enum AVPixelFormat pix_fmt) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); + av_assert0(desc); + return desc->comp[0].depth_minus1 == 15; +} + +static av_always_inline int is9_OR_10BPS(enum AVPixelFormat pix_fmt) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); + av_assert0(desc); + return desc->comp[0].depth_minus1 == 8 || desc->comp[0].depth_minus1 == 9; +} + +static av_always_inline int isBE(enum AVPixelFormat pix_fmt) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); + av_assert0(desc); + return desc->flags & PIX_FMT_BE; +} + +static av_always_inline int isYUV(enum AVPixelFormat pix_fmt) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); + av_assert0(desc); + return !(desc->flags & PIX_FMT_RGB) && desc->nb_components >= 2; +} + +static av_always_inline int isPlanarYUV(enum AVPixelFormat pix_fmt) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); + av_assert0(desc); + return ((desc->flags & PIX_FMT_PLANAR) && isYUV(pix_fmt)); +} + +static av_always_inline int isRGB(enum AVPixelFormat pix_fmt) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); + av_assert0(desc); + return (desc->flags & PIX_FMT_RGB); +} #if 0 // FIXME #define isGray(x) \ @@ -615,30 +637,50 @@ const char *sws_format_name(enum AVPixelFormat format); (isRGBinInt(x) || \ isBGRinInt(x)) -#define isALPHA(x) \ - (av_pix_fmt_descriptors[x].nb_components == 2 || \ - av_pix_fmt_descriptors[x].nb_components == 4) - -#define isPacked(x) \ - ((av_pix_fmt_descriptors[x].nb_components >= 2 && \ - !(av_pix_fmt_descriptors[x].flags & PIX_FMT_PLANAR)) || \ - (x) == AV_PIX_FMT_PAL8) - -#define isPlanar(x) \ - (av_pix_fmt_descriptors[x].nb_components >= 2 && \ - (av_pix_fmt_descriptors[x].flags & PIX_FMT_PLANAR)) - -#define isPackedRGB(x) \ - ((av_pix_fmt_descriptors[x].flags & \ - (PIX_FMT_PLANAR | PIX_FMT_RGB)) == PIX_FMT_RGB) - -#define isPlanarRGB(x) \ - ((av_pix_fmt_descriptors[x].flags & \ - (PIX_FMT_PLANAR | PIX_FMT_RGB)) == (PIX_FMT_PLANAR | PIX_FMT_RGB)) - -#define usePal(x) ((av_pix_fmt_descriptors[x].flags & PIX_FMT_PAL) || \ - (av_pix_fmt_descriptors[x].flags & PIX_FMT_PSEUDOPAL) || \ - (x) == AV_PIX_FMT_Y400A) +static av_always_inline int isALPHA(enum AVPixelFormat pix_fmt) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); + av_assert0(desc); + return desc->nb_components == 2 || desc->nb_components == 4; +} + +static av_always_inline int isPacked(enum AVPixelFormat pix_fmt) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); + av_assert0(desc); + return ((desc->nb_components >= 2 && !(desc->flags & PIX_FMT_PLANAR)) || + pix_fmt == AV_PIX_FMT_PAL8); +} + +static av_always_inline int isPlanar(enum AVPixelFormat pix_fmt) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); + av_assert0(desc); + return (desc->nb_components >= 2 && (desc->flags & PIX_FMT_PLANAR)); +} + +static av_always_inline int isPackedRGB(enum AVPixelFormat pix_fmt) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); + av_assert0(desc); + return ((desc->flags & (PIX_FMT_PLANAR | PIX_FMT_RGB)) == PIX_FMT_RGB); +} + +static av_always_inline int isPlanarRGB(enum AVPixelFormat pix_fmt) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); + av_assert0(desc); + return ((desc->flags & (PIX_FMT_PLANAR | PIX_FMT_RGB)) == + (PIX_FMT_PLANAR | PIX_FMT_RGB)); +} + +static av_always_inline int usePal(enum AVPixelFormat pix_fmt) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); + av_assert0(desc); + return ((desc->flags & PIX_FMT_PAL) || (desc->flags & PIX_FMT_PSEUDOPAL) || + pix_fmt == AV_PIX_FMT_Y400A); +} extern const uint64_t ff_dither4[2]; extern const uint64_t ff_dither8[2]; -- cgit v1.2.3