From 66ce8f8a6e982c3de563205d12e0ed10725ef8c3 Mon Sep 17 00:00:00 2001 From: Ross Owen Date: Fri, 12 Dec 2014 17:02:42 +0000 Subject: [PATCH] More fixes to mixer code (note, xc_ptr still used in some places) --- module_usb_audio/mixer/mixer.xc | 43 +++++++++++++++++---------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/module_usb_audio/mixer/mixer.xc b/module_usb_audio/mixer/mixer.xc index a294aa6f..88cb10e4 100644 --- a/module_usb_audio/mixer/mixer.xc +++ b/module_usb_audio/mixer/mixer.xc @@ -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 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[]));