summaryrefslogtreecommitdiff
path: root/libavfilter/x86
diff options
context:
space:
mode:
authorMans Rullgard <mans@mansr.com>2012-07-01 13:08:17 +0100
committerMans Rullgard <mans@mansr.com>2012-07-02 01:16:37 +0100
commita87b17f3283aada762820f1b797eeb7a2dff6c61 (patch)
treea44ce7d5afbaa284e93225caecc91c5b36dd2306 /libavfilter/x86
parent2f0accf1038350a01a7b52f3cbe75a554f7438a3 (diff)
vf_yadif: move x86 init code to x86/yadif.c
Signed-off-by: Mans Rullgard <mans@mansr.com>
Diffstat (limited to 'libavfilter/x86')
-rw-r--r--libavfilter/x86/yadif.c13
-rw-r--r--libavfilter/x86/yadif_template.c6
2 files changed, 16 insertions, 3 deletions
diff --git a/libavfilter/x86/yadif.c b/libavfilter/x86/yadif.c
index 7cd7e19258..fe77f3a99c 100644
--- a/libavfilter/x86/yadif.c
+++ b/libavfilter/x86/yadif.c
@@ -18,6 +18,7 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
+#include "libavutil/attributes.h"
#include "libavutil/cpu.h"
#include "libavutil/x86_cpu.h"
#include "libavcodec/x86/dsputil_mmx.h"
@@ -47,3 +48,15 @@ DECLARE_ASM_CONST(16, const xmm_reg, pw_1) = {0x0001000100010001ULL, 0x000100010
#define RENAME(a) a ## _mmx
#include "yadif_template.c"
#endif
+
+av_cold void ff_yadif_init_x86(YADIFContext *yadif)
+{
+ int cpu_flags = av_get_cpu_flags();
+
+ if (HAVE_MMX && cpu_flags & AV_CPU_FLAG_MMX)
+ yadif->filter_line = yadif_filter_line_mmx;
+ if (HAVE_SSE && cpu_flags & AV_CPU_FLAG_SSE2)
+ yadif->filter_line = yadif_filter_line_sse2;
+ if (HAVE_SSSE3 && cpu_flags & AV_CPU_FLAG_SSSE3)
+ yadif->filter_line = yadif_filter_line_ssse3;
+}
diff --git a/libavfilter/x86/yadif_template.c b/libavfilter/x86/yadif_template.c
index ffcc39eebc..1de0a58e8f 100644
--- a/libavfilter/x86/yadif_template.c
+++ b/libavfilter/x86/yadif_template.c
@@ -103,9 +103,9 @@
"por "MM"5, "MM"3 \n\t"\
MOVQ" "MM"3, "MM"1 \n\t"
-void RENAME(ff_yadif_filter_line)(uint8_t *dst,
- uint8_t *prev, uint8_t *cur, uint8_t *next,
- int w, int prefs, int mrefs, int parity, int mode)
+static void RENAME(yadif_filter_line)(uint8_t *dst, uint8_t *prev, uint8_t *cur,
+ uint8_t *next, int w, int prefs,
+ int mrefs, int parity, int mode)
{
DECLARE_ALIGNED(16, uint8_t, tmp0)[16];
DECLARE_ALIGNED(16, uint8_t, tmp1)[16];