Use shared media opening in desktop and Android viewers
This commit is contained in:
1 parent
1809416dce
commit
97fea6e809
2 files changed
+18
-58
No files matched your search
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user