summaryrefslogtreecommitdiffstats
path: root/liba52
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-12-25 17:19:18 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-12-25 17:19:18 +0000
commit26e195ff8927d0946d77e06fb6f60273c68c4b69 (patch)
tree9a48b2a2f2d6bd30e106687b7f5ea6c8210785a9 /liba52
parenta54006e1cf80edca85c0c1f94921972a5ad484d5 (diff)
downloadmpv-26e195ff8927d0946d77e06fb6f60273c68c4b69.tar.bz2
mpv-26e195ff8927d0946d77e06fb6f60273c68c4b69.tar.xz
memset(?, 0, 256*sizeof(float)) in MMX
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@3739 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'liba52')
-rw-r--r--liba52/downmix.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/liba52/downmix.c b/liba52/downmix.c
index be004b99a3..527f38efdd 100644
--- a/liba52/downmix.c
+++ b/liba52/downmix.c
@@ -65,7 +65,7 @@ int downmix_init (int input, int flags, sample_t * level,
output = flags & A52_CHANNEL_MASK;
if (output > A52_DOLBY)
return -1;
-
+
output = table[output][input & 7];
if ((output == A52_STEREO) &&
@@ -593,9 +593,25 @@ static void move2to1 (sample_t * src, sample_t * dest, sample_t bias)
static void zero (sample_t * samples)
{
int i;
-
+#ifdef HAVE_MMX
+ asm volatile(
+ "movl $-1024, %%esi \n\t"
+ "pxor %%mm0, %%mm0 \n\t"
+ "1: \n\t"
+ "movq %%mm0, (%0, %%esi) \n\t"
+ "movq %%mm0, 8(%0, %%esi) \n\t"
+ "movq %%mm0, 16(%0, %%esi) \n\t"
+ "movq %%mm0, 24(%0, %%esi) \n\t"
+ "addl $32, %%esi \n\t"
+ " jnz 1b \n\t"
+ "emms"
+ :: "r" (samples+256)
+ : "%esi"
+ );
+#else
for (i = 0; i < 256; i++)
samples[i] = 0;
+#endif
}
void downmix (sample_t * samples, int acmod, int output, sample_t bias,