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.