audiocore: Use constant for MP3 frame size

This commit is contained in:
2025-03-22 10:51:57 +01:00
parent 389fed4d3b
commit 444b7c4d9f
3 changed files with 8 additions and 4 deletions

View File

@@ -7,6 +7,8 @@
#include "py/mperrno.h"
_Static_assert(MP3_FRAME_SIZE == I2S_DMA_BUF_SIZE, "i2s buffer size must match MP3 frame size");
void __time_critical_func(volume_adjust)(int16_t *buf, size_t samples, uint16_t scalef)
{
for (size_t pos = 0; pos < samples; ++pos) {
@@ -87,7 +89,7 @@ void __time_critical_func(core1_main)(void)
i2s_play(samplerate);
playing = true;
}
volume_adjust((int16_t *)buf, 2304, current_volume);
volume_adjust((int16_t *)buf, MP3_FRAME_SIZE * 2, current_volume);
i2s_commit_buf(buf);
send_consume_notify();
continue;

View File

@@ -72,7 +72,7 @@ static void __time_critical_func(mp3_consume_data)(size_t bytes_used)
spin_unlock(shared_context.lock, flags);
}
bool __time_critical_func(mp3_decode)(uint32_t pcm_buf[static 1152], unsigned *samplerate)
bool __time_critical_func(mp3_decode)(uint32_t pcm_buf[static MP3_FRAME_SIZE], unsigned *samplerate)
{
unsigned char *readptr;
size_t bytes_avail = mp3_get_continuous_data(&readptr);
@@ -124,7 +124,7 @@ bool __time_critical_func(mp3_decode)(uint32_t pcm_buf[static 1152], unsigned *s
#endif
*samplerate = info.samprate;
if (info.outputSamps != 2304) {
if (info.outputSamps != MP3_FRAME_SIZE * 2) {
#ifdef MP3_DEBUG
printf("Unexpected number of output samples: %d\n", info.outputSamps);
#endif

View File

@@ -6,9 +6,11 @@
#include <stdbool.h>
#include <stdint.h>
#define MP3_FRAME_SIZE 1152
bool mp3_init(void);
void mp3_deinit(void);
bool mp3_decode(uint32_t pcm_buf[static 1152], unsigned *samplerate);
bool mp3_decode(uint32_t pcm_buf[static MP3_FRAME_SIZE], unsigned *samplerate);
void mp3_reset(void);