radio: keep drain diagnostics at burst boundaries and test queued PCM

This commit is contained in:
evgeny committed 2026-10-08 14:33:09 +02:00
1 parent f054f9c8d9
commit d149bad5fc
2 files changed
+10 -6

No files matched your search

+5 -3
View File
@@ -640,8 +640,10 @@ void radio_audio_playback_progress(uint64_t group_id, uint64_t position, uint64_
g_output_tracked = 1;
if (g_output_voice_end > g_output_played && position >= g_output_voice_end) {
radio_audio_rx_guard(get_time_tb() + delay_tb + RADIO_VAD_BUSY_TB);
DEBUG_DEBUG(DEBUG_CATEGORY_VAD, "VAD output drained group=%016llx position=%llu delay=%.1fms guard=200ms",
(unsigned long long)group_id, (unsigned long long)position, delay_tb / 10.0);
int sources = 0;
for (int i = 0; i < RADIO_AUDIO_MAX_SOURCES; ++i) sources += g_sources[i].used != 0;
if (!sources) DEBUG_DEBUG(DEBUG_CATEGORY_VAD, "VAD output drained group=%016llx position=%llu delay=%.1fms guard=200ms",
(unsigned long long)group_id, (unsigned long long)position, delay_tb / 10.0);
}
g_output_played = position;
}
@@ -924,7 +926,6 @@ static void radio_audio_vad_sample(const int16_t* frame) {
pthread_mutex_lock(&g_mtx);
g_vad_win_len = 0;
uint64_t now = get_time_tb();
if (radio_audio_vad_block(now)) return; /* RX мог начаться, пока Silero работал без общего mutex. */
uint64_t inference_tb = now - started;
uint64_t gap_tb = g_vad_diag.last_window_tb ? now - g_vad_diag.last_window_tb : 0;
g_vad_diag.last_window_tb = now;
@@ -937,6 +938,7 @@ static void radio_audio_vad_sample(const int16_t* frame) {
DEBUG_ERROR(DEBUG_CATEGORY_VAD, "VAD inference failed group=%016llx window=%llu rc=%d inference=%.1fms",
(unsigned long long)g_group_id, (unsigned long long)g_vad_diag.total_windows, result, inference_tb / 10.0);
}
if (radio_audio_vad_block(now)) return; /* RX мог начаться, пока Silero работал без общего mutex. */
struct radio_vad_fsm before = g_vad_fsm;
int busy = 0;
int64_t rx_age_ms = g_last_rx_tb ? (int64_t)((now - g_last_rx_tb) / 10) : -1;