Use shared media opening in desktop and Android viewers

This commit is contained in:
evgeny committed 2026-10-14 16:30:38 +02:00
1 parent 1809416dce
commit 97fea6e809
2 files changed
+18 -58

No files matched your search

+3 -18
View File
@@ -9,7 +9,6 @@ extern "C" {
#include "../../../lib/u_async.h"
#include "../../../src/utun_instance.h"
#include "../../../src/stream/stream.h"
#include "../../../src/stream/stream_member.h"
}
namespace {
@@ -114,23 +113,9 @@ void process(void*) {
if (bridge.opening) {
bridge.opening = false; bridge.viewer = bridge.requested; bridge.requested = {};
bridge.status = {}; bridge.statusId = bridge.viewer.id; bridge.position = -1; bridge.waiting = false;
stream_member_state member{};
int reason = STREAM_CLOSE_FAILED;
int result = stream_member_load(bridge.inst, bridge.viewer.group, bridge.viewer.source, &member, nullptr);
if (result == STREAM_OK && (!member.published || member.source.source_epoch != bridge.viewer.epoch)) {
DEBUG_WARN(DEBUG_CATEGORY_STREAM, "desktop selected source changed source=%llx expected=%llx actual=%llx",
(unsigned long long)bridge.viewer.source, (unsigned long long)bridge.viewer.epoch,
(unsigned long long)(member.published ? member.source.source_epoch : 0));
result = STREAM_ERR_CONFLICT; reason = STREAM_CLOSE_SOURCE_CHANGED;
}
if (result == STREAM_OK) result = stream_subscribe_open(bridge.inst, bridge.viewer.group, bridge.viewer.source, &bridge.handle);
stream_info info{};
if (result == STREAM_OK) result = stream_get_info(bridge.handle, &info);
if (result == STREAM_OK && info.descriptor.source_epoch != bridge.viewer.epoch) {
DEBUG_WARN(DEBUG_CATEGORY_STREAM, "desktop reader encountered stale local epoch");
result = STREAM_ERR_CONFLICT; reason = STREAM_CLOSE_SOURCE_CHANGED;
}
if (result == STREAM_OK) result = stream_media_enable(bridge.handle, STREAM_MEDIA_TRACK_VIDEO | STREAM_MEDIA_TRACK_AUDIO);
int result = stream_media_open(bridge.inst, bridge.viewer.group, bridge.viewer.source, bridge.viewer.epoch,
STREAM_MEDIA_TRACK_VIDEO | STREAM_MEDIA_TRACK_AUDIO, &bridge.handle);
int reason = result == STREAM_ERR_CONFLICT ? STREAM_CLOSE_SOURCE_CHANGED : STREAM_CLOSE_FAILED;
if (result != STREAM_OK) {
DEBUG_ERROR(DEBUG_CATEGORY_STREAM, "desktop viewer open failed id=%llu group=%llx source=%llx result=%d",
(unsigned long long)bridge.viewer.id, (unsigned long long)bridge.viewer.group,