Make all RtpExtension uris constexpr rather than just const
while at it removed unused deprecated kGenericFrameDescriptorUri
and slightly reorded extensions for better grouping.
Bug: webrtc:7472
Change-Id: I42c03d5f20798ec9148b5085d57953ff3633e055
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/168541
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30883}
diff --git a/api/rtp_parameters.cc b/api/rtp_parameters.cc
index d0040a5..4b300a7 100644
--- a/api/rtp_parameters.cc
+++ b/api/rtp_parameters.cc
@@ -96,64 +96,25 @@
return sb.str();
}
-const char RtpExtension::kAudioLevelUri[] =
- "urn:ietf:params:rtp-hdrext:ssrc-audio-level";
-
-const char RtpExtension::kTimestampOffsetUri[] =
- "urn:ietf:params:rtp-hdrext:toffset";
-
-const char RtpExtension::kAbsSendTimeUri[] =
- "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time";
-
-const char RtpExtension::kAbsoluteCaptureTimeUri[] =
- "http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time";
-
-const char RtpExtension::kVideoRotationUri[] = "urn:3gpp:video-orientation";
-
-const char RtpExtension::kTransportSequenceNumberUri[] =
- "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01";
-const char RtpExtension::kTransportSequenceNumberV2Uri[] =
- "http://www.webrtc.org/experiments/rtp-hdrext/transport-wide-cc-02";
-
-// This extension allows applications to adaptively limit the playout delay
-// on frames as per the current needs. For example, a gaming application
-// has very different needs on end-to-end delay compared to a video-conference
-// application.
-const char RtpExtension::kPlayoutDelayUri[] =
- "http://www.webrtc.org/experiments/rtp-hdrext/playout-delay";
-
-const char RtpExtension::kVideoContentTypeUri[] =
- "http://www.webrtc.org/experiments/rtp-hdrext/video-content-type";
-
-const char RtpExtension::kVideoTimingUri[] =
- "http://www.webrtc.org/experiments/rtp-hdrext/video-timing";
-
-const char RtpExtension::kMidUri[] = "urn:ietf:params:rtp-hdrext:sdes:mid";
-
-const char RtpExtension::kFrameMarkingUri[] =
- "http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07";
-
-const char RtpExtension::kGenericFrameDescriptorUri00[] =
- "http://www.webrtc.org/experiments/rtp-hdrext/generic-frame-descriptor-00";
-const char RtpExtension::kGenericFrameDescriptorUri01[] =
- "http://www.webrtc.org/experiments/rtp-hdrext/generic-frame-descriptor-01";
-const char RtpExtension::kDependencyDescriptorUri[] =
- "https://aomediacodec.github.io/av1-rtp-spec/"
- "#dependency-descriptor-rtp-header-extension";
-const char RtpExtension::kGenericFrameDescriptorUri[] =
- "http://www.webrtc.org/experiments/rtp-hdrext/generic-frame-descriptor-00";
-
-const char RtpExtension::kEncryptHeaderExtensionsUri[] =
- "urn:ietf:params:rtp-hdrext:encrypt";
-
-const char RtpExtension::kColorSpaceUri[] =
- "http://www.webrtc.org/experiments/rtp-hdrext/color-space";
-
-const char RtpExtension::kRidUri[] =
- "urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id";
-
-const char RtpExtension::kRepairedRidUri[] =
- "urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id";
+constexpr char RtpExtension::kEncryptHeaderExtensionsUri[];
+constexpr char RtpExtension::kAudioLevelUri[];
+constexpr char RtpExtension::kTimestampOffsetUri[];
+constexpr char RtpExtension::kAbsSendTimeUri[];
+constexpr char RtpExtension::kAbsoluteCaptureTimeUri[];
+constexpr char RtpExtension::kVideoRotationUri[];
+constexpr char RtpExtension::kVideoContentTypeUri[];
+constexpr char RtpExtension::kVideoTimingUri[];
+constexpr char RtpExtension::kFrameMarkingUri[];
+constexpr char RtpExtension::kGenericFrameDescriptorUri00[];
+constexpr char RtpExtension::kGenericFrameDescriptorUri01[];
+constexpr char RtpExtension::kDependencyDescriptorUri[];
+constexpr char RtpExtension::kTransportSequenceNumberUri[];
+constexpr char RtpExtension::kTransportSequenceNumberV2Uri[];
+constexpr char RtpExtension::kPlayoutDelayUri[];
+constexpr char RtpExtension::kColorSpaceUri[];
+constexpr char RtpExtension::kMidUri[];
+constexpr char RtpExtension::kRidUri[];
+constexpr char RtpExtension::kRepairedRidUri[];
constexpr int RtpExtension::kMinId;
constexpr int RtpExtension::kMaxId;
diff --git a/api/rtp_parameters.h b/api/rtp_parameters.h
index 4719f90..4462447 100644
--- a/api/rtp_parameters.h
+++ b/api/rtp_parameters.h
@@ -254,6 +254,7 @@
RtpExtension(std::string uri, int id);
RtpExtension(std::string uri, int id, bool encrypt);
~RtpExtension();
+
std::string ToString() const;
bool operator==(const RtpExtension& rhs) const {
return uri == rhs.uri && id == rhs.id && encrypt == rhs.encrypt;
@@ -275,66 +276,89 @@
static std::vector<RtpExtension> FilterDuplicateNonEncrypted(
const std::vector<RtpExtension>& extensions);
+ // Encryption of Header Extensions, see RFC 6904 for details:
+ // https://tools.ietf.org/html/rfc6904
+ static constexpr char kEncryptHeaderExtensionsUri[] =
+ "urn:ietf:params:rtp-hdrext:encrypt";
+
// Header extension for audio levels, as defined in:
- // http://tools.ietf.org/html/draft-ietf-avtext-client-to-mixer-audio-level-03
- static const char kAudioLevelUri[];
+ // https://tools.ietf.org/html/rfc6464
+ static constexpr char kAudioLevelUri[] =
+ "urn:ietf:params:rtp-hdrext:ssrc-audio-level";
// Header extension for RTP timestamp offset, see RFC 5450 for details:
// http://tools.ietf.org/html/rfc5450
- static const char kTimestampOffsetUri[];
+ static constexpr char kTimestampOffsetUri[] =
+ "urn:ietf:params:rtp-hdrext:toffset";
// Header extension for absolute send time, see url for details:
// http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
- static const char kAbsSendTimeUri[];
+ static constexpr char kAbsSendTimeUri[] =
+ "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time";
// Header extension for absolute capture time, see url for details:
// http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time
- static const char kAbsoluteCaptureTimeUri[];
+ static constexpr char kAbsoluteCaptureTimeUri[] =
+ "http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time";
// Header extension for coordination of video orientation, see url for
// details:
// http://www.etsi.org/deliver/etsi_ts/126100_126199/126114/12.07.00_60/ts_126114v120700p.pdf
- static const char kVideoRotationUri[];
+ static constexpr char kVideoRotationUri[] = "urn:3gpp:video-orientation";
// Header extension for video content type. E.g. default or screenshare.
- static const char kVideoContentTypeUri[];
+ static constexpr char kVideoContentTypeUri[] =
+ "http://www.webrtc.org/experiments/rtp-hdrext/video-content-type";
// Header extension for video timing.
- static const char kVideoTimingUri[];
+ static constexpr char kVideoTimingUri[] =
+ "http://www.webrtc.org/experiments/rtp-hdrext/video-timing";
// Header extension for video frame marking.
- static const char kFrameMarkingUri[];
+ static constexpr char kFrameMarkingUri[] =
+ "http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07";
// Experimental codec agnostic frame descriptor.
- static const char kGenericFrameDescriptorUri00[];
- static const char kGenericFrameDescriptorUri01[];
- static const char kDependencyDescriptorUri[];
- // TODO(bugs.webrtc.org/10243): Remove once dependencies have been updated.
- static const char kGenericFrameDescriptorUri[];
+ static constexpr char kGenericFrameDescriptorUri00[] =
+ "http://www.webrtc.org/experiments/rtp-hdrext/"
+ "generic-frame-descriptor-00";
+ static constexpr char kGenericFrameDescriptorUri01[] =
+ "http://www.webrtc.org/experiments/rtp-hdrext/"
+ "generic-frame-descriptor-01";
+ static constexpr char kDependencyDescriptorUri[] =
+ "https://aomediacodec.github.io/av1-rtp-spec/"
+ "#dependency-descriptor-rtp-header-extension";
// Header extension for transport sequence number, see url for details:
// http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions
- static const char kTransportSequenceNumberUri[];
- static const char kTransportSequenceNumberV2Uri[];
+ static constexpr char kTransportSequenceNumberUri[] =
+ "http://www.ietf.org/id/"
+ "draft-holmer-rmcat-transport-wide-cc-extensions-01";
+ static constexpr char kTransportSequenceNumberV2Uri[] =
+ "http://www.webrtc.org/experiments/rtp-hdrext/transport-wide-cc-02";
- static const char kPlayoutDelayUri[];
+ // This extension allows applications to adaptively limit the playout delay
+ // on frames as per the current needs. For example, a gaming application
+ // has very different needs on end-to-end delay compared to a video-conference
+ // application.
+ static constexpr char kPlayoutDelayUri[] =
+ "http://www.webrtc.org/experiments/rtp-hdrext/playout-delay";
+
+ // Header extension for color space information.
+ static constexpr char kColorSpaceUri[] =
+ "http://www.webrtc.org/experiments/rtp-hdrext/color-space";
// Header extension for identifying media section within a transport.
// https://tools.ietf.org/html/draft-ietf-mmusic-sdp-bundle-negotiation-49#section-15
- static const char kMidUri[];
-
- // Encryption of Header Extensions, see RFC 6904 for details:
- // https://tools.ietf.org/html/rfc6904
- static const char kEncryptHeaderExtensionsUri[];
-
- // Header extension for color space information.
- static const char kColorSpaceUri[];
+ static constexpr char kMidUri[] = "urn:ietf:params:rtp-hdrext:sdes:mid";
// Header extension for RIDs and Repaired RIDs
// https://tools.ietf.org/html/draft-ietf-avtext-rid-09
// https://tools.ietf.org/html/draft-ietf-mmusic-rid-15
- static const char kRidUri[];
- static const char kRepairedRidUri[];
+ static constexpr char kRidUri[] =
+ "urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id";
+ static constexpr char kRepairedRidUri[] =
+ "urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id";
// Inclusive min and max IDs for two-byte header extensions and one-byte
// header extensions, per RFC8285 Section 4.2-4.3.