Skip to content

Commit 93d33e1

Browse files
authored
Revert "Enable dynamic scalability modes for svc dynacast (#1458)" (#1556)
1 parent 8c5be04 commit 93d33e1

File tree

2 files changed

+19
-15
lines changed

2 files changed

+19
-15
lines changed

.changeset/nine-wolves-divide.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'livekit-client': patch
3+
---
4+
5+
disable dyncast for svc encoding

src/room/track/LocalVideoTrack.ts

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@ import {
77
} from '@livekit/protocol';
88
import type { SignalClient } from '../../api/SignalClient';
99
import type { StructuredLogger } from '../../logger';
10-
import { getBrowser } from '../../utils/browserParser';
1110
import { ScalabilityMode } from '../participant/publishUtils';
1211
import type { VideoSenderStats } from '../stats';
1312
import { computeBitrate, monitorFrequency } from '../stats';
1413
import type { LoggerOptions } from '../types';
15-
import { compareVersions, isFireFox, isMobile, isSVCCodec, isWeb } from '../utils';
14+
import { isFireFox, isMobile, isSVCCodec, isWeb } from '../utils';
1615
import LocalTrack from './LocalTrack';
1716
import { Track, VideoQuality } from './Track';
1817
import type { VideoCaptureOptions, VideoCodec } from './options';
@@ -459,15 +458,18 @@ async function setPublishingLayersForSender(
459458
}
460459

461460
let hasChanged = false;
462-
const browser = getBrowser();
463-
const closableSpatial =
464-
browser?.name === 'Chrome' && compareVersions(browser?.version, '133') > 0;
461+
462+
/* disable closable spatial layer as it has video blur / frozen issue with current server / client
463+
1. chrome 113: when switching to up layer with scalability Mode change, it will generate a
464+
low resolution frame and recover very quickly, but noticable
465+
2. livekit sfu: additional pli request cause video frozen for a few frames, also noticable */
466+
const closableSpatial = false;
465467
/* @ts-ignore */
466468
if (closableSpatial && encodings[0].scalabilityMode) {
467469
// svc dynacast encodings
468470
const encoding = encodings[0];
469471
/* @ts-ignore */
470-
const mode = new ScalabilityMode(encoding.scalabilityMode);
472+
// const mode = new ScalabilityMode(encoding.scalabilityMode);
471473
let maxQuality = ProtoVideoQuality.OFF;
472474
qualities.forEach((q) => {
473475
if (q.enabled && (maxQuality === ProtoVideoQuality.OFF || q.quality > maxQuality)) {
@@ -480,25 +482,22 @@ async function setPublishingLayersForSender(
480482
encoding.active = false;
481483
hasChanged = true;
482484
}
483-
} else if (!encoding.active || mode.spatial !== maxQuality + 1) {
485+
} else if (!encoding.active /* || mode.spatial !== maxQuality + 1*/) {
484486
hasChanged = true;
485487
encoding.active = true;
486-
/* @ts-ignore */
487-
const originalMode = new ScalabilityMode(senderEncodings[0].scalabilityMode);
488+
/*
489+
@ts-ignore
490+
const originalMode = new ScalabilityMode(senderEncodings[0].scalabilityMode)
488491
mode.spatial = maxQuality + 1;
489492
mode.suffix = originalMode.suffix;
490493
if (mode.spatial === 1) {
491494
// no suffix for L1Tx
492495
mode.suffix = undefined;
493496
}
494-
/* @ts-ignore */
497+
@ts-ignore
495498
encoding.scalabilityMode = mode.toString();
496499
encoding.scaleResolutionDownBy = 2 ** (2 - maxQuality);
497-
if (senderEncodings[0].maxBitrate) {
498-
encoding.maxBitrate =
499-
senderEncodings[0].maxBitrate /
500-
(encoding.scaleResolutionDownBy * encoding.scaleResolutionDownBy);
501-
}
500+
*/
502501
}
503502
} else {
504503
if (isSVC) {

0 commit comments

Comments
 (0)