|
@@ -36,14 +36,12 @@ static void wav_player_dma_isr(void* ctx) {
|
|
|
// half of transfer
|
|
// half of transfer
|
|
|
if (LL_DMA_IsActiveFlag_HT1(DMA1)) {
|
|
if (LL_DMA_IsActiveFlag_HT1(DMA1)) {
|
|
|
LL_DMA_ClearFlag_HT1(DMA1);
|
|
LL_DMA_ClearFlag_HT1(DMA1);
|
|
|
- if (virtual_portal->count < SAMPLES_COUNT / 2) {
|
|
|
|
|
- for (int i = 0; i < SAMPLES_COUNT / 2; i++) {
|
|
|
|
|
- virtual_portal->audio_buffer[i] = 0;
|
|
|
|
|
- }
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
// fill first half of buffer
|
|
// fill first half of buffer
|
|
|
for (int i = 0; i < SAMPLES_COUNT / 2; i++) {
|
|
for (int i = 0; i < SAMPLES_COUNT / 2; i++) {
|
|
|
|
|
+ if (!virtual_portal->count) {
|
|
|
|
|
+ virtual_portal->audio_buffer[i] = 0;
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
virtual_portal->audio_buffer[i] = *virtual_portal->tail;
|
|
virtual_portal->audio_buffer[i] = *virtual_portal->tail;
|
|
|
if (++virtual_portal->tail == virtual_portal->end) {
|
|
if (++virtual_portal->tail == virtual_portal->end) {
|
|
|
virtual_portal->tail = virtual_portal->current_audio_buffer;
|
|
virtual_portal->tail = virtual_portal->current_audio_buffer;
|
|
@@ -56,14 +54,12 @@ static void wav_player_dma_isr(void* ctx) {
|
|
|
if (LL_DMA_IsActiveFlag_TC1(DMA1)) {
|
|
if (LL_DMA_IsActiveFlag_TC1(DMA1)) {
|
|
|
LL_DMA_ClearFlag_TC1(DMA1);
|
|
LL_DMA_ClearFlag_TC1(DMA1);
|
|
|
|
|
|
|
|
- if (virtual_portal->count < SAMPLES_COUNT / 2) {
|
|
|
|
|
- for (int i = SAMPLES_COUNT / 2; i < SAMPLES_COUNT; i++) {
|
|
|
|
|
- virtual_portal->audio_buffer[i] = 0;
|
|
|
|
|
- }
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
// fill second half of buffer
|
|
// fill second half of buffer
|
|
|
for (int i = SAMPLES_COUNT / 2; i < SAMPLES_COUNT; i++) {
|
|
for (int i = SAMPLES_COUNT / 2; i < SAMPLES_COUNT; i++) {
|
|
|
|
|
+ if (!virtual_portal->count) {
|
|
|
|
|
+ virtual_portal->audio_buffer[i] = 0;
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
virtual_portal->audio_buffer[i] = *virtual_portal->tail;
|
|
virtual_portal->audio_buffer[i] = *virtual_portal->tail;
|
|
|
if (++virtual_portal->tail == virtual_portal->end) {
|
|
if (++virtual_portal->tail == virtual_portal->end) {
|
|
|
virtual_portal->tail = virtual_portal->current_audio_buffer;
|
|
virtual_portal->tail = virtual_portal->current_audio_buffer;
|