addRtpSender method
Implementation
Future<void> addRtpSender({required RTCRtpSender sender}) async {
try {
if (_identity == null || _keyProvider == null) return;
if (!_videoCodec.isSFrameSuported || !_enabled) return;
final String trackId = sender.track?.id ?? '';
final String id =
'${sender.track?.kind.toString().trim()}_${trackId}_sender';
final frameCryptor = await _fcFactory.createFrameCryptorForRtpSender(
participantId: _identity!,
sender: sender,
algorithm: _algorithm,
keyProvider: _keyProvider!.keyProvider,
);
frameCryptor.onFrameCryptorStateChanged = (participantId, state) {
_logger.log('Encryption: $participantId $state');
};
_frameCryptors[{_identity!: id}] = frameCryptor;
await frameCryptor.setKeyIndex(_keyProvider!.getLatestIndex(_identity!));
await frameCryptor.setEnabled(_enabled);
if (kIsWeb) {
await frameCryptor.updateCodec(
sender.track?.kind.toString().trim() == RtcTrackKind.video.kind
? _videoCodec.codec.toUpperCase()
: _audioCodec.codec.toUpperCase(),
);
}
} catch (e) {
_logger.bug(e.toString());
}
}