diff --git a/src/call/call_jitter.cpp b/src/call/call_jitter.cpp index d4eecfb6..3746d9a3 100644 --- a/src/call/call_jitter.cpp +++ b/src/call/call_jitter.cpp @@ -250,6 +250,11 @@ void call_jitter_record_tx(struct call_jitter* j, const struct call_history_tx* j->history.transmit(*snapshot); } +void call_jitter_take_log(struct call_jitter* j, struct call_history_interval* interval, struct call_history_tx* tx) { + std::lock_guard lock(j->mtx); + j->history.take_log(*interval, *tx); +} + void call_jitter_silence(struct call_jitter* j, unsigned samples) { if (!j) return; std::lock_guard lock(j->mtx); diff --git a/src/call/call_jitter.h b/src/call/call_jitter.h index 4e77dd1f..dd0592fd 100644 --- a/src/call/call_jitter.h +++ b/src/call/call_jitter.h @@ -43,6 +43,9 @@ void call_jitter_get_diagnostics(struct call_jitter*, struct call_jitter_diagnos void call_jitter_get_history(struct call_jitter*, uint64_t now_ms, struct call_audio_history* out); /* uasync: сохранить общий снимок очередей отправки, без заимствования живых очередей. */ void call_jitter_record_tx(struct call_jitter*, const struct call_history_tx* snapshot); +/* Сводка логгера: забрать интервал pull и последний TX, не сбрасывая события diagnostics/UI. + * Все указатели обязательны; вызывается одним uasync-логгером каждые 200мс. */ +void call_jitter_take_log(struct call_jitter*, struct call_history_interval*, struct call_history_tx*); /* decode обязателен; arg заимствован до destroy, max_reserve_ms=500..2000. NULL при ошибке. */ struct call_jitter* call_jitter_create(call_jitter_decode_fn decode, void* arg, int max_reserve_ms); /* Освободить объект; NULL допустим. */