Merge branch 'main' of https://github.com/livekit/client-sdk-flutter
This commit is contained in:
@@ -8,7 +8,7 @@ import 'package:synchronized/synchronized.dart' as sync;
|
||||
import '../logger.dart';
|
||||
import '../proto/livekit_models.pb.dart' as lk_models;
|
||||
import '../support/native_audio.dart';
|
||||
|
||||
import '../types.dart';
|
||||
import 'local_audio_track.dart';
|
||||
import 'track.dart';
|
||||
|
||||
@@ -35,11 +35,13 @@ abstract class AudioTrack extends Track {
|
||||
rtc.MediaStream? mediaStream;
|
||||
|
||||
AudioTrack(
|
||||
TrackSource source,
|
||||
String name,
|
||||
rtc.MediaStreamTrack track,
|
||||
this.mediaStream,
|
||||
) : super(
|
||||
lk_models.TrackType.AUDIO,
|
||||
source,
|
||||
name,
|
||||
track,
|
||||
);
|
||||
|
||||
@@ -4,16 +4,18 @@ import 'package:flutter_webrtc/flutter_webrtc.dart' as rtc;
|
||||
|
||||
import '../exceptions.dart';
|
||||
import '../logger.dart';
|
||||
import '../types.dart';
|
||||
import 'audio_track.dart';
|
||||
import 'options.dart';
|
||||
|
||||
class LocalAudioTrack extends AudioTrack {
|
||||
// private constructor
|
||||
LocalAudioTrack._(
|
||||
TrackSource source,
|
||||
String name,
|
||||
rtc.MediaStreamTrack track,
|
||||
rtc.MediaStream stream,
|
||||
) : super(name, track, stream);
|
||||
) : super(source, name, track, stream);
|
||||
|
||||
/// Creates a new audio track from the default audio input device.
|
||||
static Future<LocalAudioTrack> create(
|
||||
@@ -31,7 +33,12 @@ class LocalAudioTrack extends AudioTrack {
|
||||
|
||||
if (stream.getAudioTracks().isEmpty) throw TrackCreateException();
|
||||
|
||||
return LocalAudioTrack._('', stream.getAudioTracks().first, stream);
|
||||
return LocalAudioTrack._(
|
||||
TrackSource.microphone,
|
||||
'',
|
||||
stream.getAudioTracks().first,
|
||||
stream,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'package:flutter_webrtc/flutter_webrtc.dart' as rtc;
|
||||
|
||||
import '../exceptions.dart';
|
||||
import '../logger.dart';
|
||||
import '../types.dart';
|
||||
import 'options.dart';
|
||||
import 'track.dart';
|
||||
import 'video_track.dart';
|
||||
@@ -18,11 +19,12 @@ class LocalVideoTrack extends VideoTrack {
|
||||
// Private constructor
|
||||
//
|
||||
LocalVideoTrack._(
|
||||
TrackSource source,
|
||||
String name,
|
||||
rtc.MediaStreamTrack mediaTrack,
|
||||
rtc.MediaStream stream,
|
||||
this.currentOptions,
|
||||
) : super(name, mediaTrack, stream);
|
||||
) : super(source, name, mediaTrack, stream);
|
||||
|
||||
rtc.RTCRtpSender? get sender => transceiver?.sender;
|
||||
|
||||
@@ -61,6 +63,7 @@ class LocalVideoTrack extends VideoTrack {
|
||||
options ??= const CameraTrackOptions();
|
||||
final stream = await _createStream(options);
|
||||
return LocalVideoTrack._(
|
||||
TrackSource.camera,
|
||||
Track.cameraName,
|
||||
stream.getVideoTracks().first,
|
||||
stream,
|
||||
@@ -74,6 +77,7 @@ class LocalVideoTrack extends VideoTrack {
|
||||
options ??= const ScreenTrackOptions();
|
||||
final stream = await _createStream(options);
|
||||
return LocalVideoTrack._(
|
||||
TrackSource.screenShareVideo,
|
||||
Track.screenShareName,
|
||||
stream.getVideoTracks().first,
|
||||
stream,
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
import 'package:flutter_webrtc/flutter_webrtc.dart' as rtc;
|
||||
import '../types.dart';
|
||||
import '_audio_api.dart' if (dart.library.html) '_audio_html.dart' as audio;
|
||||
import 'audio_track.dart';
|
||||
|
||||
class RemoteAudioTrack extends AudioTrack {
|
||||
//
|
||||
RemoteAudioTrack(
|
||||
TrackSource source,
|
||||
String name,
|
||||
rtc.MediaStreamTrack track,
|
||||
rtc.MediaStream stream,
|
||||
) : super(name, track, stream);
|
||||
) : super(source, name, track, stream);
|
||||
|
||||
@override
|
||||
Future<bool> start() async {
|
||||
|
||||
@@ -2,12 +2,12 @@ import 'dart:math';
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:livekit_client/src/internal/events.dart';
|
||||
import 'package:livekit_client/src/logger.dart';
|
||||
import 'package:meta/meta.dart';
|
||||
|
||||
import '../events.dart';
|
||||
import '../extensions.dart';
|
||||
import '../internal/events.dart';
|
||||
import '../logger.dart';
|
||||
import '../participant/remote_participant.dart';
|
||||
import '../proto/livekit_models.pb.dart' as lk_models;
|
||||
import '../proto/livekit_rtc.pb.dart' as lk_rtc;
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
import 'package:flutter_webrtc/flutter_webrtc.dart' as rtc;
|
||||
import 'package:livekit_client/src/track/video_track.dart';
|
||||
|
||||
import '../track/video_track.dart';
|
||||
import '../types.dart';
|
||||
|
||||
class RemoteVideoTrack extends VideoTrack {
|
||||
//
|
||||
RemoteVideoTrack(
|
||||
TrackSource source,
|
||||
String name,
|
||||
rtc.MediaStreamTrack mediaTrack,
|
||||
rtc.MediaStream stream,
|
||||
) : super(name, mediaTrack, stream);
|
||||
) : super(source, name, mediaTrack, stream);
|
||||
|
||||
@override
|
||||
Future<bool> start() async {
|
||||
|
||||
@@ -9,6 +9,7 @@ import '../logger.dart';
|
||||
import '../managers/event.dart';
|
||||
import '../proto/livekit_models.pb.dart' as lk_models;
|
||||
import '../support/disposable.dart';
|
||||
import '../types.dart';
|
||||
|
||||
/// Wrapper around a MediaStreamTrack with additional metadata.
|
||||
/// Base for [AudioTrack] and [VideoTrack],
|
||||
@@ -17,10 +18,11 @@ abstract class Track extends DisposableChangeNotifier
|
||||
with EventsEmittable<TrackEvent> {
|
||||
static const uuid = Uuid();
|
||||
static const cameraName = 'camera';
|
||||
static const screenShareName = 'screen';
|
||||
static const screenShareName = 'screenshare';
|
||||
|
||||
final String name;
|
||||
final lk_models.TrackType kind;
|
||||
final TrackSource source;
|
||||
rtc.MediaStreamTrack mediaStreamTrack;
|
||||
|
||||
String? sid;
|
||||
@@ -33,6 +35,7 @@ abstract class Track extends DisposableChangeNotifier
|
||||
|
||||
Track(
|
||||
this.kind,
|
||||
this.source,
|
||||
this.name,
|
||||
this.mediaStreamTrack,
|
||||
) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import '../support/disposable.dart';
|
||||
import '../proto/livekit_models.pb.dart' as lk_models;
|
||||
import '../types.dart';
|
||||
import '../extensions.dart';
|
||||
import 'track.dart';
|
||||
|
||||
/// Represents a track that's published to the server. This class contains
|
||||
@@ -13,6 +14,7 @@ abstract class TrackPublication extends Disposable {
|
||||
final String sid;
|
||||
final String name;
|
||||
final lk_models.TrackType kind;
|
||||
final TrackSource source;
|
||||
|
||||
Track? track;
|
||||
bool muted = false;
|
||||
@@ -24,7 +26,8 @@ abstract class TrackPublication extends Disposable {
|
||||
TrackPublication.fromInfo(lk_models.TrackInfo info)
|
||||
: sid = info.sid,
|
||||
name = info.name,
|
||||
kind = info.type {
|
||||
kind = info.type,
|
||||
source = info.source.toLKType() {
|
||||
updateFromInfo(info);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import 'package:flutter_webrtc/flutter_webrtc.dart' as rtc;
|
||||
import 'package:livekit_client/src/internal/events.dart';
|
||||
import 'package:meta/meta.dart';
|
||||
|
||||
import '../internal/events.dart';
|
||||
import '../proto/livekit_models.pb.dart' as lk_models;
|
||||
import '../types.dart';
|
||||
import 'track.dart';
|
||||
|
||||
/// A video track will notify when its mediaTrack has changed.
|
||||
@@ -10,12 +11,13 @@ abstract class VideoTrack extends Track {
|
||||
rtc.MediaStream _mediaStream;
|
||||
|
||||
VideoTrack(
|
||||
TrackSource source,
|
||||
String name,
|
||||
rtc.MediaStreamTrack mediaTrack,
|
||||
this._mediaStream,
|
||||
// this._client,
|
||||
) : super(
|
||||
lk_models.TrackType.VIDEO,
|
||||
source,
|
||||
name,
|
||||
mediaTrack,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user