2#include "libmythbase/mythconfig.h"
5#if QT_VERSION >= QT_VERSION_CHECK(6,5,0)
6#include <QtProcessorDetection>
8#if HAVE_MMX && !defined(Q_PROCESSOR_X86_64)
16#define BUFFPOINTMASK 0xffff
29#include "libavutil/cpu.h"
33 return (av_get_cpu_flags() & AV_CPU_FLAG_SSE) >> 3;
49 volatile mmx_t prevXY;
50 volatile mmx_t ratiox;
70 while (loop < bufsize)
78 __asm__ __volatile__ (
124 __asm__ __volatile__ (
137 "movd (%%ecx,%%eax,4),%%mm3\n"
172 __asm__ __volatile__ (
178 "punpcklbw %%mm5, %%mm3\n"
185 "punpcklbw %%mm5,%%mm3\n"
187 "movq (%%ecx,%%eax,4),%%mm0\n"
188 "punpckhbw %%mm5,%%mm4\n"
191 "movq (%%ecx,%%eax,4),%%mm2\n"
252 __asm__ __volatile__ (
"femms\n");
262 [[maybe_unused]]
int prevY,
263 [[maybe_unused]]
unsigned int *
expix1,
264 [[maybe_unused]]
unsigned int *
expix2,
GoomCoefficients precalCoef
modif d'optim by Jeko : precalcul des 4 coefs résultant des 2 pos
int buffratio
modif by jeko : fixedpoint : buffration = (16:16) (donc 0<=buffration<=2^16)
static constexpr uint8_t PERTEDEC
#define punpckhbw_r2r(regs, regd)
#define psrld_i2r(imm, reg)
#define movq_m2r(var, reg)
#define psubd_r2r(regs, regd)
#define punpckhdq_r2r(regs, regd)
#define packuswb_r2r(regs, regd)
#define psrlw_i2r(imm, reg)
#define punpckldq_r2r(regs, regd)
#define punpcklbw_r2r(regs, regd)
#define mmx_r2r(op, regs, regd)
#define pslld_i2r(imm, reg)
#define pmullw_r2r(regs, regd)
#define movd_r2m(reg, var)
#define pcmpgtd_r2r(regs, regd)
#define movq_r2r(regs, regd)
#define paddd_r2r(regs, regd)
#define pxor_r2r(regs, regd)
#define paddw_r2r(regs, regd)
#define pand_r2r(regs, regd)
void zoom_filter_xmmx(int prevX, int prevY, unsigned int *expix1, unsigned int *expix2, const sintvec &brutS, const sintvec &brutD, int buffratio, GoomCoefficients &precalCoef)
int zoom_filter_xmmx_supported()
std::vector< signed int > sintvec
std::array< std::array< int, 16 >, 16 > GoomCoefficients