Merge commit 'eb0ef' into tweak_pixelbuf

This commit is contained in:
Scott Shawcroft 2020-01-29 13:40:33 -08:00
commit 710c1985ba
No known key found for this signature in database
GPG Key ID: 9349BC7E64B1921E
2 changed files with 17 additions and 10 deletions

View File

@ -203,13 +203,13 @@ audio_dma_result audio_dma_setup_playback(audio_dma_t* dma,
if (output_signed != samples_signed) { if (output_signed != samples_signed) {
output_spacing = 1; output_spacing = 1;
max_buffer_length /= dma->spacing; max_buffer_length /= dma->spacing;
dma->first_buffer = (uint8_t*) m_malloc(max_buffer_length, false); dma->first_buffer = (uint8_t*) m_realloc(dma->first_buffer, max_buffer_length);
if (dma->first_buffer == NULL) { if (dma->first_buffer == NULL) {
return AUDIO_DMA_MEMORY_ERROR; return AUDIO_DMA_MEMORY_ERROR;
} }
dma->first_buffer_free = true; dma->first_buffer_free = true;
if (!single_buffer) { if (!single_buffer) {
dma->second_buffer = (uint8_t*) m_malloc(max_buffer_length, false); dma->second_buffer = (uint8_t*) m_realloc(dma->second_buffer, max_buffer_length);
if (dma->second_buffer == NULL) { if (dma->second_buffer == NULL) {
return AUDIO_DMA_MEMORY_ERROR; return AUDIO_DMA_MEMORY_ERROR;
} }

View File

@ -397,6 +397,12 @@ void common_hal_audioio_audioout_play(audioio_audioout_obj_t* self,
if (self->right_channel == &pin_PA02) { if (self->right_channel == &pin_PA02) {
right_channel_reg = (uint32_t) &DAC->DATABUF[0].reg; right_channel_reg = (uint32_t) &DAC->DATABUF[0].reg;
} }
if(right_channel_reg == left_channel_reg + 2 && audiosample_bits_per_sample(sample) == 16) {
result = audio_dma_setup_playback(&self->left_dma, sample, loop, false, 0,
false /* output unsigned */,
left_channel_reg,
left_channel_trigger);
} else {
result = audio_dma_setup_playback(&self->left_dma, sample, loop, true, 0, result = audio_dma_setup_playback(&self->left_dma, sample, loop, true, 0,
false /* output unsigned */, false /* output unsigned */,
left_channel_reg, left_channel_reg,
@ -407,6 +413,7 @@ void common_hal_audioio_audioout_play(audioio_audioout_obj_t* self,
right_channel_reg, right_channel_reg,
right_channel_trigger); right_channel_trigger);
} }
}
#endif #endif
if (result != AUDIO_DMA_OK) { if (result != AUDIO_DMA_OK) {
audio_dma_stop(&self->left_dma); audio_dma_stop(&self->left_dma);