dmix: rename mix_areas*

Rename all mix_areas* symbols so that they contain the sample width
instead of some meaningless number.
This commit is contained in:
Clemens Ladisch 2007-12-10 12:31:29 +01:00
parent de2b7a42d7
commit 79db4a6bfa
7 changed files with 159 additions and 144 deletions

View file

@ -24,20 +24,20 @@
#define DIRECT_IPC_SEMS 1
#define DIRECT_IPC_SEM_CLIENT 0
typedef void (mix_areas1_t)(unsigned int size,
volatile signed short *dst, signed short *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step);
typedef void (mix_areas_16_t)(unsigned int size,
volatile signed short *dst, signed short *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step);
typedef void (mix_areas2_t)(unsigned int size,
volatile signed int *dst, signed int *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step);
typedef void (mix_areas_32_t)(unsigned int size,
volatile signed int *dst, signed int *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step);
typedef void (mix_areas3_t)(unsigned int size,
volatile unsigned char *dst, unsigned char *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step);
typedef void (mix_areas_24_t)(unsigned int size,
volatile unsigned char *dst, unsigned char *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step);
struct slave_params {
snd_pcm_format_t format;
@ -148,9 +148,9 @@ struct snd_pcm_direct {
struct {
int shmid_sum; /* IPC global sum ring buffer memory identification */
signed int *sum_buffer; /* shared sum buffer */
mix_areas1_t *mix_areas1;
mix_areas2_t *mix_areas2;
mix_areas3_t *mix_areas3;
mix_areas_16_t *mix_areas_16;
mix_areas_32_t *mix_areas_32;
mix_areas_24_t *mix_areas_24;
} dmix;
struct {
} dsnoop;

View file

@ -170,13 +170,13 @@ static void mix_areas(snd_pcm_direct_t *dmix,
* process all areas in one loop
* it optimizes the memory accesses for this case
*/
dmix->u.dmix.mix_areas1(size * channels,
((signed short *)dst_areas[0].addr) + (dst_ofs * channels),
((signed short *)src_areas[0].addr) + (src_ofs * channels),
dmix->u.dmix.sum_buffer + (dst_ofs * channels),
sizeof(signed short),
sizeof(signed short),
sizeof(signed int));
dmix->u.dmix.mix_areas_16(size * channels,
((signed short *)dst_areas[0].addr) + (dst_ofs * channels),
((signed short *)src_areas[0].addr) + (src_ofs * channels),
dmix->u.dmix.sum_buffer + (dst_ofs * channels),
sizeof(signed short),
sizeof(signed short),
sizeof(signed int));
return;
}
for (chn = 0; chn < channels; chn++) {
@ -188,7 +188,7 @@ static void mix_areas(snd_pcm_direct_t *dmix,
src = (signed short *)(((char *)src_areas[chn].addr + src_areas[chn].first / 8) + (src_ofs * src_step));
dst = (signed short *)(((char *)dst_areas[dchn].addr + dst_areas[dchn].first / 8) + (dst_ofs * dst_step));
sum = dmix->u.dmix.sum_buffer + channels * dst_ofs + chn;
dmix->u.dmix.mix_areas1(size, dst, src, sum, dst_step, src_step, channels * sizeof(signed int));
dmix->u.dmix.mix_areas_16(size, dst, src, sum, dst_step, src_step, channels * sizeof(signed int));
}
} else if (dmix->shmptr->s.format == SND_PCM_FORMAT_S32_LE ||
dmix->shmptr->s.format == SND_PCM_FORMAT_S32_BE) {
@ -199,13 +199,13 @@ static void mix_areas(snd_pcm_direct_t *dmix,
* process all areas in one loop
* it optimizes the memory accesses for this case
*/
dmix->u.dmix.mix_areas2(size * channels,
((signed int *)dst_areas[0].addr) + (dst_ofs * channels),
((signed int *)src_areas[0].addr) + (src_ofs * channels),
dmix->u.dmix.sum_buffer + (dst_ofs * channels),
sizeof(signed int),
sizeof(signed int),
sizeof(signed int));
dmix->u.dmix.mix_areas_32(size * channels,
((signed int *)dst_areas[0].addr) + (dst_ofs * channels),
((signed int *)src_areas[0].addr) + (src_ofs * channels),
dmix->u.dmix.sum_buffer + (dst_ofs * channels),
sizeof(signed int),
sizeof(signed int),
sizeof(signed int));
return;
}
for (chn = 0; chn < channels; chn++) {
@ -217,7 +217,7 @@ static void mix_areas(snd_pcm_direct_t *dmix,
src = (signed int *)(((char *)src_areas[chn].addr + src_areas[chn].first / 8) + (src_ofs * src_step));
dst = (signed int *)(((char *)dst_areas[dchn].addr + dst_areas[dchn].first / 8) + (dst_ofs * dst_step));
sum = dmix->u.dmix.sum_buffer + channels * dst_ofs + chn;
dmix->u.dmix.mix_areas2(size, dst, src, sum, dst_step, src_step, channels * sizeof(signed int));
dmix->u.dmix.mix_areas_32(size, dst, src, sum, dst_step, src_step, channels * sizeof(signed int));
}
} else { /* SND_PCM_FORMAT_S24_3LE */
unsigned char *src;
@ -227,11 +227,11 @@ static void mix_areas(snd_pcm_direct_t *dmix,
* process all areas in one loop
* it optimizes the memory accesses for this case
*/
dmix->u.dmix.mix_areas3(size * channels,
((unsigned char *)dst_areas[0].addr) + 3 * dst_ofs * channels,
((unsigned char *)src_areas[0].addr) + 3 * src_ofs * channels,
dmix->u.dmix.sum_buffer + (dst_ofs * channels),
3, 3, sizeof(signed int));
dmix->u.dmix.mix_areas_24(size * channels,
((unsigned char *)dst_areas[0].addr) + 3 * dst_ofs * channels,
((unsigned char *)src_areas[0].addr) + 3 * src_ofs * channels,
dmix->u.dmix.sum_buffer + (dst_ofs * channels),
3, 3, sizeof(signed int));
return;
}
for (chn = 0; chn < channels; chn++) {
@ -243,7 +243,7 @@ static void mix_areas(snd_pcm_direct_t *dmix,
src = (unsigned char *)(((char *)src_areas[chn].addr + src_areas[chn].first / 8) + (src_ofs * src_step));
dst = (unsigned char *)(((char *)dst_areas[dchn].addr + dst_areas[dchn].first / 8) + (dst_ofs * dst_step));
sum = dmix->u.dmix.sum_buffer + channels * dst_ofs + chn;
dmix->u.dmix.mix_areas3(size, dst, src, sum, dst_step, src_step, channels * sizeof(signed int));
dmix->u.dmix.mix_areas_24(size, dst, src, sum, dst_step, src_step, channels * sizeof(signed int));
}
}
}

View file

@ -48,10 +48,10 @@ static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
#endif
#if IS_CONCURRENT
static void mix_areas1(unsigned int size,
volatile signed short *dst, signed short *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
static void mix_areas_16(unsigned int size,
volatile signed short *dst, signed short *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
{
register signed int sample, old_sample;
@ -79,10 +79,10 @@ static void mix_areas1(unsigned int size,
}
}
static void mix_areas2(unsigned int size,
volatile signed int *dst, signed int *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
static void mix_areas_32(unsigned int size,
volatile signed int *dst, signed int *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
{
register signed int sample, old_sample;
@ -112,8 +112,8 @@ static void mix_areas2(unsigned int size,
static void mix_select_callbacks(snd_pcm_direct_t *dmix)
{
dmix->u.dmix.mix_areas1 = mix_areas1;
dmix->u.dmix.mix_areas2 = mix_areas2;
dmix->u.dmix.mix_areas_16 = mix_areas_16;
dmix->u.dmix.mix_areas_32 = mix_areas_32;
}
#else
@ -126,10 +126,13 @@ static void mix_select_callbacks(snd_pcm_direct_t *dmix)
#include <byteswap.h>
static void generic_mix_areas1_native(unsigned int size,
volatile signed short *dst, signed short *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
static void generic_mix_areas_16_native(unsigned int size,
volatile signed short *dst,
signed short *src,
volatile signed int *sum,
size_t dst_step,
size_t src_step,
size_t sum_step)
{
register signed int sample;
@ -155,10 +158,13 @@ static void generic_mix_areas1_native(unsigned int size,
}
}
static void generic_mix_areas2_native(unsigned int size,
volatile signed int *dst, signed int *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
static void generic_mix_areas_32_native(unsigned int size,
volatile signed int *dst,
signed int *src,
volatile signed int *sum,
size_t dst_step,
size_t src_step,
size_t sum_step)
{
register signed int sample;
@ -186,10 +192,13 @@ static void generic_mix_areas2_native(unsigned int size,
}
}
static void generic_mix_areas1_swap(unsigned int size,
volatile signed short *dst, signed short *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
static void generic_mix_areas_16_swap(unsigned int size,
volatile signed short *dst,
signed short *src,
volatile signed int *sum,
size_t dst_step,
size_t src_step,
size_t sum_step)
{
register signed int sample;
@ -215,10 +224,13 @@ static void generic_mix_areas1_swap(unsigned int size,
}
}
static void generic_mix_areas2_swap(unsigned int size,
volatile signed int *dst, signed int *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
static void generic_mix_areas_32_swap(unsigned int size,
volatile signed int *dst,
signed int *src,
volatile signed int *sum,
size_t dst_step,
size_t src_step,
size_t sum_step)
{
register signed int sample;
@ -247,10 +259,13 @@ static void generic_mix_areas2_swap(unsigned int size,
}
/* always little endian */
static void generic_mix_areas3(unsigned int size,
volatile unsigned char *dst, unsigned char *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
static void generic_mix_areas_24(unsigned int size,
volatile unsigned char *dst,
unsigned char *src,
volatile signed int *sum,
size_t dst_step,
size_t src_step,
size_t sum_step)
{
register signed int sample;
@ -281,13 +296,13 @@ static void generic_mix_areas3(unsigned int size,
static void generic_mix_select_callbacks(snd_pcm_direct_t *dmix)
{
if (snd_pcm_format_cpu_endian(dmix->shmptr->s.format)) {
dmix->u.dmix.mix_areas1 = generic_mix_areas1_native;
dmix->u.dmix.mix_areas2 = generic_mix_areas2_native;
dmix->u.dmix.mix_areas_16 = generic_mix_areas_16_native;
dmix->u.dmix.mix_areas_32 = generic_mix_areas_32_native;
} else {
dmix->u.dmix.mix_areas1 = generic_mix_areas1_swap;
dmix->u.dmix.mix_areas2 = generic_mix_areas2_swap;
dmix->u.dmix.mix_areas_16 = generic_mix_areas_16_swap;
dmix->u.dmix.mix_areas_32 = generic_mix_areas_32_swap;
}
dmix->u.dmix.mix_areas3 = generic_mix_areas3;
dmix->u.dmix.mix_areas_24 = generic_mix_areas_24;
}
#endif

View file

@ -2,32 +2,32 @@
* optimized mixing code for i386
*/
#define MIX_AREAS1 mix_areas1
#define MIX_AREAS1_MMX mix_areas1_mmx
#define MIX_AREAS2 mix_areas2
#define MIX_AREAS3 mix_areas3
#define MIX_AREAS3_CMOV mix_areas3_cmov
#define MIX_AREAS_16 mix_areas_16
#define MIX_AREAS_16_MMX mix_areas_16_mmx
#define MIX_AREAS_32 mix_areas_32
#define MIX_AREAS_24 mix_areas_24
#define MIX_AREAS_24_CMOV mix_areas_24_cmov
#define LOCK_PREFIX ""
#include "pcm_dmix_i386.h"
#undef MIX_AREAS1
#undef MIX_AREAS1_MMX
#undef MIX_AREAS2
#undef MIX_AREAS3
#undef MIX_AREAS3_CMOV
#undef MIX_AREAS_16
#undef MIX_AREAS_16_MMX
#undef MIX_AREAS_32
#undef MIX_AREAS_24
#undef MIX_AREAS_24_CMOV
#undef LOCK_PREFIX
#define MIX_AREAS1 mix_areas1_smp
#define MIX_AREAS1_MMX mix_areas1_smp_mmx
#define MIX_AREAS2 mix_areas2_smp
#define MIX_AREAS3 mix_areas3_smp
#define MIX_AREAS3_CMOV mix_areas3_smp_cmov
#define MIX_AREAS_16 mix_areas_16_smp
#define MIX_AREAS_16_MMX mix_areas_16_smp_mmx
#define MIX_AREAS_32 mix_areas_32_smp
#define MIX_AREAS_24 mix_areas_24_smp
#define MIX_AREAS_24_CMOV mix_areas_24_smp_cmov
#define LOCK_PREFIX "lock ; "
#include "pcm_dmix_i386.h"
#undef MIX_AREAS1
#undef MIX_AREAS1_MMX
#undef MIX_AREAS2
#undef MIX_AREAS3
#undef MIX_AREAS3_CMOV
#undef MIX_AREAS_16
#undef MIX_AREAS_16_MMX
#undef MIX_AREAS_32
#undef MIX_AREAS_24
#undef MIX_AREAS_24_CMOV
#undef LOCK_PREFIX
#define i386_dmix_supported_format \
@ -70,14 +70,14 @@ static void mix_select_callbacks(snd_pcm_direct_t *dmix)
}
if (mmx) {
dmix->u.dmix.mix_areas1 = smp > 1 ? mix_areas1_smp_mmx : mix_areas1_mmx;
dmix->u.dmix.mix_areas_16 = smp > 1 ? mix_areas_16_smp_mmx : mix_areas_16_mmx;
} else {
dmix->u.dmix.mix_areas1 = smp > 1 ? mix_areas1_smp : mix_areas1;
dmix->u.dmix.mix_areas_16 = smp > 1 ? mix_areas_16_smp : mix_areas_16;
}
dmix->u.dmix.mix_areas2 = smp > 1 ? mix_areas2_smp : mix_areas2;
dmix->u.dmix.mix_areas_32 = smp > 1 ? mix_areas_32_smp : mix_areas_32;
if (cmov) {
dmix->u.dmix.mix_areas3 = smp > 1 ? mix_areas3_smp_cmov : mix_areas3_cmov;
dmix->u.dmix.mix_areas_24 = smp > 1 ? mix_areas_24_smp_cmov : mix_areas_24_cmov;
} else {
dmix->u.dmix.mix_areas3 = smp > 1 ? mix_areas3_smp: mix_areas3;
dmix->u.dmix.mix_areas_24 = smp > 1 ? mix_areas_24_smp: mix_areas_24;
}
}

View file

@ -29,10 +29,10 @@
/*
* for plain i386
*/
static void MIX_AREAS1(unsigned int size,
volatile signed short *dst, signed short *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
static void MIX_AREAS_16(unsigned int size,
volatile signed short *dst, signed short *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
{
unsigned int old_ebx;
@ -153,10 +153,10 @@ static void MIX_AREAS1(unsigned int size,
/*
* MMX optimized
*/
static void MIX_AREAS1_MMX(unsigned int size,
volatile signed short *dst, signed short *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
static void MIX_AREAS_16_MMX(unsigned int size,
volatile signed short *dst, signed short *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
{
unsigned int old_ebx;
@ -243,10 +243,10 @@ static void MIX_AREAS1_MMX(unsigned int size,
/*
* for plain i386, 32-bit version (24-bit resolution)
*/
static void MIX_AREAS2(unsigned int size,
volatile signed int *dst, signed int *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
static void MIX_AREAS_32(unsigned int size,
volatile signed int *dst, signed int *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
{
unsigned int old_ebx;
@ -356,10 +356,10 @@ static void MIX_AREAS2(unsigned int size,
/*
* 24-bit version for plain i386
*/
static void MIX_AREAS3(unsigned int size,
volatile unsigned char *dst, unsigned char *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
static void MIX_AREAS_24(unsigned int size,
volatile unsigned char *dst, unsigned char *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
{
unsigned int old_ebx;
@ -462,10 +462,10 @@ static void MIX_AREAS3(unsigned int size,
/*
* 24-bit version for Pentium Pro/II
*/
static void MIX_AREAS3_CMOV(unsigned int size,
volatile unsigned char *dst, unsigned char *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
static void MIX_AREAS_24_CMOV(unsigned int size,
volatile unsigned char *dst, unsigned char *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
{
unsigned int old_ebx;

View file

@ -2,24 +2,24 @@
* optimized mixing code for x86-64
*/
#define MIX_AREAS1 mix_areas1
#define MIX_AREAS2 mix_areas2
#define MIX_AREAS3 mix_areas3
#define MIX_AREAS_16 mix_areas_16
#define MIX_AREAS_32 mix_areas_32
#define MIX_AREAS_24 mix_areas_24
#define LOCK_PREFIX ""
#include "pcm_dmix_x86_64.h"
#undef MIX_AREAS1
#undef MIX_AREAS2
#undef MIX_AREAS3
#undef MIX_AREAS_16
#undef MIX_AREAS_32
#undef MIX_AREAS_24
#undef LOCK_PREFIX
#define MIX_AREAS1 mix_areas1_smp
#define MIX_AREAS2 mix_areas2_smp
#define MIX_AREAS3 mix_areas3_smp
#define MIX_AREAS_16 mix_areas_16_smp
#define MIX_AREAS_32 mix_areas_32_smp
#define MIX_AREAS_24 mix_areas_24_smp
#define LOCK_PREFIX "lock ; "
#include "pcm_dmix_x86_64.h"
#undef MIX_AREAS1
#undef MIX_AREAS2
#undef MIX_AREAS3
#undef MIX_AREAS_16
#undef MIX_AREAS_32
#undef MIX_AREAS_24
#undef LOCK_PREFIX
#define x86_64_dmix_supported_format \
@ -55,7 +55,7 @@ static void mix_select_callbacks(snd_pcm_direct_t *dmix)
}
}
// printf("SMP: %i\n", smp);
dmix->u.dmix.mix_areas1 = smp > 1 ? mix_areas1_smp : mix_areas1;
dmix->u.dmix.mix_areas2 = smp > 1 ? mix_areas2_smp : mix_areas2;
dmix->u.dmix.mix_areas3 = smp > 1 ? mix_areas3_smp : mix_areas3;
dmix->u.dmix.mix_areas_16 = smp > 1 ? mix_areas_16_smp : mix_areas_16;
dmix->u.dmix.mix_areas_32 = smp > 1 ? mix_areas_32_smp : mix_areas_32;
dmix->u.dmix.mix_areas_24 = smp > 1 ? mix_areas_24_smp : mix_areas_24;
}

View file

@ -30,10 +30,10 @@
/*
* MMX optimized
*/
static void MIX_AREAS1(unsigned int size,
volatile signed short *dst, signed short *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
static void MIX_AREAS_16(unsigned int size,
volatile signed short *dst, signed short *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
{
unsigned long long old_rbx;
@ -125,10 +125,10 @@ static void MIX_AREAS1(unsigned int size,
/*
* 32-bit version (24-bit resolution)
*/
static void MIX_AREAS2(unsigned int size,
volatile signed int *dst, signed int *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
static void MIX_AREAS_32(unsigned int size,
volatile signed int *dst, signed int *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
{
unsigned long long old_rbx;
@ -240,10 +240,10 @@ static void MIX_AREAS2(unsigned int size,
/*
* 24-bit version
*/
static void MIX_AREAS3(unsigned int size,
volatile unsigned char *dst, unsigned char *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
static void MIX_AREAS_24(unsigned int size,
volatile unsigned char *dst, unsigned char *src,
volatile signed int *sum, size_t dst_step,
size_t src_step, size_t sum_step)
{
unsigned long long old_rbx;