77 lines
1.6 KiB
Dart
77 lines
1.6 KiB
Dart
import 'room_rtc_types.dart';
|
|
|
|
enum RoomRtcEngineKind { trtc }
|
|
|
|
class RoomRtcEnterRoomConfig {
|
|
const RoomRtcEnterRoomConfig({
|
|
required this.identity,
|
|
required this.trtcSdkAppId,
|
|
required this.trtcUserSig,
|
|
this.throwOnError = false,
|
|
});
|
|
|
|
final RoomRtcSessionIdentity identity;
|
|
final int trtcSdkAppId;
|
|
final String trtcUserSig;
|
|
final bool throwOnError;
|
|
|
|
bool get hasTrtcCredential =>
|
|
trtcSdkAppId > 0 && trtcUserSig.trim().isNotEmpty && identity.isValid;
|
|
}
|
|
|
|
class RoomRtcAnchorConfig {
|
|
const RoomRtcAnchorConfig({required this.muted});
|
|
|
|
final bool muted;
|
|
}
|
|
|
|
class RoomRtcAudioMixingConfig {
|
|
const RoomRtcAudioMixingConfig({
|
|
required this.filePath,
|
|
required this.loopback,
|
|
this.cycle = 1,
|
|
this.startPos = 0,
|
|
});
|
|
|
|
final String filePath;
|
|
final bool loopback;
|
|
final int cycle;
|
|
final int startPos;
|
|
}
|
|
|
|
abstract class RoomRtcEngineAdapter {
|
|
RoomRtcEngineKind get kind;
|
|
|
|
bool get isInRoom;
|
|
|
|
Future<void> prewarm();
|
|
|
|
Future<void> enterRoomAsAudience(RoomRtcEnterRoomConfig config);
|
|
|
|
Future<bool> switchToAnchor(RoomRtcAnchorConfig config);
|
|
|
|
Future<bool> switchToAudience();
|
|
|
|
void muteAllRemoteAudio(bool muted);
|
|
|
|
Future<void> leaveRoom();
|
|
|
|
Future<void> release();
|
|
|
|
Future<void> startAudioMixing(RoomRtcAudioMixingConfig config);
|
|
|
|
Future<void> pauseAudioMixing();
|
|
|
|
Future<void> resumeAudioMixing();
|
|
|
|
Future<void> stopAudioMixing();
|
|
|
|
Future<void> setAudioMixingPosition(int positionMs);
|
|
|
|
Future<int> getAudioMixingPosition();
|
|
|
|
Future<int> getAudioMixingDuration();
|
|
|
|
Future<void> setAudioMixingVolume(int volume);
|
|
}
|