refactor: [WIP] Voip abstract interface.
This commit is contained in:
parent
0822e3809d
commit
56d9ba7d4a
|
|
@ -1,17 +1,11 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:core';
|
import 'dart:core';
|
||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'voip_abstract.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
|
||||||
|
|
||||||
import 'package:flutter_webrtc/flutter_webrtc.dart';
|
|
||||||
import 'package:sdp_transform/sdp_transform.dart' as sdp_transform;
|
import 'package:sdp_transform/sdp_transform.dart' as sdp_transform;
|
||||||
|
|
||||||
import '../matrix.dart';
|
import '../matrix.dart';
|
||||||
|
|
||||||
bool get kIsMobile => !kIsWeb && (Platform.isAndroid || Platform.isIOS);
|
|
||||||
|
|
||||||
/// The default life time for call events, in millisecond.
|
/// The default life time for call events, in millisecond.
|
||||||
const lifetimeMs = 10 * 1000;
|
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
|
html: ^0.15.0
|
||||||
collection: ^1.15.0
|
collection: ^1.15.0
|
||||||
sdp_transform: ^0.3.2
|
sdp_transform: ^0.3.2
|
||||||
flutter_webrtc: ^0.7.1
|
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
dart_code_metrics: ^4.4.0
|
dart_code_metrics: ^4.4.0
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue