Browse Source

Allow Android audio toggles during capture startup and test native control

stream-multiview
evgeny 5 days ago
parent
commit
6cdc2ce4dc
  1. 10
      tests/test_android_stream.c
  2. 2
      tools/chatgui-android/app/src/main/java/com/utun/chat/data/StreamCaptureEngine.kt

10
tests/test_android_stream.c

@ -80,6 +80,14 @@ int main(void) {
CHECK(source_events == 2 && strstr(source_snapshot, "epoch"));
struct stream_member_state member;
CHECK(stream_member_load(inst, group, inst->node_id, &member, NULL) == STREAM_OK && member.published);
CHECK(member.audio_enabled);
CHECK(android_stream_set_audio_enabled(1, 0) == 0); test_clock_poll(ua, 100);
struct stream_member_state muted;
CHECK(stream_member_load(inst, group, inst->node_id, &muted, NULL) == STREAM_OK && !muted.audio_enabled);
CHECK(muted.source.source_epoch == member.source.source_epoch);
CHECK(android_stream_set_audio_enabled(2, 1) < 0);
CHECK(android_stream_set_audio_enabled(1, 1) == 0); test_clock_poll(ua, 100);
CHECK(stream_member_load(inst, group, inst->node_id, &muted, NULL) == STREAM_OK && muted.audio_enabled);
CHECK(android_stream_open(5, group, inst->node_id, 0, 0, 0, 1, member.source.source_epoch ^ 1, STREAM_MEDIA_H264) == 0);
uint8_t *error = wait_event(5, 6, &size); CHECK(error[1] == STREAM_CLOSE_SOURCE_CHANGED); u_free(error);
CHECK(android_stream_open(2, group, inst->node_id, 0, 0, 0, 1, member.source.source_epoch, STREAM_MEDIA_H264) == 0);
@ -170,6 +178,7 @@ int main(void) {
CHECK(!strcmp(source_snapshot, "[]"));
current_format.rotation = 0; current_format.audio_codec = 0;
CHECK(android_stream_open(3, group, 0, 1280, 720, 0, 0, 0, STREAM_MEDIA_H264) == 0); u_free(wait_event(3, 4, &size));
CHECK(android_stream_set_audio_enabled(3, 1) < 0);
uint8_t *large = u_malloc(500000); CHECK(large); memset(large, 1, 500000);
CHECK(feed(3, 1, 500000, 1, large, 500000) == 1); u_free(large);
test_clock_run_for(ua, 1000);
@ -181,6 +190,7 @@ int main(void) {
android_stream_detach(inst);
__atomic_store_n(&producer_stop, 1, __ATOMIC_RELEASE); CHECK(pthread_join(thread, NULL) == 0);
CHECK(feed(3, 1, 900000, 1, video, sizeof(video)) == -1);
CHECK(android_stream_set_audio_enabled(3, 0) < 0);
while ((output = android_stream_pull(3, &size))) u_free(output);
android_stream_attach(inst);
CHECK(android_stream_open(4, group, 0, 1280, 720, 0, 0, 0, STREAM_MEDIA_H264) == 0); android_stream_stop(4);

2
tools/chatgui-android/app/src/main/java/com/utun/chat/data/StreamCaptureEngine.kt

@ -437,7 +437,7 @@ class StreamCaptureEngine(
}
/** Меняем только свою копию PCM; общий микрофон и рация продолжают работать. */
fun setAudioEnabled(enabled: Boolean): Boolean {
if (!microphone || !audioRunning) {
if (!microphone || stopped) {
LogManager.addLog("WARN", "stream", "audio change without capture id=$id enabled=$enabled"); return false
}
val previous = audioMuted

Loading…
Cancel
Save