[fix] fix alsa audio cap

This commit is contained in:
LittleMouse
2025-09-08 18:05:59 +08:00
parent e628093302
commit a7d82afcec
2 changed files with 8 additions and 1 deletions
@@ -11,6 +11,7 @@ static int gcapLoopExit = 0;
void alsa_cap_start(unsigned int card, unsigned int device, float Volume, int channel, int rate, int bit,
AUDIOCallback callback)
{
gcapLoopExit = 0;
struct pcm_config config;
unsigned int pcm_open_flags;
struct pcm *pcm;
@@ -23,7 +24,7 @@ void alsa_cap_start(unsigned int card, unsigned int device, float Volume, int ch
memset(&config, 0, sizeof(config));
config.channels = channel;
config.rate = 48000; // TODO: 部分USB MIC仅支持48k,暂时固定采集为48k
config.period_size = 512;
config.period_size = 120;
config.period_count = 4;
config.format = PCM_FORMAT_S16_LE;
config.start_threshold = 0;
@@ -123,6 +124,7 @@ void alsa_cap_start(unsigned int card, unsigned int device, float Volume, int ch
}
free(buffer);
pcm_close(pcm);
printf("Total frames captured: %u\n", total_frames_read);
}
void alsa_close_cap()
@@ -105,7 +105,12 @@ private:
void _cap_stop()
{
#if (defined(CONFIG_AX_620E_MSP_ENABLED) || defined(CONFIG_AX_620Q_MSP_ENABLED)) && !defined(CONFIG_AXCL_ENABLED)
ax_close_cap();
#else
alsa_close_cap();
#endif
if (audio_cap_thread_) {
audio_cap_thread_->join();
audio_cap_thread_.reset();