diff --git a/api/rtp_parameters.cc b/api/rtp_parameters.cc index d0040a5bca..4b300a707b 100644 --- a/api/rtp_parameters.cc +++ b/api/rtp_parameters.cc @@ -96,64 +96,25 @@ std::string RtpExtension::ToString() const { 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 4719f90a94..4462447ac4 100644 --- a/api/rtp_parameters.h +++ b/api/rtp_parameters.h @@ -254,6 +254,7 @@ struct RTC_EXPORT RtpExtension { 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 @@ struct RTC_EXPORT RtpExtension { static std::vector FilterDuplicateNonEncrypted( const std::vector& 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.