diff options
author | Anton Khirnov <anton@khirnov.net> | 2012-10-06 13:29:37 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2012-10-12 12:45:38 +0200 |
commit | 0a7068fa5ddaa708d26c27eb17347985d6f1b36d (patch) | |
tree | e528b7a36cd24761b71094864262195a1e11a8b5 /libswscale/swscale_internal.h | |
parent | b7f1010c8fce09096057528f7cd29589ea1ae7df (diff) | |
download | ffmpeg-0a7068fa5ddaa708d26c27eb17347985d6f1b36d.tar.gz |
sws: do not use av_pix_fmt_descriptors directly.
Diffstat (limited to 'libswscale/swscale_internal.h')
-rw-r--r-- | libswscale/swscale_internal.h | 130 |
1 files changed, 86 insertions, 44 deletions
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 <altivec.h> #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]; |