addRtpReceiver method
Future<void>
addRtpReceiver({
- required RTCRtpReceiver receiver,
- required RTCVideoCodec codec,
- required bool enabled,
Implementation
Future<void> addRtpReceiver({
required RTCRtpReceiver receiver,
required RTCVideoCodec codec,
required bool enabled,
}) async {
if (_identity == null || _keyProvider == null) return;
if (!codec.isSFrameSuported || !enabled) return;
try {
final String trackId = receiver.track?.id ?? '';
final String id = '${receiver.track?.kind}_${trackId}_receiver';
final frameCryptor = await _fcFactory.createFrameCryptorForRtpReceiver(
participantId: _identity!,
receiver: receiver,
algorithm: _algorithm,
keyProvider: _keyProvider!.keyProvider,
);
frameCryptor.onFrameCryptorStateChanged = (participantId, state) {
_logger.log('Decryption: $participantId $state');
};
_frameCryptors[{_identity!: id}] = frameCryptor;
await frameCryptor.setKeyIndex(_keyProvider!.getLatestIndex(_identity!));
await frameCryptor.setEnabled(enabled);
if (kIsWeb) {
await frameCryptor.updateCodec(
receiver.track?.kind == RtcTrackKind.video.kind
? codec.codec.toUpperCase()
: _audioCodec.codec.toUpperCase(),
);
}
} catch (e) {
_logger.bug(e.toString());
}
}