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
|
server.version=1.4.10
|
||||||
|
|||||||
@@ -1535,6 +1535,15 @@ function ensureReservedVideoTransceiver(call) {
|
|||||||
return created;
|
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) {
|
function ensureRemoteTrackObservers(call, track) {
|
||||||
if (!call || !track || typeof track !== 'object') return;
|
if (!call || !track || typeof track !== 'object') return;
|
||||||
if (!call.remoteTrackObserverIds) {
|
if (!call.remoteTrackObserverIds) {
|
||||||
@@ -2180,6 +2189,7 @@ async function applyCameraState(call) {
|
|||||||
const pc = call.pc;
|
const pc = call.pc;
|
||||||
const hadSlotBefore = call.videoTransportMode === VIDEO_TRANSPORT_SLOT;
|
const hadSlotBefore = call.videoTransportMode === VIDEO_TRANSPORT_SLOT;
|
||||||
const hadReservedBefore = call.videoTransportMode === VIDEO_TRANSPORT_RESERVED;
|
const hadReservedBefore = call.videoTransportMode === VIDEO_TRANSPORT_RESERVED;
|
||||||
|
let requireVideoRenegotiation = false;
|
||||||
let videoTransceiver = call.videoTransceiver || null;
|
let videoTransceiver = call.videoTransceiver || null;
|
||||||
if (!videoTransceiver) {
|
if (!videoTransceiver) {
|
||||||
const transceivers = pc.getTransceivers?.() || [];
|
const transceivers = pc.getTransceivers?.() || [];
|
||||||
@@ -2218,6 +2228,7 @@ async function applyCameraState(call) {
|
|||||||
videoTransceiver = ensureReservedVideoTransceiver(call);
|
videoTransceiver = ensureReservedVideoTransceiver(call);
|
||||||
call.videoTransceiver = videoTransceiver;
|
call.videoTransceiver = videoTransceiver;
|
||||||
call.videoSender = videoTransceiver?.sender || call.videoSender || null;
|
call.videoSender = videoTransceiver?.sender || call.videoSender || null;
|
||||||
|
requireVideoRenegotiation = true;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
if (videoTransceiver && videoTransceiver.direction !== 'sendrecv') {
|
if (videoTransceiver && videoTransceiver.direction !== 'sendrecv') {
|
||||||
@@ -2237,6 +2248,9 @@ async function applyCameraState(call) {
|
|||||||
}
|
}
|
||||||
call.videoTransportMode = VIDEO_TRANSPORT_SLOT;
|
call.videoTransportMode = VIDEO_TRANSPORT_SLOT;
|
||||||
videoTrack.enabled = true;
|
videoTrack.enabled = true;
|
||||||
|
if (!canLocalSideSendVideoWithCurrentNegotiation(videoTransceiver)) {
|
||||||
|
requireVideoRenegotiation = true;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
call.videoTransportMode = VIDEO_TRANSPORT_SLOT;
|
call.videoTransportMode = VIDEO_TRANSPORT_SLOT;
|
||||||
const videoTrack = await ensureCameraTrack(call);
|
const videoTrack = await ensureCameraTrack(call);
|
||||||
@@ -2293,6 +2307,10 @@ async function applyCameraState(call) {
|
|||||||
await disableCameraTrack(call);
|
await disableCameraTrack(call);
|
||||||
}
|
}
|
||||||
notifyCallState();
|
notifyCallState();
|
||||||
|
if (requireVideoRenegotiation) {
|
||||||
|
await renegotiateCall(call, 'enable_video_reserved_sender');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (!hadSlotBefore && !hadReservedBefore && call.videoTransportMode === VIDEO_TRANSPORT_SLOT && !refreshVideoSlotReady(call)) {
|
if (!hadSlotBefore && !hadReservedBefore && call.videoTransportMode === VIDEO_TRANSPORT_SLOT && !refreshVideoSlotReady(call)) {
|
||||||
await renegotiateCall(call, 'upgrade_to_video_slot');
|
await renegotiateCall(call, 'upgrade_to_video_slot');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user