diff options
Diffstat (limited to 'libswscale/swscale_internal.h')
-rw-r--r-- | libswscale/swscale_internal.h | 70 |
1 files changed, 39 insertions, 31 deletions
diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index d9bbb6c1e2..60a08a7849 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -28,6 +28,7 @@ #endif #include "libavutil/avutil.h" +#include "libavutil/internal.h" #define STR(s) AV_TOSTRING(s) //AV_STRINGIFY is too long @@ -166,26 +167,26 @@ typedef struct SwsContext{ #define Y_TEMP "11*8+4*4*256*2+40" #define ALP_MMX_FILTER_OFFSET "11*8+4*4*256*2+48" - uint64_t redDither __attribute__((aligned(8))); - uint64_t greenDither __attribute__((aligned(8))); - uint64_t blueDither __attribute__((aligned(8))); - - uint64_t yCoeff __attribute__((aligned(8))); - uint64_t vrCoeff __attribute__((aligned(8))); - uint64_t ubCoeff __attribute__((aligned(8))); - uint64_t vgCoeff __attribute__((aligned(8))); - uint64_t ugCoeff __attribute__((aligned(8))); - uint64_t yOffset __attribute__((aligned(8))); - uint64_t uOffset __attribute__((aligned(8))); - uint64_t vOffset __attribute__((aligned(8))); + DECLARE_ALIGNED(8, uint64_t, redDither); + DECLARE_ALIGNED(8, uint64_t, greenDither); + DECLARE_ALIGNED(8, uint64_t, blueDither); + + DECLARE_ALIGNED(8, uint64_t, yCoeff); + DECLARE_ALIGNED(8, uint64_t, vrCoeff); + DECLARE_ALIGNED(8, uint64_t, ubCoeff); + DECLARE_ALIGNED(8, uint64_t, vgCoeff); + DECLARE_ALIGNED(8, uint64_t, ugCoeff); + DECLARE_ALIGNED(8, uint64_t, yOffset); + DECLARE_ALIGNED(8, uint64_t, uOffset); + DECLARE_ALIGNED(8, uint64_t, vOffset); int32_t lumMmxFilter[4*MAX_FILTER_SIZE]; int32_t chrMmxFilter[4*MAX_FILTER_SIZE]; int dstW; - uint64_t esp __attribute__((aligned(8))); - uint64_t vRounder __attribute__((aligned(8))); - uint64_t u_temp __attribute__((aligned(8))); - uint64_t v_temp __attribute__((aligned(8))); - uint64_t y_temp __attribute__((aligned(8))); + DECLARE_ALIGNED(8, uint64_t, esp); + DECLARE_ALIGNED(8, uint64_t, vRounder); + DECLARE_ALIGNED(8, uint64_t, u_temp); + DECLARE_ALIGNED(8, uint64_t, v_temp); + DECLARE_ALIGNED(8, uint64_t, y_temp); int32_t alpMmxFilter[4*MAX_FILTER_SIZE]; #if HAVE_ALTIVEC @@ -200,21 +201,21 @@ typedef struct SwsContext{ #endif #if ARCH_BFIN - uint32_t oy __attribute__((aligned(4))); - uint32_t oc __attribute__((aligned(4))); - uint32_t zero __attribute__((aligned(4))); - uint32_t cy __attribute__((aligned(4))); - uint32_t crv __attribute__((aligned(4))); - uint32_t rmask __attribute__((aligned(4))); - uint32_t cbu __attribute__((aligned(4))); - uint32_t bmask __attribute__((aligned(4))); - uint32_t cgu __attribute__((aligned(4))); - uint32_t cgv __attribute__((aligned(4))); - uint32_t gmask __attribute__((aligned(4))); + DECLARE_ALIGNED(4, uint32_t, oy); + DECLARE_ALIGNED(4, uint32_t, oc); + DECLARE_ALIGNED(4, uint32_t, zero); + DECLARE_ALIGNED(4, uint32_t, cy); + DECLARE_ALIGNED(4, uint32_t, crv); + DECLARE_ALIGNED(4, uint32_t, rmask); + DECLARE_ALIGNED(4, uint32_t, cbu); + DECLARE_ALIGNED(4, uint32_t, bmask); + DECLARE_ALIGNED(4, uint32_t, cgu); + DECLARE_ALIGNED(4, uint32_t, cgv); + DECLARE_ALIGNED(4, uint32_t, gmask); #endif #if HAVE_VIS - uint64_t sparc_coeffs[10] __attribute__((aligned(8))); + DECLARE_ALIGNED(8, uint64_t, sparc_coeffs[10]); #endif /* function pointers for swScale() */ @@ -293,12 +294,14 @@ void ff_yuv2packedX_altivec(SwsContext *c, const int16_t *chrFilter, int16_t **chrSrc, int chrFilterSize, uint8_t *dest, int dstW, int dstY); -const char *sws_format_name(int format); +const char *sws_format_name(enum PixelFormat format); //FIXME replace this with something faster #define is16BPS(x) ( \ (x)==PIX_FMT_GRAY16BE \ || (x)==PIX_FMT_GRAY16LE \ + || (x)==PIX_FMT_RGB48BE \ + || (x)==PIX_FMT_RGB48LE \ || (x)==PIX_FMT_YUV420PLE \ || (x)==PIX_FMT_YUV422PLE \ || (x)==PIX_FMT_YUV444PLE \ @@ -342,7 +345,9 @@ const char *sws_format_name(int format); || (x)==PIX_FMT_GRAY16LE \ ) #define isRGB(x) ( \ - (x)==PIX_FMT_RGB32 \ + (x)==PIX_FMT_RGB48BE \ + || (x)==PIX_FMT_RGB48LE \ + || (x)==PIX_FMT_RGB32 \ || (x)==PIX_FMT_RGB32_1 \ || (x)==PIX_FMT_RGB24 \ || (x)==PIX_FMT_RGB565 \ @@ -376,6 +381,9 @@ const char *sws_format_name(int format); static inline int fmt_depth(int fmt) { switch(fmt) { + case PIX_FMT_RGB48BE: + case PIX_FMT_RGB48LE: + return 48; case PIX_FMT_BGRA: case PIX_FMT_ABGR: case PIX_FMT_RGBA: |