Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .changes/deprecate-webrtc-types
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
minor type="changed" "Deprecate rtc-typed Track getters (mediaStream, mediaStreamTrack, sender, receiver, mediaType); flutter_webrtc types are being removed from the public API"
4 changes: 2 additions & 2 deletions lib/src/core/engine.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1488,7 +1488,7 @@ extension EngineInternalMethods on Engine {
throw UnexpectedConnectionState('publisher is closed');
}

if (track.mediaStreamTrack.kind == 'video' && opts is VideoPublishOptions) {
if (track.rtcTrack.kind == 'video' && opts is VideoPublishOptions) {
track.codec = opts.videoCodec;
}
final transceiverInit = rtc.RTCRtpTransceiverInit(
Expand All @@ -1498,7 +1498,7 @@ extension EngineInternalMethods on Engine {
transceiverInit.sendEncodings = encodings;
}
final transceiver = await publisher!.pc.addTransceiver(
track: track.mediaStreamTrack,
track: track.rtcTrack,
kind: track is LocalVideoTrack
? rtc.RTCRtpMediaType.RTCRtpMediaTypeVideo
: rtc.RTCRtpMediaType.RTCRtpMediaTypeAudio,
Expand Down
2 changes: 1 addition & 1 deletion lib/src/e2ee/e2ee_manager.dart
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ class E2EEManager {
return;
}
final frameCryptor = await _addRtpSender(
sender: event.publication.track!.sender!,
sender: event.publication.track!.rtcSender!,
identity: event.participant.identity,
sid: event.publication.sid);
if (kIsWeb && event.publication.track!.codec != null) {
Expand Down
10 changes: 5 additions & 5 deletions lib/src/participant/local.dart
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ class LocalParticipant extends Participant<LocalTrackPublication> {
LocalAudioTrack track, {
AudioPublishOptions? publishOptions,
}) async {
if (audioTrackPublications.any((e) => e.track?.mediaStreamTrack.id == track.mediaStreamTrack.id)) {
if (audioTrackPublications.any((e) => e.track?.rtcTrack.id == track.rtcTrack.id)) {
throw TrackPublishException('track already exists');
}

Expand Down Expand Up @@ -215,7 +215,7 @@ class LocalParticipant extends Participant<LocalTrackPublication> {
);
// addTransceiver cannot pass in a kind parameter due to a bug in flutter-webrtc (web)
track.transceiver = await room.engine.publisher?.pc.addTransceiver(
track: track.mediaStreamTrack,
track: track.rtcTrack,
kind: rtc.RTCRtpMediaType.RTCRtpMediaTypeAudio,
init: transceiverInit,
);
Expand Down Expand Up @@ -276,7 +276,7 @@ class LocalParticipant extends Participant<LocalTrackPublication> {
LocalVideoTrack track, {
VideoPublishOptions? publishOptions,
}) async {
if (videoTrackPublications.any((e) => e.track?.mediaStreamTrack.id == track.mediaStreamTrack.id)) {
if (videoTrackPublications.any((e) => e.track?.rtcTrack.id == track.rtcTrack.id)) {
throw TrackPublishException('track already exists');
}

Expand Down Expand Up @@ -329,7 +329,7 @@ class LocalParticipant extends Participant<LocalTrackPublication> {
// getSettings() is only implemented for Web & Mobile
try {
// try to use getSettings for more accurate resolution
final settings = track.mediaStreamTrack.getSettings();
final settings = track.rtcTrack.getSettings();
if ((settings['width'] is int && settings['width'] as int > 0) &&
(settings['height'] is int && settings['height'] as int > 0)) {
dimensions = dimensions.copyWith(width: settings['width'] as int);
Expand Down Expand Up @@ -475,7 +475,7 @@ class LocalParticipant extends Participant<LocalTrackPublication> {
logger.fine('publishVideoTrack publisher: ${room.engine.publisher}');

track.transceiver = await room.engine.publisher?.pc.addTransceiver(
track: track.mediaStreamTrack,
track: track.rtcTrack,
kind: rtc.RTCRtpMediaType.RTCRtpMediaTypeVideo,
init: transceiverInit,
);
Expand Down
4 changes: 2 additions & 2 deletions lib/src/preconnect/pre_connect_audio_buffer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -120,14 +120,14 @@ class PreConnectAudioBuffer {
_agentReadyManager.setTimer(timeout, timeoutReason: 'Agent did not become ready within timeout');

_localTrack = await LocalAudioTrack.create();
logger.fine('[Preconnect audio] created local track ${_localTrack!.mediaStreamTrack.id}');
logger.fine('[Preconnect audio] created local track ${_localTrack!.rtcTrack.id}');

final rendererId = Uuid().v4();
logger.info('Starting audio renderer with rendererId: $rendererId');

_audioCapture = createAudioFrameCapture();
final result = await _audioCapture!.start(
track: _localTrack!.mediaStreamTrack,
track: _localTrack!.rtcTrack,
rendererId: rendererId,
sampleRate: _requestSampleRate,
channels: 1,
Expand Down
2 changes: 1 addition & 1 deletion lib/src/publication/local.dart
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class LocalTrackPublication<T extends LocalTrack> extends TrackPublication<T> {
Future<void> unmute({bool stopOnMute = true}) async => await track?.unmute(stopOnMute: stopOnMute);

lk_rtc.TrackPublishedResponse toPBTrackPublishedResponse() => lk_rtc.TrackPublishedResponse(
cid: track?.mediaStreamTrack.id,
cid: track?.rtcTrack.id,
track: latestInfo,
);
}
2 changes: 1 addition & 1 deletion lib/src/track/audio_visualizer_native.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class AudioVisualizerNative extends AudioVisualizer {
final AudioTrack? _audioTrack;
final AudioVisualizerOptions visualizerOptions;

MediaStreamTrack get mediaStreamTrack => _audioTrack!.mediaStreamTrack;
MediaStreamTrack get mediaStreamTrack => _audioTrack!.rtcTrack;

AudioVisualizerNative(this._audioTrack, {required this.visualizerOptions}) {
onDispose(() async {
Expand Down
2 changes: 1 addition & 1 deletion lib/src/track/audio_visualizer_web.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class AudioVisualizerWeb extends AudioVisualizer {
MultiBandTrackVolumeOptions options = MultiBandTrackVolumeOptions();
Timer? _timer;
final AudioTrack? _audioTrack;
MediaStreamTrack get mediaStreamTrack => _audioTrack!.mediaStreamTrack;
MediaStreamTrack get mediaStreamTrack => _audioTrack!.rtcTrack;

final AudioVisualizerOptions visualizerOptions;

Expand Down
8 changes: 4 additions & 4 deletions lib/src/track/local/audio.dart
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class LocalAudioTrack extends LocalTrack with AudioTrack, LocalAudioManagementMi
Future<void> setAudioProcessingOptions(track_options.AudioProcessingOptions options) async {
final nextOptions = currentOptions.copyWith(processing: options);
final response = await Native.setAudioProcessingOptions(
mediaStreamTrack.id!,
rtcTrack.id!,
options.toMap(),
);

Expand Down Expand Up @@ -103,7 +103,7 @@ class LocalAudioTrack extends LocalTrack with AudioTrack, LocalAudioManagementMi
try {
final stats = await getSenderStats();

if (stats != null && prevStats != null && sender != null) {
if (stats != null && prevStats != null && rtcSender != null) {
final bitrate = computeBitrateForSenderStats(stats, prevStats);
_currentBitrate = bitrate;
events.emit(AudioSenderStatsEvent(stats: stats, currentBitrate: bitrate));
Expand All @@ -118,13 +118,13 @@ class LocalAudioTrack extends LocalTrack with AudioTrack, LocalAudioManagementMi
}

Future<AudioSenderStats?> getSenderStats() async {
if (sender == null) {
if (rtcSender == null) {
return null;
}

late List<rtc.StatsReport> stats;
try {
stats = await sender!.getStats();
stats = await rtcSender!.getStats();
} catch (e) {
rethrow;
}
Expand Down
14 changes: 7 additions & 7 deletions lib/src/track/local/local.dart
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ mixin AudioTrack on Track {
}) {
final group = _captureGroups.putIfAbsent(
options,
() => _AudioCaptureGroup(track: mediaStreamTrack, options: options),
() => _AudioCaptureGroup(track: rtcTrack, options: options),
);
group.renderers.add(onFrame);

Expand Down Expand Up @@ -219,12 +219,12 @@ abstract class LocalTrack extends Track {
if (didStop) {
logger.fine('Stopping mediaStreamTrack...');
try {
await mediaStreamTrack.stop();
await rtcTrack.stop();
} catch (error) {
logger.severe('MediaStreamTrack.stop() did throw $error');
}
try {
await mediaStream.dispose();
await rtcStream.dispose();
} catch (error) {
logger.severe('MediaStreamTrack.dispose() did throw $error');
}
Expand Down Expand Up @@ -289,7 +289,7 @@ abstract class LocalTrack extends Track {
Future<void> restartTrack([
LocalTrackOptions? options,
]) async {
if (sender == null) throw TrackCreateException('could not restart track');
if (rtcSender == null) throw TrackCreateException('could not restart track');
if (options != null && currentOptions.runtimeType != options.runtimeType) {
throw Exception('options must be a ${currentOptions.runtimeType}');
}
Expand All @@ -309,7 +309,7 @@ abstract class LocalTrack extends Track {

// replace track on sender
try {
await sender?.replaceTrack(newTrack);
await rtcSender?.replaceTrack(newTrack);
if (this is LocalVideoTrack) {
final videoTrack = this as LocalVideoTrack;
await videoTrack.replaceTrackForMultiCodecSimulcast(newTrack);
Expand Down Expand Up @@ -347,8 +347,8 @@ abstract class LocalTrack extends Track {
_processor = processor;

final processorOptions = kind == TrackType.VIDEO
? VideoProcessorOptions(track: mediaStreamTrack)
: AudioProcessorOptions(track: mediaStreamTrack);
? VideoProcessorOptions(track: rtcTrack)
: AudioProcessorOptions(track: rtcTrack);

await _processor!.init(processorOptions);

Expand Down
24 changes: 12 additions & 12 deletions lib/src/track/local/video.dart
Original file line number Diff line number Diff line change
Expand Up @@ -119,11 +119,11 @@ class LocalVideoTrack extends LocalTrack with VideoTrack {
}

Future<List<VideoSenderStats>> getSenderStats() async {
if (sender == null) {
if (rtcSender == null) {
return [];
}

final stats = await sender!.getStats();
final stats = await rtcSender!.getStats();
final List<VideoSenderStats> items = [];
for (var v in stats) {
if (v.type == 'outbound-rtp') {
Expand Down Expand Up @@ -290,7 +290,7 @@ extension LocalVideoTrackExt on LocalVideoTrack {
params: options.params,
);
await restartTrack(newOptions);
await replaceTrackForMultiCodecSimulcast(mediaStreamTrack);
await replaceTrackForMultiCodecSimulcast(rtcTrack);
currentOptions = newOptions;
}

Expand All @@ -303,21 +303,21 @@ extension LocalVideoTrackExt on LocalVideoTrack {

if (fastSwitch) {
currentOptions = options.copyWith(deviceId: deviceId);
await rtc.Helper.switchCamera(mediaStreamTrack, deviceId, mediaStream);
await rtc.Helper.switchCamera(rtcTrack, deviceId, rtcStream);
return;
}

await restartTrack(options.copyWith(deviceId: deviceId));

await replaceTrackForMultiCodecSimulcast(mediaStreamTrack);
await replaceTrackForMultiCodecSimulcast(rtcTrack);
}

Future<void> replaceTrackForMultiCodecSimulcast(
rtc.MediaStreamTrack newTrack,
) async {
simulcastCodecs.forEach((key, simulcastTrack) async {
await simulcastTrack.sender?.replaceTrack(newTrack);
simulcastTrack.mediaStreamTrack = mediaStreamTrack;
simulcastTrack.mediaStreamTrack = rtcTrack;
});
}

Expand Down Expand Up @@ -372,12 +372,12 @@ extension LocalVideoTrackExt on LocalVideoTrack {
}) async {
logger.fine('Update publishing layers: $layers');

if (track?.sender == null) {
if (track?.rtcSender == null) {
logger.fine('Update publishing layers: sender is null');
return;
}

final params = track?.sender?.parameters;
final params = track?.rtcSender?.parameters;
if (params == null) {
logger.fine('Update publishing layers: sender params are null');
return;
Expand All @@ -389,7 +389,7 @@ extension LocalVideoTrackExt on LocalVideoTrack {
return;
}

return setPublishingLayersForSender(track!.sender!, encodings, layers, isSVC: isSVC);
return setPublishingLayersForSender(track!.rtcSender!, encodings, layers, isSVC: isSVC);
}

lk_models.VideoQuality _videoQualityForRid(String rid) {
Expand Down Expand Up @@ -495,19 +495,19 @@ extension LocalVideoTrackExt on LocalVideoTrack {
final SimulcastTrackInfo simulcastCodecInfo = SimulcastTrackInfo(
codec: codec,
encodings: encodings,
mediaStreamTrack: mediaStreamTrack,
mediaStreamTrack: rtcTrack,
);

simulcastCodecs[codec] = simulcastCodecInfo;
return simulcastCodecInfo;
}

Future<void> setDegradationPreference(DegradationPreference preference) async {
final params = sender?.parameters;
final params = rtcSender?.parameters;
if (params == null) {
return;
}
params.degradationPreference = preference.toRTCType();
await sender?.setParameters(params);
await rtcSender?.setParameters(params);
}
}
10 changes: 5 additions & 5 deletions lib/src/track/remote/audio.dart
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class RemoteAudioTrack extends RemoteTrack with AudioTrack, RemoteAudioManagemen
if (didStart) {
try {
// web support
await audio.startAudio(getCid(), mediaStreamTrack);
await audio.startAudio(getCid(), rtcTrack);
if (_deviceId != null) {
audio.setSinkId(getCid(), _deviceId!);
}
Expand Down Expand Up @@ -79,14 +79,14 @@ class RemoteAudioTrack extends RemoteTrack with AudioTrack, RemoteAudioManagemen

@override
Future<bool> monitorStats() async {
if (receiver == null || events.isDisposed || !isActive) {
if (rtcReceiver == null || events.isDisposed || !isActive) {
_currentBitrate = 0;
return false;
}
try {
final stats = await getReceiverStats();

if (stats != null && prevStats != null && receiver != null) {
if (stats != null && prevStats != null && rtcReceiver != null) {
final bitrate = computeBitrateForReceiverStats(stats, prevStats);
_currentBitrate = bitrate;
events.emit(AudioReceiverStatsEvent(stats: stats, currentBitrate: bitrate));
Expand All @@ -101,13 +101,13 @@ class RemoteAudioTrack extends RemoteTrack with AudioTrack, RemoteAudioManagemen
}

Future<AudioReceiverStats?> getReceiverStats() async {
if (receiver == null) {
if (rtcReceiver == null) {
return null;
}

late List<rtc.StatsReport> stats;
try {
stats = await receiver!.getStats();
stats = await rtcReceiver!.getStats();
} catch (e) {
rethrow;
}
Expand Down
8 changes: 4 additions & 4 deletions lib/src/track/remote/video.dart
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,14 @@ class RemoteVideoTrack extends RemoteTrack with VideoTrack {

@override
Future<bool> monitorStats() async {
if (receiver == null || events.isDisposed || !isActive) {
if (rtcReceiver == null || events.isDisposed || !isActive) {
_currentBitrate = 0;
return false;
}
try {
final stats = await getReceiverStats();

if (stats != null && prevStats != null && receiver != null) {
if (stats != null && prevStats != null && rtcReceiver != null) {
final bitrate = computeBitrateForReceiverStats(stats, prevStats);
_currentBitrate = bitrate;
events.emit(VideoReceiverStatsEvent(stats: stats, currentBitrate: bitrate));
Expand All @@ -68,13 +68,13 @@ class RemoteVideoTrack extends RemoteTrack with VideoTrack {
}

Future<VideoReceiverStats?> getReceiverStats() async {
if (receiver == null) {
if (rtcReceiver == null) {
return null;
}

late List<rtc.StatsReport> stats;
try {
stats = await receiver!.getStats();
stats = await rtcReceiver!.getStats();
} catch (e) {
rethrow;
}
Expand Down
Loading
Loading