SHA256
Починить включение видео у принимающей стороны
This commit is contained in:
+1
-1
@@ -1,2 +1,2 @@
|
||||
client.version=1.5.28
|
||||
client.version=1.5.29
|
||||
server.version=1.4.10
|
||||
|
||||
@@ -1535,6 +1535,15 @@ function ensureReservedVideoTransceiver(call) {
|
||||
return created;
|
||||
}
|
||||
|
||||
function getNegotiatedVideoDirection(transceiver) {
|
||||
return String(transceiver?.currentDirection || '').trim().toLowerCase();
|
||||
}
|
||||
|
||||
function canLocalSideSendVideoWithCurrentNegotiation(transceiver) {
|
||||
const negotiated = getNegotiatedVideoDirection(transceiver);
|
||||
return negotiated === 'sendrecv' || negotiated === 'sendonly';
|
||||
}
|
||||
|
||||
function ensureRemoteTrackObservers(call, track) {
|
||||
if (!call || !track || typeof track !== 'object') return;
|
||||
if (!call.remoteTrackObserverIds) {
|
||||
@@ -2180,6 +2189,7 @@ async function applyCameraState(call) {
|
||||
const pc = call.pc;
|
||||
const hadSlotBefore = call.videoTransportMode === VIDEO_TRANSPORT_SLOT;
|
||||
const hadReservedBefore = call.videoTransportMode === VIDEO_TRANSPORT_RESERVED;
|
||||
let requireVideoRenegotiation = false;
|
||||
let videoTransceiver = call.videoTransceiver || null;
|
||||
if (!videoTransceiver) {
|
||||
const transceivers = pc.getTransceivers?.() || [];
|
||||
@@ -2218,6 +2228,7 @@ async function applyCameraState(call) {
|
||||
videoTransceiver = ensureReservedVideoTransceiver(call);
|
||||
call.videoTransceiver = videoTransceiver;
|
||||
call.videoSender = videoTransceiver?.sender || call.videoSender || null;
|
||||
requireVideoRenegotiation = true;
|
||||
}
|
||||
try {
|
||||
if (videoTransceiver && videoTransceiver.direction !== 'sendrecv') {
|
||||
@@ -2237,6 +2248,9 @@ async function applyCameraState(call) {
|
||||
}
|
||||
call.videoTransportMode = VIDEO_TRANSPORT_SLOT;
|
||||
videoTrack.enabled = true;
|
||||
if (!canLocalSideSendVideoWithCurrentNegotiation(videoTransceiver)) {
|
||||
requireVideoRenegotiation = true;
|
||||
}
|
||||
} else {
|
||||
call.videoTransportMode = VIDEO_TRANSPORT_SLOT;
|
||||
const videoTrack = await ensureCameraTrack(call);
|
||||
@@ -2293,6 +2307,10 @@ async function applyCameraState(call) {
|
||||
await disableCameraTrack(call);
|
||||
}
|
||||
notifyCallState();
|
||||
if (requireVideoRenegotiation) {
|
||||
await renegotiateCall(call, 'enable_video_reserved_sender');
|
||||
return true;
|
||||
}
|
||||
if (!hadSlotBefore && !hadReservedBefore && call.videoTransportMode === VIDEO_TRANSPORT_SLOT && !refreshVideoSlotReady(call)) {
|
||||
await renegotiateCall(call, 'upgrade_to_video_slot');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user