FFmpeg
Loading...
Searching...
No Matches
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 REAL_MOVNTQ(a, b)
 
#define 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)
 
#define REAL_WRITERGB16(dst, dstw, index)
 
#define WRITERGB16(dst, dstw, index)
 
#define REAL_WRITERGB15(dst, dstw, index)
 
#define WRITERGB15(dst, dstw, index)
 
#define WRITEBGR24MMXEXT(dst, dstw, index)
 
#define WRITEBGR24(dst, dstw, index)
 
#define REAL_WRITEYUY2(dst, dstw, index)
 
#define 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)
 
#define YSCALEYUV2RGB(index, c)
 
#define REAL_YSCALEYUV2PACKED(index, c)
 
#define YSCALEYUV2PACKED(index, c)
 
#define REAL_YSCALEYUV2RGB1(index, c)
 
#define YSCALEYUV2RGB1(index, c)
 
#define REAL_YSCALEYUV2RGB1b(index, c)
 
#define YSCALEYUV2RGB1b(index, c)
 
#define REAL_YSCALEYUV2RGB1_ALPHA(index)
 
#define YSCALEYUV2RGB1_ALPHA(index)
 
#define REAL_YSCALEYUV2PACKED1(index, c)
 
#define YSCALEYUV2PACKED1(index, c)
 
#define REAL_YSCALEYUV2PACKED1b(index, c)
 
#define YSCALEYUV2PACKED1b(index, c)
 

Functions

static void yuv2rgb32_X_ar_TMPL (SwsInternal *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 yuv2rgb32_X_TMPL (SwsInternal *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 yuv2bgr32_X_TMPL (SwsInternal *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 yuv2rgb565_X_ar_TMPL (SwsInternal *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 yuv2rgb565_X_TMPL (SwsInternal *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 yuv2rgb555_X_ar_TMPL (SwsInternal *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 yuv2rgb555_X_TMPL (SwsInternal *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 yuv2yuyv422_X_ar_TMPL (SwsInternal *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 yuv2yuyv422_X_TMPL (SwsInternal *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 yuv2rgb32_2_TMPL (SwsInternal *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
 
static void yuv2bgr24_2_TMPL (SwsInternal *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 yuv2rgb555_2_TMPL (SwsInternal *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 yuv2rgb565_2_TMPL (SwsInternal *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 yuv2yuyv422_2_TMPL (SwsInternal *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 yuv2rgb32_1_TMPL (SwsInternal *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.
 
static void yuv2bgr24_1_TMPL (SwsInternal *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 yuv2rgb555_1_TMPL (SwsInternal *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 yuv2rgb565_1_TMPL (SwsInternal *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 yuv2yuyv422_1_TMPL (SwsInternal *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)
 

Macro Definition Documentation

◆ REAL_MOVNTQ

#define REAL_MOVNTQ ( a,
b )
Value:
"movntq " #a ", " #b " \n\t"
int a
#define b
Definition input.c:43

Definition at line 30 of file swscale_template.c.

◆ MOVNTQ

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

Definition at line 31 of file swscale_template.c.

◆ YSCALEYUV2PACKEDX_UV

#define YSCALEYUV2PACKEDX_UV
Value:
__asm__ volatile(\
"xor %%"FF_REG_a", %%"FF_REG_a" \n\t"\
".p2align 4 \n\t"\
"nop \n\t"\
"1: \n\t"\
"lea "CHR_MMX_FILTER_OFFSET"(%0), %%"FF_REG_d" \n\t"\
"mov (%%"FF_REG_d"), %%"FF_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(%%"FF_REG_d"), %%mm0 \n\t" /* filterCoeff */\
"movq (%%"FF_REG_S", %%"FF_REG_a"), %%mm2 \n\t" /* UsrcData */\
"add %6, %%"FF_REG_S" \n\t" \
"movq (%%"FF_REG_S", %%"FF_REG_a"), %%mm5 \n\t" /* VsrcData */\
"add $16, %%"FF_REG_d" \n\t"\
"mov (%%"FF_REG_d"), %%"FF_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 %%"FF_REG_S", %%"FF_REG_S" \n\t"\
" jnz 2b \n\t"\
__asm__(".macro parse_r var r\n\t" "\\var = -1\n\t" _IFC_REG(0) _IFC_REG(1) _IFC_REG(2) _IFC_REG(3) _IFC_REG(4) _IFC_REG(5) _IFC_REG(6) _IFC_REG(7) _IFC_REG(8) _IFC_REG(9) _IFC_REG(10) _IFC_REG(11) _IFC_REG(12) _IFC_REG(13) _IFC_REG(14) _IFC_REG(15) _IFC_REG(16) _IFC_REG(17) _IFC_REG(18) _IFC_REG(19) _IFC_REG(20) _IFC_REG(21) _IFC_REG(22) _IFC_REG(23) _IFC_REG(24) _IFC_REG(25) _IFC_REG(26) _IFC_REG(27) _IFC_REG(28) _IFC_REG(29) _IFC_REG(30) _IFC_REG(31) ".iflt \\var\n\t" ".error \"Unable to parse register name \\r\"\n\t" ".endif\n\t" ".endm")
#define CHR_MMX_FILTER_OFFSET
#define VROUNDER_OFFSET

Definition at line 33 of file swscale_template.c.

◆ YSCALEYUV2PACKEDX_YA

#define YSCALEYUV2PACKEDX_YA ( offset,
coeff,
src1,
src2,
dst1,
dst2 )
Value:
"lea "offset"(%0), %%"FF_REG_d" \n\t"\
"mov (%%"FF_REG_d"), %%"FF_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(%%"FF_REG_d"), "#coeff" \n\t" /* filterCoeff */\
"movq (%%"FF_REG_S", %%"FF_REG_a", 2), "#src1" \n\t" /* Y1srcData */\
"movq 8(%%"FF_REG_S", %%"FF_REG_a", 2), "#src2" \n\t" /* Y2srcData */\
"add $16, %%"FF_REG_d" \n\t"\
"mov (%%"FF_REG_d"), %%"FF_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 %%"FF_REG_S", %%"FF_REG_S" \n\t"\
" jnz 2b \n\t"\
const pixel * src2
unsigned offset
Definition libaomenc.c:763
#define src1
Definition h264pred.c:141
static const double coeff[2][5]

Definition at line 58 of file swscale_template.c.

Referenced by yuv2bgr32_X_TMPL(), and yuv2rgb32_X_TMPL().

◆ YSCALEYUV2PACKEDX

#define YSCALEYUV2PACKEDX
Value:
YSCALEYUV2PACKEDX_UV \
YSCALEYUV2PACKEDX_YA(LUM_MMX_FILTER_OFFSET,%%mm0,%%mm2,%%mm5,%%mm1,%%mm7) \
#define LUM_MMX_FILTER_OFFSET

Definition at line 77 of file swscale_template.c.

Referenced by yuv2bgr32_X_TMPL(), yuv2rgb32_X_TMPL(), yuv2rgb555_X_TMPL(), yuv2rgb565_X_TMPL(), and yuv2yuyv422_X_TMPL().

◆ YSCALEYUV2PACKEDX_END

#define YSCALEYUV2PACKEDX_END
Value:
:: "r" (&c->redDither), \
"m" (dummy), "m" (dummy), "m" (dummy),\
"r" (dest), "m" (dstW_reg), "m"(uv_off) \
: "%"FF_REG_a, "%"FF_REG_d, "%"FF_REG_S \
);
#define NAMED_CONSTRAINTS_ADD(...)
Definition asm.h:141
static int dummy
Definition ffplay.c:3754
static double c[64]

Definition at line 81 of file swscale_template.c.

Referenced by yuv2bgr32_X_TMPL(), yuv2rgb32_X_ar_TMPL(), yuv2rgb32_X_TMPL(), yuv2rgb555_X_ar_TMPL(), yuv2rgb555_X_TMPL(), yuv2rgb565_X_ar_TMPL(), yuv2rgb565_X_TMPL(), yuv2yuyv422_X_ar_TMPL(), and yuv2yuyv422_X_TMPL().

◆ YSCALEYUV2PACKEDX_ACCURATE_UV

#define YSCALEYUV2PACKEDX_ACCURATE_UV

Definition at line 89 of file swscale_template.c.

◆ YSCALEYUV2PACKEDX_ACCURATE_YA

#define YSCALEYUV2PACKEDX_ACCURATE_YA ( offset)

Definition at line 141 of file swscale_template.c.

Referenced by yuv2rgb32_X_ar_TMPL().

◆ YSCALEYUV2PACKEDX_ACCURATE

#define YSCALEYUV2PACKEDX_ACCURATE
Value:
YSCALEYUV2PACKEDX_ACCURATE_UV \
YSCALEYUV2PACKEDX_ACCURATE_YA(LUM_MMX_FILTER_OFFSET)

Definition at line 186 of file swscale_template.c.

Referenced by yuv2rgb32_X_ar_TMPL(), yuv2rgb555_X_ar_TMPL(), yuv2rgb565_X_ar_TMPL(), and yuv2yuyv422_X_ar_TMPL().

◆ YSCALEYUV2RGBX

◆ REAL_WRITEBGR32

#define REAL_WRITEBGR32 ( dst,
dstw,
index,
b,
g,
r,
a,
q0,
q2,
q3,
t )
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"
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition dsp.h:87
int index
Definition gxfenc.c:90
#define r
Definition input.c:42
static const uint8_t q0[256]
Definition twofish.c:81
const char * g
Definition vf_curves.c:128

Definition at line 226 of file swscale_template.c.

◆ WRITEBGR32

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

Definition at line 248 of file swscale_template.c.

Referenced by yuv2bgr32_X_TMPL(), yuv2rgb32_1_TMPL(), yuv2rgb32_2_TMPL(), yuv2rgb32_X_ar_TMPL(), and yuv2rgb32_X_TMPL().

◆ 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 MANGLE(a)
Definition asm.h:123

Definition at line 341 of file swscale_template.c.

◆ WRITERGB16

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

Definition at line 367 of file swscale_template.c.

Referenced by yuv2rgb565_1_TMPL(), yuv2rgb565_2_TMPL(), yuv2rgb565_X_ar_TMPL(), and yuv2rgb565_X_TMPL().

◆ 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"

Definition at line 413 of file swscale_template.c.

◆ WRITERGB15

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

Definition at line 440 of file swscale_template.c.

Referenced by yuv2rgb555_1_TMPL(), yuv2rgb555_2_TMPL(), yuv2rgb555_X_ar_TMPL(), and yuv2rgb555_X_TMPL().

◆ WRITEBGR24MMXEXT

#define WRITEBGR24MMXEXT ( dst,
dstw,
index )

Definition at line 486 of file swscale_template.c.

◆ WRITEBGR24

#define WRITEBGR24 ( dst,
dstw,
index )
Value:
#define WRITEBGR24MMXEXT(dst, dstw, index)

Definition at line 535 of file swscale_template.c.

Referenced by yuv2bgr24_1_TMPL(), and yuv2bgr24_2_TMPL().

◆ 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"

Definition at line 589 of file swscale_template.c.

◆ WRITEYUY2

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

Definition at line 604 of file swscale_template.c.

Referenced by yuv2yuyv422_1_TMPL(), yuv2yuyv422_2_TMPL(), yuv2yuyv422_X_ar_TMPL(), and yuv2yuyv422_X_TMPL().

◆ REAL_YSCALEYUV2RGB_UV

#define REAL_YSCALEYUV2RGB_UV ( index,
c )
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 UG_COEFF
#define U_OFFSET
#define UV_OFF_BYTE
#define V_OFFSET
#define VG_COEFF

Definition at line 648 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*/\
static double b1(void *priv, double x, double y)
Definition vf_xfade.c:2034
static double b2(void *priv, double x, double y)
Definition vf_xfade.c:2035

Definition at line 675 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 VR_COEFF
#define UB_COEFF
#define Y_COEFF
#define Y_OFFSET

Definition at line 689 of file swscale_template.c.

◆ YSCALEYUV2RGB_YA

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

Definition at line 718 of file swscale_template.c.

Referenced by yuv2rgb32_2_TMPL().

◆ YSCALEYUV2RGB

#define YSCALEYUV2RGB ( index,
c )
Value:
REAL_YSCALEYUV2RGB_YA(index, c, %0, %1) \
REAL_YSCALEYUV2RGB_COEFF(c)
#define REAL_YSCALEYUV2RGB_UV(index, c)

Definition at line 720 of file swscale_template.c.

Referenced by yuv2bgr24_2_TMPL(), yuv2rgb32_2_TMPL(), yuv2rgb555_2_TMPL(), and yuv2rgb565_2_TMPL().

◆ REAL_YSCALEYUV2PACKED

#define REAL_YSCALEYUV2PACKED ( index,
c )

Definition at line 869 of file swscale_template.c.

◆ YSCALEYUV2PACKED

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

Definition at line 907 of file swscale_template.c.

Referenced by yuv2yuyv422_2_TMPL().

◆ REAL_YSCALEYUV2RGB1

#define REAL_YSCALEYUV2RGB1 ( index,
c )

Definition at line 930 of file swscale_template.c.

◆ YSCALEYUV2RGB1

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

Definition at line 979 of file swscale_template.c.

Referenced by yuv2bgr24_1_TMPL(), yuv2rgb32_1_TMPL(), yuv2rgb555_1_TMPL(), and yuv2rgb565_1_TMPL().

◆ REAL_YSCALEYUV2RGB1b

#define REAL_YSCALEYUV2RGB1b ( index,
c )

Definition at line 982 of file swscale_template.c.

◆ YSCALEYUV2RGB1b

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

Definition at line 1035 of file swscale_template.c.

Referenced by yuv2bgr24_1_TMPL(), yuv2rgb32_1_TMPL(), yuv2rgb555_1_TMPL(), and yuv2rgb565_1_TMPL().

◆ 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"

Definition at line 1037 of file swscale_template.c.

◆ YSCALEYUV2RGB1_ALPHA

#define YSCALEYUV2RGB1_ALPHA ( index)
Value:
#define REAL_YSCALEYUV2RGB1_ALPHA(index)

Definition at line 1043 of file swscale_template.c.

Referenced by yuv2rgb32_1_TMPL().

◆ REAL_YSCALEYUV2PACKED1

#define REAL_YSCALEYUV2PACKED1 ( index,
c )
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" \

Definition at line 1256 of file swscale_template.c.

◆ YSCALEYUV2PACKED1

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

Definition at line 1271 of file swscale_template.c.

Referenced by yuv2yuyv422_1_TMPL().

◆ REAL_YSCALEYUV2PACKED1b

#define REAL_YSCALEYUV2PACKED1b ( index,
c )
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"

Definition at line 1273 of file swscale_template.c.

◆ YSCALEYUV2PACKED1b

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

Definition at line 1291 of file swscale_template.c.

Referenced by yuv2yuyv422_1_TMPL().

Function Documentation

◆ yuv2rgb32_X_ar_TMPL()

static void yuv2rgb32_X_ar_TMPL ( SwsInternal * 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 250 of file swscale_template.c.

◆ yuv2rgb32_X_TMPL()

static void yuv2rgb32_X_TMPL ( SwsInternal * 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 283 of file swscale_template.c.

◆ yuv2bgr32_X_TMPL()

static void yuv2bgr32_X_TMPL ( SwsInternal * 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 312 of file swscale_template.c.

◆ yuv2rgb565_X_ar_TMPL()

static void yuv2rgb565_X_ar_TMPL ( SwsInternal * 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 369 of file swscale_template.c.

◆ yuv2rgb565_X_TMPL()

static void yuv2rgb565_X_TMPL ( SwsInternal * 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 391 of file swscale_template.c.

◆ yuv2rgb555_X_ar_TMPL()

static void yuv2rgb555_X_ar_TMPL ( SwsInternal * 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 442 of file swscale_template.c.

◆ yuv2rgb555_X_TMPL()

static void yuv2rgb555_X_TMPL ( SwsInternal * 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 464 of file swscale_template.c.

◆ yuv2yuyv422_X_ar_TMPL()

static void yuv2yuyv422_X_ar_TMPL ( SwsInternal * 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 606 of file swscale_template.c.

◆ yuv2yuyv422_X_TMPL()

static void yuv2yuyv422_X_TMPL ( SwsInternal * 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 627 of file swscale_template.c.

◆ yuv2rgb32_2_TMPL()

static void yuv2rgb32_2_TMPL ( SwsInternal * 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 728 of file swscale_template.c.

◆ yuv2bgr24_2_TMPL()

static void yuv2bgr24_2_TMPL ( SwsInternal * 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 792 of file swscale_template.c.

◆ yuv2rgb555_2_TMPL()

static void yuv2rgb555_2_TMPL ( SwsInternal * 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 815 of file swscale_template.c.

◆ yuv2rgb565_2_TMPL()

static void yuv2rgb565_2_TMPL ( SwsInternal * 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 842 of file swscale_template.c.

◆ yuv2yuyv422_2_TMPL()

static void yuv2yuyv422_2_TMPL ( SwsInternal * 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 909 of file swscale_template.c.

◆ yuv2rgb32_1_TMPL()

static void yuv2rgb32_1_TMPL ( SwsInternal * 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 1048 of file swscale_template.c.

◆ yuv2bgr24_1_TMPL()

static void yuv2bgr24_1_TMPL ( SwsInternal * 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 1117 of file swscale_template.c.

◆ yuv2rgb555_1_TMPL()

static void yuv2rgb555_1_TMPL ( SwsInternal * 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 1158 of file swscale_template.c.

◆ yuv2rgb565_1_TMPL()

static void yuv2rgb565_1_TMPL ( SwsInternal * 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 1207 of file swscale_template.c.

◆ yuv2yuyv422_1_TMPL()

static void yuv2yuyv422_1_TMPL ( SwsInternal * 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 1293 of file swscale_template.c.