summaryrefslogtreecommitdiff
path: root/libswscale/x86/rgb2rgb.c
diff options
context:
space:
mode:
Diffstat (limited to 'libswscale/x86/rgb2rgb.c')
-rw-r--r--libswscale/x86/rgb2rgb.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/libswscale/x86/rgb2rgb.c b/libswscale/x86/rgb2rgb.c
index ffd12e1609..5caabf03ed 100644
--- a/libswscale/x86/rgb2rgb.c
+++ b/libswscale/x86/rgb2rgb.c
@@ -144,11 +144,14 @@ DECLARE_ALIGNED(8, extern const uint64_t, ff_bgr2UVOffset);
#endif /* HAVE_INLINE_ASM */
+void ff_shuffle_bytes_2103_ssse3(const uint8_t *src, uint8_t *dst, int src_size);
+void ff_shuffle_bytes_0321_ssse3(const uint8_t *src, uint8_t *dst, int src_size);
+
av_cold void rgb2rgb_init_x86(void)
{
-#if HAVE_INLINE_ASM
int cpu_flags = av_get_cpu_flags();
+#if HAVE_INLINE_ASM
if (INLINE_MMX(cpu_flags))
rgb2rgb_init_mmx();
if (INLINE_AMD3DNOW(cpu_flags))
@@ -160,4 +163,9 @@ av_cold void rgb2rgb_init_x86(void)
if (INLINE_AVX(cpu_flags))
rgb2rgb_init_avx();
#endif /* HAVE_INLINE_ASM */
+
+ if (EXTERNAL_SSSE3(cpu_flags)) {
+ shuffle_bytes_0321 = ff_shuffle_bytes_0321_ssse3;
+ shuffle_bytes_2103 = ff_shuffle_bytes_2103_ssse3;
+ }
}