From 2f707366f3ce8d8c3a72bedd9f5ef676760a737f Mon Sep 17 00:00:00 2001 From: evgeny Date: Mon, 12 Oct 2026 01:51:10 +0200 Subject: [PATCH] Expose session scoped Android stream operations --- .../main/java/com/utun/chat/data/NativeLib.kt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/NativeLib.kt b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/NativeLib.kt index 356698a8..a80328a1 100644 --- a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/NativeLib.kt +++ b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/NativeLib.kt @@ -197,6 +197,25 @@ object NativeLib { replyTo: String = "", requestId: Long = 0): Boolean = nativeVideoSend(channelId, filePath, durationMs, width, height, messageIdBytes(replyTo), requestId) + /* Live media используют отдельную ограниченную очередь, минуя чатовый event bus. */ + fun streamOpen(id: Long, group: Long, source: Long = 0, width: Int = 0, height: Int = 0, + rotation: Int = 0, audio: Boolean = true): Boolean = nativeStreamOpen(id, group, source, width, height, rotation, audio) + fun streamFeed(id: Long, video: Boolean, pts: Long, key: Boolean, data: ByteArray): Int = nativeStreamFeed(id, video, pts, key, data) + fun streamStop(id: Long) { nativeStreamStop(id) } + fun streamPull(id: Long): ByteArray? = nativeStreamPull(id) + fun streamOpusCreate(encode: Boolean): Long = nativeStreamOpusCreate(encode) + fun streamOpusEncode(handle: Long, pcm: ShortArray): ByteArray? = nativeStreamOpusEncode(handle, pcm) + fun streamOpusDecode(handle: Long, packet: ByteArray): ShortArray? = nativeStreamOpusDecode(handle, packet) + fun streamOpusClose(handle: Long) { nativeStreamOpusClose(handle) } + private external fun nativeStreamOpen(id: Long, group: Long, source: Long, width: Int, height: Int, rotation: Int, audio: Boolean): Boolean + private external fun nativeStreamFeed(id: Long, video: Boolean, pts: Long, key: Boolean, data: ByteArray): Int + private external fun nativeStreamStop(id: Long) + private external fun nativeStreamPull(id: Long): ByteArray? + private external fun nativeStreamOpusCreate(encode: Boolean): Long + private external fun nativeStreamOpusEncode(handle: Long, pcm: ShortArray): ByteArray? + private external fun nativeStreamOpusDecode(handle: Long, packet: ByteArray): ShortArray? + private external fun nativeStreamOpusClose(handle: Long) + /* ── Photo message ── */ fun photoSend(channelId: String, filePath: String, width: Int, height: Int, replyTo: String = "", requestId: Long = 0): Boolean = nativePhotoSend(channelId, filePath, width, height, messageIdBytes(replyTo), requestId)