Merge pull request #7253 from dhalbert/samd51-stereo-fix
fix playing mono files on stereo output
This commit is contained in:
commit
6457827514
@ -405,7 +405,13 @@ void common_hal_audioio_audioout_play(audioio_audioout_obj_t *self,
|
||||
if (self->right_channel == &pin_PA02) {
|
||||
right_channel_reg = (uint32_t)&DAC->DATABUF[0].reg;
|
||||
}
|
||||
if (right_channel_reg == left_channel_reg + 2 && audiosample_bits_per_sample(sample) == 16) {
|
||||
|
||||
size_t num_channels = audiosample_channel_count(sample);
|
||||
|
||||
if (num_channels == 2 &&
|
||||
// Are DAC channels sequential?
|
||||
left_channel_reg + 2 == right_channel_reg &&
|
||||
audiosample_bits_per_sample(sample) == 16) {
|
||||
result = audio_dma_setup_playback(&self->left_dma, sample, loop, false, 0,
|
||||
false /* output unsigned */,
|
||||
left_channel_reg,
|
||||
@ -415,7 +421,11 @@ void common_hal_audioio_audioout_play(audioio_audioout_obj_t *self,
|
||||
false /* output unsigned */,
|
||||
left_channel_reg,
|
||||
left_channel_trigger);
|
||||
if (right_channel_reg != 0 && result == AUDIO_DMA_OK) {
|
||||
// Don't play back on right channel unless stereo.
|
||||
// TODO possibility: Set up non-incrementing DMA on one channel so they use the same samples?
|
||||
// Right now, playing back mono on both channels causes sample to play twice as fast.
|
||||
if (num_channels == 2 &&
|
||||
right_channel_reg != 0 && result == AUDIO_DMA_OK) {
|
||||
result = audio_dma_setup_playback(&self->right_dma, sample, loop, true, 1,
|
||||
false /* output unsigned */,
|
||||
right_channel_reg,
|
||||
|
Loading…
x
Reference in New Issue
Block a user