diff --git a/src/call/call_audio.c b/src/call/call_audio.c index f18f0c1e..2500e03e 100644 --- a/src/call/call_audio.c +++ b/src/call/call_audio.c @@ -561,6 +561,12 @@ void call_audio_playback_progress(uint64_t call_id, uint64_t epoch, uint64_t pos pthread_mutex_unlock(&g_mtx); } +void call_audio_suspend_device(uint64_t call_id, uint64_t epoch) { + pthread_mutex_lock(&g_mtx); + if (g_active && call_id == g_call_id && g_vj) call_jitter_suspend_device(g_vj, epoch); + pthread_mutex_unlock(&g_mtx); +} + int call_audio_get_clock(uint64_t call_id, int64_t now_us, struct call_clock_snapshot* out) { if (!out) { DEBUG_ERROR(DEBUG_CATEGORY_CALL, "call clock missing output"); return -1; } memset(out, 0, sizeof(*out)); out->pts_us = -1; diff --git a/src/call/call_audio.h b/src/call/call_audio.h index ddd74957..8a609035 100644 --- a/src/call/call_audio.h +++ b/src/call/call_audio.h @@ -72,6 +72,8 @@ void call_audio_on_media(struct UTUN_INSTANCE* inst, uint64_t call_id, void call_audio_playback_progress(uint64_t call_id, uint64_t epoch, uint64_t position, int64_t at_us, int64_t now_us, int measured); int call_audio_get_clock(uint64_t call_id, int64_t now_us, struct call_clock_snapshot* out); +/* Playback worker: старый аппаратный якорь недействителен до progress нового выхода. PCM/JB сохраняются. */ +void call_audio_suspend_device(uint64_t call_id, uint64_t epoch); /* Любой поток: диагностический снимок без потребления событий CALL_STATS. */ int call_audio_get_diagnostics(uint64_t call_id, struct call_jitter_diagnostics* out);