From 8b397fe16f1e155eca3eaf69e637c4bc119e8740 Mon Sep 17 00:00:00 2001 From: cloudwebrtc Date: Fri, 14 Apr 2023 20:09:08 +0800 Subject: [PATCH] feat: Add RTCDegradationPreference to RTCRtpParameters. --- CHANGELOG.md | 4 ++++ lib/src/enums.dart | 28 ++++++++++++++++++++++++++++ lib/src/rtc_rtp_parameters.dart | 11 +++++++++++ pubspec.yaml | 2 +- 4 files changed, 44 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b9f48b..9f7a7a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # Changelog -------------------------------------------- +[1.0.13] - 2023-04-14 + +* Add RTCDegradationPreference to RTCRtpParameters. + [1.0.12] - 2023-04-10 * Add addStreams to RTCRtpSender. diff --git a/lib/src/enums.dart b/lib/src/enums.dart index 9f134e3..9024bc6 100644 --- a/lib/src/enums.dart +++ b/lib/src/enums.dart @@ -176,3 +176,31 @@ RTCPeerConnectionState peerConnectionStateForString(String? state) { return RTCPeerConnectionState.RTCPeerConnectionStateClosed; } + +enum RTCDegradationPreference { + DISABLED, + MAINTAIN_FRAMERATE, + MAINTAIN_RESOLUTION, + BALANCED, +} + +final typeRTCDegradationPreferenceString = { + RTCDegradationPreference.DISABLED: 'disabled', + RTCDegradationPreference.MAINTAIN_FRAMERATE: 'maintain-framerate', + RTCDegradationPreference.MAINTAIN_RESOLUTION: 'maintain-resolution', + RTCDegradationPreference.BALANCED: 'balanced', +}; + +RTCDegradationPreference degradationPreferenceforString(String? degradation) { + switch (degradation) { + case 'disabled': + return RTCDegradationPreference.DISABLED; + case 'maintain-framerate': + return RTCDegradationPreference.MAINTAIN_FRAMERATE; + case 'maintain-resolution': + return RTCDegradationPreference.MAINTAIN_RESOLUTION; + case 'balanced': + return RTCDegradationPreference.BALANCED; + } + return RTCDegradationPreference.BALANCED; +} diff --git a/lib/src/rtc_rtp_parameters.dart b/lib/src/rtc_rtp_parameters.dart index 41d3300..20c5577 100644 --- a/lib/src/rtc_rtp_parameters.dart +++ b/lib/src/rtc_rtp_parameters.dart @@ -1,3 +1,4 @@ +import 'enums.dart'; import 'rtc_rtcp_parameters.dart'; class RTCRTPCodec { @@ -151,6 +152,7 @@ class RTCRtpParameters { this.headerExtensions, this.encodings, this.codecs, + this.degradationPreference, }); factory RTCRtpParameters.fromMap(Map map) { @@ -169,12 +171,16 @@ class RTCRtpParameters { codecsMap.forEach((params) { codecs.add(RTCRTPCodec.fromMap(params)); }); + + var degradationPreference = map['degradationPreference']; var rtcp = RTCRTCPParameters.fromMap(map['rtcp']); return RTCRtpParameters( transactionId: map['transactionId'], rtcp: rtcp, headerExtensions: headerExtensions, encodings: encodings, + degradationPreference: + degradationPreferenceforString(degradationPreference), codecs: codecs); } @@ -186,6 +192,8 @@ class RTCRtpParameters { List? encodings; + RTCDegradationPreference? degradationPreference; + /// Codec parameters can't currently be changed between getParameters and /// setParameters. Though in the future it will be possible to reorder them or /// remove them. @@ -210,6 +218,9 @@ class RTCRtpParameters { 'headerExtensions': headerExtensionsList, 'encodings': encodingList, 'codecs': codecsList, + if (degradationPreference != null) + 'degradationPreference': + typeRTCDegradationPreferenceString[degradationPreference!], }; } } diff --git a/pubspec.yaml b/pubspec.yaml index bf641ee..ff074a9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: webrtc_interface description: WebRTC Interface for Dart-Web/Flutter. -version: 1.0.12 +version: 1.0.13 homepage: https://flutter-webrtc.org environment: