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}
This commit is contained in:
Danil Chapovalov 2020-03-25 11:02:37 +01:00 committed by Commit Bot
parent 7e91482fcc
commit 418cfee167
2 changed files with 70 additions and 85 deletions

View File

@ -96,64 +96,25 @@ std::string RtpExtension::ToString() const {
return sb.str(); return sb.str();
} }
const char RtpExtension::kAudioLevelUri[] = constexpr char RtpExtension::kEncryptHeaderExtensionsUri[];
"urn:ietf:params:rtp-hdrext:ssrc-audio-level"; constexpr char RtpExtension::kAudioLevelUri[];
constexpr char RtpExtension::kTimestampOffsetUri[];
const char RtpExtension::kTimestampOffsetUri[] = constexpr char RtpExtension::kAbsSendTimeUri[];
"urn:ietf:params:rtp-hdrext:toffset"; constexpr char RtpExtension::kAbsoluteCaptureTimeUri[];
constexpr char RtpExtension::kVideoRotationUri[];
const char RtpExtension::kAbsSendTimeUri[] = constexpr char RtpExtension::kVideoContentTypeUri[];
"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"; constexpr char RtpExtension::kVideoTimingUri[];
constexpr char RtpExtension::kFrameMarkingUri[];
const char RtpExtension::kAbsoluteCaptureTimeUri[] = constexpr char RtpExtension::kGenericFrameDescriptorUri00[];
"http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time"; constexpr char RtpExtension::kGenericFrameDescriptorUri01[];
constexpr char RtpExtension::kDependencyDescriptorUri[];
const char RtpExtension::kVideoRotationUri[] = "urn:3gpp:video-orientation"; constexpr char RtpExtension::kTransportSequenceNumberUri[];
constexpr char RtpExtension::kTransportSequenceNumberV2Uri[];
const char RtpExtension::kTransportSequenceNumberUri[] = constexpr char RtpExtension::kPlayoutDelayUri[];
"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"; constexpr char RtpExtension::kColorSpaceUri[];
const char RtpExtension::kTransportSequenceNumberV2Uri[] = constexpr char RtpExtension::kMidUri[];
"http://www.webrtc.org/experiments/rtp-hdrext/transport-wide-cc-02"; constexpr char RtpExtension::kRidUri[];
constexpr char RtpExtension::kRepairedRidUri[];
// 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 int RtpExtension::kMinId; constexpr int RtpExtension::kMinId;
constexpr int RtpExtension::kMaxId; constexpr int RtpExtension::kMaxId;

View File

@ -254,6 +254,7 @@ struct RTC_EXPORT RtpExtension {
RtpExtension(std::string uri, int id); RtpExtension(std::string uri, int id);
RtpExtension(std::string uri, int id, bool encrypt); RtpExtension(std::string uri, int id, bool encrypt);
~RtpExtension(); ~RtpExtension();
std::string ToString() const; std::string ToString() const;
bool operator==(const RtpExtension& rhs) const { bool operator==(const RtpExtension& rhs) const {
return uri == rhs.uri && id == rhs.id && encrypt == rhs.encrypt; return uri == rhs.uri && id == rhs.id && encrypt == rhs.encrypt;
@ -275,66 +276,89 @@ struct RTC_EXPORT RtpExtension {
static std::vector<RtpExtension> FilterDuplicateNonEncrypted( static std::vector<RtpExtension> FilterDuplicateNonEncrypted(
const std::vector<RtpExtension>& extensions); 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: // Header extension for audio levels, as defined in:
// http://tools.ietf.org/html/draft-ietf-avtext-client-to-mixer-audio-level-03 // https://tools.ietf.org/html/rfc6464
static const char kAudioLevelUri[]; static constexpr char kAudioLevelUri[] =
"urn:ietf:params:rtp-hdrext:ssrc-audio-level";
// Header extension for RTP timestamp offset, see RFC 5450 for details: // Header extension for RTP timestamp offset, see RFC 5450 for details:
// http://tools.ietf.org/html/rfc5450 // 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: // Header extension for absolute send time, see url for details:
// http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time // 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: // Header extension for absolute capture time, see url for details:
// http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time // 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 // Header extension for coordination of video orientation, see url for
// details: // details:
// http://www.etsi.org/deliver/etsi_ts/126100_126199/126114/12.07.00_60/ts_126114v120700p.pdf // 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. // 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. // 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. // 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. // Experimental codec agnostic frame descriptor.
static const char kGenericFrameDescriptorUri00[]; static constexpr char kGenericFrameDescriptorUri00[] =
static const char kGenericFrameDescriptorUri01[]; "http://www.webrtc.org/experiments/rtp-hdrext/"
static const char kDependencyDescriptorUri[]; "generic-frame-descriptor-00";
// TODO(bugs.webrtc.org/10243): Remove once dependencies have been updated. static constexpr char kGenericFrameDescriptorUri01[] =
static const char kGenericFrameDescriptorUri[]; "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: // Header extension for transport sequence number, see url for details:
// http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions // http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions
static const char kTransportSequenceNumberUri[]; static constexpr char kTransportSequenceNumberUri[] =
static const char kTransportSequenceNumberV2Uri[]; "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. // Header extension for identifying media section within a transport.
// https://tools.ietf.org/html/draft-ietf-mmusic-sdp-bundle-negotiation-49#section-15 // https://tools.ietf.org/html/draft-ietf-mmusic-sdp-bundle-negotiation-49#section-15
static const char kMidUri[]; static constexpr char kMidUri[] = "urn:ietf:params:rtp-hdrext:sdes:mid";
// 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[];
// Header extension for RIDs and Repaired RIDs // Header extension for RIDs and Repaired RIDs
// https://tools.ietf.org/html/draft-ietf-avtext-rid-09 // https://tools.ietf.org/html/draft-ietf-avtext-rid-09
// https://tools.ietf.org/html/draft-ietf-mmusic-rid-15 // https://tools.ietf.org/html/draft-ietf-mmusic-rid-15
static const char kRidUri[]; static constexpr char kRidUri[] =
static const char kRepairedRidUri[]; "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 // Inclusive min and max IDs for two-byte header extensions and one-byte
// header extensions, per RFC8285 Section 4.2-4.3. // header extensions, per RFC8285 Section 4.2-4.3.