Libav
Macros | Functions
swscale_template.c File Reference
#include <stdint.h>
#include "libavutil/x86/asm.h"
#include "libswscale/swscale_internal.h"

Go to the source code of this file.

Macros

#define PREFETCH   " # nop"
 
#define REAL_MOVNTQ(a, b)   "movq " #a ", " #b " \n\t"
 
#define MOVNTQ(a, b)   REAL_MOVNTQ(a,b)
 
#define YSCALEYUV2PACKEDX_UV
 
#define YSCALEYUV2PACKEDX_YA(offset, coeff, src1, src2, dst1, dst2)
 
#define YSCALEYUV2PACKEDX
 
#define YSCALEYUV2PACKEDX_END
 
#define YSCALEYUV2PACKEDX_ACCURATE_UV
 
#define YSCALEYUV2PACKEDX_ACCURATE_YA(offset)
 
#define YSCALEYUV2PACKEDX_ACCURATE
 
#define YSCALEYUV2RGBX
 
#define REAL_WRITEBGR32(dst, dstw, index, b, g, r, a, q0, q2, q3, t)
 
#define WRITEBGR32(dst, dstw, index, b, g, r, a, q0, q2, q3, t)   REAL_WRITEBGR32(dst, dstw, index, b, g, r, a, q0, q2, q3, t)
 
#define REAL_WRITERGB16(dst, dstw, index)
 
#define WRITERGB16(dst, dstw, index)   REAL_WRITERGB16(dst, dstw, index)
 
#define REAL_WRITERGB15(dst, dstw, index)
 
#define WRITERGB15(dst, dstw, index)   REAL_WRITERGB15(dst, dstw, index)
 
#define WRITEBGR24MMX(dst, dstw, index)
 
#define WRITEBGR24MMXEXT(dst, dstw, index)
 
#define WRITEBGR24(dst, dstw, index)   WRITEBGR24MMX(dst, dstw, index)
 
#define REAL_WRITEYUY2(dst, dstw, index)
 
#define WRITEYUY2(dst, dstw, index)   REAL_WRITEYUY2(dst, dstw, index)
 
#define REAL_YSCALEYUV2RGB_UV(index, c)
 
#define REAL_YSCALEYUV2RGB_YA(index, c, b1, b2)
 
#define REAL_YSCALEYUV2RGB_COEFF(c)
 
#define YSCALEYUV2RGB_YA(index, c, b1, b2)   REAL_YSCALEYUV2RGB_YA(index, c, b1, b2)
 
#define YSCALEYUV2RGB(index, c)
 
#define REAL_YSCALEYUV2PACKED(index, c)
 
#define YSCALEYUV2PACKED(index, c)   REAL_YSCALEYUV2PACKED(index, c)
 
#define REAL_YSCALEYUV2RGB1(index, c)
 
#define YSCALEYUV2RGB1(index, c)   REAL_YSCALEYUV2RGB1(index, c)
 
#define REAL_YSCALEYUV2RGB1b(index, c)
 
#define YSCALEYUV2RGB1b(index, c)   REAL_YSCALEYUV2RGB1b(index, c)
 
#define REAL_YSCALEYUV2RGB1_ALPHA(index)
 
#define YSCALEYUV2RGB1_ALPHA(index)   REAL_YSCALEYUV2RGB1_ALPHA(index)
 
#define REAL_YSCALEYUV2PACKED1(index, c)
 
#define YSCALEYUV2PACKED1(index, c)   REAL_YSCALEYUV2PACKED1(index, c)
 
#define REAL_YSCALEYUV2PACKED1b(index, c)
 
#define YSCALEYUV2PACKED1b(index, c)   REAL_YSCALEYUV2PACKED1b(index, c)
 

Functions

static void RENAME() yuv2rgb32_X_ar (SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, const int16_t *chrFilter, const int16_t **chrUSrc, const int16_t **chrVSrc, int chrFilterSize, const int16_t **alpSrc, uint8_t *dest, int dstW, int dstY)
 
static void RENAME() yuv2rgb32_X (SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, const int16_t *chrFilter, const int16_t **chrUSrc, const int16_t **chrVSrc, int chrFilterSize, const int16_t **alpSrc, uint8_t *dest, int dstW, int dstY)
 
static void RENAME() yuv2rgb565_X_ar (SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, const int16_t *chrFilter, const int16_t **chrUSrc, const int16_t **chrVSrc, int chrFilterSize, const int16_t **alpSrc, uint8_t *dest, int dstW, int dstY)
 
static void RENAME() yuv2rgb565_X (SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, const int16_t *chrFilter, const int16_t **chrUSrc, const int16_t **chrVSrc, int chrFilterSize, const int16_t **alpSrc, uint8_t *dest, int dstW, int dstY)
 
static void RENAME() yuv2rgb555_X_ar (SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, const int16_t *chrFilter, const int16_t **chrUSrc, const int16_t **chrVSrc, int chrFilterSize, const int16_t **alpSrc, uint8_t *dest, int dstW, int dstY)
 
static void RENAME() yuv2rgb555_X (SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, const int16_t *chrFilter, const int16_t **chrUSrc, const int16_t **chrVSrc, int chrFilterSize, const int16_t **alpSrc, uint8_t *dest, int dstW, int dstY)
 
static void RENAME() yuv2bgr24_X_ar (SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, const int16_t *chrFilter, const int16_t **chrUSrc, const int16_t **chrVSrc, int chrFilterSize, const int16_t **alpSrc, uint8_t *dest, int dstW, int dstY)
 
static void RENAME() yuv2bgr24_X (SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, const int16_t *chrFilter, const int16_t **chrUSrc, const int16_t **chrVSrc, int chrFilterSize, const int16_t **alpSrc, uint8_t *dest, int dstW, int dstY)
 
static void RENAME() yuv2yuyv422_X_ar (SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, const int16_t *chrFilter, const int16_t **chrUSrc, const int16_t **chrVSrc, int chrFilterSize, const int16_t **alpSrc, uint8_t *dest, int dstW, int dstY)
 
static void RENAME() yuv2yuyv422_X (SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, const int16_t *chrFilter, const int16_t **chrUSrc, const int16_t **chrVSrc, int chrFilterSize, const int16_t **alpSrc, uint8_t *dest, int dstW, int dstY)
 
static void RENAME() yuv2rgb32_2 (SwsContext *c, const int16_t *buf[2], const int16_t *ubuf[2], const int16_t *vbuf[2], const int16_t *abuf[2], uint8_t *dest, int dstW, int yalpha, int uvalpha, int y)
 vertical bilinear scale YV12 to RGB More...
 
static void RENAME() yuv2bgr24_2 (SwsContext *c, const int16_t *buf[2], const int16_t *ubuf[2], const int16_t *vbuf[2], const int16_t *abuf[2], uint8_t *dest, int dstW, int yalpha, int uvalpha, int y)
 
static void RENAME() yuv2rgb555_2 (SwsContext *c, const int16_t *buf[2], const int16_t *ubuf[2], const int16_t *vbuf[2], const int16_t *abuf[2], uint8_t *dest, int dstW, int yalpha, int uvalpha, int y)
 
static void RENAME() yuv2rgb565_2 (SwsContext *c, const int16_t *buf[2], const int16_t *ubuf[2], const int16_t *vbuf[2], const int16_t *abuf[2], uint8_t *dest, int dstW, int yalpha, int uvalpha, int y)
 
static void RENAME() yuv2yuyv422_2 (SwsContext *c, const int16_t *buf[2], const int16_t *ubuf[2], const int16_t *vbuf[2], const int16_t *abuf[2], uint8_t *dest, int dstW, int yalpha, int uvalpha, int y)
 
static void RENAME() yuv2rgb32_1 (SwsContext *c, const int16_t *buf0, const int16_t *ubuf[2], const int16_t *vbuf[2], const int16_t *abuf0, uint8_t *dest, int dstW, int uvalpha, int y)
 YV12 to RGB without scaling or interpolating. More...
 
static void RENAME() yuv2bgr24_1 (SwsContext *c, const int16_t *buf0, const int16_t *ubuf[2], const int16_t *vbuf[2], const int16_t *abuf0, uint8_t *dest, int dstW, int uvalpha, int y)
 
static void RENAME() yuv2rgb555_1 (SwsContext *c, const int16_t *buf0, const int16_t *ubuf[2], const int16_t *vbuf[2], const int16_t *abuf0, uint8_t *dest, int dstW, int uvalpha, int y)
 
static void RENAME() yuv2rgb565_1 (SwsContext *c, const int16_t *buf0, const int16_t *ubuf[2], const int16_t *vbuf[2], const int16_t *abuf0, uint8_t *dest, int dstW, int uvalpha, int y)
 
static void RENAME() yuv2yuyv422_1 (SwsContext *c, const int16_t *buf0, const int16_t *ubuf[2], const int16_t *vbuf[2], const int16_t *abuf0, uint8_t *dest, int dstW, int uvalpha, int y)
 
static av_cold void RENAME() sws_init_swscale (SwsContext *c)
 

Macro Definition Documentation

§ PREFETCH

#define PREFETCH   " # nop"

Definition at line 33 of file swscale_template.c.

Referenced by yuv2yuyv422_1().

§ REAL_MOVNTQ

#define REAL_MOVNTQ (   a,
  b 
)    "movq " #a ", " #b " \n\t"

Definition at line 39 of file swscale_template.c.

§ MOVNTQ

#define MOVNTQ (   a,
  b 
)    REAL_MOVNTQ(a,b)

Definition at line 41 of file swscale_template.c.

§ YSCALEYUV2PACKEDX_UV

#define YSCALEYUV2PACKEDX_UV
Value:
__asm__ volatile(\
"xor %%"REG_a", %%"REG_a" \n\t"\
".p2align 4 \n\t"\
"nop \n\t"\
"1: \n\t"\
"lea "CHR_MMX_FILTER_OFFSET"(%0), %%"REG_d" \n\t"\
"mov (%%"REG_d"), %%"REG_S" \n\t"\
"movq "VROUNDER_OFFSET"(%0), %%mm3 \n\t"\
"movq %%mm3, %%mm4 \n\t"\
".p2align 4 \n\t"\
"2: \n\t"\
"movq 8(%%"REG_d"), %%mm0 \n\t" /* filterCoeff */\
"movq (%%"REG_S", %%"REG_a"), %%mm2 \n\t" /* UsrcData */\
"add %6, %%"REG_S" \n\t" \
"movq (%%"REG_S", %%"REG_a"), %%mm5 \n\t" /* VsrcData */\
"add $16, %%"REG_d" \n\t"\
"mov (%%"REG_d"), %%"REG_S" \n\t"\
"pmulhw %%mm0, %%mm2 \n\t"\
"pmulhw %%mm0, %%mm5 \n\t"\
"paddw %%mm2, %%mm3 \n\t"\
"paddw %%mm5, %%mm4 \n\t"\
"test %%"REG_S", %%"REG_S" \n\t"\
" jnz 2b \n\t"\
#define VROUNDER_OFFSET
#define CHR_MMX_FILTER_OFFSET

Definition at line 43 of file swscale_template.c.

§ YSCALEYUV2PACKEDX_YA

#define YSCALEYUV2PACKEDX_YA (   offset,
  coeff,
  src1,
  src2,
  dst1,
  dst2 
)
Value:
"lea "offset"(%0), %%"REG_d" \n\t"\
"mov (%%"REG_d"), %%"REG_S" \n\t"\
"movq "VROUNDER_OFFSET"(%0), "#dst1" \n\t"\
"movq "#dst1", "#dst2" \n\t"\
".p2align 4 \n\t"\
"2: \n\t"\
"movq 8(%%"REG_d"), "#coeff" \n\t" /* filterCoeff */\
"movq (%%"REG_S", %%"REG_a", 2), "#src1" \n\t" /* Y1srcData */\
"movq 8(%%"REG_S", %%"REG_a", 2), "#src2" \n\t" /* Y2srcData */\
"add $16, %%"REG_d" \n\t"\
"mov (%%"REG_d"), %%"REG_S" \n\t"\
"pmulhw "#coeff", "#src1" \n\t"\
"pmulhw "#coeff", "#src2" \n\t"\
"paddw "#src1", "#dst1" \n\t"\
"paddw "#src2", "#dst2" \n\t"\
"test %%"REG_S", %%"REG_S" \n\t"\
" jnz 2b \n\t"\
#define VROUNDER_OFFSET

Definition at line 68 of file swscale_template.c.

Referenced by yuv2rgb32_X().

§ YSCALEYUV2PACKEDX

#define YSCALEYUV2PACKEDX
Value:
YSCALEYUV2PACKEDX_YA(LUM_MMX_FILTER_OFFSET,%%mm0,%%mm2,%%mm5,%%mm1,%%mm7) \
#define YSCALEYUV2PACKEDX_YA(offset, coeff, src1, src2, dst1, dst2)
#define LUM_MMX_FILTER_OFFSET

Definition at line 87 of file swscale_template.c.

Referenced by yuv2bgr24_X(), yuv2rgb32_X(), yuv2rgb555_X(), yuv2rgb565_X(), and yuv2yuyv422_X().

§ YSCALEYUV2PACKEDX_END

#define YSCALEYUV2PACKEDX_END
Value:
:: "r" (&c->redDither), \
"m" (dummy), "m" (dummy), "m" (dummy),\
"r" (dest), "m" (dstW_reg), "m"(uv_off) \
: "%"REG_a, "%"REG_d, "%"REG_S \
);

Definition at line 91 of file swscale_template.c.

Referenced by yuv2rgb32_X(), yuv2rgb32_X_ar(), yuv2rgb555_X(), yuv2rgb555_X_ar(), yuv2rgb565_X(), yuv2rgb565_X_ar(), yuv2yuyv422_X(), and yuv2yuyv422_X_ar().

§ YSCALEYUV2PACKEDX_ACCURATE_UV

#define YSCALEYUV2PACKEDX_ACCURATE_UV

Definition at line 98 of file swscale_template.c.

§ YSCALEYUV2PACKEDX_ACCURATE_YA

#define YSCALEYUV2PACKEDX_ACCURATE_YA (   offset)

Definition at line 150 of file swscale_template.c.

Referenced by yuv2rgb32_X_ar().

§ YSCALEYUV2PACKEDX_ACCURATE

#define YSCALEYUV2PACKEDX_ACCURATE

§ YSCALEYUV2RGBX

#define YSCALEYUV2RGBX

§ REAL_WRITEBGR32

#define REAL_WRITEBGR32 (   dst,
  dstw,
  index,
  b,
  g,
  r,
  a,
  q0,
  q2,
  q3,
 
)
Value:
"movq "#b", "#q2" \n\t" /* B */\
"movq "#r", "#t" \n\t" /* R */\
"punpcklbw "#g", "#b" \n\t" /* GBGBGBGB 0 */\
"punpcklbw "#a", "#r" \n\t" /* ARARARAR 0 */\
"punpckhbw "#g", "#q2" \n\t" /* GBGBGBGB 2 */\
"punpckhbw "#a", "#t" \n\t" /* ARARARAR 2 */\
"movq "#b", "#q0" \n\t" /* GBGBGBGB 0 */\
"movq "#q2", "#q3" \n\t" /* GBGBGBGB 2 */\
"punpcklwd "#r", "#q0" \n\t" /* ARGBARGB 0 */\
"punpckhwd "#r", "#b" \n\t" /* ARGBARGB 1 */\
"punpcklwd "#t", "#q2" \n\t" /* ARGBARGB 2 */\
"punpckhwd "#t", "#q3" \n\t" /* ARGBARGB 3 */\
MOVNTQ( q0, (dst, index, 4))\
MOVNTQ( b, 8(dst, index, 4))\
MOVNTQ( q2, 16(dst, index, 4))\
MOVNTQ( q3, 24(dst, index, 4))\
\
"add $8, "#index" \n\t"\
"cmp "#dstw", "#index" \n\t"\
" jb 1b \n\t"
#define MOVNTQ(a, b)
#define b
Definition: input.c:52
#define r
Definition: input.c:51
g
Definition: yuv2rgb.c:535
int index
Definition: gxfenc.c:72

Definition at line 235 of file swscale_template.c.

§ WRITEBGR32

#define WRITEBGR32 (   dst,
  dstw,
  index,
  b,
  g,
  r,
  a,
  q0,
  q2,
  q3,
 
)    REAL_WRITEBGR32(dst, dstw, index, b, g, r, a, q0, q2, q3, t)

Definition at line 257 of file swscale_template.c.

Referenced by yuv2rgb32_1(), yuv2rgb32_2(), yuv2rgb32_X(), and yuv2rgb32_X_ar().

§ REAL_WRITERGB16

#define REAL_WRITERGB16 (   dst,
  dstw,
  index 
)
Value:
"pand "MANGLE(bF8)", %%mm2 \n\t" /* B */\
"pand "MANGLE(bFC)", %%mm4 \n\t" /* G */\
"pand "MANGLE(bF8)", %%mm5 \n\t" /* R */\
"psrlq $3, %%mm2 \n\t"\
\
"movq %%mm2, %%mm1 \n\t"\
"movq %%mm4, %%mm3 \n\t"\
\
"punpcklbw %%mm7, %%mm3 \n\t"\
"punpcklbw %%mm5, %%mm2 \n\t"\
"punpckhbw %%mm7, %%mm4 \n\t"\
"punpckhbw %%mm5, %%mm1 \n\t"\
\
"psllq $3, %%mm3 \n\t"\
"psllq $3, %%mm4 \n\t"\
\
"por %%mm3, %%mm2 \n\t"\
"por %%mm4, %%mm1 \n\t"\
MOVNTQ(%%mm2, (dst, index, 2))\
MOVNTQ(%%mm1, 8(dst, index, 2))\
\
"add $8, "#index" \n\t"\
"cmp "#dstw", "#index" \n\t"\
" jb 1b \n\t"
#define MOVNTQ(a, b)
#define MANGLE(a)
Definition: asm.h:110
int index
Definition: gxfenc.c:72

Definition at line 321 of file swscale_template.c.

§ WRITERGB16

#define WRITERGB16 (   dst,
  dstw,
  index 
)    REAL_WRITERGB16(dst, dstw, index)

Definition at line 347 of file swscale_template.c.

Referenced by yuv2rgb565_1(), yuv2rgb565_2(), yuv2rgb565_X(), and yuv2rgb565_X_ar().

§ REAL_WRITERGB15

#define REAL_WRITERGB15 (   dst,
  dstw,
  index 
)
Value:
"pand "MANGLE(bF8)", %%mm2 \n\t" /* B */\
"pand "MANGLE(bF8)", %%mm4 \n\t" /* G */\
"pand "MANGLE(bF8)", %%mm5 \n\t" /* R */\
"psrlq $3, %%mm2 \n\t"\
"psrlq $1, %%mm5 \n\t"\
\
"movq %%mm2, %%mm1 \n\t"\
"movq %%mm4, %%mm3 \n\t"\
\
"punpcklbw %%mm7, %%mm3 \n\t"\
"punpcklbw %%mm5, %%mm2 \n\t"\
"punpckhbw %%mm7, %%mm4 \n\t"\
"punpckhbw %%mm5, %%mm1 \n\t"\
\
"psllq $2, %%mm3 \n\t"\
"psllq $2, %%mm4 \n\t"\
\
"por %%mm3, %%mm2 \n\t"\
"por %%mm4, %%mm1 \n\t"\
MOVNTQ(%%mm2, (dst, index, 2))\
MOVNTQ(%%mm1, 8(dst, index, 2))\
\
"add $8, "#index" \n\t"\
"cmp "#dstw", "#index" \n\t"\
" jb 1b \n\t"
#define MOVNTQ(a, b)
#define MANGLE(a)
Definition: asm.h:110
int index
Definition: gxfenc.c:72

Definition at line 397 of file swscale_template.c.

§ WRITERGB15

#define WRITERGB15 (   dst,
  dstw,
  index 
)    REAL_WRITERGB15(dst, dstw, index)

Definition at line 424 of file swscale_template.c.

Referenced by yuv2rgb555_1(), yuv2rgb555_2(), yuv2rgb555_X(), and yuv2rgb555_X_ar().

§ WRITEBGR24MMX

#define WRITEBGR24MMX (   dst,
  dstw,
  index 
)

Definition at line 474 of file swscale_template.c.

§ WRITEBGR24MMXEXT

#define WRITEBGR24MMXEXT (   dst,
  dstw,
  index 
)

Definition at line 527 of file swscale_template.c.

§ WRITEBGR24

#define WRITEBGR24 (   dst,
  dstw,
  index 
)    WRITEBGR24MMX(dst, dstw, index)

Definition at line 580 of file swscale_template.c.

Referenced by yuv2bgr24_1(), yuv2bgr24_2(), yuv2bgr24_X(), and yuv2bgr24_X_ar().

§ REAL_WRITEYUY2

#define REAL_WRITEYUY2 (   dst,
  dstw,
  index 
)
Value:
"packuswb %%mm3, %%mm3 \n\t"\
"packuswb %%mm4, %%mm4 \n\t"\
"packuswb %%mm7, %%mm1 \n\t"\
"punpcklbw %%mm4, %%mm3 \n\t"\
"movq %%mm1, %%mm7 \n\t"\
"punpcklbw %%mm3, %%mm1 \n\t"\
"punpckhbw %%mm3, %%mm7 \n\t"\
MOVNTQ(%%mm1, (dst, index, 2))\
MOVNTQ(%%mm7, 8(dst, index, 2))\
\
"add $8, "#index" \n\t"\
"cmp "#dstw", "#index" \n\t"\
" jb 1b \n\t"
#define MOVNTQ(a, b)
int index
Definition: gxfenc.c:72

Definition at line 631 of file swscale_template.c.

§ WRITEYUY2

#define WRITEYUY2 (   dst,
  dstw,
  index 
)    REAL_WRITEYUY2(dst, dstw, index)

Definition at line 646 of file swscale_template.c.

Referenced by yuv2yuyv422_1(), yuv2yuyv422_2(), yuv2yuyv422_X(), and yuv2yuyv422_X_ar().

§ REAL_YSCALEYUV2RGB_UV

#define REAL_YSCALEYUV2RGB_UV (   index,
 
)
Value:
"xor "#index", "#index" \n\t"\
".p2align 4 \n\t"\
"1: \n\t"\
"movq (%2, "#index"), %%mm2 \n\t" /* uvbuf0[eax]*/\
"movq (%3, "#index"), %%mm3 \n\t" /* uvbuf1[eax]*/\
"add "UV_OFF_BYTE"("#c"), "#index" \n\t" \
"movq (%2, "#index"), %%mm5 \n\t" /* uvbuf0[eax+2048]*/\
"movq (%3, "#index"), %%mm4 \n\t" /* uvbuf1[eax+2048]*/\
"sub "UV_OFF_BYTE"("#c"), "#index" \n\t" \
"psubw %%mm3, %%mm2 \n\t" /* uvbuf0[eax] - uvbuf1[eax]*/\
"psubw %%mm4, %%mm5 \n\t" /* uvbuf0[eax+2048] - uvbuf1[eax+2048]*/\
"movq "CHR_MMX_FILTER_OFFSET"+8("#c"), %%mm0 \n\t"\
"pmulhw %%mm0, %%mm2 \n\t" /* (uvbuf0[eax] - uvbuf1[eax])uvalpha1>>16*/\
"pmulhw %%mm0, %%mm5 \n\t" /* (uvbuf0[eax+2048] - uvbuf1[eax+2048])uvalpha1>>16*/\
"psraw $4, %%mm3 \n\t" /* uvbuf0[eax] - uvbuf1[eax] >>4*/\
"psraw $4, %%mm4 \n\t" /* uvbuf0[eax+2048] - uvbuf1[eax+2048] >>4*/\
"paddw %%mm2, %%mm3 \n\t" /* uvbuf0[eax]uvalpha1 - uvbuf1[eax](1-uvalpha1)*/\
"paddw %%mm5, %%mm4 \n\t" /* uvbuf0[eax+2048]uvalpha1 - uvbuf1[eax+2048](1-uvalpha1)*/\
"psubw "U_OFFSET"("#c"), %%mm3 \n\t" /* (U-128)8*/\
"psubw "V_OFFSET"("#c"), %%mm4 \n\t" /* (V-128)8*/\
"movq %%mm3, %%mm2 \n\t" /* (U-128)8*/\
"movq %%mm4, %%mm5 \n\t" /* (V-128)8*/\
"pmulhw "UG_COEFF"("#c"), %%mm3 \n\t"\
"pmulhw "VG_COEFF"("#c"), %%mm4 \n\t"\
/* mm2=(U-128)8, mm3=ug, mm4=vg mm5=(V-128)8 */\
#define V_OFFSET
#define UG_COEFF
#define CHR_MMX_FILTER_OFFSET
#define UV_OFF_BYTE
#define U_OFFSET
int index
Definition: gxfenc.c:72
#define VG_COEFF

Definition at line 690 of file swscale_template.c.

§ REAL_YSCALEYUV2RGB_YA

#define REAL_YSCALEYUV2RGB_YA (   index,
  c,
  b1,
  b2 
)
Value:
"movq ("#b1", "#index", 2), %%mm0 \n\t" /*buf0[eax]*/\
"movq ("#b2", "#index", 2), %%mm1 \n\t" /*buf1[eax]*/\
"movq 8("#b1", "#index", 2), %%mm6 \n\t" /*buf0[eax]*/\
"movq 8("#b2", "#index", 2), %%mm7 \n\t" /*buf1[eax]*/\
"psubw %%mm1, %%mm0 \n\t" /* buf0[eax] - buf1[eax]*/\
"psubw %%mm7, %%mm6 \n\t" /* buf0[eax] - buf1[eax]*/\
"pmulhw "LUM_MMX_FILTER_OFFSET"+8("#c"), %%mm0 \n\t" /* (buf0[eax] - buf1[eax])yalpha1>>16*/\
"pmulhw "LUM_MMX_FILTER_OFFSET"+8("#c"), %%mm6 \n\t" /* (buf0[eax] - buf1[eax])yalpha1>>16*/\
"psraw $4, %%mm1 \n\t" /* buf0[eax] - buf1[eax] >>4*/\
"psraw $4, %%mm7 \n\t" /* buf0[eax] - buf1[eax] >>4*/\
"paddw %%mm0, %%mm1 \n\t" /* buf0[eax]yalpha1 + buf1[eax](1-yalpha1) >>16*/\
"paddw %%mm6, %%mm7 \n\t" /* buf0[eax]yalpha1 + buf1[eax](1-yalpha1) >>16*/\
int index
Definition: gxfenc.c:72
#define LUM_MMX_FILTER_OFFSET

Definition at line 717 of file swscale_template.c.

§ REAL_YSCALEYUV2RGB_COEFF

#define REAL_YSCALEYUV2RGB_COEFF (   c)
Value:
"pmulhw "UB_COEFF"("#c"), %%mm2 \n\t"\
"pmulhw "VR_COEFF"("#c"), %%mm5 \n\t"\
"psubw "Y_OFFSET"("#c"), %%mm1 \n\t" /* 8(Y-16)*/\
"psubw "Y_OFFSET"("#c"), %%mm7 \n\t" /* 8(Y-16)*/\
"pmulhw "Y_COEFF"("#c"), %%mm1 \n\t"\
"pmulhw "Y_COEFF"("#c"), %%mm7 \n\t"\
/* mm1= Y1, mm2=ub, mm3=ug, mm4=vg mm5=vr, mm7=Y2 */\
"paddw %%mm3, %%mm4 \n\t"\
"movq %%mm2, %%mm0 \n\t"\
"movq %%mm5, %%mm6 \n\t"\
"movq %%mm4, %%mm3 \n\t"\
"punpcklwd %%mm2, %%mm2 \n\t"\
"punpcklwd %%mm5, %%mm5 \n\t"\
"punpcklwd %%mm4, %%mm4 \n\t"\
"paddw %%mm1, %%mm2 \n\t"\
"paddw %%mm1, %%mm5 \n\t"\
"paddw %%mm1, %%mm4 \n\t"\
"punpckhwd %%mm0, %%mm0 \n\t"\
"punpckhwd %%mm6, %%mm6 \n\t"\
"punpckhwd %%mm3, %%mm3 \n\t"\
"paddw %%mm7, %%mm0 \n\t"\
"paddw %%mm7, %%mm6 \n\t"\
"paddw %%mm7, %%mm3 \n\t"\
/* mm0=B1, mm2=B2, mm3=G2, mm4=G1, mm5=R1, mm6=R2 */\
"packuswb %%mm0, %%mm2 \n\t"\
"packuswb %%mm6, %%mm5 \n\t"\
"packuswb %%mm3, %%mm4 \n\t"\
#define UB_COEFF
#define Y_COEFF
#define Y_OFFSET
#define VR_COEFF

Definition at line 731 of file swscale_template.c.

§ YSCALEYUV2RGB_YA

#define YSCALEYUV2RGB_YA (   index,
  c,
  b1,
  b2 
)    REAL_YSCALEYUV2RGB_YA(index, c, b1, b2)

Definition at line 760 of file swscale_template.c.

Referenced by yuv2rgb32_2().

§ YSCALEYUV2RGB

#define YSCALEYUV2RGB (   index,
 
)
Value:
REAL_YSCALEYUV2RGB_YA(index, c, %0, %1) \
REAL_YSCALEYUV2RGB_COEFF(c)
int index
Definition: gxfenc.c:72
#define REAL_YSCALEYUV2RGB_UV(index, c)

Definition at line 762 of file swscale_template.c.

Referenced by yuv2bgr24_2(), yuv2rgb32_2(), yuv2rgb555_2(), and yuv2rgb565_2().

§ REAL_YSCALEYUV2PACKED

#define REAL_YSCALEYUV2PACKED (   index,
 
)

Definition at line 915 of file swscale_template.c.

§ YSCALEYUV2PACKED

#define YSCALEYUV2PACKED (   index,
 
)    REAL_YSCALEYUV2PACKED(index, c)

Definition at line 953 of file swscale_template.c.

Referenced by yuv2yuyv422_2().

§ REAL_YSCALEYUV2RGB1

#define REAL_YSCALEYUV2RGB1 (   index,
 
)

Definition at line 977 of file swscale_template.c.

§ YSCALEYUV2RGB1

#define YSCALEYUV2RGB1 (   index,
 
)    REAL_YSCALEYUV2RGB1(index, c)

Definition at line 1026 of file swscale_template.c.

Referenced by yuv2bgr24_1(), yuv2rgb32_1(), yuv2rgb555_1(), and yuv2rgb565_1().

§ REAL_YSCALEYUV2RGB1b

#define REAL_YSCALEYUV2RGB1b (   index,
 
)

Definition at line 1029 of file swscale_template.c.

§ YSCALEYUV2RGB1b

#define YSCALEYUV2RGB1b (   index,
 
)    REAL_YSCALEYUV2RGB1b(index, c)

Definition at line 1082 of file swscale_template.c.

Referenced by yuv2bgr24_1(), yuv2rgb32_1(), yuv2rgb555_1(), and yuv2rgb565_1().

§ REAL_YSCALEYUV2RGB1_ALPHA

#define REAL_YSCALEYUV2RGB1_ALPHA (   index)
Value:
"movq (%1, "#index", 2), %%mm7 \n\t" /* abuf0[index ] */\
"movq 8(%1, "#index", 2), %%mm1 \n\t" /* abuf0[index+4] */\
"psraw $7, %%mm7 \n\t" /* abuf0[index ] >>7 */\
"psraw $7, %%mm1 \n\t" /* abuf0[index+4] >>7 */\
"packuswb %%mm1, %%mm7 \n\t"
int index
Definition: gxfenc.c:72

Definition at line 1084 of file swscale_template.c.

§ YSCALEYUV2RGB1_ALPHA

#define YSCALEYUV2RGB1_ALPHA (   index)    REAL_YSCALEYUV2RGB1_ALPHA(index)

Definition at line 1090 of file swscale_template.c.

Referenced by yuv2rgb32_1().

§ REAL_YSCALEYUV2PACKED1

#define REAL_YSCALEYUV2PACKED1 (   index,
 
)
Value:
"xor "#index", "#index" \n\t"\
".p2align 4 \n\t"\
"1: \n\t"\
"movq (%2, "#index"), %%mm3 \n\t" /* uvbuf0[eax]*/\
"add "UV_OFF_BYTE"("#c"), "#index" \n\t" \
"movq (%2, "#index"), %%mm4 \n\t" /* uvbuf0[eax+2048]*/\
"sub "UV_OFF_BYTE"("#c"), "#index" \n\t" \
"psraw $7, %%mm3 \n\t" \
"psraw $7, %%mm4 \n\t" \
"movq (%0, "#index", 2), %%mm1 \n\t" /*buf0[eax]*/\
"movq 8(%0, "#index", 2), %%mm7 \n\t" /*buf0[eax]*/\
"psraw $7, %%mm1 \n\t" \
"psraw $7, %%mm7 \n\t" \
#define UV_OFF_BYTE
int index
Definition: gxfenc.c:72

Definition at line 1305 of file swscale_template.c.

§ YSCALEYUV2PACKED1

#define YSCALEYUV2PACKED1 (   index,
 
)    REAL_YSCALEYUV2PACKED1(index, c)

Definition at line 1320 of file swscale_template.c.

Referenced by yuv2yuyv422_1().

§ REAL_YSCALEYUV2PACKED1b

#define REAL_YSCALEYUV2PACKED1b (   index,
 
)
Value:
"xor "#index", "#index" \n\t"\
".p2align 4 \n\t"\
"1: \n\t"\
"movq (%2, "#index"), %%mm2 \n\t" /* uvbuf0[eax]*/\
"movq (%3, "#index"), %%mm3 \n\t" /* uvbuf1[eax]*/\
"add "UV_OFF_BYTE"("#c"), "#index" \n\t" \
"movq (%2, "#index"), %%mm5 \n\t" /* uvbuf0[eax+2048]*/\
"movq (%3, "#index"), %%mm4 \n\t" /* uvbuf1[eax+2048]*/\
"sub "UV_OFF_BYTE"("#c"), "#index" \n\t" \
"paddw %%mm2, %%mm3 \n\t" /* uvbuf0[eax] + uvbuf1[eax]*/\
"paddw %%mm5, %%mm4 \n\t" /* uvbuf0[eax+2048] + uvbuf1[eax+2048]*/\
"psrlw $8, %%mm3 \n\t" \
"psrlw $8, %%mm4 \n\t" \
"movq (%0, "#index", 2), %%mm1 \n\t" /*buf0[eax]*/\
"movq 8(%0, "#index", 2), %%mm7 \n\t" /*buf0[eax]*/\
"psraw $7, %%mm1 \n\t" \
"psraw $7, %%mm7 \n\t"
#define UV_OFF_BYTE
int index
Definition: gxfenc.c:72

Definition at line 1322 of file swscale_template.c.

§ YSCALEYUV2PACKED1b

#define YSCALEYUV2PACKED1b (   index,
 
)    REAL_YSCALEYUV2PACKED1b(index, c)

Definition at line 1340 of file swscale_template.c.

Referenced by yuv2yuyv422_1().

Function Documentation

§ yuv2rgb32_X_ar()

static void RENAME() yuv2rgb32_X_ar ( SwsContext c,
const int16_t *  lumFilter,
const int16_t **  lumSrc,
int  lumFilterSize,
const int16_t *  chrFilter,
const int16_t **  chrUSrc,
const int16_t **  chrVSrc,
int  chrFilterSize,
const int16_t **  alpSrc,
uint8_t dest,
int  dstW,
int  dstY 
)
static

Definition at line 259 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2rgb32_X()

static void RENAME() yuv2rgb32_X ( SwsContext c,
const int16_t *  lumFilter,
const int16_t **  lumSrc,
int  lumFilterSize,
const int16_t *  chrFilter,
const int16_t **  chrUSrc,
const int16_t **  chrVSrc,
int  chrFilterSize,
const int16_t **  alpSrc,
uint8_t dest,
int  dstW,
int  dstY 
)
static

Definition at line 292 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2rgb565_X_ar()

static void RENAME() yuv2rgb565_X_ar ( SwsContext c,
const int16_t *  lumFilter,
const int16_t **  lumSrc,
int  lumFilterSize,
const int16_t *  chrFilter,
const int16_t **  chrUSrc,
const int16_t **  chrVSrc,
int  chrFilterSize,
const int16_t **  alpSrc,
uint8_t dest,
int  dstW,
int  dstY 
)
static

Definition at line 349 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2rgb565_X()

static void RENAME() yuv2rgb565_X ( SwsContext c,
const int16_t *  lumFilter,
const int16_t **  lumSrc,
int  lumFilterSize,
const int16_t *  chrFilter,
const int16_t **  chrUSrc,
const int16_t **  chrVSrc,
int  chrFilterSize,
const int16_t **  alpSrc,
uint8_t dest,
int  dstW,
int  dstY 
)
static

Definition at line 373 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2rgb555_X_ar()

static void RENAME() yuv2rgb555_X_ar ( SwsContext c,
const int16_t *  lumFilter,
const int16_t **  lumSrc,
int  lumFilterSize,
const int16_t *  chrFilter,
const int16_t **  chrUSrc,
const int16_t **  chrVSrc,
int  chrFilterSize,
const int16_t **  alpSrc,
uint8_t dest,
int  dstW,
int  dstY 
)
static

Definition at line 426 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2rgb555_X()

static void RENAME() yuv2rgb555_X ( SwsContext c,
const int16_t *  lumFilter,
const int16_t **  lumSrc,
int  lumFilterSize,
const int16_t *  chrFilter,
const int16_t **  chrUSrc,
const int16_t **  chrVSrc,
int  chrFilterSize,
const int16_t **  alpSrc,
uint8_t dest,
int  dstW,
int  dstY 
)
static

Definition at line 450 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2bgr24_X_ar()

static void RENAME() yuv2bgr24_X_ar ( SwsContext c,
const int16_t *  lumFilter,
const int16_t **  lumSrc,
int  lumFilterSize,
const int16_t *  chrFilter,
const int16_t **  chrUSrc,
const int16_t **  chrVSrc,
int  chrFilterSize,
const int16_t **  alpSrc,
uint8_t dest,
int  dstW,
int  dstY 
)
static

Definition at line 583 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2bgr24_X()

static void RENAME() yuv2bgr24_X ( SwsContext c,
const int16_t *  lumFilter,
const int16_t **  lumSrc,
int  lumFilterSize,
const int16_t *  chrFilter,
const int16_t **  chrUSrc,
const int16_t **  chrVSrc,
int  chrFilterSize,
const int16_t **  alpSrc,
uint8_t dest,
int  dstW,
int  dstY 
)
static

Definition at line 607 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2yuyv422_X_ar()

static void RENAME() yuv2yuyv422_X_ar ( SwsContext c,
const int16_t *  lumFilter,
const int16_t **  lumSrc,
int  lumFilterSize,
const int16_t *  chrFilter,
const int16_t **  chrUSrc,
const int16_t **  chrVSrc,
int  chrFilterSize,
const int16_t **  alpSrc,
uint8_t dest,
int  dstW,
int  dstY 
)
static

Definition at line 648 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2yuyv422_X()

static void RENAME() yuv2yuyv422_X ( SwsContext c,
const int16_t *  lumFilter,
const int16_t **  lumSrc,
int  lumFilterSize,
const int16_t *  chrFilter,
const int16_t **  chrUSrc,
const int16_t **  chrVSrc,
int  chrFilterSize,
const int16_t **  alpSrc,
uint8_t dest,
int  dstW,
int  dstY 
)
static

Definition at line 669 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2rgb32_2()

static void RENAME() yuv2rgb32_2 ( SwsContext c,
const int16_t *  buf[2],
const int16_t *  ubuf[2],
const int16_t *  vbuf[2],
const int16_t *  abuf[2],
uint8_t dest,
int  dstW,
int  yalpha,
int  uvalpha,
int  y 
)
static

vertical bilinear scale YV12 to RGB

Definition at line 770 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2bgr24_2()

static void RENAME() yuv2bgr24_2 ( SwsContext c,
const int16_t *  buf[2],
const int16_t *  ubuf[2],
const int16_t *  vbuf[2],
const int16_t *  abuf[2],
uint8_t dest,
int  dstW,
int  yalpha,
int  uvalpha,
int  y 
)
static

Definition at line 834 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2rgb555_2()

static void RENAME() yuv2rgb555_2 ( SwsContext c,
const int16_t *  buf[2],
const int16_t *  ubuf[2],
const int16_t *  vbuf[2],
const int16_t *  abuf[2],
uint8_t dest,
int  dstW,
int  yalpha,
int  uvalpha,
int  y 
)
static

Definition at line 857 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2rgb565_2()

static void RENAME() yuv2rgb565_2 ( SwsContext c,
const int16_t *  buf[2],
const int16_t *  ubuf[2],
const int16_t *  vbuf[2],
const int16_t *  abuf[2],
uint8_t dest,
int  dstW,
int  yalpha,
int  uvalpha,
int  y 
)
static

Definition at line 886 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2yuyv422_2()

static void RENAME() yuv2yuyv422_2 ( SwsContext c,
const int16_t *  buf[2],
const int16_t *  ubuf[2],
const int16_t *  vbuf[2],
const int16_t *  abuf[2],
uint8_t dest,
int  dstW,
int  yalpha,
int  uvalpha,
int  y 
)
static

Definition at line 955 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2rgb32_1()

static void RENAME() yuv2rgb32_1 ( SwsContext c,
const int16_t *  buf0,
const int16_t *  ubuf[2],
const int16_t *  vbuf[2],
const int16_t *  abuf0,
uint8_t dest,
int  dstW,
int  uvalpha,
int  y 
)
static

YV12 to RGB without scaling or interpolating.

Definition at line 1095 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2bgr24_1()

static void RENAME() yuv2bgr24_1 ( SwsContext c,
const int16_t *  buf0,
const int16_t *  ubuf[2],
const int16_t *  vbuf[2],
const int16_t *  abuf0,
uint8_t dest,
int  dstW,
int  uvalpha,
int  y 
)
static

Definition at line 1164 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2rgb555_1()

static void RENAME() yuv2rgb555_1 ( SwsContext c,
const int16_t *  buf0,
const int16_t *  ubuf[2],
const int16_t *  vbuf[2],
const int16_t *  abuf0,
uint8_t dest,
int  dstW,
int  uvalpha,
int  y 
)
static

Definition at line 1203 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2rgb565_1()

static void RENAME() yuv2rgb565_1 ( SwsContext c,
const int16_t *  buf0,
const int16_t *  ubuf[2],
const int16_t *  vbuf[2],
const int16_t *  abuf0,
uint8_t dest,
int  dstW,
int  uvalpha,
int  y 
)
static

Definition at line 1254 of file swscale_template.c.

Referenced by sws_init_swscale().

§ yuv2yuyv422_1()

static void RENAME() yuv2yuyv422_1 ( SwsContext c,
const int16_t *  buf0,
const int16_t *  ubuf[2],
const int16_t *  vbuf[2],
const int16_t *  abuf0,
uint8_t dest,
int  dstW,
int  uvalpha,
int  y 
)
static

Definition at line 1342 of file swscale_template.c.

Referenced by sws_init_swscale().

§ sws_init_swscale()

static av_cold void RENAME() sws_init_swscale ( SwsContext c)
static

Definition at line 1563 of file swscale_template.c.