mirror of
https://github.com/mpv-player/mpv
synced 2024-12-24 07:33:46 +01:00
runtime cpudetect the liba52 way part 2 (downmix.c)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@3911 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
1d213cc5e4
commit
d5ea3b4e44
@ -43,6 +43,7 @@ void bit_allocate (a52_state_t * state, a52_ba_t * ba, int bndstart,
|
||||
|
||||
int downmix_init (int input, int flags, sample_t * level,
|
||||
sample_t clev, sample_t slev);
|
||||
void downmix_accel_init(uint32_t mm_accel);
|
||||
int downmix_coeff (sample_t * coeff, int acmod, int output, sample_t level,
|
||||
sample_t clev, sample_t slev);
|
||||
extern void (*downmix) (sample_t * samples, int acmod, int output, sample_t bias,
|
||||
|
@ -24,18 +24,16 @@
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "../cpudetect.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
#include "a52.h"
|
||||
#include "a52_internal.h"
|
||||
#include "mm_accel.h"
|
||||
|
||||
#define CONVERT(acmod,output) (((output) << 3) + (acmod))
|
||||
|
||||
//#undef HAVE_SSE
|
||||
//#undef HAVE_MMX
|
||||
|
||||
void (*downmix)(sample_t * samples, int acmod, int output, sample_t bias,
|
||||
sample_t clev, sample_t slev)= NULL;
|
||||
@ -47,7 +45,17 @@ static void downmix_C (sample_t * samples, int acmod, int output, sample_t bias,
|
||||
sample_t clev, sample_t slev);
|
||||
static void upmix_MMX (sample_t * samples, int acmod, int output);
|
||||
static void upmix_C (sample_t * samples, int acmod, int output);
|
||||
|
||||
|
||||
void downmix_accel_init(uint32_t mm_accel)
|
||||
{
|
||||
upmix= upmix_C;
|
||||
downmix= downmix_C;
|
||||
#ifdef ARCH_X86
|
||||
if(mm_accel & MM_ACCEL_X86_MMX) upmix= upmix_MMX;
|
||||
if(mm_accel & MM_ACCEL_X86_SSE) downmix= downmix_SSE;
|
||||
#endif
|
||||
}
|
||||
|
||||
int downmix_init (int input, int flags, sample_t * level,
|
||||
sample_t clev, sample_t slev)
|
||||
{
|
||||
@ -77,13 +85,6 @@ int downmix_init (int input, int flags, sample_t * level,
|
||||
};
|
||||
int output;
|
||||
|
||||
upmix= upmix_C;
|
||||
downmix= downmix_C;
|
||||
#ifdef ARCH_X86
|
||||
if(gCpuCaps.hasMMX) upmix= upmix_MMX;
|
||||
if(gCpuCaps.hasSSE) downmix= downmix_SSE;
|
||||
#endif
|
||||
|
||||
output = flags & A52_CHANNEL_MASK;
|
||||
if (output > A52_DOLBY)
|
||||
return -1;
|
||||
|
@ -57,6 +57,7 @@ sample_t * a52_init (uint32_t mm_accel)
|
||||
int i;
|
||||
|
||||
imdct_init (mm_accel);
|
||||
downmix_accel_init(mm_accel);
|
||||
|
||||
samples = memalign (16, 256 * 12 * sizeof (sample_t));
|
||||
if (samples == NULL)
|
||||
|
Loading…
Reference in New Issue
Block a user