refactor: [WIP] Voip abstract interface.

This commit is contained in:
cloudwebrtc 2021-11-15 22:31:38 +08:00
parent 0822e3809d
commit 56d9ba7d4a
3 changed files with 117 additions and 8 deletions

View File

@ -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;

116
lib/src/voip_abstract.dart Normal file
View File

@ -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();
}

View File

@ -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