Video optimizations (#18)
* use events for `VideoTrackRenderer` * logger * implemented visibility detection * optimize code with 1 param debounce func * stop pending visibility event when disposed * clean up * mark internal * report to track * call dispose on pub and track * use internal events to receive visibility events * clean up visibility for disposed track * listen to track visibility events on pub * re-design * quickly re-enable * clean up * clean up
This commit is contained in:
@@ -3,15 +3,19 @@ import 'package:flutter_webrtc/flutter_webrtc.dart' as rtc;
|
||||
import 'package:meta/meta.dart';
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
import '../events.dart';
|
||||
import '../extensions.dart';
|
||||
import '../logger.dart';
|
||||
import '../managers/event.dart';
|
||||
import '../proto/livekit_models.pb.dart' as lk_models;
|
||||
import '../support/disposable.dart';
|
||||
|
||||
/// Wrapper around a MediaStreamTrack with additional metadata.
|
||||
/// Base for [AudioTrack] and [VideoTrack],
|
||||
/// can not be instantiated directly.
|
||||
abstract class Track extends DisposableChangeNotifier {
|
||||
abstract class Track extends DisposableChangeNotifier
|
||||
with EventsEmittable<TrackEvent> {
|
||||
static const uuid = Uuid();
|
||||
static const cameraName = 'camera';
|
||||
static const screenShareName = 'screen';
|
||||
|
||||
@@ -31,7 +35,13 @@ abstract class Track extends DisposableChangeNotifier {
|
||||
this.kind,
|
||||
this.name,
|
||||
this.mediaStreamTrack,
|
||||
);
|
||||
) {
|
||||
onDispose(() async {
|
||||
logger.fine('${objectId} onDispose()');
|
||||
// dispose events
|
||||
await events.dispose();
|
||||
});
|
||||
}
|
||||
|
||||
bool get muted =>
|
||||
mediaStreamTrack.muted == null ? false : mediaStreamTrack.muted!;
|
||||
@@ -52,7 +62,6 @@ abstract class Track extends DisposableChangeNotifier {
|
||||
var cid = _cid ?? mediaStreamTrack.id;
|
||||
|
||||
if (cid == null) {
|
||||
const uuid = Uuid();
|
||||
cid = uuid.v4();
|
||||
_cid = cid;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user