refactor: [WIP] Voip abstract interface.
This commit is contained in:
parent
0822e3809d
commit
56d9ba7d4a
|
|
@ -1,17 +1,11 @@
|
|||
import 'dart:async';
|
||||
import 'dart:core';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
import 'package:flutter_webrtc/flutter_webrtc.dart';
|
||||
import 'voip_abstract.dart';
|
||||
import 'package:sdp_transform/sdp_transform.dart' as sdp_transform;
|
||||
|
||||
import '../matrix.dart';
|
||||
|
||||
bool get kIsMobile => !kIsWeb && (Platform.isAndroid || Platform.isIOS);
|
||||
|
||||
/// The default life time for call events, in millisecond.
|
||||
const lifetimeMs = 10 * 1000;
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,116 @@
|
|||
import 'dart:io';
|
||||
|
||||
class MediaStreamTrack {
|
||||
bool get enabled => false;
|
||||
set enabled(bool value) {}
|
||||
String get kind => throw UnimplementedError();
|
||||
Future<void> stop() async {}
|
||||
Future<void> enableSpeakerphone(bool enable) async {}
|
||||
}
|
||||
|
||||
class MediaStream {
|
||||
String get id => throw UnimplementedError();
|
||||
List<MediaStreamTrack> getAudioTracks() => throw UnimplementedError();
|
||||
List<MediaStreamTrack> getVideoTracks() => throw UnimplementedError();
|
||||
List<MediaStreamTrack> getTracks() => throw UnimplementedError();
|
||||
Future<void> dispose() async {}
|
||||
}
|
||||
|
||||
class RTCPeerConnection {
|
||||
Function(RTCTrackEvent event)? onTrack;
|
||||
Function()? onRenegotiationNeeded;
|
||||
Function(RTCIceCandidate)? onIceCandidate;
|
||||
Function(dynamic state)? onIceGatheringState;
|
||||
Function(dynamic state)? onIceConnectionState;
|
||||
|
||||
Future<RTCSessionDescription> createOffer(Map<String, dynamic> constraints) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
Future<RTCSessionDescription> createAnswer(Map<String, dynamic> constraints) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
Future<void> setRemoteDescription(RTCSessionDescription description) async {}
|
||||
Future<void> setLocalDescription(RTCSessionDescription description) async {}
|
||||
|
||||
Future<RTCRtpSender> addTrack(
|
||||
MediaStreamTrack track, MediaStream stream) async {
|
||||
return RTCRtpSender();
|
||||
}
|
||||
|
||||
Future<void> removeTrack(RTCRtpSender sender) async {}
|
||||
|
||||
Future<void> close() async {}
|
||||
|
||||
Future<void> dispose() async {}
|
||||
|
||||
Future<void> addIceCandidate(RTCIceCandidate candidate) async {}
|
||||
|
||||
Future<void> addStream(MediaStream stream) async {}
|
||||
|
||||
Future<void> removeStream(MediaStream stream) async {}
|
||||
|
||||
Future<List<dynamic>> getTransceivers() async {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
Future<List<RTCRtpSender>> getSenders() async {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
Future<void> addCandidate(RTCIceCandidate candidate) async {}
|
||||
|
||||
dynamic get signalingState => throw UnimplementedError();
|
||||
}
|
||||
|
||||
class RTCIceCandidate {
|
||||
String get candidate => throw UnimplementedError();
|
||||
String get sdpMid => throw UnimplementedError();
|
||||
int get sdpMLineIndex => throw UnimplementedError();
|
||||
Map<String, dynamic> toMap() => throw UnimplementedError();
|
||||
RTCIceCandidate(String candidate, String sdpMid, int sdpMLineIndex);
|
||||
}
|
||||
|
||||
class RTCRtpSender {
|
||||
MediaStreamTrack? get track => throw UnimplementedError();
|
||||
DtmfSender get dtmfSender => throw UnimplementedError();
|
||||
}
|
||||
|
||||
class RTCSessionDescription {
|
||||
late String type;
|
||||
late String sdp;
|
||||
RTCSessionDescription(this.sdp, this.type);
|
||||
}
|
||||
|
||||
class RTCTrackEvent {
|
||||
late List<MediaStream> streams;
|
||||
}
|
||||
|
||||
enum TransceiverDirection {
|
||||
SendRecv,
|
||||
SendOnly,
|
||||
RecvOnly,
|
||||
Inactive,
|
||||
}
|
||||
|
||||
enum RTCSignalingState { RTCSignalingStateStable }
|
||||
|
||||
class RTCVideoRenderer {}
|
||||
|
||||
const kIsWeb = false;
|
||||
|
||||
bool get kIsMobile => !kIsWeb && (Platform.isAndroid || Platform.isIOS);
|
||||
|
||||
class Helper {
|
||||
static Future<void> switchCamera(MediaStreamTrack track) async {}
|
||||
}
|
||||
|
||||
class DtmfSender {
|
||||
Future<void> insertDTMF(String tones) async {}
|
||||
}
|
||||
|
||||
Future<MediaStream> createPeerConnection(
|
||||
Map<String, dynamic> constraints) async {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
|
@ -24,7 +24,6 @@ dependencies:
|
|||
html: ^0.15.0
|
||||
collection: ^1.15.0
|
||||
sdp_transform: ^0.3.2
|
||||
flutter_webrtc: ^0.7.1
|
||||
|
||||
dev_dependencies:
|
||||
dart_code_metrics: ^4.4.0
|
||||
|
|
|
|||
Loading…
Reference in New Issue