Skip to content

Commit 9cab7b8

Browse files
authored
Merge pull request #16 from flutter-webrtc/feat/degradation-preference
feat: Add RTCDegradationPreference to RTCRtpParameters.
2 parents 5e9f541 + 8b397fe commit 9cab7b8

File tree

4 files changed

+44
-1
lines changed

4 files changed

+44
-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.13] - 2023-04-14
5+
6+
* Add RTCDegradationPreference to RTCRtpParameters.
7+
48
[1.0.12] - 2023-04-10
59

610
* Add addStreams to RTCRtpSender.

lib/src/enums.dart

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,3 +176,31 @@ RTCPeerConnectionState peerConnectionStateForString(String? state) {
176176

177177
return RTCPeerConnectionState.RTCPeerConnectionStateClosed;
178178
}
179+
180+
enum RTCDegradationPreference {
181+
DISABLED,
182+
MAINTAIN_FRAMERATE,
183+
MAINTAIN_RESOLUTION,
184+
BALANCED,
185+
}
186+
187+
final typeRTCDegradationPreferenceString = <RTCDegradationPreference, String>{
188+
RTCDegradationPreference.DISABLED: 'disabled',
189+
RTCDegradationPreference.MAINTAIN_FRAMERATE: 'maintain-framerate',
190+
RTCDegradationPreference.MAINTAIN_RESOLUTION: 'maintain-resolution',
191+
RTCDegradationPreference.BALANCED: 'balanced',
192+
};
193+
194+
RTCDegradationPreference degradationPreferenceforString(String? degradation) {
195+
switch (degradation) {
196+
case 'disabled':
197+
return RTCDegradationPreference.DISABLED;
198+
case 'maintain-framerate':
199+
return RTCDegradationPreference.MAINTAIN_FRAMERATE;
200+
case 'maintain-resolution':
201+
return RTCDegradationPreference.MAINTAIN_RESOLUTION;
202+
case 'balanced':
203+
return RTCDegradationPreference.BALANCED;
204+
}
205+
return RTCDegradationPreference.BALANCED;
206+
}

lib/src/rtc_rtp_parameters.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'enums.dart';
12
import 'rtc_rtcp_parameters.dart';
23

34
class RTCRTPCodec {
@@ -151,6 +152,7 @@ class RTCRtpParameters {
151152
this.headerExtensions,
152153
this.encodings,
153154
this.codecs,
155+
this.degradationPreference,
154156
});
155157

156158
factory RTCRtpParameters.fromMap(Map<dynamic, dynamic> map) {
@@ -169,12 +171,16 @@ class RTCRtpParameters {
169171
codecsMap.forEach((params) {
170172
codecs.add(RTCRTPCodec.fromMap(params));
171173
});
174+
175+
var degradationPreference = map['degradationPreference'];
172176
var rtcp = RTCRTCPParameters.fromMap(map['rtcp']);
173177
return RTCRtpParameters(
174178
transactionId: map['transactionId'],
175179
rtcp: rtcp,
176180
headerExtensions: headerExtensions,
177181
encodings: encodings,
182+
degradationPreference:
183+
degradationPreferenceforString(degradationPreference),
178184
codecs: codecs);
179185
}
180186

@@ -186,6 +192,8 @@ class RTCRtpParameters {
186192

187193
List<RTCRtpEncoding>? encodings;
188194

195+
RTCDegradationPreference? degradationPreference;
196+
189197
/// Codec parameters can't currently be changed between getParameters and
190198
/// setParameters. Though in the future it will be possible to reorder them or
191199
/// remove them.
@@ -210,6 +218,9 @@ class RTCRtpParameters {
210218
'headerExtensions': headerExtensionsList,
211219
'encodings': encodingList,
212220
'codecs': codecsList,
221+
if (degradationPreference != null)
222+
'degradationPreference':
223+
typeRTCDegradationPreferenceString[degradationPreference!],
213224
};
214225
}
215226
}

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.12
3+
version: 1.0.13
44
homepage: https://flutter-webrtc.org
55

66
environment:

0 commit comments

Comments
 (0)