From 5293fdd3a9f6ab8d7b96b6f17aa128e53b8e1791 Mon Sep 17 00:00:00 2001 From: evgeny Date: Wed, 16 Sep 2026 17:03:34 +0300 Subject: [PATCH] =?UTF-8?q?call(android):=20=D0=B7=D0=B2=D0=B0=D1=82=D1=8C?= =?UTF-8?q?=20call=5Faudio=5Finit=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=20start?= =?UTF-8?q?;=20=D0=BB=D0=BE=D0=B3=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D1=8C=20feed=5Fpcm=20=D0=B1=D0=B5=D0=B7=20instance?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Без 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. --- src/call/call_audio.c | 6 +++++- tools/chatgui-android/jni_bridge/android_jni_bridge.c | 9 +++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/call/call_audio.c b/src/call/call_audio.c index ea15e62a..64a26b47 100644 --- a/src/call/call_audio.c +++ b/src/call/call_audio.c @@ -217,7 +217,11 @@ int call_audio_feed_pcm(uint64_t call_id, const int16_t* pcm, int count) { inst = g_inst; pthread_mutex_unlock(&g_mtx); - if (len <= 0 || !ua || !inst) return -1; + if (len <= 0) return -1; + if (!ua || !inst) { + DEBUG_ERROR(DEBUG_CATEGORY_CALL, "%s: feed_pcm: instance not set (call_audio_init not called)", CALL_AUDIO_ID); + return -1; + } struct call_media_arg* a = (struct call_media_arg*)u_malloc(sizeof(*a)); if (!a) return -1; diff --git a/tools/chatgui-android/jni_bridge/android_jni_bridge.c b/tools/chatgui-android/jni_bridge/android_jni_bridge.c index 8457d0cd..fae1d9ba 100644 --- a/tools/chatgui-android/jni_bridge/android_jni_bridge.c +++ b/tools/chatgui-android/jni_bridge/android_jni_bridge.c @@ -1432,6 +1432,15 @@ int utun_bridge_call_is_online(const char* ch_id, uint64_t peer_node_id) { * ────────────────────────────────────────────────────────────────── */ int utun_bridge_call_audio_start(uint64_t call_id) { + struct UTUN_INSTANCE* inst = instance_lite_get_instance(); + if (!inst) { + DEBUG_ERROR(DEBUG_CATEGORY_CALL, "call_audio_start: no instance"); + return -1; + } + if (call_audio_init(inst) != 0) { + DEBUG_ERROR(DEBUG_CATEGORY_CALL, "call_audio_start: call_audio_init failed"); + return -1; + } return call_audio_start(call_id); }