#include <inttypes.h>
#include "config.h"
#include "libswscale/swscale.h"
#include "libswscale/swscale_internal.h"
#include "libavutil/attributes.h"
#include "libavutil/avassert.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/x86/asm.h"
#include "libavutil/x86/cpu.h"
#include "libavutil/cpu.h"
#include "libavutil/pixdesc.h"
Go to the source code of this file.
Defines | |
#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_Y_FUNC(fmt, opt) |
#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, condition_8bit) |
#define | ASSIGN_VSCALE_FUNC(vscalefn, opt1, opt2, opt2chk) |
#define | case_rgb(x, X, opt) |
#define | ASSIGN_SSE_SCALE_FUNC(hscalefn, filtersize, opt1, opt2) |
Functions | |
SCALE_FUNCS_SSE (sse2) | |
SCALE_FUNCS_SSE (ssse3) | |
SCALE_FUNCS_SSE (sse4) | |
VSCALEX_FUNCS (sse2) | |
VSCALEX_FUNCS (sse4) | |
VSCALEX_FUNC (16, sse4) | |
VSCALEX_FUNCS (avx) | |
VSCALE_FUNCS (sse2, sse2) | |
VSCALE_FUNC (16, sse4) | |
VSCALE_FUNCS (avx, avx) | |
INPUT_FUNCS (sse2) | |
INPUT_FUNCS (ssse3) | |
INPUT_FUNCS (avx) | |
av_cold void | ff_sws_init_swScale_mmx (SwsContext *c) |
#define ASSIGN_MMX_SCALE_FUNC | ( | hscalefn, | |||
filtersize, | |||||
opt1, | |||||
opt2 | ) |
Value:
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 | ) |
Value:
do { \ if (c->srcBpc == 8) { \ hscalefn = c->dstBpc <= 14 ? ff_hscale8to15_ ## filtersize ## _ ## opt2 : \ ff_hscale8to19_ ## filtersize ## _ ## opt1; \ } else if (c->srcBpc == 9) { \ hscalefn = c->dstBpc <= 14 ? ff_hscale9to15_ ## filtersize ## _ ## opt2 : \ ff_hscale9to19_ ## filtersize ## _ ## opt1; \ } else if (c->srcBpc == 10) { \ hscalefn = c->dstBpc <= 14 ? ff_hscale10to15_ ## filtersize ## _ ## opt2 : \ ff_hscale10to19_ ## filtersize ## _ ## opt1; \ } else if (c->srcBpc == 12) { \ hscalefn = c->dstBpc <= 14 ? ff_hscale12to15_ ## filtersize ## _ ## opt2 : \ ff_hscale12to19_ ## 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 <= 14 ? ff_hscale14to15_ ## filtersize ## _ ## opt2 : \ ff_hscale14to19_ ## filtersize ## _ ## opt1; \ } else { /* c->srcBpc == 16 */ \ av_assert0(c->srcBpc == 16);\ hscalefn = c->dstBpc <= 14 ? ff_hscale16to15_ ## filtersize ## _ ## opt2 : \ ff_hscale16to19_ ## filtersize ## _ ## opt1; \ } \ } while (0)
#define ASSIGN_SSE_SCALE_FUNC | ( | hscalefn, | |||
filtersize, | |||||
opt1, | |||||
opt2 | ) |
Value:
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 | ) |
Value:
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; \ case 8: vscalefn = ff_yuv2plane1_8_ ## opt1; break; \ default: av_assert0(c->dstBpc>8); \ }
Referenced by ff_sws_init_swScale_mmx().
#define ASSIGN_VSCALEX_FUNC | ( | vscalefn, | |||
opt, | |||||
do_16_case, | |||||
condition_8bit | ) |
Value:
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: if (condition_8bit) /*vscalefn = ff_yuv2planeX_8_ ## opt;*/ break; \ }
Referenced by ff_sws_init_swScale_mmx().
#define case_rgb | ( | x, | |||
X, | |||||
opt | ) |
Value:
case PIX_FMT_ ## X: \ c->lumToYV12 = ff_ ## x ## ToY_ ## opt; \ if (!c->chrSrcHSubSample) \ c->chrToYV12 = ff_ ## x ## ToUV_ ## opt; \ break
Referenced by ff_sws_init_swScale_mmx().
#define INPUT_FUNC | ( | fmt, | |||
opt | ) |
#define INPUT_FUNCS | ( | opt | ) |
Value:
INPUT_FUNC(uyvy, opt); \ INPUT_FUNC(yuyv, opt); \ INPUT_UV_FUNC(nv12, opt); \ INPUT_UV_FUNC(nv21, opt); \ INPUT_FUNC(rgba, opt); \ INPUT_FUNC(bgra, opt); \ INPUT_FUNC(argb, opt); \ INPUT_FUNC(abgr, opt); \ INPUT_FUNC(rgb24, opt); \ INPUT_FUNC(bgr24, opt)
#define INPUT_UV_FUNC | ( | fmt, | |||
opt | ) |
#define INPUT_Y_FUNC | ( | fmt, | |||
opt | ) |
#define SCALE_FUNC | ( | filter_n, | |||
from_bpc, | |||||
to_bpc, | |||||
opt | ) |
#define SCALE_FUNCS | ( | filter_n, | |||
opt | ) |
Value:
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, 12, 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, 12, 19, opt); \ SCALE_FUNC(filter_n, 14, 19, opt); \ SCALE_FUNC(filter_n, 16, 19, opt)
#define SCALE_FUNCS_MMX | ( | opt | ) |
Value:
SCALE_FUNCS(4, opt); \ SCALE_FUNCS(8, opt); \ SCALE_FUNCS(X, opt)
#define SCALE_FUNCS_SSE | ( | opt | ) |
Value:
SCALE_FUNCS(4, opt); \ SCALE_FUNCS(8, opt); \ SCALE_FUNCS(X4, opt); \ SCALE_FUNCS(X8, opt)
#define VSCALE_FUNC | ( | size, | |||
opt | ) |
#define VSCALE_FUNCS | ( | opt1, | |||
opt2 | ) |
Value:
VSCALE_FUNC(8, opt1); \ VSCALE_FUNC(9, opt2); \ VSCALE_FUNC(10, opt2); \ VSCALE_FUNC(16, opt1)
#define VSCALEX_FUNC | ( | size, | |||
opt | ) |
#define VSCALEX_FUNCS | ( | opt | ) |
Value:
VSCALEX_FUNC(8, opt); \ VSCALEX_FUNC(9, opt); \ VSCALEX_FUNC(10, opt)
av_cold void ff_sws_init_swScale_mmx | ( | SwsContext * | c | ) |
INPUT_FUNCS | ( | avx | ) |
INPUT_FUNCS | ( | ssse3 | ) |
INPUT_FUNCS | ( | sse2 | ) |
SCALE_FUNCS_SSE | ( | sse4 | ) |
SCALE_FUNCS_SSE | ( | ssse3 | ) |
SCALE_FUNCS_SSE | ( | sse2 | ) |
VSCALE_FUNC | ( | 16 | , | |
sse4 | ||||
) |
VSCALE_FUNCS | ( | avx | , | |
avx | ||||
) |
VSCALE_FUNCS | ( | sse2 | , | |
sse2 | ||||
) |
VSCALEX_FUNC | ( | 16 | , | |
sse4 | ||||
) |
VSCALEX_FUNCS | ( | avx | ) |
VSCALEX_FUNCS | ( | sse4 | ) |
VSCALEX_FUNCS | ( | sse2 | ) |