#include <inttypes.h>
#include "config.h"
#include "libswscale/swscale.h"
#include "libswscale/swscale_internal.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/x86_cpu.h"
#include "libavutil/cpu.h"
#include "libavutil/pixdesc.h"
#include "swscale_template.c"
Go to the source code of this file.
Defines | |
#define | COMPILE_TEMPLATE_MMX2 0 |
#define | RENAME(a) a ## _MMX |
#define | COMPILE_TEMPLATE_MMX2 1 |
#define | RENAME(a) a ## _MMX2 |
#define | SCALE_FUNC(filter_n, from_bpc, to_bpc, opt) |
#define | SCALE_FUNCS(filter_n, opt) |
#define | SCALE_FUNCS_MMX(opt) |
#define | SCALE_FUNCS_SSE(opt) |
#define | VSCALEX_FUNC(size, opt) |
#define | VSCALEX_FUNCS(opt) |
#define | VSCALE_FUNC(size, opt) |
#define | VSCALE_FUNCS(opt1, opt2) |
#define | INPUT_UV_FUNC(fmt, opt) |
#define | INPUT_FUNC(fmt, opt) |
#define | INPUT_FUNCS(opt) |
#define | ASSIGN_SCALE_FUNC2(hscalefn, filtersize, opt1, opt2) |
#define | ASSIGN_MMX_SCALE_FUNC(hscalefn, filtersize, opt1, opt2) |
#define | ASSIGN_VSCALEX_FUNC(vscalefn, opt, do_16_case) |
#define | ASSIGN_VSCALE_FUNC(vscalefn, opt1, opt2, opt2chk) |
#define | ASSIGN_SSE_SCALE_FUNC(hscalefn, filtersize, opt1, opt2) |
Functions | |
DECLARE_ASM_CONST (DECLARE_ASM_CONST(8, DECLARE_ASM_CONST(uint64_t, bF8) | |
DECLARE_ASM_CONST (DECLARE_ASM_CONST(8, DECLARE_ASM_CONST(uint64_t, b16Mask) | |
DECLARE_ASM_CONST (8, uint64_t, ff_bgr24toUVOffset) | |
static void | yuv2yuvX_sse3 (const int16_t *filter, int filterSize, const int16_t **src, uint8_t *dest, int dstW, const uint8_t *dither, int offset) |
SCALE_FUNCS_MMX (mmx) | |
SCALE_FUNCS_SSE (sse2) | |
SCALE_FUNCS_SSE (ssse3) | |
SCALE_FUNCS_SSE (sse4) | |
VSCALEX_FUNCS (mmx2) | |
VSCALEX_FUNCS (sse2) | |
VSCALEX_FUNCS (sse4) | |
VSCALEX_FUNC (16, sse4) | |
VSCALEX_FUNCS (avx) | |
VSCALE_FUNCS (mmx, mmx2) | |
VSCALE_FUNCS (sse2, sse2) | |
VSCALE_FUNC (16, sse4) | |
VSCALE_FUNCS (avx, avx) | |
INPUT_FUNCS (mmx) | |
INPUT_FUNCS (sse2) | |
INPUT_FUNCS (avx) | |
void | ff_sws_init_swScale_mmx (SwsContext *c) |
Variables | |
const uint64_t | ff_dither8 [2] |
#define ASSIGN_MMX_SCALE_FUNC | ( | hscalefn, | ||
filtersize, | ||||
opt1, | ||||
opt2 | ||||
) |
switch (filtersize) { \ case 4: ASSIGN_SCALE_FUNC2(hscalefn, 4, opt1, opt2); break; \ case 8: ASSIGN_SCALE_FUNC2(hscalefn, 8, opt1, opt2); break; \ default: ASSIGN_SCALE_FUNC2(hscalefn, X, opt1, opt2); break; \ }
Referenced by ff_sws_init_swScale_mmx().
#define ASSIGN_SCALE_FUNC2 | ( | hscalefn, | ||
filtersize, | ||||
opt1, | ||||
opt2 | ||||
) |
do { \ if (c->srcBpc == 8) { \ hscalefn = c->dstBpc <= 10 ? ff_hscale8to15_ ## filtersize ## _ ## opt2 : \ ff_hscale8to19_ ## filtersize ## _ ## opt1; \ } else if (c->srcBpc == 9) { \ hscalefn = c->dstBpc <= 10 ? ff_hscale9to15_ ## filtersize ## _ ## opt2 : \ ff_hscale9to19_ ## filtersize ## _ ## opt1; \ } else if (c->srcBpc == 10) { \ hscalefn = c->dstBpc <= 10 ? ff_hscale10to15_ ## filtersize ## _ ## opt2 : \ ff_hscale10to19_ ## filtersize ## _ ## opt1; \ } else if (c->srcBpc == 14 || ((c->srcFormat==PIX_FMT_PAL8||isAnyRGB(c->srcFormat)) && av_pix_fmt_descriptors[c->srcFormat].comp[0].depth_minus1<15)) { \ hscalefn = c->dstBpc <= 10 ? ff_hscale14to15_ ## filtersize ## _ ## opt2 : \ ff_hscale14to19_ ## filtersize ## _ ## opt1; \ } else { /* c->srcBpc == 16 */ \ hscalefn = c->dstBpc <= 10 ? ff_hscale16to15_ ## filtersize ## _ ## opt2 : \ ff_hscale16to19_ ## filtersize ## _ ## opt1; \ } \ } while (0)
#define ASSIGN_SSE_SCALE_FUNC | ( | hscalefn, | ||
filtersize, | ||||
opt1, | ||||
opt2 | ||||
) |
switch (filtersize) { \ case 4: ASSIGN_SCALE_FUNC2(hscalefn, 4, opt1, opt2); break; \ case 8: ASSIGN_SCALE_FUNC2(hscalefn, 8, opt1, opt2); break; \ default: if (filtersize & 4) ASSIGN_SCALE_FUNC2(hscalefn, X4, opt1, opt2); \ else ASSIGN_SCALE_FUNC2(hscalefn, X8, opt1, opt2); \ break; \ }
Referenced by ff_sws_init_swScale_mmx().
#define ASSIGN_VSCALE_FUNC | ( | vscalefn, | ||
opt1, | ||||
opt2, | ||||
opt2chk | ||||
) |
switch(c->dstBpc){ \ case 16: if (!isBE(c->dstFormat)) vscalefn = ff_yuv2plane1_16_ ## opt1; break; \ case 10: if (!isBE(c->dstFormat) && opt2chk) vscalefn = ff_yuv2plane1_10_ ## opt2; break; \ case 9: if (!isBE(c->dstFormat) && opt2chk) vscalefn = ff_yuv2plane1_9_ ## opt2; break; \ default: vscalefn = ff_yuv2plane1_8_ ## opt1; break; \ }
Referenced by ff_sws_init_swScale_mmx().
#define ASSIGN_VSCALEX_FUNC | ( | vscalefn, | ||
opt, | ||||
do_16_case | ||||
) |
switch(c->dstBpc){ \ case 16: /*do_16_case;*/ break; \ case 10: if (!isBE(c->dstFormat)) /*vscalefn = ff_yuv2planeX_10_ ## opt;*/ break; \ case 9: if (!isBE(c->dstFormat)) /*vscalefn = ff_yuv2planeX_9_ ## opt;*/ break; \ default: /*vscalefn = ff_yuv2planeX_8_ ## opt;*/ break; \ }
Referenced by ff_sws_init_swScale_mmx().
#define COMPILE_TEMPLATE_MMX2 0 |
#define COMPILE_TEMPLATE_MMX2 1 |
#define INPUT_FUNC | ( | fmt, | ||
opt | ||||
) |
extern void ff_ ## fmt ## ToY_ ## opt(uint8_t *dst, const uint8_t *src, \ int w, uint32_t *unused); \ INPUT_UV_FUNC(fmt, opt)
Definition at line 352 of file swscale_mmx.c.
#define INPUT_FUNCS | ( | opt | ) |
INPUT_FUNC(uyvy, opt); \ INPUT_FUNC(yuyv, opt); \ INPUT_UV_FUNC(nv12, opt); \ INPUT_UV_FUNC(nv21, opt)
Definition at line 356 of file swscale_mmx.c.
#define INPUT_UV_FUNC | ( | fmt, | ||
opt | ||||
) |
extern void ff_ ## fmt ## ToUV_ ## opt(uint8_t *dstU, uint8_t *dstV, \ const uint8_t *src, const uint8_t *unused1, \ int w, uint32_t *unused2)
Definition at line 348 of file swscale_mmx.c.
#define RENAME | ( | a | ) | a ## _MMX2 |
#define RENAME | ( | a | ) | a ## _MMX |
#define SCALE_FUNC | ( | filter_n, | ||
from_bpc, | ||||
to_bpc, | ||||
opt | ||||
) |
extern void ff_hscale ## from_bpc ## to ## to_bpc ## _ ## filter_n ## _ ## opt( \ SwsContext *c, int16_t *data, \ int dstW, const uint8_t *src, \ const int16_t *filter, \ const int32_t *filterPos, int filterSize)
Definition at line 278 of file swscale_mmx.c.
#define SCALE_FUNCS | ( | filter_n, | ||
opt | ||||
) |
SCALE_FUNC(filter_n, 8, 15, opt); \ SCALE_FUNC(filter_n, 9, 15, opt); \ SCALE_FUNC(filter_n, 10, 15, opt); \ SCALE_FUNC(filter_n, 14, 15, opt); \ SCALE_FUNC(filter_n, 16, 15, opt); \ SCALE_FUNC(filter_n, 8, 19, opt); \ SCALE_FUNC(filter_n, 9, 19, opt); \ SCALE_FUNC(filter_n, 10, 19, opt); \ SCALE_FUNC(filter_n, 14, 19, opt); \ SCALE_FUNC(filter_n, 16, 19, opt)
Definition at line 285 of file swscale_mmx.c.
#define SCALE_FUNCS_MMX | ( | opt | ) |
SCALE_FUNCS(4, opt); \ SCALE_FUNCS(8, opt); \ SCALE_FUNCS(X, opt)
Definition at line 297 of file swscale_mmx.c.
#define SCALE_FUNCS_SSE | ( | opt | ) |
SCALE_FUNCS(4, opt); \ SCALE_FUNCS(8, opt); \ SCALE_FUNCS(X4, opt); \ SCALE_FUNCS(X8, opt)
Definition at line 302 of file swscale_mmx.c.
#define VSCALE_FUNC | ( | size, | ||
opt | ||||
) |
#define VSCALE_FUNCS | ( | opt1, | ||
opt2 | ||||
) |
VSCALE_FUNC(8, opt1); \ VSCALE_FUNC(9, opt2); \ VSCALE_FUNC(10, opt2); \ VSCALE_FUNC(16, opt1)
Definition at line 335 of file swscale_mmx.c.
#define VSCALEX_FUNC | ( | size, | ||
opt | ||||
) |
#define VSCALEX_FUNCS | ( | opt | ) |
VSCALEX_FUNC(8, opt); \ VSCALEX_FUNC(9, opt); \ VSCALEX_FUNC(10, opt)
Definition at line 319 of file swscale_mmx.c.
DECLARE_ASM_CONST | ( | DECLARE_ASM_CONST( | 8, | |
DECLARE_ASM_CONST( | uint64_t, | |||
bF8 | ||||
) | [pure virtual] |
Definition at line 30 of file swscale_mmx.c.
DECLARE_ASM_CONST | ( | DECLARE_ASM_CONST( | 8, | |
DECLARE_ASM_CONST( | uint64_t, | |||
b16Mask | ||||
) | [pure virtual] |
Definition at line 47 of file swscale_mmx.c.
DECLARE_ASM_CONST | ( | 8 | , | |
uint64_t | , | |||
ff_bgr24toUVOffset | ||||
) | [pure virtual] |
Definition at line 82 of file swscale_mmx.c.
void ff_sws_init_swScale_mmx | ( | SwsContext * | c | ) |
Definition at line 368 of file swscale_mmx.c.
Referenced by ff_getSwsFunc().
INPUT_FUNCS | ( | mmx | ) |
INPUT_FUNCS | ( | sse2 | ) |
INPUT_FUNCS | ( | avx | ) |
SCALE_FUNCS_MMX | ( | mmx | ) |
SCALE_FUNCS_SSE | ( | sse4 | ) |
SCALE_FUNCS_SSE | ( | sse2 | ) |
SCALE_FUNCS_SSE | ( | ssse3 | ) |
VSCALE_FUNC | ( | 16 | , | |
sse4 | ||||
) |
VSCALE_FUNCS | ( | mmx | , | |
mmx2 | ||||
) |
VSCALE_FUNCS | ( | sse2 | , | |
sse2 | ||||
) |
VSCALE_FUNCS | ( | avx | , | |
avx | ||||
) |
VSCALEX_FUNC | ( | 16 | , | |
sse4 | ||||
) |
VSCALEX_FUNCS | ( | sse2 | ) |
VSCALEX_FUNCS | ( | mmx2 | ) |
VSCALEX_FUNCS | ( | sse4 | ) |
VSCALEX_FUNCS | ( | avx | ) |
static void yuv2yuvX_sse3 | ( | const int16_t * | filter, | |
int | filterSize, | |||
const int16_t ** | src, | |||
uint8_t * | dest, | |||
int | dstW, | |||
const uint8_t * | dither, | |||
int | offset | |||
) | [static] |
Definition at line 218 of file swscale_mmx.c.
const uint64_t ff_dither8[2] |
{ 0x0602060206020602LL, 0x0004000400040004LL,}
Definition at line 43 of file swscale_mmx.c.
Referenced by DECLARE_ASM_CONST(), yuv420_rgb15_MMX2(), and yuv420_rgb16_MMX2().