Browse Source

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.
router-recv-conn-uaf
evgeny 2 weeks ago
parent
commit
5293fdd3a9
  1. 6
      src/call/call_audio.c
  2. 9
      tools/chatgui-android/jni_bridge/android_jni_bridge.c

6
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;

9
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);
}

Loading…
Cancel
Save