Better audio management (#10)
* add audio_session package * `AudioManager` initial design * try to integrate audio manager * configure audio session * `DisposeAware` disposing if already published causes exception. * organize * guard flutter_webrtc calls * websocket async fix * use `ConnectionState` instead of `_isClosed` and `isReconnecting` * change create audio track defaults * update protos * protocol 3 speaker updates * fix exception * emit `RoomDisconnectedEvent` only once * fix exception * keep track of local / remote audio tracks * explicit types * manage track state * re-structure audio management * change defaults * unpublish all * use experimental build * change defaults * configuring is optional * call native `RTCAudioSession.setConfiguration` * defaults adjustment * iOS only for now * use lib 92.4515.07 * clean up * revert audio options for now * remove pod source * rename apple related audio * `createListener` method * organize native audio * `SpeakingChangedEvent` only on `Participant` * refactoring * fix ios compile * fix configure audio only for iOS logic * minor fix & clean up * change dispose logic * format protos * fix unpublishTrack * `createListener` into a mixin * simplify * use flutter_webrtc master * unpublish for example * update ios icon * android icon * web icon * favicon
This commit is contained in:
+23
-28
@@ -1,6 +1,4 @@
|
||||
import 'package:flutter_webrtc/flutter_webrtc.dart' as rtc;
|
||||
import 'package:livekit_client/livekit_client.dart';
|
||||
import 'package:meta/meta.dart';
|
||||
|
||||
import 'participant/participant.dart';
|
||||
import 'participant/remote_participant.dart';
|
||||
@@ -8,6 +6,7 @@ import 'proto/livekit_models.pb.dart' as lk_models;
|
||||
import 'proto/livekit_rtc.pb.dart' as lk_rtc;
|
||||
import 'track/remote_track_publication.dart';
|
||||
import 'track/track.dart';
|
||||
import 'track/track_publication.dart';
|
||||
import 'types.dart';
|
||||
|
||||
abstract class LiveKitEvent {}
|
||||
@@ -110,14 +109,6 @@ class TrackSubscribedEvent with RoomEvent, ParticipantEvent {
|
||||
});
|
||||
}
|
||||
|
||||
@internal
|
||||
class ParticipantInfoUpdatedEvent with ParticipantEvent {
|
||||
final RemoteParticipant participant;
|
||||
const ParticipantInfoUpdatedEvent({
|
||||
required this.participant,
|
||||
});
|
||||
}
|
||||
|
||||
/// An error has occured during track subscription.
|
||||
/// Emitted by [Room] and [RemoteParticipant].
|
||||
class TrackSubscriptionExceptionEvent with RoomEvent, ParticipantEvent {
|
||||
@@ -226,12 +217,12 @@ class EngineReconnectedEvent with EngineEvent {
|
||||
const EngineReconnectedEvent();
|
||||
}
|
||||
|
||||
class EngineParticipantUpdateEvent with EngineEvent {
|
||||
final List<lk_models.ParticipantInfo> participants;
|
||||
const EngineParticipantUpdateEvent({
|
||||
required this.participants,
|
||||
});
|
||||
}
|
||||
// class EngineParticipantUpdateEvent with EngineEvent {
|
||||
// final List<lk_models.ParticipantInfo> participants;
|
||||
// const EngineParticipantUpdateEvent({
|
||||
// required this.participants,
|
||||
// });
|
||||
// }
|
||||
|
||||
class EngineTrackAddedEvent with EngineEvent {
|
||||
final rtc.MediaStreamTrack track;
|
||||
@@ -244,13 +235,6 @@ class EngineTrackAddedEvent with EngineEvent {
|
||||
});
|
||||
}
|
||||
|
||||
class EngineSpeakersUpdateEvent with EngineEvent {
|
||||
final List<lk_models.SpeakerInfo> speakers;
|
||||
const EngineSpeakersUpdateEvent({
|
||||
required this.speakers,
|
||||
});
|
||||
}
|
||||
|
||||
class EngineDataPacketReceivedEvent with EngineEvent {
|
||||
final lk_models.UserPacket packet;
|
||||
final lk_models.DataPacket_Kind kind;
|
||||
@@ -363,10 +347,11 @@ class SignalTrickleEvent with SignalEvent {
|
||||
});
|
||||
}
|
||||
|
||||
class SignalParticipantUpdateEvent with SignalEvent {
|
||||
final List<lk_models.ParticipantInfo> updates;
|
||||
// relayed by Engine
|
||||
class SignalParticipantUpdateEvent with SignalEvent, EngineEvent {
|
||||
final List<lk_models.ParticipantInfo> participants;
|
||||
const SignalParticipantUpdateEvent({
|
||||
required this.updates,
|
||||
required this.participants,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -379,9 +364,19 @@ class SignalLocalTrackPublishedEvent with SignalEvent {
|
||||
});
|
||||
}
|
||||
|
||||
class SignalActiveSpeakersChangedEvent with SignalEvent {
|
||||
// speaker update received through websocket
|
||||
// relayed by Engine
|
||||
class SignalSpeakersChangedEvent with SignalEvent, EngineEvent {
|
||||
final List<lk_models.SpeakerInfo> speakers;
|
||||
const SignalActiveSpeakersChangedEvent({
|
||||
const SignalSpeakersChangedEvent({
|
||||
required this.speakers,
|
||||
});
|
||||
}
|
||||
|
||||
// Event received through data channel
|
||||
class EngineActiveSpeakersUpdateEvent with EngineEvent {
|
||||
final List<lk_models.SpeakerInfo> speakers;
|
||||
const EngineActiveSpeakersUpdateEvent({
|
||||
required this.speakers,
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user