From 86094eb4d62a2ffd570cc990b671b233721a7a92 Mon Sep 17 00:00:00 2001 From: Steven Lin Date: Tue, 6 Jan 2026 23:27:30 +0800 Subject: [PATCH 1/3] Enable E2EE for SVC codec --- lib/src/e2ee/e2ee_manager.dart | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/src/e2ee/e2ee_manager.dart b/lib/src/e2ee/e2ee_manager.dart index 1f3a4041..d26a39cb 100644 --- a/lib/src/e2ee/e2ee_manager.dart +++ b/lib/src/e2ee/e2ee_manager.dart @@ -46,8 +46,7 @@ class E2EEManager { _listener = _room!.createListener(); _listener! ..on((event) async { - if (event.publication.encryptionType == EncryptionType.kNone || - isSVCCodec(event.publication.track?.codec ?? '')) { + if (event.publication.encryptionType == EncryptionType.kNone) { // no need to setup frame cryptor return; } @@ -81,7 +80,7 @@ class E2EEManager { }) ..on((event) async { final codec = event.publication.mimeType.split('/')[1]; - if (event.publication.encryptionType == EncryptionType.kNone || isSVCCodec(codec)) { + if (event.publication.encryptionType == EncryptionType.kNone) { // no need to setup frame cryptor return; } From 6fb727e2ae64c4b562e6d7d157c457a6888cc047 Mon Sep 17 00:00:00 2001 From: Steven Lin Date: Wed, 7 Jan 2026 12:30:11 +0800 Subject: [PATCH 2/3] Code cleanup --- lib/src/e2ee/e2ee_manager.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/src/e2ee/e2ee_manager.dart b/lib/src/e2ee/e2ee_manager.dart index d26a39cb..37c84922 100644 --- a/lib/src/e2ee/e2ee_manager.dart +++ b/lib/src/e2ee/e2ee_manager.dart @@ -21,7 +21,6 @@ import '../events.dart'; import '../extensions.dart'; import '../logger.dart'; import '../managers/event.dart'; -import '../utils.dart'; import 'events.dart'; import 'key_provider.dart'; import 'options.dart'; From 5f0a6ce98e640fc6df33f58351ee073430715221 Mon Sep 17 00:00:00 2001 From: Steven Lin Date: Wed, 7 Jan 2026 14:53:16 +0800 Subject: [PATCH 3/3] Do not enable E2EE for AV1 codec --- lib/src/e2ee/e2ee_manager.dart | 6 ++++-- lib/src/utils.dart | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/src/e2ee/e2ee_manager.dart b/lib/src/e2ee/e2ee_manager.dart index 37c84922..b9278d09 100644 --- a/lib/src/e2ee/e2ee_manager.dart +++ b/lib/src/e2ee/e2ee_manager.dart @@ -21,6 +21,7 @@ import '../events.dart'; import '../extensions.dart'; import '../logger.dart'; import '../managers/event.dart'; +import '../utils.dart'; import 'events.dart'; import 'key_provider.dart'; import 'options.dart'; @@ -45,7 +46,8 @@ class E2EEManager { _listener = _room!.createListener(); _listener! ..on((event) async { - if (event.publication.encryptionType == EncryptionType.kNone) { + if (event.publication.encryptionType == EncryptionType.kNone || + isAV1Codec(event.publication.track?.codec ?? '')) { // no need to setup frame cryptor return; } @@ -79,7 +81,7 @@ class E2EEManager { }) ..on((event) async { final codec = event.publication.mimeType.split('/')[1]; - if (event.publication.encryptionType == EncryptionType.kNone) { + if (event.publication.encryptionType == EncryptionType.kNone || isAV1Codec(codec)) { // no need to setup frame cryptor return; } diff --git a/lib/src/utils.dart b/lib/src/utils.dart index 33954847..d2390de9 100644 --- a/lib/src/utils.dart +++ b/lib/src/utils.dart @@ -567,6 +567,8 @@ const refreshSubscribedCodecAfterNewCodec = 5000; bool isSVCCodec(String codec) => ['vp9', 'av1'].contains(codec.toLowerCase()); +bool isAV1Codec(String codec) => codec.toLowerCase() == 'av1'; + class ScalabilityMode { late num spatial;