evgeny
b466ec30e3
Acknowledge video capabilities before sending frame data
2026-10-14 20:48:58 +02:00
evgeny
609221e384
Separate call audio and video from signaling queues
2026-10-14 20:48:27 +02:00
evgeny
14a56d9b33
Add bounded call video transport and capability exchange
2026-10-14 20:47:44 +02:00
evgeny
dffde9691d
Share call session ownership with the video transport
2026-10-14 20:46:02 +02:00
evgeny
c8bbce6a94
Define call video capabilities and bounded frame assembly
2026-10-14 20:43:42 +02:00
evgeny
9fe5cd4c27
Test call capture timestamps and device progress
2026-10-14 19:35:56 +02:00
evgeny
39bfedca86
Drive desktop call clock from rendered PCM and capture timing
2026-10-14 19:28:38 +02:00
evgeny
7bac999d93
Handle source discontinuities and reject stale device epochs
2026-10-14 19:27:54 +02:00
evgeny
9aba8e278c
Preserve capture PTS and expose call playback clock to platforms
2026-10-14 19:27:03 +02:00
evgeny
96e7983128
Attach source PTS maps to call jitter and playback epochs
2026-10-14 19:25:30 +02:00
evgeny
2e1908a52b
Preserve capture clock across call delivery and validate media peer
2026-10-14 19:24:51 +02:00
evgeny
ab04b14237
Carry capture timestamps and Opus delay in call media protocol
2026-10-14 19:24:22 +02:00
evgeny
fe2fa73cc0
Test audio timeline boundaries and sustained SoundTouch playback
2026-10-14 19:23:40 +02:00
evgeny
991d6bad43
Map produced audio to source PTS and bounded device progress
2026-10-14 19:22:32 +02:00
evgeny
b5bd45c4da
Define bounded audio timeline and playback clock contracts
2026-10-14 19:21:20 +02:00
evgeny
05d9e3f22e
Check SoundTouch source time against identifiable audio samples
2026-10-14 18:42:46 +02:00
evgeny
f24a8ca6d3
Add video bitrate regulator with bounded debt feedback
2026-10-14 18:40:35 +02:00
evgeny
650b65078a
Switch desktop media delivery to bounded demand reads from the shared ring
2026-10-13 22:42:16 +02:00
evgeny
dc0dbbf720
headless: expose OS-assigned control and audio listener ports
2026-10-10 15:51:04 +02:00
evgeny
123b47c612
Improve Android VAD lifecycle, audio settings and diagnostics
2026-10-04 14:36:52 +02:00
evgeny
23368a5bbe
Add Android boot startup, lazy settings, emoji and DM calls
...
Add battery optimization controls and configurable boot startup. Keep message sounds in the application and render general settings lazily to avoid ANRs. Add animated emoji controls and live BGP availability for direct-message calls on Android and desktop.
2026-10-02 17:18:24 +03:00
evgeny
bd082a26bf
Раздели аудиопотоки и привяжи AEC к фактическому общему выходу
2026-10-02 10:22:34 +03:00
evgeny
40b974b29c
Исправь потоковый AGC и применяй mute после AEC
2026-10-02 01:56:10 +03:00
evgeny
bdcf8b5634
Сохрани накопленные исправления аудио, async и диагностики
2026-10-02 01:49:32 +03:00
evgeny
50e3db81ea
Separate playback backlog from adaptive call reserve
2026-10-01 02:49:35 +03:00
evgeny
d8745fd303
Measure call jitter from media delivery timestamps
2026-10-01 02:48:53 +03:00
evgeny
5487bc8c20
call: suppress loss tone until first received PCM
2026-10-01 02:08:17 +03:00
evgeny
111432aa64
conn_mgr: race connection probes and report call path with correct RTT
2026-10-01 00:42:47 +03:00
evgeny
1c51df039f
Fix call gap tone to follow 500ms of missing jitter PCM
2026-09-30 21:14:37 +03:00
evgeny
2d21c53b4b
Improve call buffering, CM handle lifecycle and radio PTT controls
2026-09-30 17:31:53 +03:00
evgeny
556b0bc7b7
call/radio: mic AGC compressor + selectable input device; proximity lock
2026-09-29 19:34:23 +03:00
evgeny
f12f61d7ee
call: add SpeexDSP AEC (acoustic echo cancellation) for desktop + Android
2026-09-29 17:01:30 +03:00
evgeny
ce1f23fe46
Radio: stereo capture/playback with mono fallback; CAMCORDER source; bump RADIO_MAX_OPUS
...
- stereo capture: Android AudioRecord stereo (CAMCORDER source for stereo,
voice sources fall back to CAMCORDER) + desktop separate miniaudio
capture/playback devices (no asymmetric duplex)
- Opus stereo encode/decode, voice_jitter stereo (per-channel frame_size,
slot-based SoundTouch)
- radio_audio_start takes explicit capture_channels (stereo->mono fallback)
- RADIO_MAX_OPUS 256->512 (128kbps stereo frames up to 320B)
- radio_capture_stereo setting + desktop radio settings UI (opus mode/bitrate,
capture stereo)
- radio_send_to send stats logging (etcp_send ok/fail per second)
2026-09-29 02:31:41 +03:00
evgeny
cc269e810c
Звонки: надёжность отмены (INVITE-кодограмма + watchdog) и вибрация входящего по ringer-режиму
2026-09-24 10:15:19 +03:00
evgeny
0e625da109
call: ретрансмит INVITE каждые 2с + fail-fast при отсутствии маршрута (6с)
2026-09-22 16:06:52 +03:00
evgeny
2f3001458f
android: standby keepalive sync + rx logging during sleep
2026-09-21 21:17:35 +03:00
evgeny
6a0373ee73
call: диагностика ставок TX/RX и детект сталла аудио-девайса с хард-ресинком
2026-09-21 16:54:14 +03:00
evgeny
570b421ba0
conn_mgr: parallel reverse+indirect, retransmit, and call teardown fix
...
- call_on_conn_status: only end call when its own data conn drops
(INDIRECT call was killed by unrelated topo_group_connect conn DELETE)
- conn_mgr: run REVERSE and INDIRECT in parallel after DIRECT fails;
reverse is preferred (indirect defers via indirect_ready until reverse
resolves). REVERSE timeout 15s -> 3s.
- retransmit DIRECT_REQ / EXCHANGE_REQ every 1s (idempotent, same request_id)
to survive packet loss (router RST dropping stale-channel requests)
- replace main.phase with reverse_active/indirect_active/indirect_ready flags
- add diagnostics to trace the parallel flow
2026-09-21 15:22:16 +03:00
evgeny
a7a3666d85
radio: AGC release-rate (без кликов), jitter dead-zone, TX/RX-статистика, FGS-гонка и кэш настроек
2026-09-20 20:07:48 +03:00
evgeny
738cfe7835
radio: адаптивный джиттер-буфер (pre-roll, симметричный темп, reorder) + AGC-компрессор микрофона
...
- voice_jitter: vj_create_cfg (target_ms/min_tempo/max_tempo/pre_roll), pre-roll
с таймаутом, vj_end для дренажа остатка, глубина учитывает внутренний буфер SoundTouch
- radio_audio: reorder по seq (mesh, out-of-order через соседей), force-flush pending
по таймауту и FIN, компрессор микрофона (AGC, конфиг [chatserver]), статистика буфера
- audio_compressor: clear_output для потокового слива без потери gain_smoothed
- chatgui messagelist: fromUtf8 для emoji-строк
- тесты: pre-roll/симметричный темп, reorder, late-drop
2026-09-20 14:39:25 +03:00
evgeny
b33caa56b8
uasync: pass socket name to all add_socket call sites
2026-09-20 01:13:38 +03:00
evgeny
841b3042cf
etcp: фикс double-free буферов паковщика и повторных free после неудачного queue_data_put
...
- pn_send_to_etcp/pn_unpacker_cb: занулять pn->data/pn->recvpart ДО queue_data_put
(ре-энтрантный close/reinit в синхронной цепочке освобождал буфер повторно)
- etcp_output_try_assembly: гард state==2/reinit_pending + убрать re-put освобождённого entry
- etcp_conn_input: гард ре-энтрантного reinit/close в цикле секций, локальный etcp вместо pkt->link
- убраны повторные free после queue_data_put (он сам освобождает entry+dgram) в 6 местах
- диагностика: obj=%p в DOUBLE FREE, логи free dgram в pn_deinit/ack_recv
2026-09-19 21:17:33 +03:00
evgeny
b96ed8bd00
radio: PTT-радио в каналах (src/radio + chatgui + chatgui-android)
...
Новый модуль src/radio (radio/radio_audio/radio_headless) — push-to-talk
радио поверх topo-групп, доставка аудио в канал, headless-режим и тесты.
Интеграция в chatgui (ptt_hotkey_manager, radio_audio_engine, радионастройки,
вызовы) и chatgui-android (RadioAudioEngine, RadioOverlayService, UI).
2026-09-19 17:09:00 +03:00
evgeny
398078a28f
headless/call: закрывать клиента и логировать при ошибке send() (EPIPE/ECONNRESET)
2026-09-19 10:43:04 +03:00
evgeny
e7fc69bb1d
topo: комментарии к функциям topo_node/topo_group
...
conn_mgr: src node_id вместо conn->peer_node_id, препенд ETCP_RT_ID_CONN_MGR к dgram, bind CONN_MGR после etcp_router_init
call: guard CALL_ST_CONNECTING при accept
2026-09-17 17:30:05 +03:00
evgeny
5293fdd3a9
call(android): звать call_audio_init перед start; логировать feed_pcm без instance
...
Без call_audio_init(inst) g_inst оставался NULL и call_set_audio_ops не
регистрировался: TX (feed_pcm) падал на !ua, RX (audio_ops->on_media) не
вызывался — тишина и спам 'callAudioFeed returned false'. Зеркалим desktop:
utun_bridge_call_audio_start теперь делает call_audio_init + call_audio_start.
2026-09-16 20:26:55 +03:00
evgeny
2de554f8b9
call: единый голосовой стек (libutun_voice) + SoundTouch на Android
...
- voice_jitter (кодированные Opus-кадры + decode-on-pull + SoundTouch time-stretch)
вместо PCM-буфера audio_jitter; излишек держится до декодирования
- call_audio.c/.h — единая реализация для desktop/Android/headless (C-интерфейс)
- libutun_voice (voice_sources.cmake): SoundTouch + voice_jitter + call_audio + call_tones
- Android: pull-модель (nativeCallAudioPull), убран Kotlin FIFO, ANDROID_STL=c++_static
- headless audio-сокет: PCM-протокол (decode-only, без тактирования), daemon остаётся C-only
- CALL_STATS расширен dropped/underruns; удалены audio_jitter.cpp и libutun_lite/call_audio.c
- тест test_voice_jitter (ёмкость/догон/стационар), test_call_headless переведён на PCM
2026-09-16 20:26:55 +03:00
evgeny
b11e77e4c0
call: P2P аудиозвонки — сигналинг, релей медиа, аудио-контур, headless/desktop/android
...
- src/call/: сигналинг (call.c, call_proto.h, ETCP_RT_ID_CALL 0x36) + релей медиа
+ headless аудио-сокет (call_headless.c, call_audio_bind) + Opus/jitter/тоны
- chat: события CHAT_EVT_CALL_* (34–40), CHAT_EVT_DM_MESSAGES (41), DM-трамплины
- chatgui: call window, miniaudio I/O, audio_frame_ring, test_audio_jitter
- chatgui-android: CallScreen/IncomingCallDialog, аудио-роутинг, JNI, рингтон
- tests: test_call, test_call_headless
2026-09-16 10:17:57 +03:00