summaryrefslogtreecommitdiffstats
path: root/liba52
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-12-30 21:38:53 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-12-30 21:38:53 +0000
commit8a95255ef276a9cb80b57b9c74dc5d17cc1671c7 (patch)
tree3f50f71836457bdd4342345b0f0903f462f031f5 /liba52
parent2addc399ab7f0d55e894029a446a8045dcebcd1d (diff)
downloadmpv-8a95255ef276a9cb80b57b9c74dc5d17cc1671c7.tar.bz2
mpv-8a95255ef276a9cb80b57b9c74dc5d17cc1671c7.tar.xz
runtime cpudetect in liba52 way
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@3909 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'liba52')
-rw-r--r--liba52/imdct.c11
-rw-r--r--liba52/resample.c8
-rw-r--r--liba52/resample_c.c8
-rw-r--r--liba52/resample_mmx.c8
-rw-r--r--liba52/test.c14
5 files changed, 28 insertions, 21 deletions
diff --git a/liba52/imdct.c b/liba52/imdct.c
index 523db22e86..63036cb7a6 100644
--- a/liba52/imdct.c
+++ b/liba52/imdct.c
@@ -26,7 +26,6 @@
*/
#include "config.h"
-#include "../cpudetect.h"
#include <math.h>
#include <stdio.h>
@@ -1107,9 +1106,9 @@ void imdct_init (uint32_t mm_accel)
{
int i, j, k;
- if(gCpuCaps.hasSSE) fprintf (stderr, "Using SSE optimized IMDCT transform\n");
- else if(gCpuCaps.has3DNow) fprintf (stderr, "Using experimental 3DNow optimized IMDCT transform\n");
- else fprintf (stderr, "No accelerated IMDCT transform found\n");
+ if(mm_accel & MM_ACCEL_X86_SSE) fprintf (stderr, "Using SSE optimized IMDCT transform\n");
+ else if(mm_accel & MM_ACCEL_X86_3DNOW) fprintf (stderr, "Using 3DNow optimized IMDCT transform\n");
+ else fprintf (stderr, "No accelerated IMDCT transform found\n");
/* Twiddle factors to turn IFFT into IMDCT */
for (i = 0; i < 128; i++) {
@@ -1185,8 +1184,8 @@ void imdct_init (uint32_t mm_accel)
imdct_512 = imdct_do_512;
#ifdef ARCH_X86
- if(gCpuCaps.hasSSE) imdct_512 = imdct_do_512_sse;
- else if(gCpuCaps.has3DNow) imdct_512 = imdct_do_512_3dnow;
+ if(mm_accel & MM_ACCEL_X86_SSE) imdct_512 = imdct_do_512_sse;
+ else if(mm_accel & MM_ACCEL_X86_3DNOW) imdct_512 = imdct_do_512_3dnow;
#endif // arch_x86
imdct_256 = imdct_do_256;
}
diff --git a/liba52/resample.c b/liba52/resample.c
index 6d88b10a65..61a45ab5d4 100644
--- a/liba52/resample.c
+++ b/liba52/resample.c
@@ -18,8 +18,8 @@
#include <inttypes.h>
#include <stdio.h>
#include "a52.h"
+#include "mm_accel.h"
#include "../config.h"
-#include "../cpudetect.h"
int (* a52_resample) (float * _f, int16_t * s16)=NULL;
@@ -592,12 +592,12 @@ void a52_resample_init(uint32_t mm_accel,int _flags,int _chans){
if(a52_resample==NULL) // only once please ;)
{
- if(gCpuCaps.hasMMX) fprintf(stderr, "Using MMX optimized resampler\n");
- else fprintf(stderr, "No accelerated resampler found\n");
+ if(mm_accel & MM_ACCEL_X86_MMX) fprintf(stderr, "Using MMX optimized resampler\n");
+ else fprintf(stderr, "No accelerated resampler found\n");
}
#ifdef ARCH_X86
- if(gCpuCaps.hasMMX) a52_resample= a52_resample_MMX;
+ if(mm_accel & MM_ACCEL_X86_MMX) a52_resample= a52_resample_MMX;
#else
if(0);
#endif
diff --git a/liba52/resample_c.c b/liba52/resample_c.c
index 6d88b10a65..61a45ab5d4 100644
--- a/liba52/resample_c.c
+++ b/liba52/resample_c.c
@@ -18,8 +18,8 @@
#include <inttypes.h>
#include <stdio.h>
#include "a52.h"
+#include "mm_accel.h"
#include "../config.h"
-#include "../cpudetect.h"
int (* a52_resample) (float * _f, int16_t * s16)=NULL;
@@ -592,12 +592,12 @@ void a52_resample_init(uint32_t mm_accel,int _flags,int _chans){
if(a52_resample==NULL) // only once please ;)
{
- if(gCpuCaps.hasMMX) fprintf(stderr, "Using MMX optimized resampler\n");
- else fprintf(stderr, "No accelerated resampler found\n");
+ if(mm_accel & MM_ACCEL_X86_MMX) fprintf(stderr, "Using MMX optimized resampler\n");
+ else fprintf(stderr, "No accelerated resampler found\n");
}
#ifdef ARCH_X86
- if(gCpuCaps.hasMMX) a52_resample= a52_resample_MMX;
+ if(mm_accel & MM_ACCEL_X86_MMX) a52_resample= a52_resample_MMX;
#else
if(0);
#endif
diff --git a/liba52/resample_mmx.c b/liba52/resample_mmx.c
index 6d88b10a65..61a45ab5d4 100644
--- a/liba52/resample_mmx.c
+++ b/liba52/resample_mmx.c
@@ -18,8 +18,8 @@
#include <inttypes.h>
#include <stdio.h>
#include "a52.h"
+#include "mm_accel.h"
#include "../config.h"
-#include "../cpudetect.h"
int (* a52_resample) (float * _f, int16_t * s16)=NULL;
@@ -592,12 +592,12 @@ void a52_resample_init(uint32_t mm_accel,int _flags,int _chans){
if(a52_resample==NULL) // only once please ;)
{
- if(gCpuCaps.hasMMX) fprintf(stderr, "Using MMX optimized resampler\n");
- else fprintf(stderr, "No accelerated resampler found\n");
+ if(mm_accel & MM_ACCEL_X86_MMX) fprintf(stderr, "Using MMX optimized resampler\n");
+ else fprintf(stderr, "No accelerated resampler found\n");
}
#ifdef ARCH_X86
- if(gCpuCaps.hasMMX) a52_resample= a52_resample_MMX;
+ if(mm_accel & MM_ACCEL_X86_MMX) a52_resample= a52_resample_MMX;
#else
if(0);
#endif
diff --git a/liba52/test.c b/liba52/test.c
index d77b716d35..13fca5bed7 100644
--- a/liba52/test.c
+++ b/liba52/test.c
@@ -11,6 +11,7 @@
#include <inttypes.h>
#include "a52.h"
+#include "mm_accel.h"
#include "../cpudetect.h"
static sample_t * samples;
@@ -51,6 +52,13 @@ long long t, sum=0, min=256*256*256*64;
stdout= stderr; //EVIL HACK FIXME
GetCpuCaps(&gCpuCaps);
stdout= temp;
+// gCpuCaps.hasMMX=0;
+// gCpuCaps.hasSSE=0;
+ if(gCpuCaps.hasMMX) accel |= MM_ACCEL_X86_MMX;
+ if(gCpuCaps.hasMMX2) accel |= MM_ACCEL_X86_MMXEXT;
+ if(gCpuCaps.hasSSE) accel |= MM_ACCEL_X86_SSE;
+ if(gCpuCaps.has3DNow) accel |= MM_ACCEL_X86_3DNOW;
+// if(gCpuCaps.has3DNowExt) accel |= MM_ACCEL_X86_3DNOWEXT;
samples = a52_init (accel);
if (samples == NULL) {
@@ -87,7 +95,7 @@ ENDTIMING
buf_size=0;
// decode:
- flags=A52_STEREO; //A52_STEREO; // A52_DOLBY // A52_2F2R // A52_3F2R | A52_LFE
+ flags=A52_STEREO; //A52_STEREO; //A52_DOLBY; //A52_STEREO; // A52_DOLBY // A52_2F2R // A52_3F2R | A52_LFE
channels=2;
flags |= A52_ADJUST_LEVEL;
@@ -99,7 +107,7 @@ ENDTIMING
// a52_dynrng (&state, NULL, NULL); // disable dynamic range compensation
STARTTIMING
- a52_resample_init(flags,channels);
+ a52_resample_init(accel,flags,channels);
s16 = out_buf;
for (i = 0; i < 6; i++) {
if (a52_block (&state, samples))
@@ -112,7 +120,7 @@ ENDTIMING
if(sum<min) min=sum;
sum=0;
#endif
- fwrite(out_buf,6*256*2*2,1,stdout);
+ fwrite(out_buf,6*256*2*channels,1,stdout);
}