Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 7e53f47

Browse files
Merge pull request #14 from flutter-webrtc/feat/rtp-capabilities-api
feat: Add RTCRtpCapabilities interface.
2 parents 798a57c + b5b1994 commit 7e53f47

File tree

7 files changed

+95
-1
lines changed

7 files changed

+95
-1
lines changed

‎CHANGELOG.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# Changelog
22

33
--------------------------------------------
4+
[1.0.11] - 2023年01月30日
5+
6+
* Add RTCRtpCapabilities interface.
7+
48
[1.0.10] - 2022年11月12日
59

610
* Change MediaStream.clone to async.

‎lib/src/factory.dart‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'media_recorder.dart';
22
import 'media_stream.dart';
33
import 'navigator.dart';
44
import 'rtc_peerconnection.dart';
5+
import 'rtc_rtp_capabilities.dart';
56
import 'rtc_video_renderer.dart';
67

78
abstract class RTCFactory {
@@ -11,6 +12,10 @@ abstract class RTCFactory {
1112

1213
Future<MediaStream> createLocalMediaStream(String label);
1314

15+
Future<RTCRtpCapabilities> getRtpSenderCapabilities(String kind);
16+
17+
Future<RTCRtpCapabilities> getRtpReceiverCapabilities(String kind);
18+
1419
MediaRecorder mediaRecorder();
1520

1621
VideoRenderer videoRenderer();

‎lib/src/rtc_rtp_capabilities.dart‎

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
class RTCRtpCodecCapability {
2+
RTCRtpCodecCapability(
3+
{this.channels,
4+
required this.clockRate,
5+
required this.mimeType,
6+
this.sdpFmtpLine});
7+
factory RTCRtpCodecCapability.fromMap(Map<dynamic, dynamic> map) {
8+
return RTCRtpCodecCapability(
9+
channels: map['channels'],
10+
clockRate: map['clockRate'],
11+
mimeType: map['mimeType'],
12+
sdpFmtpLine: map['sdpFmtpLine'],
13+
);
14+
}
15+
num? channels;
16+
num clockRate;
17+
String mimeType;
18+
String? sdpFmtpLine;
19+
Map<String, dynamic> toMap() {
20+
return {
21+
if (channels != null) 'channels': channels,
22+
'clockRate': clockRate,
23+
'mimeType': mimeType,
24+
if (sdpFmtpLine != null) 'sdpFmtpLine': sdpFmtpLine,
25+
};
26+
}
27+
}
28+
29+
class RTCRtpHeaderExtensionCapability {
30+
RTCRtpHeaderExtensionCapability(this.uri);
31+
factory RTCRtpHeaderExtensionCapability.fromMap(Map<dynamic, dynamic> map) {
32+
return RTCRtpHeaderExtensionCapability(map['uri']);
33+
}
34+
String uri;
35+
Map<dynamic, dynamic> toMap() {
36+
return {
37+
'uri': uri,
38+
};
39+
}
40+
}
41+
42+
class RTCRtpCapabilities {
43+
RTCRtpCapabilities({this.codecs, this.headerExtensions, this.fecMechanisms});
44+
factory RTCRtpCapabilities.fromMap(Map<dynamic, dynamic> map) {
45+
var codecs = <RTCRtpCodecCapability>[];
46+
dynamic codecsMap = map['codecs'];
47+
codecsMap.forEach((params) {
48+
codecs.add(RTCRtpCodecCapability.fromMap(params));
49+
});
50+
var headerExtensions = <RTCRtpHeaderExtensionCapability>[];
51+
dynamic headerExtensionsMap = map['headerExtensions'];
52+
headerExtensionsMap.forEach((params) {
53+
headerExtensions.add(RTCRtpHeaderExtensionCapability.fromMap(params));
54+
});
55+
var fecMechanisms = <String>[];
56+
dynamic fecMechanismsMap = map['fecMechanisms'];
57+
fecMechanismsMap.forEach((params) {
58+
fecMechanisms.add(params);
59+
});
60+
return RTCRtpCapabilities(
61+
codecs: codecs,
62+
headerExtensions: headerExtensions,
63+
fecMechanisms: fecMechanisms);
64+
}
65+
List<RTCRtpCodecCapability>? codecs;
66+
List<RTCRtpHeaderExtensionCapability>? headerExtensions;
67+
List<String>? fecMechanisms;
68+
69+
Map<String, dynamic> toMap() {
70+
return {
71+
'codecs': codecs?.map((e) => e.toMap()).toList(),
72+
'headerExtensions': headerExtensions?.map((e) => e.toMap()).toList(),
73+
if (fecMechanisms != null) 'fecMechanisms': fecMechanisms,
74+
};
75+
}
76+
}

‎lib/src/rtc_rtp_parameters.dart‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ class RTCRtpEncoding {
5858
this.numTemporalLayers = 1,
5959
this.scaleResolutionDownBy = 1.0,
6060
this.ssrc,
61+
this.scalabilityMode,
6162
});
6263

6364
factory RTCRtpEncoding.fromMap(Map<dynamic, dynamic> map) => RTCRtpEncoding(
@@ -69,6 +70,7 @@ class RTCRtpEncoding {
6970
numTemporalLayers: map['numTemporalLayers'],
7071
scaleResolutionDownBy: map['scaleResolutionDownBy'],
7172
ssrc: map['ssrc'],
73+
scalabilityMode: map['scalabilityMode'],
7274
);
7375

7476
/// If non-null, this represents the RID that identifies this encoding layer.
@@ -101,6 +103,8 @@ class RTCRtpEncoding {
101103
/// Can't be changed between getParameters/setParameters.
102104
int? ssrc;
103105

106+
String? scalabilityMode;
107+
104108
Map<String, dynamic> toMap() => {
105109
'active': active,
106110
if (rid != null) 'rid': rid,
@@ -110,6 +114,7 @@ class RTCRtpEncoding {
110114
if (numTemporalLayers != null) 'numTemporalLayers': numTemporalLayers,
111115
if (scaleResolutionDownBy != null)
112116
'scaleResolutionDownBy': scaleResolutionDownBy,
117+
if (scalabilityMode != null) 'scalabilityMode': scalabilityMode,
113118
if (ssrc != null) 'ssrc': ssrc,
114119
};
115120
}

‎lib/src/rtc_rtp_transceiver.dart‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'dart:async';
22

33
import 'enums.dart';
44
import 'media_stream.dart';
5+
import 'rtc_rtp_capabilities.dart';
56
import 'rtc_rtp_parameters.dart';
67
import 'rtc_rtp_receiver.dart';
78
import 'rtc_rtp_sender.dart';
@@ -30,6 +31,8 @@ abstract class RTCRtpTransceiver {
3031

3132
Future<TransceiverDirection> getDirection();
3233

34+
Future<void> setCodecPreferences(List<RTCRtpCodecCapability> codecs);
35+
3336
String get mid;
3437

3538
RTCRtpSender get sender;

‎lib/webrtc_interface.dart‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export 'src/rtc_dtmf_sender.dart';
1212
export 'src/rtc_ice_candidate.dart';
1313
export 'src/rtc_peerconnection.dart';
1414
export 'src/rtc_rtcp_parameters.dart';
15+
export 'src/rtc_rtp_capabilities.dart';
1516
export 'src/rtc_rtp_parameters.dart';
1617
export 'src/rtc_rtp_receiver.dart';
1718
export 'src/rtc_rtp_sender.dart';

‎pubspec.yaml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: webrtc_interface
22
description: WebRTC Interface for Dart-Web/Flutter.
3-
version: 1.0.10
3+
version: 1.0.11
44
homepage: https://flutter-webrtc.org
55

66
environment:

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /