Commit db6b389c authored by Michael Niedermayer's avatar Michael Niedermayer

Merge commit 'a5195839'

* commit 'a5195839':
  swscale: x86: Hide arch-specific initialization details

Conflicts:
	libswscale/x86/Makefile
	libswscale/x86/swscale.c
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents 477641e9 a5195839
...@@ -129,7 +129,7 @@ void (*yuyvtoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst, ...@@ -129,7 +129,7 @@ void (*yuyvtoyuv422)(uint8_t *ydst, uint8_t *udst, uint8_t *vdst,
av_cold void sws_rgb2rgb_init(void) av_cold void sws_rgb2rgb_init(void)
{ {
rgb2rgb_init_c(); rgb2rgb_init_c();
if (HAVE_MMX) if (ARCH_X86)
rgb2rgb_init_x86(); rgb2rgb_init_x86();
} }
......
...@@ -759,8 +759,8 @@ SwsFunc ff_getSwsFunc(SwsContext *c) ...@@ -759,8 +759,8 @@ SwsFunc ff_getSwsFunc(SwsContext *c)
{ {
sws_init_swScale_c(c); sws_init_swScale_c(c);
if (HAVE_MMX) if (ARCH_X86)
ff_sws_init_swScale_mmx(c); ff_sws_init_swscale_x86(c);
if (HAVE_ALTIVEC) if (HAVE_ALTIVEC)
ff_sws_init_swScale_altivec(c); ff_sws_init_swScale_altivec(c);
......
...@@ -616,7 +616,7 @@ void ff_yuv2rgb_init_tables_altivec(SwsContext *c, const int inv_table[4], ...@@ -616,7 +616,7 @@ void ff_yuv2rgb_init_tables_altivec(SwsContext *c, const int inv_table[4],
void updateMMXDitherTables(SwsContext *c, int dstY, int lumBufIndex, int chrBufIndex, void updateMMXDitherTables(SwsContext *c, int dstY, int lumBufIndex, int chrBufIndex,
int lastInLumBuf, int lastInChrBuf); int lastInLumBuf, int lastInChrBuf);
SwsFunc ff_yuv2rgb_init_mmx(SwsContext *c); SwsFunc ff_yuv2rgb_init_x86(SwsContext *c);
SwsFunc ff_yuv2rgb_init_vis(SwsContext *c); SwsFunc ff_yuv2rgb_init_vis(SwsContext *c);
SwsFunc ff_yuv2rgb_init_altivec(SwsContext *c); SwsFunc ff_yuv2rgb_init_altivec(SwsContext *c);
SwsFunc ff_yuv2rgb_get_func_ptr_bfin(SwsContext *c); SwsFunc ff_yuv2rgb_get_func_ptr_bfin(SwsContext *c);
...@@ -851,7 +851,7 @@ void ff_sws_init_output_funcs(SwsContext *c, ...@@ -851,7 +851,7 @@ void ff_sws_init_output_funcs(SwsContext *c,
yuv2packedX_fn *yuv2packedX, yuv2packedX_fn *yuv2packedX,
yuv2anyX_fn *yuv2anyX); yuv2anyX_fn *yuv2anyX);
void ff_sws_init_swScale_altivec(SwsContext *c); void ff_sws_init_swScale_altivec(SwsContext *c);
void ff_sws_init_swScale_mmx(SwsContext *c); void ff_sws_init_swscale_x86(SwsContext *c);
static inline void fillPlane16(uint8_t *plane, int stride, int width, int height, int y, static inline void fillPlane16(uint8_t *plane, int stride, int width, int height, int y,
int alpha, int bits, const int big_endian) int alpha, int bits, const int big_endian)
......
$(SUBDIR)x86/swscale_mmx.o: CFLAGS += $(NOREDZONE_FLAGS) $(SUBDIR)x86/swscale_mmx.o: CFLAGS += $(NOREDZONE_FLAGS)
OBJS-$(CONFIG_XMM_CLOBBER_TEST) += x86/w64xmmtest.o OBJS += x86/rgb2rgb.o \
MMX-OBJS += x86/rgb2rgb.o \
x86/swscale.o \ x86/swscale.o \
x86/yuv2rgb.o \ x86/yuv2rgb.o \
OBJS-$(CONFIG_XMM_CLOBBER_TEST) += x86/w64xmmtest.o
YASM-OBJS += x86/input.o \ YASM-OBJS += x86/input.o \
x86/output.o \ x86/output.o \
x86/scale.o \ x86/scale.o \
...@@ -377,22 +377,22 @@ INPUT_FUNCS(sse2); ...@@ -377,22 +377,22 @@ INPUT_FUNCS(sse2);
INPUT_FUNCS(ssse3); INPUT_FUNCS(ssse3);
INPUT_FUNCS(avx); INPUT_FUNCS(avx);
av_cold void ff_sws_init_swScale_mmx(SwsContext *c) av_cold void ff_sws_init_swscale_x86(SwsContext *c)
{ {
int cpu_flags = av_get_cpu_flags(); int cpu_flags = av_get_cpu_flags();
#if HAVE_INLINE_ASM #if HAVE_MMX_INLINE
if (cpu_flags & AV_CPU_FLAG_MMX) if (cpu_flags & AV_CPU_FLAG_MMX)
sws_init_swScale_MMX(c); sws_init_swscale_MMX(c);
#endif
#if HAVE_MMXEXT_INLINE #if HAVE_MMXEXT_INLINE
if (cpu_flags & AV_CPU_FLAG_MMXEXT) if (cpu_flags & AV_CPU_FLAG_MMXEXT)
sws_init_swScale_MMXEXT(c); sws_init_swscale_MMXEXT(c);
if (cpu_flags & AV_CPU_FLAG_SSE3){ if (cpu_flags & AV_CPU_FLAG_SSE3){
if(c->use_mmx_vfilter && !(c->flags & SWS_ACCURATE_RND)) if(c->use_mmx_vfilter && !(c->flags & SWS_ACCURATE_RND))
c->yuv2planeX = yuv2yuvX_sse3; c->yuv2planeX = yuv2yuvX_sse3;
} }
#endif #endif
#endif /* HAVE_INLINE_ASM */
#define ASSIGN_SCALE_FUNC2(hscalefn, filtersize, opt1, opt2) do { \ #define ASSIGN_SCALE_FUNC2(hscalefn, filtersize, opt1, opt2) do { \
if (c->srcBpc == 8) { \ if (c->srcBpc == 8) { \
......
...@@ -1640,7 +1640,7 @@ static void RENAME(hcscale_fast)(SwsContext *c, int16_t *dst1, int16_t *dst2, ...@@ -1640,7 +1640,7 @@ static void RENAME(hcscale_fast)(SwsContext *c, int16_t *dst1, int16_t *dst2,
} }
#endif /* COMPILE_TEMPLATE_MMXEXT */ #endif /* COMPILE_TEMPLATE_MMXEXT */
static av_cold void RENAME(sws_init_swScale)(SwsContext *c) static av_cold void RENAME(sws_init_swscale)(SwsContext *c)
{ {
enum AVPixelFormat dstFormat = c->dstFormat; enum AVPixelFormat dstFormat = c->dstFormat;
......
...@@ -68,9 +68,9 @@ DECLARE_ASM_CONST(8, uint64_t, pb_07) = 0x0707070707070707ULL; ...@@ -68,9 +68,9 @@ DECLARE_ASM_CONST(8, uint64_t, pb_07) = 0x0707070707070707ULL;
#endif /* HAVE_INLINE_ASM */ #endif /* HAVE_INLINE_ASM */
av_cold SwsFunc ff_yuv2rgb_init_mmx(SwsContext *c) av_cold SwsFunc ff_yuv2rgb_init_x86(SwsContext *c)
{ {
#if HAVE_INLINE_ASM #if HAVE_MMX_INLINE
int cpu_flags = av_get_cpu_flags(); int cpu_flags = av_get_cpu_flags();
#if HAVE_MMXEXT_INLINE #if HAVE_MMXEXT_INLINE
...@@ -106,7 +106,7 @@ av_cold SwsFunc ff_yuv2rgb_init_mmx(SwsContext *c) ...@@ -106,7 +106,7 @@ av_cold SwsFunc ff_yuv2rgb_init_mmx(SwsContext *c)
case AV_PIX_FMT_RGB555: return yuv420_rgb15_MMX; case AV_PIX_FMT_RGB555: return yuv420_rgb15_MMX;
} }
} }
#endif /* HAVE_INLINE_ASM */ #endif /* HAVE_MMX_INLINE */
return NULL; return NULL;
} }
...@@ -601,8 +601,8 @@ SwsFunc ff_yuv2rgb_get_func_ptr(SwsContext *c) ...@@ -601,8 +601,8 @@ SwsFunc ff_yuv2rgb_get_func_ptr(SwsContext *c)
{ {
SwsFunc t = NULL; SwsFunc t = NULL;
if (HAVE_MMX) if (ARCH_X86)
t = ff_yuv2rgb_init_mmx(c); t = ff_yuv2rgb_init_x86(c);
else if (HAVE_VIS) else if (HAVE_VIS)
t = ff_yuv2rgb_init_vis(c); t = ff_yuv2rgb_init_vis(c);
else if (HAVE_ALTIVEC) else if (HAVE_ALTIVEC)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment