forked from PAWPAW-Mirror/lib_xua
More fixes to mixer code (note, xc_ptr still used in some places)
This commit is contained in:
@@ -37,6 +37,7 @@ static unsigned abs(int x)
|
||||
#endif
|
||||
|
||||
static int samples_array[NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + MAX_MIX_COUNT + 1]; /* One larger for an "off" channel for mixer sources" */
|
||||
xc_ptr samples;
|
||||
|
||||
unsafe
|
||||
{
|
||||
@@ -268,7 +269,7 @@ static inline void GiveSamplesToDevice(chanend c, xc_ptr ptr, xc_ptr multOut, un
|
||||
read_via_xc_ptr_indexed(index, ptr, i);
|
||||
|
||||
/* Read the actual sample value */
|
||||
read_via_xc_ptr_indexed(sample, samples_array, index);
|
||||
read_via_xc_ptr_indexed(sample, samples, index);
|
||||
#else
|
||||
unsafe
|
||||
{
|
||||
@@ -547,17 +548,17 @@ static void mixer1(chanend c_host, chanend c_mix_ctl, chanend c_mixer2)
|
||||
underflow = inuint(c_host);
|
||||
#if MAX_MIX_COUNT > 0
|
||||
outuint(c_mixer2, underflow);
|
||||
GiveSamplesToHost(c_host, samples_array, samples_to_host_map, multIn);
|
||||
GiveSamplesToHost(c_host, samples_to_host_map, multIn);
|
||||
|
||||
outuint(c_mixer2, 0);
|
||||
inuint(c_mixer2);
|
||||
getSamplesFromHost(c_host, samples_array, 0, underflow);
|
||||
GetSamplesFromHost(c_host, underflow);
|
||||
outuint(c_mixer2, 0);
|
||||
inuint(c_mixer2);
|
||||
#ifdef FAST_MIXER
|
||||
mixed = doMix0(samples_array, mix_mult_slice(0));
|
||||
mixed = doMix0(samples, mix_mult_slice(0));
|
||||
#else
|
||||
mixed = doMix(samples_array, mix_map_slice(0),mix_mult_slice(0));
|
||||
mixed = doMix(samples, mix_map_slice(0),mix_mult_slice(0));
|
||||
#endif
|
||||
write_via_xc_ptr_indexed(samples_array, (NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + 0), mixed);
|
||||
|
||||
@@ -572,9 +573,9 @@ static void mixer1(chanend c_host, chanend c_mix_ctl, chanend c_mixer2)
|
||||
|
||||
#if MAX_MIX_COUNT > 2
|
||||
#ifdef FAST_MIXER
|
||||
mixed = doMix2(samples_array, mix_mult_slice(2));
|
||||
mixed = doMix2(samples, mix_mult_slice(2));
|
||||
#else
|
||||
mixed = doMix(samples_array,mix_map_slice(2),mix_mult_slice(2));
|
||||
mixed = doMix(samples, mix_map_slice(2),mix_mult_slice(2));
|
||||
#endif
|
||||
write_via_xc_ptr_indexed(samples_array, (NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + 2), mixed);
|
||||
|
||||
@@ -585,7 +586,7 @@ static void mixer1(chanend c_host, chanend c_mix_ctl, chanend c_mixer2)
|
||||
|
||||
#if MAX_MIX_COUNT > 4
|
||||
#ifdef FAST_MIXER
|
||||
mixed = doMix4(samples_array, mix_mult_slice(4));
|
||||
mixed = doMix4(samples, mix_mult_slice(4));
|
||||
#else
|
||||
mixed = doMix(samples_array,mix_map_slice(4),mix_mult_slice(4));
|
||||
#endif
|
||||
@@ -598,7 +599,7 @@ static void mixer1(chanend c_host, chanend c_mix_ctl, chanend c_mixer2)
|
||||
|
||||
#if MAX_MIX_COUNT > 6
|
||||
#ifdef FAST_MIXER
|
||||
mixed = doMix6(samples_array, mix_mult_slice(6));
|
||||
mixed = doMix6(samples, mix_mult_slice(6));
|
||||
#else
|
||||
mixed = doMix(samples_array,mix_map_slice(6),mix_mult_slice(6));
|
||||
#endif
|
||||
@@ -664,7 +665,7 @@ static void mixer2(chanend c_mixer1, chanend c_audio)
|
||||
|
||||
for (int i=0;i<MAX_MIX_COUNT;i++)
|
||||
{
|
||||
write_via_xc_ptr_indexed(samples_array, (NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + i), 0);
|
||||
write_via_xc_ptr_indexed(samples, (NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + i), 0);
|
||||
}
|
||||
|
||||
/* Inform audio thread about freq change */
|
||||
@@ -678,20 +679,20 @@ static void mixer2(chanend c_mixer1, chanend c_audio)
|
||||
else
|
||||
{
|
||||
underflow = inuint(c_mixer1);
|
||||
giveSamplesToDevice(c_audio, samples_array, samples_to_device_map, multOut, underflow);
|
||||
GiveSamplesToDevice(c_audio, samples_to_device_map, multOut, underflow);
|
||||
inuint(c_mixer1);
|
||||
outuint(c_mixer1, 0);
|
||||
getSamplesFromDevice(c_audio, samples_array, NUM_USB_CHAN_OUT);
|
||||
GetSamplesFromDevice(c_audio);
|
||||
inuint(c_mixer1);
|
||||
outuint(c_mixer1, 0);
|
||||
#if MAX_MIX_COUNT > 1
|
||||
#ifdef FAST_MIXER
|
||||
mixed = doMix1(samples_array, mix_mult_slice(1));
|
||||
mixed = doMix1(samples, mix_mult_slice(1));
|
||||
#else
|
||||
mixed = doMix(samples_array,mix_map_slice(1),mix_mult_slice(1));
|
||||
#endif
|
||||
|
||||
write_via_xc_ptr_indexed(samples_array, (NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + 1), mixed);
|
||||
write_via_xc_ptr_indexed(samples, (NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + 1), mixed);
|
||||
|
||||
#if defined (LEVEL_METER_HOST) || defined(LEVEL_METER_LEDS)
|
||||
ComputeMixerLevel(mixed, 1);
|
||||
@@ -706,12 +707,12 @@ static void mixer2(chanend c_mixer1, chanend c_audio)
|
||||
{
|
||||
#if MAX_MIX_COUNT > 3
|
||||
#ifdef FAST_MIXER
|
||||
mixed = doMix3(samples_array, mix_mult_slice(3));
|
||||
mixed = doMix3(samples, mix_mult_slice(3));
|
||||
#else
|
||||
mixed = doMix(samples_array,mix_map_slice(3),mix_mult_slice(3));
|
||||
#endif
|
||||
|
||||
write_via_xc_ptr_indexed(samples_array, (NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + 3), mixed);
|
||||
write_via_xc_ptr_indexed(samples, (NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + 3), mixed);
|
||||
|
||||
#if defined (LEVEL_METER_HOST) || defined(LEVEL_METER_LEDS)
|
||||
ComputeMixerLevel(mixed, 3);
|
||||
@@ -720,11 +721,11 @@ static void mixer2(chanend c_mixer1, chanend c_audio)
|
||||
|
||||
#if MAX_MIX_COUNT > 5
|
||||
#ifdef FAST_MIXER
|
||||
mixed = doMix5(samples_array, mix_mult_slice(5));
|
||||
mixed = doMix5(samples, mix_mult_slice(5));
|
||||
#else
|
||||
mixed = doMix(samples_array,mix_map_slice(5),mix_mult_slice(5));
|
||||
#endif
|
||||
write_via_xc_ptr_indexed(samples_array, NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + 5, mixed);
|
||||
write_via_xc_ptr_indexed(samples, NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + 5, mixed);
|
||||
|
||||
#if defined (LEVEL_METER_HOST) || defined(LEVEL_METER_LEDS)
|
||||
ComputeMixerLevel(mixed, 5);
|
||||
@@ -733,12 +734,12 @@ static void mixer2(chanend c_mixer1, chanend c_audio)
|
||||
|
||||
#if MAX_MIX_COUNT > 7
|
||||
#ifdef FAST_MIXER
|
||||
mixed = doMix7(samples_array, mix_mult_slice(7));
|
||||
mixed = doMix7(samples, mix_mult_slice(7));
|
||||
#else
|
||||
mixed = doMix(samples_array,mix_map_slice(7),mix_mult_slice(7));
|
||||
#endif
|
||||
|
||||
write_via_xc_ptr_indexed(samples_array, NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + 7, mixed);
|
||||
write_via_xc_ptr_indexed(samples, NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + 7, mixed);
|
||||
#if defined (LEVEL_METER_HOST) || defined(LEVEL_METER_LEDS)
|
||||
ComputeMixerLevel(mixed, 7);
|
||||
#endif
|
||||
@@ -758,7 +759,7 @@ void mixer(chanend c_mix_in, chanend c_mix_out, chanend c_mix_ctl)
|
||||
multOut = array_to_xc_ptr((multOut_array,unsigned[]));
|
||||
multIn = array_to_xc_ptr((multIn_array,unsigned[]));
|
||||
|
||||
//samples = array_to_xc_ptr((samples_array,unsigned[]));
|
||||
samples = array_to_xc_ptr((samples_array,unsigned[]));
|
||||
samples_to_host_map = array_to_xc_ptr((samples_to_host_map_array,unsigned[]));
|
||||
samples_to_device_map = array_to_xc_ptr((samples_to_device_map_array,unsigned[]));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user