forked from PAWPAW-Mirror/lib_xua
Fixed up mixer channel comms scheme
This commit is contained in:
@@ -203,6 +203,9 @@ static inline void GiveSamplesToHost(chanend c, xc_ptr ptr, xc_ptr multIn)
|
|||||||
#pragma unsafe arrays
|
#pragma unsafe arrays
|
||||||
static inline void GetSamplesFromHost(chanend c)
|
static inline void GetSamplesFromHost(chanend c)
|
||||||
{
|
{
|
||||||
|
#if (NUM_USB_CHAN_OUT == 0)
|
||||||
|
inuint(c);
|
||||||
|
#else
|
||||||
{
|
{
|
||||||
#pragma loop unroll
|
#pragma loop unroll
|
||||||
for (int i=0; i<NUM_USB_CHAN_OUT; i++)
|
for (int i=0; i<NUM_USB_CHAN_OUT; i++)
|
||||||
@@ -238,6 +241,7 @@ static inline void GetSamplesFromHost(chanend c)
|
|||||||
write_via_xc_ptr_indexed(samples_array, i, h);
|
write_via_xc_ptr_indexed(samples_array, i, h);
|
||||||
#else
|
#else
|
||||||
ptr_samples[i] = sample;
|
ptr_samples[i] = sample;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -358,6 +362,7 @@ static void mixer1(chanend c_host, chanend c_mix_ctl, chanend c_mixer2)
|
|||||||
/* Request from audio()/mixer2() */
|
/* Request from audio()/mixer2() */
|
||||||
request = inuint(c_mixer2);
|
request = inuint(c_mixer2);
|
||||||
|
|
||||||
|
|
||||||
/* Forward on Request for data to decouple thread */
|
/* Forward on Request for data to decouple thread */
|
||||||
outuint(c_host, request);
|
outuint(c_host, request);
|
||||||
|
|
||||||
@@ -531,7 +536,7 @@ static void mixer1(chanend c_host, chanend c_mix_ctl, chanend c_mixer2)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
inuint(c_host);
|
|
||||||
#if MAX_MIX_COUNT > 0
|
#if MAX_MIX_COUNT > 0
|
||||||
outuint(c_mixer2, 0);
|
outuint(c_mixer2, 0);
|
||||||
GiveSamplesToHost(c_host, samples_to_host_map, multIn);
|
GiveSamplesToHost(c_host, samples_to_host_map, multIn);
|
||||||
@@ -543,7 +548,7 @@ static void mixer1(chanend c_host, chanend c_mix_ctl, chanend c_mixer2)
|
|||||||
inuint(c_mixer2);
|
inuint(c_mixer2);
|
||||||
#ifdef FAST_MIXER
|
#ifdef FAST_MIXER
|
||||||
mixed = doMix0(samples, mix_mult_slice(0));
|
mixed = doMix0(samples, mix_mult_slice(0));
|
||||||
#else
|
NN#else
|
||||||
mixed = doMix(samples, mix_map_slice(0),mix_mult_slice(0));
|
mixed = doMix(samples, mix_map_slice(0),mix_mult_slice(0));
|
||||||
#endif
|
#endif
|
||||||
write_via_xc_ptr_indexed(samples_array, (NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + 0), mixed);
|
write_via_xc_ptr_indexed(samples_array, (NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + 0), mixed);
|
||||||
@@ -603,8 +608,8 @@ static void mixer1(chanend c_host, chanend c_mix_ctl, chanend c_mixer2)
|
|||||||
#endif
|
#endif
|
||||||
GiveSamplesToDevice(c_mixer2, samples_to_device_map, multOut);
|
GiveSamplesToDevice(c_mixer2, samples_to_device_map, multOut);
|
||||||
GetSamplesFromDevice(c_mixer2);
|
GetSamplesFromDevice(c_mixer2);
|
||||||
GiveSamplesToHost(c_host, samples_to_host_map, multIn);
|
|
||||||
GetSamplesFromHost(c_host);
|
GetSamplesFromHost(c_host);
|
||||||
|
GiveSamplesToHost(c_host, samples_to_host_map, multIn);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user