Deduplicate set of the rtp header extension uri constants

Bug: webrtc:7472
Change-Id: Ic0b4f2cc3374ba70a043310b5046d8bf91f0acbe
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/231949
Reviewed-by: Tommi <tommi@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34990}
This commit is contained in:
Danil Chapovalov 2021-09-14 12:58:51 +02:00 committed by WebRTC LUCI CQ
parent dc8fc72204
commit d0321c5e5a
20 changed files with 205 additions and 129 deletions

View file

@ -131,6 +131,7 @@ constexpr char RtpExtension::kMidUri[];
constexpr char RtpExtension::kRidUri[]; constexpr char RtpExtension::kRidUri[];
constexpr char RtpExtension::kRepairedRidUri[]; constexpr char RtpExtension::kRepairedRidUri[];
constexpr char RtpExtension::kVideoFrameTrackingIdUri[]; constexpr char RtpExtension::kVideoFrameTrackingIdUri[];
constexpr char RtpExtension::kCsrcAudioLevelsUri[];
constexpr int RtpExtension::kMinId; constexpr int RtpExtension::kMinId;
constexpr int RtpExtension::kMaxId; constexpr int RtpExtension::kMaxId;

View file

@ -272,7 +272,7 @@ void AudioSendStream::ConfigureStream(
rtp_rtcp_module_->DeregisterSendRtpHeaderExtension( rtp_rtcp_module_->DeregisterSendRtpHeaderExtension(
kRtpExtensionAbsoluteSendTime); kRtpExtensionAbsoluteSendTime);
if (new_ids.abs_send_time) { if (new_ids.abs_send_time) {
rtp_rtcp_module_->RegisterRtpHeaderExtension(AbsoluteSendTime::kUri, rtp_rtcp_module_->RegisterRtpHeaderExtension(AbsoluteSendTime::Uri(),
new_ids.abs_send_time); new_ids.abs_send_time);
} }
} }
@ -290,7 +290,7 @@ void AudioSendStream::ConfigureStream(
if (!allocate_audio_without_feedback_ && if (!allocate_audio_without_feedback_ &&
new_ids.transport_sequence_number != 0) { new_ids.transport_sequence_number != 0) {
rtp_rtcp_module_->RegisterRtpHeaderExtension( rtp_rtcp_module_->RegisterRtpHeaderExtension(
TransportSequenceNumber::kUri, new_ids.transport_sequence_number); TransportSequenceNumber::Uri(), new_ids.transport_sequence_number);
// Probing in application limited region is only used in combination with // Probing in application limited region is only used in combination with
// send side congestion control, wich depends on feedback packets which // send side congestion control, wich depends on feedback packets which
// requires transport sequence numbers to be enabled. // requires transport sequence numbers to be enabled.
@ -308,7 +308,7 @@ void AudioSendStream::ConfigureStream(
if ((first_time || new_ids.mid != old_ids.mid || if ((first_time || new_ids.mid != old_ids.mid ||
new_config.rtp.mid != old_config.rtp.mid) && new_config.rtp.mid != old_config.rtp.mid) &&
new_ids.mid != 0 && !new_config.rtp.mid.empty()) { new_ids.mid != 0 && !new_config.rtp.mid.empty()) {
rtp_rtcp_module_->RegisterRtpHeaderExtension(RtpMid::kUri, new_ids.mid); rtp_rtcp_module_->RegisterRtpHeaderExtension(RtpMid::Uri(), new_ids.mid);
rtp_rtcp_module_->SetMid(new_config.rtp.mid); rtp_rtcp_module_->SetMid(new_config.rtp.mid);
} }
@ -318,12 +318,12 @@ void AudioSendStream::ConfigureStream(
new_config.rtp.rid != old_config.rtp.rid)) { new_config.rtp.rid != old_config.rtp.rid)) {
if (new_ids.rid != 0 || new_ids.repaired_rid != 0) { if (new_ids.rid != 0 || new_ids.repaired_rid != 0) {
if (new_config.rtp.rid.empty()) { if (new_config.rtp.rid.empty()) {
rtp_rtcp_module_->DeregisterSendRtpHeaderExtension(RtpStreamId::kUri); rtp_rtcp_module_->DeregisterSendRtpHeaderExtension(RtpStreamId::Uri());
} else if (new_ids.repaired_rid != 0) { } else if (new_ids.repaired_rid != 0) {
rtp_rtcp_module_->RegisterRtpHeaderExtension(RtpStreamId::kUri, rtp_rtcp_module_->RegisterRtpHeaderExtension(RtpStreamId::Uri(),
new_ids.repaired_rid); new_ids.repaired_rid);
} else { } else {
rtp_rtcp_module_->RegisterRtpHeaderExtension(RtpStreamId::kUri, rtp_rtcp_module_->RegisterRtpHeaderExtension(RtpStreamId::Uri(),
new_ids.rid); new_ids.rid);
} }
} }
@ -335,7 +335,7 @@ void AudioSendStream::ConfigureStream(
kRtpExtensionAbsoluteCaptureTime); kRtpExtensionAbsoluteCaptureTime);
if (new_ids.abs_capture_time) { if (new_ids.abs_capture_time) {
rtp_rtcp_module_->RegisterRtpHeaderExtension( rtp_rtcp_module_->RegisterRtpHeaderExtension(
AbsoluteCaptureTimeExtension::kUri, new_ids.abs_capture_time); AbsoluteCaptureTimeExtension::Uri(), new_ids.abs_capture_time);
} }
} }

View file

@ -233,7 +233,7 @@ struct ConfigHelper {
.WillRepeatedly(Return(&bandwidth_observer_)); .WillRepeatedly(Return(&bandwidth_observer_));
if (audio_bwe_enabled) { if (audio_bwe_enabled) {
EXPECT_CALL(rtp_rtcp_, EXPECT_CALL(rtp_rtcp_,
RegisterRtpHeaderExtension(TransportSequenceNumber::kUri, RegisterRtpHeaderExtension(TransportSequenceNumber::Uri(),
kTransportSequenceNumberId)) kTransportSequenceNumberId))
.Times(1); .Times(1);
EXPECT_CALL(*channel_send_, EXPECT_CALL(*channel_send_,
@ -802,7 +802,7 @@ TEST(AudioSendStreamTest, ReconfigureTransportCcResetsFirst) {
ConfigHelper::AddBweToConfig(&new_config); ConfigHelper::AddBweToConfig(&new_config);
EXPECT_CALL(*helper.rtp_rtcp(), EXPECT_CALL(*helper.rtp_rtcp(),
RegisterRtpHeaderExtension(TransportSequenceNumber::kUri, RegisterRtpHeaderExtension(TransportSequenceNumber::Uri(),
kTransportSequenceNumberId)) kTransportSequenceNumberId))
.Times(1); .Times(1);
{ {

View file

@ -708,9 +708,9 @@ void ChannelSend::SetSendAudioLevelIndicationStatus(bool enable, int id) {
RTC_DCHECK_RUN_ON(&worker_thread_checker_); RTC_DCHECK_RUN_ON(&worker_thread_checker_);
_includeAudioLevelIndication = enable; _includeAudioLevelIndication = enable;
if (enable) { if (enable) {
rtp_rtcp_->RegisterRtpHeaderExtension(AudioLevel::kUri, id); rtp_rtcp_->RegisterRtpHeaderExtension(AudioLevel::Uri(), id);
} else { } else {
rtp_rtcp_->DeregisterSendRtpHeaderExtension(AudioLevel::kUri); rtp_rtcp_->DeregisterSendRtpHeaderExtension(AudioLevel::Uri());
} }
} }

View file

@ -66,7 +66,7 @@ TEST(FlexfecReceiveStreamConfigTest, IsCompleteAndEnabled) {
config.rtp.local_ssrc = 18374743; config.rtp.local_ssrc = 18374743;
config.rtcp_mode = RtcpMode::kCompound; config.rtcp_mode = RtcpMode::kCompound;
config.rtp.transport_cc = true; config.rtp.transport_cc = true;
config.rtp.extensions.emplace_back(TransportSequenceNumber::kUri, 7); config.rtp.extensions.emplace_back(TransportSequenceNumber::Uri(), 7);
EXPECT_FALSE(config.IsCompleteAndEnabled()); EXPECT_FALSE(config.IsCompleteAndEnabled());
config.payload_type = 123; config.payload_type = 123;

View file

@ -103,7 +103,7 @@ VideoSendStream::Config CreateVideoSendStreamConfig(
config.rtp.nack.rtp_history_ms = 1000; config.rtp.nack.rtp_history_ms = 1000;
config.rtp.extensions.emplace_back(RtpExtension::kTransportSequenceNumberUri, config.rtp.extensions.emplace_back(RtpExtension::kTransportSequenceNumberUri,
kTransportsSequenceExtensionId); kTransportsSequenceExtensionId);
config.rtp.extensions.emplace_back(RtpDependencyDescriptorExtension::kUri, config.rtp.extensions.emplace_back(RtpDependencyDescriptorExtension::Uri(),
kDependencyDescriptorExtensionId); kDependencyDescriptorExtensionId);
config.rtp.extmap_allow_mixed = true; config.rtp.extmap_allow_mixed = true;
return config; return config;

View file

@ -15,6 +15,7 @@
#include <string> #include <string>
#include "absl/strings/string_view.h"
#include "api/array_view.h" #include "api/array_view.h"
#include "api/rtp_parameters.h" #include "api/rtp_parameters.h"
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
@ -35,7 +36,7 @@ class RtpHeaderExtensionMap {
template <typename Extension> template <typename Extension>
bool Register(int id) { bool Register(int id) {
return Register(id, Extension::kId, Extension::kUri); return Register(id, Extension::kId, Extension::Uri());
} }
bool RegisterByType(int id, RTPExtensionType type); bool RegisterByType(int id, RTPExtensionType type);
bool RegisterByUri(int id, absl::string_view uri); bool RegisterByUri(int id, absl::string_view uri);
@ -64,7 +65,7 @@ class RtpHeaderExtensionMap {
} }
private: private:
bool Register(int id, RTPExtensionType type, const char* uri); bool Register(int id, RTPExtensionType type, absl::string_view uri);
uint8_t ids_[kRtpExtensionNumberOfExtensions]; uint8_t ids_[kRtpExtensionNumberOfExtensions];
bool extmap_allow_mixed_; bool extmap_allow_mixed_;

View file

@ -47,13 +47,13 @@ RtpHeaderExtensionMap RegisterSupportedExtensions(
const std::vector<RtpExtension>& rtp_header_extensions) { const std::vector<RtpExtension>& rtp_header_extensions) {
RtpHeaderExtensionMap map; RtpHeaderExtensionMap map;
for (const auto& extension : rtp_header_extensions) { for (const auto& extension : rtp_header_extensions) {
if (extension.uri == TransportSequenceNumber::kUri) { if (extension.uri == TransportSequenceNumber::Uri()) {
map.Register<TransportSequenceNumber>(extension.id); map.Register<TransportSequenceNumber>(extension.id);
} else if (extension.uri == AbsoluteSendTime::kUri) { } else if (extension.uri == AbsoluteSendTime::Uri()) {
map.Register<AbsoluteSendTime>(extension.id); map.Register<AbsoluteSendTime>(extension.id);
} else if (extension.uri == TransmissionOffset::kUri) { } else if (extension.uri == TransmissionOffset::Uri()) {
map.Register<TransmissionOffset>(extension.id); map.Register<TransmissionOffset>(extension.id);
} else if (extension.uri == RtpMid::kUri) { } else if (extension.uri == RtpMid::Uri()) {
map.Register<RtpMid>(extension.id); map.Register<RtpMid>(extension.id);
} else { } else {
RTC_LOG(LS_INFO) RTC_LOG(LS_INFO)

View file

@ -13,7 +13,10 @@
#include <bitset> #include <bitset>
#include <cstdint> #include <cstdint>
#include "absl/base/attributes.h"
#include "absl/strings/string_view.h"
#include "api/array_view.h" #include "api/array_view.h"
#include "api/rtp_parameters.h"
#include "api/transport/rtp/dependency_descriptor.h" #include "api/transport/rtp/dependency_descriptor.h"
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
@ -25,10 +28,12 @@ namespace webrtc {
class RtpDependencyDescriptorExtension { class RtpDependencyDescriptorExtension {
public: public:
static constexpr RTPExtensionType kId = kRtpExtensionGenericFrameDescriptor02; static constexpr RTPExtensionType kId = kRtpExtensionGenericFrameDescriptor02;
// TODO(bugs.webrtc.org/10342): Use uri from the spec when there is one. static constexpr ABSL_DEPRECATED("Use Uri()") char kUri[] =
static constexpr char kUri[] =
"https://aomediacodec.github.io/av1-rtp-spec/" "https://aomediacodec.github.io/av1-rtp-spec/"
"#dependency-descriptor-rtp-header-extension"; "#dependency-descriptor-rtp-header-extension";
static constexpr absl::string_view Uri() {
return RtpExtension::kDependencyDescriptorUri;
}
static bool Parse(rtc::ArrayView<const uint8_t> data, static bool Parse(rtc::ArrayView<const uint8_t> data,
const FrameDependencyStructure* structure, const FrameDependencyStructure* structure,

View file

@ -13,7 +13,10 @@
#include <stddef.h> #include <stddef.h>
#include <stdint.h> #include <stdint.h>
#include "absl/base/attributes.h"
#include "absl/strings/string_view.h"
#include "api/array_view.h" #include "api/array_view.h"
#include "api/rtp_parameters.h"
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
#include "modules/rtp_rtcp/source/rtp_generic_frame_descriptor.h" #include "modules/rtp_rtcp/source/rtp_generic_frame_descriptor.h"
@ -23,9 +26,12 @@ class RtpGenericFrameDescriptorExtension00 {
public: public:
using value_type = RtpGenericFrameDescriptor; using value_type = RtpGenericFrameDescriptor;
static constexpr RTPExtensionType kId = kRtpExtensionGenericFrameDescriptor00; static constexpr RTPExtensionType kId = kRtpExtensionGenericFrameDescriptor00;
static constexpr char kUri[] = static constexpr ABSL_DEPRECATED("Use Uri()") char kUri[] =
"http://www.webrtc.org/experiments/rtp-hdrext/" "http://www.webrtc.org/experiments/rtp-hdrext/"
"generic-frame-descriptor-00"; "generic-frame-descriptor-00";
static constexpr absl::string_view Uri() {
return RtpExtension::kGenericFrameDescriptorUri00;
}
static constexpr int kMaxSizeBytes = 16; static constexpr int kMaxSizeBytes = 16;
static bool Parse(rtc::ArrayView<const uint8_t> data, static bool Parse(rtc::ArrayView<const uint8_t> data,

View file

@ -10,6 +10,7 @@
#include "modules/rtp_rtcp/include/rtp_header_extension_map.h" #include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
#include "absl/strings/string_view.h"
#include "modules/rtp_rtcp/source/rtp_dependency_descriptor_extension.h" #include "modules/rtp_rtcp/source/rtp_dependency_descriptor_extension.h"
#include "modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension.h" #include "modules/rtp_rtcp/source/rtp_generic_frame_descriptor_extension.h"
#include "modules/rtp_rtcp/source/rtp_header_extensions.h" #include "modules/rtp_rtcp/source/rtp_header_extensions.h"
@ -23,12 +24,12 @@ namespace {
struct ExtensionInfo { struct ExtensionInfo {
RTPExtensionType type; RTPExtensionType type;
const char* uri; absl::string_view uri;
}; };
template <typename Extension> template <typename Extension>
constexpr ExtensionInfo CreateExtensionInfo() { constexpr ExtensionInfo CreateExtensionInfo() {
return {Extension::kId, Extension::kUri}; return {Extension::kId, Extension::Uri()};
} }
constexpr ExtensionInfo kExtensions[] = { constexpr ExtensionInfo kExtensions[] = {
@ -135,7 +136,7 @@ void RtpHeaderExtensionMap::Deregister(absl::string_view uri) {
bool RtpHeaderExtensionMap::Register(int id, bool RtpHeaderExtensionMap::Register(int id,
RTPExtensionType type, RTPExtensionType type,
const char* uri) { absl::string_view uri) {
RTC_DCHECK_GT(type, kRtpExtensionNone); RTC_DCHECK_GT(type, kRtpExtensionNone);
RTC_DCHECK_LT(type, kRtpExtensionNumberOfExtensions); RTC_DCHECK_LT(type, kRtpExtensionNumberOfExtensions);

View file

@ -31,7 +31,7 @@ TEST(RtpHeaderExtensionTest, RegisterByType) {
TEST(RtpHeaderExtensionTest, RegisterByUri) { TEST(RtpHeaderExtensionTest, RegisterByUri) {
RtpHeaderExtensionMap map; RtpHeaderExtensionMap map;
EXPECT_TRUE(map.RegisterByUri(3, TransmissionOffset::kUri)); EXPECT_TRUE(map.RegisterByUri(3, TransmissionOffset::Uri()));
EXPECT_TRUE(map.IsRegistered(TransmissionOffset::kId)); EXPECT_TRUE(map.IsRegistered(TransmissionOffset::kId));
EXPECT_EQ(3, map.GetId(TransmissionOffset::kId)); EXPECT_EQ(3, map.GetId(TransmissionOffset::kId));
@ -49,8 +49,8 @@ TEST(RtpHeaderExtensionTest, RegisterWithTrait) {
} }
TEST(RtpHeaderExtensionTest, RegisterDuringContruction) { TEST(RtpHeaderExtensionTest, RegisterDuringContruction) {
const std::vector<RtpExtension> config = {{TransmissionOffset::kUri, 1}, const std::vector<RtpExtension> config = {{TransmissionOffset::Uri(), 1},
{AbsoluteSendTime::kUri, 3}}; {AbsoluteSendTime::Uri(), 3}};
const RtpHeaderExtensionMap map(config); const RtpHeaderExtensionMap map(config);
EXPECT_EQ(1, map.GetId(TransmissionOffset::kId)); EXPECT_EQ(1, map.GetId(TransmissionOffset::kId));

View file

@ -16,8 +16,11 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "absl/base/attributes.h"
#include "absl/strings/string_view.h"
#include "api/array_view.h" #include "api/array_view.h"
#include "api/rtp_headers.h" #include "api/rtp_headers.h"
#include "api/rtp_parameters.h"
#include "api/video/color_space.h" #include "api/video/color_space.h"
#include "api/video/video_content_type.h" #include "api/video/video_content_type.h"
#include "api/video/video_rotation.h" #include "api/video/video_rotation.h"
@ -31,8 +34,11 @@ class AbsoluteSendTime {
using value_type = uint32_t; using value_type = uint32_t;
static constexpr RTPExtensionType kId = kRtpExtensionAbsoluteSendTime; static constexpr RTPExtensionType kId = kRtpExtensionAbsoluteSendTime;
static constexpr uint8_t kValueSizeBytes = 3; static constexpr uint8_t kValueSizeBytes = 3;
static constexpr const char kUri[] = static constexpr ABSL_DEPRECATED("Use Uri()") const char kUri[] =
"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"; "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time";
static constexpr absl::string_view Uri() {
return RtpExtension::kAbsSendTimeUri;
}
static bool Parse(rtc::ArrayView<const uint8_t> data, uint32_t* time_24bits); static bool Parse(rtc::ArrayView<const uint8_t> data, uint32_t* time_24bits);
static size_t ValueSize(uint32_t time_24bits) { return kValueSizeBytes; } static size_t ValueSize(uint32_t time_24bits) { return kValueSizeBytes; }
@ -50,8 +56,11 @@ class AbsoluteCaptureTimeExtension {
static constexpr uint8_t kValueSizeBytes = 16; static constexpr uint8_t kValueSizeBytes = 16;
static constexpr uint8_t kValueSizeBytesWithoutEstimatedCaptureClockOffset = static constexpr uint8_t kValueSizeBytesWithoutEstimatedCaptureClockOffset =
8; 8;
static constexpr const char kUri[] = static constexpr ABSL_DEPRECATED("Use Uri()") const char kUri[] =
"http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time"; "http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time";
static constexpr absl::string_view Uri() {
return RtpExtension::kAbsoluteCaptureTimeUri;
}
static bool Parse(rtc::ArrayView<const uint8_t> data, static bool Parse(rtc::ArrayView<const uint8_t> data,
AbsoluteCaptureTime* extension); AbsoluteCaptureTime* extension);
@ -64,8 +73,11 @@ class AudioLevel {
public: public:
static constexpr RTPExtensionType kId = kRtpExtensionAudioLevel; static constexpr RTPExtensionType kId = kRtpExtensionAudioLevel;
static constexpr uint8_t kValueSizeBytes = 1; static constexpr uint8_t kValueSizeBytes = 1;
static constexpr const char kUri[] = static constexpr ABSL_DEPRECATED("Use Uri()") const
"urn:ietf:params:rtp-hdrext:ssrc-audio-level"; char kUri[] = "urn:ietf:params:rtp-hdrext:ssrc-audio-level";
static constexpr absl::string_view Uri() {
return RtpExtension::kAudioLevelUri;
}
static bool Parse(rtc::ArrayView<const uint8_t> data, static bool Parse(rtc::ArrayView<const uint8_t> data,
bool* voice_activity, bool* voice_activity,
@ -82,8 +94,11 @@ class CsrcAudioLevel {
public: public:
static constexpr RTPExtensionType kId = kRtpExtensionCsrcAudioLevel; static constexpr RTPExtensionType kId = kRtpExtensionCsrcAudioLevel;
static constexpr uint8_t kMaxValueSizeBytes = 15; static constexpr uint8_t kMaxValueSizeBytes = 15;
static constexpr const char kUri[] = static constexpr ABSL_DEPRECATED("Use Uri()") const
"urn:ietf:params:rtp-hdrext:csrc-audio-level"; char kUri[] = "urn:ietf:params:rtp-hdrext:csrc-audio-level";
static constexpr absl::string_view Uri() {
return RtpExtension::kCsrcAudioLevelsUri;
}
static bool Parse(rtc::ArrayView<const uint8_t> data, static bool Parse(rtc::ArrayView<const uint8_t> data,
std::vector<uint8_t>* csrc_audio_levels); std::vector<uint8_t>* csrc_audio_levels);
@ -97,7 +112,11 @@ class TransmissionOffset {
using value_type = int32_t; using value_type = int32_t;
static constexpr RTPExtensionType kId = kRtpExtensionTransmissionTimeOffset; static constexpr RTPExtensionType kId = kRtpExtensionTransmissionTimeOffset;
static constexpr uint8_t kValueSizeBytes = 3; static constexpr uint8_t kValueSizeBytes = 3;
static constexpr const char kUri[] = "urn:ietf:params:rtp-hdrext:toffset"; static constexpr ABSL_DEPRECATED("Use Uri()") const
char kUri[] = "urn:ietf:params:rtp-hdrext:toffset";
static constexpr absl::string_view Uri() {
return RtpExtension::kTimestampOffsetUri;
}
static bool Parse(rtc::ArrayView<const uint8_t> data, int32_t* rtp_time); static bool Parse(rtc::ArrayView<const uint8_t> data, int32_t* rtp_time);
static size_t ValueSize(int32_t rtp_time) { return kValueSizeBytes; } static size_t ValueSize(int32_t rtp_time) { return kValueSizeBytes; }
@ -109,9 +128,13 @@ class TransportSequenceNumber {
using value_type = uint16_t; using value_type = uint16_t;
static constexpr RTPExtensionType kId = kRtpExtensionTransportSequenceNumber; static constexpr RTPExtensionType kId = kRtpExtensionTransportSequenceNumber;
static constexpr uint8_t kValueSizeBytes = 2; static constexpr uint8_t kValueSizeBytes = 2;
static constexpr const char kUri[] = static constexpr ABSL_DEPRECATED("Use Uri()") const char kUri[] =
"http://www.ietf.org/id/" "http://www.ietf.org/id/"
"draft-holmer-rmcat-transport-wide-cc-extensions-01"; "draft-holmer-rmcat-transport-wide-cc-extensions-01";
static constexpr absl::string_view Uri() {
return RtpExtension::kTransportSequenceNumberUri;
}
static bool Parse(rtc::ArrayView<const uint8_t> data, static bool Parse(rtc::ArrayView<const uint8_t> data,
uint16_t* transport_sequence_number); uint16_t* transport_sequence_number);
static size_t ValueSize(uint16_t /*transport_sequence_number*/) { static size_t ValueSize(uint16_t /*transport_sequence_number*/) {
@ -127,8 +150,12 @@ class TransportSequenceNumberV2 {
kRtpExtensionTransportSequenceNumber02; kRtpExtensionTransportSequenceNumber02;
static constexpr uint8_t kValueSizeBytes = 4; static constexpr uint8_t kValueSizeBytes = 4;
static constexpr uint8_t kValueSizeBytesWithoutFeedbackRequest = 2; static constexpr uint8_t kValueSizeBytesWithoutFeedbackRequest = 2;
static constexpr const char kUri[] = static constexpr ABSL_DEPRECATED("Use Uri()") const char kUri[] =
"http://www.webrtc.org/experiments/rtp-hdrext/transport-wide-cc-02"; "http://www.webrtc.org/experiments/rtp-hdrext/transport-wide-cc-02";
static constexpr absl::string_view Uri() {
return RtpExtension::kTransportSequenceNumberV2Uri;
}
static bool Parse(rtc::ArrayView<const uint8_t> data, static bool Parse(rtc::ArrayView<const uint8_t> data,
uint16_t* transport_sequence_number, uint16_t* transport_sequence_number,
absl::optional<FeedbackRequest>* feedback_request); absl::optional<FeedbackRequest>* feedback_request);
@ -151,7 +178,11 @@ class VideoOrientation {
using value_type = VideoRotation; using value_type = VideoRotation;
static constexpr RTPExtensionType kId = kRtpExtensionVideoRotation; static constexpr RTPExtensionType kId = kRtpExtensionVideoRotation;
static constexpr uint8_t kValueSizeBytes = 1; static constexpr uint8_t kValueSizeBytes = 1;
static constexpr const char kUri[] = "urn:3gpp:video-orientation"; static constexpr ABSL_DEPRECATED("Use Uri()") const
char kUri[] = "urn:3gpp:video-orientation";
static constexpr absl::string_view Uri() {
return RtpExtension::kVideoRotationUri;
}
static bool Parse(rtc::ArrayView<const uint8_t> data, VideoRotation* value); static bool Parse(rtc::ArrayView<const uint8_t> data, VideoRotation* value);
static size_t ValueSize(VideoRotation) { return kValueSizeBytes; } static size_t ValueSize(VideoRotation) { return kValueSizeBytes; }
@ -166,8 +197,11 @@ class PlayoutDelayLimits {
using value_type = VideoPlayoutDelay; using value_type = VideoPlayoutDelay;
static constexpr RTPExtensionType kId = kRtpExtensionPlayoutDelay; static constexpr RTPExtensionType kId = kRtpExtensionPlayoutDelay;
static constexpr uint8_t kValueSizeBytes = 3; static constexpr uint8_t kValueSizeBytes = 3;
static constexpr const char kUri[] = static constexpr ABSL_DEPRECATED("Use Uri()") const char kUri[] =
"http://www.webrtc.org/experiments/rtp-hdrext/playout-delay"; "http://www.webrtc.org/experiments/rtp-hdrext/playout-delay";
static constexpr absl::string_view Uri() {
return RtpExtension::kPlayoutDelayUri;
}
// Playout delay in milliseconds. A playout delay limit (min or max) // Playout delay in milliseconds. A playout delay limit (min or max)
// has 12 bits allocated. This allows a range of 0-4095 values which // has 12 bits allocated. This allows a range of 0-4095 values which
@ -188,8 +222,11 @@ class VideoContentTypeExtension {
using value_type = VideoContentType; using value_type = VideoContentType;
static constexpr RTPExtensionType kId = kRtpExtensionVideoContentType; static constexpr RTPExtensionType kId = kRtpExtensionVideoContentType;
static constexpr uint8_t kValueSizeBytes = 1; static constexpr uint8_t kValueSizeBytes = 1;
static constexpr const char kUri[] = static constexpr ABSL_DEPRECATED("Use Uri()") const char kUri[] =
"http://www.webrtc.org/experiments/rtp-hdrext/video-content-type"; "http://www.webrtc.org/experiments/rtp-hdrext/video-content-type";
static constexpr absl::string_view Uri() {
return RtpExtension::kVideoContentTypeUri;
}
static bool Parse(rtc::ArrayView<const uint8_t> data, static bool Parse(rtc::ArrayView<const uint8_t> data,
VideoContentType* content_type); VideoContentType* content_type);
@ -203,8 +240,11 @@ class VideoTimingExtension {
using value_type = VideoSendTiming; using value_type = VideoSendTiming;
static constexpr RTPExtensionType kId = kRtpExtensionVideoTiming; static constexpr RTPExtensionType kId = kRtpExtensionVideoTiming;
static constexpr uint8_t kValueSizeBytes = 13; static constexpr uint8_t kValueSizeBytes = 13;
static constexpr const char kUri[] = static constexpr ABSL_DEPRECATED("Use Uri()") const
"http://www.webrtc.org/experiments/rtp-hdrext/video-timing"; char kUri[] = "http://www.webrtc.org/experiments/rtp-hdrext/video-timing";
static constexpr absl::string_view Uri() {
return RtpExtension::kVideoTimingUri;
}
// Offsets of the fields in the RTP header extension, counting from the first // Offsets of the fields in the RTP header extension, counting from the first
// byte after the one-byte header. // byte after the one-byte header.
@ -237,8 +277,11 @@ class ColorSpaceExtension {
static constexpr RTPExtensionType kId = kRtpExtensionColorSpace; static constexpr RTPExtensionType kId = kRtpExtensionColorSpace;
static constexpr uint8_t kValueSizeBytes = 28; static constexpr uint8_t kValueSizeBytes = 28;
static constexpr uint8_t kValueSizeBytesWithoutHdrMetadata = 4; static constexpr uint8_t kValueSizeBytesWithoutHdrMetadata = 4;
static constexpr const char kUri[] = static constexpr ABSL_DEPRECATED("Use Uri()") const
"http://www.webrtc.org/experiments/rtp-hdrext/color-space"; char kUri[] = "http://www.webrtc.org/experiments/rtp-hdrext/color-space";
static constexpr absl::string_view Uri() {
return RtpExtension::kColorSpaceUri;
}
static bool Parse(rtc::ArrayView<const uint8_t> data, static bool Parse(rtc::ArrayView<const uint8_t> data,
ColorSpace* color_space); ColorSpace* color_space);
@ -287,21 +330,27 @@ class BaseRtpStringExtension {
class RtpStreamId : public BaseRtpStringExtension { class RtpStreamId : public BaseRtpStringExtension {
public: public:
static constexpr RTPExtensionType kId = kRtpExtensionRtpStreamId; static constexpr RTPExtensionType kId = kRtpExtensionRtpStreamId;
static constexpr const char kUri[] = static constexpr ABSL_DEPRECATED("Use Uri()") const
"urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id"; char kUri[] = "urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id";
static constexpr absl::string_view Uri() { return RtpExtension::kRidUri; }
}; };
class RepairedRtpStreamId : public BaseRtpStringExtension { class RepairedRtpStreamId : public BaseRtpStringExtension {
public: public:
static constexpr RTPExtensionType kId = kRtpExtensionRepairedRtpStreamId; static constexpr RTPExtensionType kId = kRtpExtensionRepairedRtpStreamId;
static constexpr const char kUri[] = static constexpr ABSL_DEPRECATED("Use Uri()") const
"urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"; char kUri[] = "urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id";
static constexpr absl::string_view Uri() {
return RtpExtension::kRepairedRidUri;
}
}; };
class RtpMid : public BaseRtpStringExtension { class RtpMid : public BaseRtpStringExtension {
public: public:
static constexpr RTPExtensionType kId = kRtpExtensionMid; static constexpr RTPExtensionType kId = kRtpExtensionMid;
static constexpr const char kUri[] = "urn:ietf:params:rtp-hdrext:sdes:mid"; static constexpr ABSL_DEPRECATED("Use Uri()") const
char kUri[] = "urn:ietf:params:rtp-hdrext:sdes:mid";
static constexpr absl::string_view Uri() { return RtpExtension::kMidUri; }
}; };
class InbandComfortNoiseExtension { class InbandComfortNoiseExtension {
@ -312,6 +361,7 @@ class InbandComfortNoiseExtension {
static constexpr uint8_t kValueSizeBytes = 1; static constexpr uint8_t kValueSizeBytes = 1;
static constexpr const char kUri[] = static constexpr const char kUri[] =
"http://www.webrtc.org/experiments/rtp-hdrext/inband-cn"; "http://www.webrtc.org/experiments/rtp-hdrext/inband-cn";
static constexpr absl::string_view Uri() { return kUri; }
static bool Parse(rtc::ArrayView<const uint8_t> data, static bool Parse(rtc::ArrayView<const uint8_t> data,
absl::optional<uint8_t>* level); absl::optional<uint8_t>* level);
@ -327,8 +377,12 @@ class VideoFrameTrackingIdExtension {
using value_type = uint16_t; using value_type = uint16_t;
static constexpr RTPExtensionType kId = kRtpExtensionVideoFrameTrackingId; static constexpr RTPExtensionType kId = kRtpExtensionVideoFrameTrackingId;
static constexpr uint8_t kValueSizeBytes = 2; static constexpr uint8_t kValueSizeBytes = 2;
static constexpr const char kUri[] = static constexpr ABSL_DEPRECATED("Use Uri()") const char kUri[] =
"http://www.webrtc.org/experiments/rtp-hdrext/video-frame-tracking-id"; "http://www.webrtc.org/experiments/rtp-hdrext/video-frame-tracking-id";
static constexpr absl::string_view Uri() {
return RtpExtension::kVideoFrameTrackingIdUri;
}
static bool Parse(rtc::ArrayView<const uint8_t> data, static bool Parse(rtc::ArrayView<const uint8_t> data,
uint16_t* video_frame_tracking_id); uint16_t* video_frame_tracking_id);
static size_t ValueSize(uint16_t /*video_frame_tracking_id*/) { static size_t ValueSize(uint16_t /*video_frame_tracking_id*/) {

View file

@ -856,7 +856,7 @@ struct UncopyableValue {
}; };
struct UncopyableExtension { struct UncopyableExtension {
static constexpr RTPExtensionType kId = kRtpExtensionGenericFrameDescriptor02; static constexpr RTPExtensionType kId = kRtpExtensionGenericFrameDescriptor02;
static constexpr char kUri[] = "uri"; static constexpr absl::string_view Uri() { return "uri"; }
static size_t ValueSize(const UncopyableValue& value) { return 1; } static size_t ValueSize(const UncopyableValue& value) { return 1; }
static bool Write(rtc::ArrayView<uint8_t> data, static bool Write(rtc::ArrayView<uint8_t> data,
@ -869,7 +869,6 @@ struct UncopyableExtension {
} }
}; };
constexpr RTPExtensionType UncopyableExtension::kId; constexpr RTPExtensionType UncopyableExtension::kId;
constexpr char UncopyableExtension::kUri[];
TEST(RtpPacketTest, SetUncopyableExtension) { TEST(RtpPacketTest, SetUncopyableExtension) {
RtpPacket::ExtensionManager extensions; RtpPacket::ExtensionManager extensions;

View file

@ -957,7 +957,7 @@ TEST_P(RtpRtcpImpl2Test, PaddingTimestampMatchesMedia) {
} }
TEST_P(RtpRtcpImpl2Test, AssignsTransportSequenceNumber) { TEST_P(RtpRtcpImpl2Test, AssignsTransportSequenceNumber) {
sender_.RegisterHeaderExtension(TransportSequenceNumber::kUri, sender_.RegisterHeaderExtension(TransportSequenceNumber::Uri(),
kTransportSequenceNumberExtensionId); kTransportSequenceNumberExtensionId);
EXPECT_TRUE(SendFrame(&sender_, sender_video_.get(), kBaseLayerTid)); EXPECT_TRUE(SendFrame(&sender_, sender_video_.get(), kBaseLayerTid));
@ -974,7 +974,7 @@ TEST_P(RtpRtcpImpl2Test, AssignsTransportSequenceNumber) {
} }
TEST_P(RtpRtcpImpl2Test, AssignsAbsoluteSendTime) { TEST_P(RtpRtcpImpl2Test, AssignsAbsoluteSendTime) {
sender_.RegisterHeaderExtension(AbsoluteSendTime::kUri, sender_.RegisterHeaderExtension(AbsoluteSendTime::Uri(),
kAbsoluteSendTimeExtensionId); kAbsoluteSendTimeExtensionId);
EXPECT_TRUE(SendFrame(&sender_, sender_video_.get(), kBaseLayerTid)); EXPECT_TRUE(SendFrame(&sender_, sender_video_.get(), kBaseLayerTid));
@ -982,7 +982,7 @@ TEST_P(RtpRtcpImpl2Test, AssignsAbsoluteSendTime) {
} }
TEST_P(RtpRtcpImpl2Test, AssignsTransmissionTimeOffset) { TEST_P(RtpRtcpImpl2Test, AssignsTransmissionTimeOffset) {
sender_.RegisterHeaderExtension(TransmissionOffset::kUri, sender_.RegisterHeaderExtension(TransmissionOffset::Uri(),
kTransmissionOffsetExtensionId); kTransmissionOffsetExtensionId);
constexpr TimeDelta kOffset = TimeDelta::Millis(100); constexpr TimeDelta kOffset = TimeDelta::Millis(100);
@ -998,7 +998,7 @@ TEST_P(RtpRtcpImpl2Test, AssignsTransmissionTimeOffset) {
} }
TEST_P(RtpRtcpImpl2Test, PropagatesSentPacketInfo) { TEST_P(RtpRtcpImpl2Test, PropagatesSentPacketInfo) {
sender_.RegisterHeaderExtension(TransportSequenceNumber::kUri, sender_.RegisterHeaderExtension(TransportSequenceNumber::Uri(),
kTransportSequenceNumberExtensionId); kTransportSequenceNumberExtensionId);
int64_t now_ms = time_controller_.GetClock()->TimeInMilliseconds(); int64_t now_ms = time_controller_.GetClock()->TimeInMilliseconds();
EXPECT_TRUE(SendFrame(&sender_, sender_video_.get(), kBaseLayerTid)); EXPECT_TRUE(SendFrame(&sender_, sender_video_.get(), kBaseLayerTid));

View file

@ -106,7 +106,7 @@ TEST_F(RtpSenderAudioTest, SendAudio) {
TEST_F(RtpSenderAudioTest, SendAudioWithAudioLevelExtension) { TEST_F(RtpSenderAudioTest, SendAudioWithAudioLevelExtension) {
EXPECT_EQ(0, rtp_sender_audio_->SetAudioLevel(kAudioLevel)); EXPECT_EQ(0, rtp_sender_audio_->SetAudioLevel(kAudioLevel));
rtp_module_->RegisterRtpHeaderExtension(AudioLevel::kUri, rtp_module_->RegisterRtpHeaderExtension(AudioLevel::Uri(),
kAudioLevelExtensionId); kAudioLevelExtensionId);
const char payload_name[] = "PAYLOAD_NAME"; const char payload_name[] = "PAYLOAD_NAME";
@ -149,7 +149,7 @@ TEST_F(RtpSenderAudioTest, SendAudioWithoutAbsoluteCaptureTime) {
} }
TEST_F(RtpSenderAudioTest, SendAudioWithAbsoluteCaptureTime) { TEST_F(RtpSenderAudioTest, SendAudioWithAbsoluteCaptureTime) {
rtp_module_->RegisterRtpHeaderExtension(AbsoluteCaptureTimeExtension::kUri, rtp_module_->RegisterRtpHeaderExtension(AbsoluteCaptureTimeExtension::Uri(),
kAbsoluteCaptureTimeExtensionId); kAbsoluteCaptureTimeExtensionId);
constexpr uint32_t kAbsoluteCaptureTimestampMs = 521; constexpr uint32_t kAbsoluteCaptureTimestampMs = 521;
const char payload_name[] = "audio"; const char payload_name[] = "audio";
@ -185,7 +185,7 @@ TEST_F(RtpSenderAudioTest,
rtp_sender_audio_ = rtp_sender_audio_ =
std::make_unique<RTPSenderAudio>(&fake_clock_, rtp_module_->RtpSender()); std::make_unique<RTPSenderAudio>(&fake_clock_, rtp_module_->RtpSender());
rtp_module_->RegisterRtpHeaderExtension(AbsoluteCaptureTimeExtension::kUri, rtp_module_->RegisterRtpHeaderExtension(AbsoluteCaptureTimeExtension::Uri(),
kAbsoluteCaptureTimeExtensionId); kAbsoluteCaptureTimeExtensionId);
constexpr uint32_t kAbsoluteCaptureTimestampMs = 521; constexpr uint32_t kAbsoluteCaptureTimestampMs = 521;
const char payload_name[] = "audio"; const char payload_name[] = "audio";

View file

@ -212,7 +212,7 @@ TEST_P(RtpSenderEgressTest, TransportFeedbackObserverGetsCorrectByteCount) {
const uint16_t kTransportSequenceNumber = 17; const uint16_t kTransportSequenceNumber = 17;
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId, header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::kUri); TransportSequenceNumber::Uri());
const size_t expected_bytes = GetParam().with_overhead const size_t expected_bytes = GetParam().with_overhead
? kPayloadSize + kRtpOverheadBytesPerPacket ? kPayloadSize + kRtpOverheadBytesPerPacket
@ -266,7 +266,7 @@ TEST_P(RtpSenderEgressTest,
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress(); std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId, header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::kUri); TransportSequenceNumber::Uri());
std::unique_ptr<RtpPacketToSend> packet = BuildRtpPacket(); std::unique_ptr<RtpPacketToSend> packet = BuildRtpPacket();
sender->SendPacket(packet.get(), PacedPacketInfo()); sender->SendPacket(packet.get(), PacedPacketInfo());
EXPECT_TRUE(transport_.last_packet()->options.included_in_feedback); EXPECT_TRUE(transport_.last_packet()->options.included_in_feedback);
@ -278,7 +278,7 @@ TEST_P(
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress(); std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId, header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::kUri); TransportSequenceNumber::Uri());
std::unique_ptr<RtpPacketToSend> packet = BuildRtpPacket(); std::unique_ptr<RtpPacketToSend> packet = BuildRtpPacket();
sender->SendPacket(packet.get(), PacedPacketInfo()); sender->SendPacket(packet.get(), PacedPacketInfo());
EXPECT_TRUE(transport_.last_packet()->options.included_in_allocation); EXPECT_TRUE(transport_.last_packet()->options.included_in_allocation);
@ -342,7 +342,7 @@ TEST_P(RtpSenderEgressTest, OnSendSideDelayUpdated) {
TEST_P(RtpSenderEgressTest, WritesPacerExitToTimingExtension) { TEST_P(RtpSenderEgressTest, WritesPacerExitToTimingExtension) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress(); std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
header_extensions_.RegisterByUri(kVideoTimingExtensionId, header_extensions_.RegisterByUri(kVideoTimingExtensionId,
VideoTimingExtension::kUri); VideoTimingExtension::Uri());
std::unique_ptr<RtpPacketToSend> packet = BuildRtpPacket(); std::unique_ptr<RtpPacketToSend> packet = BuildRtpPacket();
packet->SetExtension<VideoTimingExtension>(VideoSendTiming{}); packet->SetExtension<VideoTimingExtension>(VideoSendTiming{});
@ -364,7 +364,7 @@ TEST_P(RtpSenderEgressTest, WritesNetwork2ToTimingExtension) {
rtp_config.populate_network2_timestamp = true; rtp_config.populate_network2_timestamp = true;
auto sender = std::make_unique<RtpSenderEgress>(rtp_config, &packet_history_); auto sender = std::make_unique<RtpSenderEgress>(rtp_config, &packet_history_);
header_extensions_.RegisterByUri(kVideoTimingExtensionId, header_extensions_.RegisterByUri(kVideoTimingExtensionId,
VideoTimingExtension::kUri); VideoTimingExtension::Uri());
const uint16_t kPacerExitMs = 1234u; const uint16_t kPacerExitMs = 1234u;
std::unique_ptr<RtpPacketToSend> packet = BuildRtpPacket(); std::unique_ptr<RtpPacketToSend> packet = BuildRtpPacket();
@ -388,7 +388,7 @@ TEST_P(RtpSenderEgressTest, WritesNetwork2ToTimingExtension) {
TEST_P(RtpSenderEgressTest, OnSendPacketUpdated) { TEST_P(RtpSenderEgressTest, OnSendPacketUpdated) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress(); std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId, header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::kUri); TransportSequenceNumber::Uri());
const uint16_t kTransportSequenceNumber = 1; const uint16_t kTransportSequenceNumber = 1;
EXPECT_CALL(send_packet_observer_, EXPECT_CALL(send_packet_observer_,
@ -402,7 +402,7 @@ TEST_P(RtpSenderEgressTest, OnSendPacketUpdated) {
TEST_P(RtpSenderEgressTest, OnSendPacketNotUpdatedForRetransmits) { TEST_P(RtpSenderEgressTest, OnSendPacketNotUpdatedForRetransmits) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress(); std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId, header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::kUri); TransportSequenceNumber::Uri());
const uint16_t kTransportSequenceNumber = 1; const uint16_t kTransportSequenceNumber = 1;
EXPECT_CALL(send_packet_observer_, OnSendPacket).Times(0); EXPECT_CALL(send_packet_observer_, OnSendPacket).Times(0);
@ -748,11 +748,11 @@ TEST_P(RtpSenderEgressTest, UpdatesDataCounters) {
TEST_P(RtpSenderEgressTest, SendPacketUpdatesExtensions) { TEST_P(RtpSenderEgressTest, SendPacketUpdatesExtensions) {
header_extensions_.RegisterByUri(kVideoTimingExtensionId, header_extensions_.RegisterByUri(kVideoTimingExtensionId,
VideoTimingExtension::kUri); VideoTimingExtension::Uri());
header_extensions_.RegisterByUri(kAbsoluteSendTimeExtensionId, header_extensions_.RegisterByUri(kAbsoluteSendTimeExtensionId,
AbsoluteSendTime::kUri); AbsoluteSendTime::Uri());
header_extensions_.RegisterByUri(kTransmissionOffsetExtensionId, header_extensions_.RegisterByUri(kTransmissionOffsetExtensionId,
TransmissionOffset::kUri); TransmissionOffset::Uri());
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress(); std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
std::unique_ptr<RtpPacketToSend> packet = BuildRtpPacket(); std::unique_ptr<RtpPacketToSend> packet = BuildRtpPacket();
@ -779,7 +779,7 @@ TEST_P(RtpSenderEgressTest, SendPacketSetsPacketOptions) {
const uint16_t kPacketId = 42; const uint16_t kPacketId = 42;
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress(); std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId, header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::kUri); TransportSequenceNumber::Uri());
std::unique_ptr<RtpPacketToSend> packet = BuildRtpPacket(); std::unique_ptr<RtpPacketToSend> packet = BuildRtpPacket();
packet->SetExtension<TransportSequenceNumber>(kPacketId); packet->SetExtension<TransportSequenceNumber>(kPacketId);
@ -816,7 +816,7 @@ TEST_P(RtpSenderEgressTest, SendPacketUpdatesStats) {
auto sender = std::make_unique<RtpSenderEgress>(config, &packet_history_); auto sender = std::make_unique<RtpSenderEgress>(config, &packet_history_);
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId, header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::kUri); TransportSequenceNumber::Uri());
const int64_t capture_time_ms = clock_->TimeInMilliseconds(); const int64_t capture_time_ms = clock_->TimeInMilliseconds();
@ -871,7 +871,7 @@ TEST_P(RtpSenderEgressTest, SendPacketUpdatesStats) {
TEST_P(RtpSenderEgressTest, TransportFeedbackObserverWithRetransmission) { TEST_P(RtpSenderEgressTest, TransportFeedbackObserverWithRetransmission) {
const uint16_t kTransportSequenceNumber = 17; const uint16_t kTransportSequenceNumber = 17;
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId, header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::kUri); TransportSequenceNumber::Uri());
std::unique_ptr<RtpPacketToSend> retransmission = BuildRtpPacket(); std::unique_ptr<RtpPacketToSend> retransmission = BuildRtpPacket();
retransmission->set_packet_type(RtpPacketMediaType::kRetransmission); retransmission->set_packet_type(RtpPacketMediaType::kRetransmission);
retransmission->SetExtension<TransportSequenceNumber>( retransmission->SetExtension<TransportSequenceNumber>(
@ -893,7 +893,7 @@ TEST_P(RtpSenderEgressTest, TransportFeedbackObserverWithRetransmission) {
TEST_P(RtpSenderEgressTest, TransportFeedbackObserverWithRtxRetransmission) { TEST_P(RtpSenderEgressTest, TransportFeedbackObserverWithRtxRetransmission) {
const uint16_t kTransportSequenceNumber = 17; const uint16_t kTransportSequenceNumber = 17;
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId, header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::kUri); TransportSequenceNumber::Uri());
std::unique_ptr<RtpPacketToSend> rtx_retransmission = BuildRtpPacket(); std::unique_ptr<RtpPacketToSend> rtx_retransmission = BuildRtpPacket();
rtx_retransmission->SetSsrc(kRtxSsrc); rtx_retransmission->SetSsrc(kRtxSsrc);
@ -917,7 +917,7 @@ TEST_P(RtpSenderEgressTest, TransportFeedbackObserverWithRtxRetransmission) {
TEST_P(RtpSenderEgressTest, TransportFeedbackObserverPadding) { TEST_P(RtpSenderEgressTest, TransportFeedbackObserverPadding) {
const uint16_t kTransportSequenceNumber = 17; const uint16_t kTransportSequenceNumber = 17;
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId, header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::kUri); TransportSequenceNumber::Uri());
std::unique_ptr<RtpPacketToSend> padding = BuildRtpPacket(); std::unique_ptr<RtpPacketToSend> padding = BuildRtpPacket();
padding->SetPadding(224); padding->SetPadding(224);
padding->set_packet_type(RtpPacketMediaType::kPadding); padding->set_packet_type(RtpPacketMediaType::kPadding);
@ -935,7 +935,7 @@ TEST_P(RtpSenderEgressTest, TransportFeedbackObserverPadding) {
TEST_P(RtpSenderEgressTest, TransportFeedbackObserverRtxPadding) { TEST_P(RtpSenderEgressTest, TransportFeedbackObserverRtxPadding) {
const uint16_t kTransportSequenceNumber = 17; const uint16_t kTransportSequenceNumber = 17;
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId, header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::kUri); TransportSequenceNumber::Uri());
std::unique_ptr<RtpPacketToSend> rtx_padding = BuildRtpPacket(); std::unique_ptr<RtpPacketToSend> rtx_padding = BuildRtpPacket();
rtx_padding->SetPadding(224); rtx_padding->SetPadding(224);
@ -955,7 +955,7 @@ TEST_P(RtpSenderEgressTest, TransportFeedbackObserverRtxPadding) {
TEST_P(RtpSenderEgressTest, TransportFeedbackObserverFec) { TEST_P(RtpSenderEgressTest, TransportFeedbackObserverFec) {
const uint16_t kTransportSequenceNumber = 17; const uint16_t kTransportSequenceNumber = 17;
header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId, header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
TransportSequenceNumber::kUri); TransportSequenceNumber::Uri());
std::unique_ptr<RtpPacketToSend> fec_packet = BuildRtpPacket(); std::unique_ptr<RtpPacketToSend> fec_packet = BuildRtpPacket();
fec_packet->SetSsrc(kFlexFecSsrc); fec_packet->SetSsrc(kFlexFecSsrc);

View file

@ -267,15 +267,16 @@ class RtpSenderTest : public ::testing::Test {
// Enable sending of the MID header extension for both the primary SSRC and // Enable sending of the MID header extension for both the primary SSRC and
// the RTX SSRC. // the RTX SSRC.
void EnableMidSending(const std::string& mid) { void EnableMidSending(const std::string& mid) {
rtp_sender_->RegisterRtpHeaderExtension(RtpMid::kUri, kMidExtensionId); rtp_sender_->RegisterRtpHeaderExtension(RtpMid::Uri(), kMidExtensionId);
rtp_sender_->SetMid(mid); rtp_sender_->SetMid(mid);
} }
// Enable sending of the RSID header extension for the primary SSRC and the // Enable sending of the RSID header extension for the primary SSRC and the
// RRSID header extension for the RTX SSRC. // RRSID header extension for the RTX SSRC.
void EnableRidSending(const std::string& rid) { void EnableRidSending(const std::string& rid) {
rtp_sender_->RegisterRtpHeaderExtension(RtpStreamId::kUri, kRidExtensionId); rtp_sender_->RegisterRtpHeaderExtension(RtpStreamId::Uri(),
rtp_sender_->RegisterRtpHeaderExtension(RepairedRtpStreamId::kUri, kRidExtensionId);
rtp_sender_->RegisterRtpHeaderExtension(RepairedRtpStreamId::Uri(),
kRepairedRidExtensionId); kRepairedRidExtensionId);
rtp_sender_->SetRid(rid); rtp_sender_->SetRid(rid);
} }
@ -297,15 +298,15 @@ TEST_F(RtpSenderTest, AllocatePacketSetCsrc) {
TEST_F(RtpSenderTest, AllocatePacketReserveExtensions) { TEST_F(RtpSenderTest, AllocatePacketReserveExtensions) {
// Configure rtp_sender with extensions. // Configure rtp_sender with extensions.
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension( ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
TransmissionOffset::kUri, kTransmissionTimeOffsetExtensionId)); TransmissionOffset::Uri(), kTransmissionTimeOffsetExtensionId));
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension( ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
AbsoluteSendTime::kUri, kAbsoluteSendTimeExtensionId)); AbsoluteSendTime::Uri(), kAbsoluteSendTimeExtensionId));
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(AudioLevel::kUri, ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(AudioLevel::Uri(),
kAudioLevelExtensionId)); kAudioLevelExtensionId));
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension( ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
TransportSequenceNumber::kUri, kTransportSequenceNumberExtensionId)); TransportSequenceNumber::Uri(), kTransportSequenceNumberExtensionId));
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension( ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
VideoOrientation::kUri, kVideoRotationExtensionId)); VideoOrientation::Uri(), kVideoRotationExtensionId));
auto packet = rtp_sender_->AllocatePacket(); auto packet = rtp_sender_->AllocatePacket();
@ -444,7 +445,7 @@ TEST_F(RtpSenderTest, NoPaddingAsFirstPacketWithoutBweExtensions) {
TEST_F(RtpSenderTest, AllowPaddingAsFirstPacketOnRtxWithTransportCc) { TEST_F(RtpSenderTest, AllowPaddingAsFirstPacketOnRtxWithTransportCc) {
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension( ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
TransportSequenceNumber::kUri, kTransportSequenceNumberExtensionId)); TransportSequenceNumber::Uri(), kTransportSequenceNumberExtensionId));
// Padding can't be sent as first packet on media SSRC since we don't know // Padding can't be sent as first packet on media SSRC since we don't know
// what payload type to assign. // what payload type to assign.
@ -465,7 +466,7 @@ TEST_F(RtpSenderTest, AllowPaddingAsFirstPacketOnRtxWithTransportCc) {
TEST_F(RtpSenderTest, AllowPaddingAsFirstPacketOnRtxWithAbsSendTime) { TEST_F(RtpSenderTest, AllowPaddingAsFirstPacketOnRtxWithAbsSendTime) {
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension( ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
AbsoluteSendTime::kUri, kAbsoluteSendTimeExtensionId)); AbsoluteSendTime::Uri(), kAbsoluteSendTimeExtensionId));
// Padding can't be sent as first packet on media SSRC since we don't know // Padding can't be sent as first packet on media SSRC since we don't know
// what payload type to assign. // what payload type to assign.
@ -518,7 +519,7 @@ TEST_F(RtpSenderTest, UpdatesTimestampsOnPlainRtxPadding) {
TEST_F(RtpSenderTest, KeepsTimestampsOnPayloadPadding) { TEST_F(RtpSenderTest, KeepsTimestampsOnPayloadPadding) {
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension( ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
TransportSequenceNumber::kUri, kTransportSequenceNumberExtensionId)); TransportSequenceNumber::Uri(), kTransportSequenceNumberExtensionId));
EnableRtx(); EnableRtx();
// Timestamps as set based on capture time in RtpSenderTest. // Timestamps as set based on capture time in RtpSenderTest.
const int64_t start_time = clock_->TimeInMilliseconds(); const int64_t start_time = clock_->TimeInMilliseconds();
@ -892,7 +893,7 @@ TEST_F(RtpSenderTest, OnOverheadChanged) {
// Base RTP overhead is 12B. // Base RTP overhead is 12B.
EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 12u); EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 12u);
rtp_sender_->RegisterRtpHeaderExtension(TransmissionOffset::kUri, rtp_sender_->RegisterRtpHeaderExtension(TransmissionOffset::Uri(),
kTransmissionTimeOffsetExtensionId); kTransmissionTimeOffsetExtensionId);
// TransmissionTimeOffset extension has a size of 3B, but with the addition // TransmissionTimeOffset extension has a size of 3B, but with the addition
@ -908,8 +909,8 @@ TEST_F(RtpSenderTest, CountMidOnlyUntilAcked) {
// Base RTP overhead is 12B. // Base RTP overhead is 12B.
EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 12u); EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 12u);
rtp_sender_->RegisterRtpHeaderExtension(RtpMid::kUri, kMidExtensionId); rtp_sender_->RegisterRtpHeaderExtension(RtpMid::Uri(), kMidExtensionId);
rtp_sender_->RegisterRtpHeaderExtension(RtpStreamId::kUri, kRidExtensionId); rtp_sender_->RegisterRtpHeaderExtension(RtpStreamId::Uri(), kRidExtensionId);
// Counted only if set. // Counted only if set.
EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 12u); EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 12u);
@ -931,15 +932,16 @@ TEST_F(RtpSenderTest, DontCountVolatileExtensionsIntoOverhead) {
// Base RTP overhead is 12B. // Base RTP overhead is 12B.
EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 12u); EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 12u);
rtp_sender_->RegisterRtpHeaderExtension(InbandComfortNoiseExtension::kUri, 1); rtp_sender_->RegisterRtpHeaderExtension(InbandComfortNoiseExtension::Uri(),
rtp_sender_->RegisterRtpHeaderExtension(AbsoluteCaptureTimeExtension::kUri, 1);
rtp_sender_->RegisterRtpHeaderExtension(AbsoluteCaptureTimeExtension::Uri(),
2); 2);
rtp_sender_->RegisterRtpHeaderExtension(VideoOrientation::kUri, 3); rtp_sender_->RegisterRtpHeaderExtension(VideoOrientation::Uri(), 3);
rtp_sender_->RegisterRtpHeaderExtension(PlayoutDelayLimits::kUri, 4); rtp_sender_->RegisterRtpHeaderExtension(PlayoutDelayLimits::Uri(), 4);
rtp_sender_->RegisterRtpHeaderExtension(VideoContentTypeExtension::kUri, 5); rtp_sender_->RegisterRtpHeaderExtension(VideoContentTypeExtension::Uri(), 5);
rtp_sender_->RegisterRtpHeaderExtension(VideoTimingExtension::kUri, 6); rtp_sender_->RegisterRtpHeaderExtension(VideoTimingExtension::Uri(), 6);
rtp_sender_->RegisterRtpHeaderExtension(RepairedRtpStreamId::kUri, 7); rtp_sender_->RegisterRtpHeaderExtension(RepairedRtpStreamId::Uri(), 7);
rtp_sender_->RegisterRtpHeaderExtension(ColorSpaceExtension::kUri, 8); rtp_sender_->RegisterRtpHeaderExtension(ColorSpaceExtension::Uri(), 8);
// Still only 12B counted since can't count on above being sent. // Still only 12B counted since can't count on above being sent.
EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 12u); EXPECT_EQ(rtp_sender_->ExpectedPerPacketOverhead(), 12u);
@ -1006,11 +1008,11 @@ TEST_F(RtpSenderTest, GeneratedPaddingHasBweExtensions) {
EnableRtx(); EnableRtx();
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension( ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
TransmissionOffset::kUri, kTransmissionTimeOffsetExtensionId)); TransmissionOffset::Uri(), kTransmissionTimeOffsetExtensionId));
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension( ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
AbsoluteSendTime::kUri, kAbsoluteSendTimeExtensionId)); AbsoluteSendTime::Uri(), kAbsoluteSendTimeExtensionId));
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension( ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
TransportSequenceNumber::kUri, kTransportSequenceNumberExtensionId)); TransportSequenceNumber::Uri(), kTransportSequenceNumberExtensionId));
// Put a packet in the history, in order to facilitate payload padding. // Put a packet in the history, in order to facilitate payload padding.
std::unique_ptr<RtpPacketToSend> packet = std::unique_ptr<RtpPacketToSend> packet =
@ -1053,7 +1055,7 @@ TEST_F(RtpSenderTest, GeneratePaddingResendsOldPacketsWithRtx) {
RtpPacketHistory::StorageMode::kStoreAndCull, 1); RtpPacketHistory::StorageMode::kStoreAndCull, 1);
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension( ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
TransportSequenceNumber::kUri, kTransportSequenceNumberExtensionId)); TransportSequenceNumber::Uri(), kTransportSequenceNumberExtensionId));
const size_t kPayloadPacketSize = kMinPaddingSize; const size_t kPayloadPacketSize = kMinPaddingSize;
std::unique_ptr<RtpPacketToSend> packet = std::unique_ptr<RtpPacketToSend> packet =
@ -1103,7 +1105,7 @@ TEST_F(RtpSenderTest, LimitsPayloadPaddingSize) {
RtpPacketHistory::StorageMode::kStoreAndCull, 1); RtpPacketHistory::StorageMode::kStoreAndCull, 1);
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension( ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
TransportSequenceNumber::kUri, kTransportSequenceNumberExtensionId)); TransportSequenceNumber::Uri(), kTransportSequenceNumberExtensionId));
// Send a dummy video packet so it ends up in the packet history. // Send a dummy video packet so it ends up in the packet history.
const size_t kPayloadPacketSize = 1234u; const size_t kPayloadPacketSize = 1234u;
@ -1139,11 +1141,11 @@ TEST_F(RtpSenderTest, GeneratePaddingCreatesPurePaddingWithoutRtx) {
packet_history_->SetStorePacketsStatus( packet_history_->SetStorePacketsStatus(
RtpPacketHistory::StorageMode::kStoreAndCull, 1); RtpPacketHistory::StorageMode::kStoreAndCull, 1);
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension( ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
TransmissionOffset::kUri, kTransmissionTimeOffsetExtensionId)); TransmissionOffset::Uri(), kTransmissionTimeOffsetExtensionId));
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension( ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
AbsoluteSendTime::kUri, kAbsoluteSendTimeExtensionId)); AbsoluteSendTime::Uri(), kAbsoluteSendTimeExtensionId));
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension( ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
TransportSequenceNumber::kUri, kTransportSequenceNumberExtensionId)); TransportSequenceNumber::Uri(), kTransportSequenceNumberExtensionId));
const size_t kPayloadPacketSize = 1234; const size_t kPayloadPacketSize = 1234;
// Send a dummy video packet so it ends up in the packet history. Since we // Send a dummy video packet so it ends up in the packet history. Since we
@ -1188,8 +1190,8 @@ TEST_F(RtpSenderTest, SupportsPadding) {
bool kSendingMediaStats[] = {true, false}; bool kSendingMediaStats[] = {true, false};
bool kEnableRedundantPayloads[] = {true, false}; bool kEnableRedundantPayloads[] = {true, false};
absl::string_view kBweExtensionUris[] = { absl::string_view kBweExtensionUris[] = {
TransportSequenceNumber::kUri, TransportSequenceNumberV2::kUri, TransportSequenceNumber::Uri(), TransportSequenceNumberV2::Uri(),
AbsoluteSendTime::kUri, TransmissionOffset::kUri}; AbsoluteSendTime::Uri(), TransmissionOffset::Uri()};
const int kExtensionsId = 7; const int kExtensionsId = 7;
for (bool sending_media : kSendingMediaStats) { for (bool sending_media : kSendingMediaStats) {

View file

@ -207,7 +207,7 @@ class RtpSenderVideoTest : public ::testing::TestWithParam<bool> {
TEST_P(RtpSenderVideoTest, KeyFrameHasCVO) { TEST_P(RtpSenderVideoTest, KeyFrameHasCVO) {
uint8_t kFrame[kMaxPacketLength]; uint8_t kFrame[kMaxPacketLength];
rtp_module_->RegisterRtpHeaderExtension(VideoOrientation::kUri, rtp_module_->RegisterRtpHeaderExtension(VideoOrientation::Uri(),
kVideoRotationExtensionId); kVideoRotationExtensionId);
RTPVideoHeader hdr; RTPVideoHeader hdr;
@ -227,7 +227,7 @@ TEST_P(RtpSenderVideoTest, TimingFrameHasPacketizationTimstampSet) {
const int64_t kPacketizationTimeMs = 100; const int64_t kPacketizationTimeMs = 100;
const int64_t kEncodeStartDeltaMs = 10; const int64_t kEncodeStartDeltaMs = 10;
const int64_t kEncodeFinishDeltaMs = 50; const int64_t kEncodeFinishDeltaMs = 50;
rtp_module_->RegisterRtpHeaderExtension(VideoTimingExtension::kUri, rtp_module_->RegisterRtpHeaderExtension(VideoTimingExtension::Uri(),
kVideoTimingExtensionId); kVideoTimingExtensionId);
const int64_t kCaptureTimestamp = fake_clock_.TimeInMilliseconds(); const int64_t kCaptureTimestamp = fake_clock_.TimeInMilliseconds();
@ -252,7 +252,7 @@ TEST_P(RtpSenderVideoTest, TimingFrameHasPacketizationTimstampSet) {
TEST_P(RtpSenderVideoTest, DeltaFrameHasCVOWhenChanged) { TEST_P(RtpSenderVideoTest, DeltaFrameHasCVOWhenChanged) {
uint8_t kFrame[kMaxPacketLength]; uint8_t kFrame[kMaxPacketLength];
rtp_module_->RegisterRtpHeaderExtension(VideoOrientation::kUri, rtp_module_->RegisterRtpHeaderExtension(VideoOrientation::Uri(),
kVideoRotationExtensionId); kVideoRotationExtensionId);
RTPVideoHeader hdr; RTPVideoHeader hdr;
@ -276,7 +276,7 @@ TEST_P(RtpSenderVideoTest, DeltaFrameHasCVOWhenChanged) {
TEST_P(RtpSenderVideoTest, DeltaFrameHasCVOWhenNonZero) { TEST_P(RtpSenderVideoTest, DeltaFrameHasCVOWhenNonZero) {
uint8_t kFrame[kMaxPacketLength]; uint8_t kFrame[kMaxPacketLength];
rtp_module_->RegisterRtpHeaderExtension(VideoOrientation::kUri, rtp_module_->RegisterRtpHeaderExtension(VideoOrientation::Uri(),
kVideoRotationExtensionId); kVideoRotationExtensionId);
RTPVideoHeader hdr; RTPVideoHeader hdr;
@ -508,7 +508,7 @@ TEST_P(RtpSenderVideoTest, SendsDependencyDescriptorWhenVideoStructureIsSet) {
const int64_t kFrameId = 100000; const int64_t kFrameId = 100000;
uint8_t kFrame[100]; uint8_t kFrame[100];
rtp_module_->RegisterRtpHeaderExtension( rtp_module_->RegisterRtpHeaderExtension(
RtpDependencyDescriptorExtension::kUri, kDependencyDescriptorId); RtpDependencyDescriptorExtension::Uri(), kDependencyDescriptorId);
FrameDependencyStructure video_structure; FrameDependencyStructure video_structure;
video_structure.num_decode_targets = 2; video_structure.num_decode_targets = 2;
video_structure.templates = { video_structure.templates = {
@ -577,7 +577,7 @@ TEST_P(RtpSenderVideoTest,
const int64_t kFrameId = 100000; const int64_t kFrameId = 100000;
uint8_t kFrame[100]; uint8_t kFrame[100];
rtp_module_->RegisterRtpHeaderExtension( rtp_module_->RegisterRtpHeaderExtension(
RtpDependencyDescriptorExtension::kUri, kDependencyDescriptorId); RtpDependencyDescriptorExtension::Uri(), kDependencyDescriptorId);
rtp_module_->SetExtmapAllowMixed(false); rtp_module_->SetExtmapAllowMixed(false);
FrameDependencyStructure video_structure; FrameDependencyStructure video_structure;
video_structure.num_decode_targets = 2; video_structure.num_decode_targets = 2;
@ -630,7 +630,7 @@ TEST_P(RtpSenderVideoTest, PropagatesChainDiffsIntoDependencyDescriptor) {
const int64_t kFrameId = 100000; const int64_t kFrameId = 100000;
uint8_t kFrame[100]; uint8_t kFrame[100];
rtp_module_->RegisterRtpHeaderExtension( rtp_module_->RegisterRtpHeaderExtension(
RtpDependencyDescriptorExtension::kUri, kDependencyDescriptorId); RtpDependencyDescriptorExtension::Uri(), kDependencyDescriptorId);
FrameDependencyStructure video_structure; FrameDependencyStructure video_structure;
video_structure.num_decode_targets = 2; video_structure.num_decode_targets = 2;
video_structure.num_chains = 1; video_structure.num_chains = 1;
@ -664,7 +664,7 @@ TEST_P(RtpSenderVideoTest,
const int64_t kFrameId = 100000; const int64_t kFrameId = 100000;
uint8_t kFrame[100]; uint8_t kFrame[100];
rtp_module_->RegisterRtpHeaderExtension( rtp_module_->RegisterRtpHeaderExtension(
RtpDependencyDescriptorExtension::kUri, kDependencyDescriptorId); RtpDependencyDescriptorExtension::Uri(), kDependencyDescriptorId);
FrameDependencyStructure video_structure; FrameDependencyStructure video_structure;
video_structure.num_decode_targets = 2; video_structure.num_decode_targets = 2;
video_structure.num_chains = 1; video_structure.num_chains = 1;
@ -698,7 +698,7 @@ TEST_P(RtpSenderVideoTest,
const int64_t kFrameId = 100000; const int64_t kFrameId = 100000;
uint8_t kFrame[100]; uint8_t kFrame[100];
rtp_module_->RegisterRtpHeaderExtension( rtp_module_->RegisterRtpHeaderExtension(
RtpDependencyDescriptorExtension::kUri, kDependencyDescriptorId); RtpDependencyDescriptorExtension::Uri(), kDependencyDescriptorId);
FrameDependencyStructure video_structure1; FrameDependencyStructure video_structure1;
video_structure1.num_decode_targets = 2; video_structure1.num_decode_targets = 2;
video_structure1.templates = { video_structure1.templates = {
@ -773,7 +773,7 @@ TEST_P(RtpSenderVideoTest,
uint8_t kFrame[kFrameSize] = {1, 2, 3, 4}; uint8_t kFrame[kFrameSize] = {1, 2, 3, 4};
rtp_module_->RegisterRtpHeaderExtension( rtp_module_->RegisterRtpHeaderExtension(
RtpDependencyDescriptorExtension::kUri, kDependencyDescriptorId); RtpDependencyDescriptorExtension::Uri(), kDependencyDescriptorId);
rtc::scoped_refptr<MockFrameEncryptor> encryptor( rtc::scoped_refptr<MockFrameEncryptor> encryptor(
new rtc::RefCountedObject<NiceMock<MockFrameEncryptor>>); new rtc::RefCountedObject<NiceMock<MockFrameEncryptor>>);
ON_CALL(*encryptor, GetMaxCiphertextByteSize).WillByDefault(ReturnArg<1>()); ON_CALL(*encryptor, GetMaxCiphertextByteSize).WillByDefault(ReturnArg<1>());
@ -815,7 +815,7 @@ TEST_P(RtpSenderVideoTest, PopulateGenericFrameDescriptor) {
const int64_t kFrameId = 100000; const int64_t kFrameId = 100000;
uint8_t kFrame[100]; uint8_t kFrame[100];
rtp_module_->RegisterRtpHeaderExtension( rtp_module_->RegisterRtpHeaderExtension(
RtpGenericFrameDescriptorExtension00::kUri, kGenericDescriptorId); RtpGenericFrameDescriptorExtension00::Uri(), kGenericDescriptorId);
RTPVideoHeader hdr; RTPVideoHeader hdr;
RTPVideoHeader::GenericDescriptorInfo& generic = hdr.generic.emplace(); RTPVideoHeader::GenericDescriptorInfo& generic = hdr.generic.emplace();
@ -847,7 +847,7 @@ void RtpSenderVideoTest::
uint8_t kFrame[kFrameSize]; uint8_t kFrame[kFrameSize];
rtp_module_->RegisterRtpHeaderExtension( rtp_module_->RegisterRtpHeaderExtension(
RtpGenericFrameDescriptorExtension00::kUri, kGenericDescriptorId); RtpGenericFrameDescriptorExtension00::Uri(), kGenericDescriptorId);
RTPVideoHeader hdr; RTPVideoHeader hdr;
hdr.codec = kVideoCodecVP8; hdr.codec = kVideoCodecVP8;
@ -882,7 +882,7 @@ TEST_P(RtpSenderVideoTest, VideoLayersAllocationWithResolutionSentOnKeyFrames) {
const size_t kFrameSize = 100; const size_t kFrameSize = 100;
uint8_t kFrame[kFrameSize]; uint8_t kFrame[kFrameSize];
rtp_module_->RegisterRtpHeaderExtension( rtp_module_->RegisterRtpHeaderExtension(
RtpVideoLayersAllocationExtension::kUri, RtpVideoLayersAllocationExtension::Uri(),
kVideoLayersAllocationExtensionId); kVideoLayersAllocationExtensionId);
VideoLayersAllocation allocation; VideoLayersAllocation allocation;
@ -919,7 +919,7 @@ TEST_P(RtpSenderVideoTest,
const size_t kFrameSize = 100; const size_t kFrameSize = 100;
uint8_t kFrame[kFrameSize]; uint8_t kFrame[kFrameSize];
rtp_module_->RegisterRtpHeaderExtension( rtp_module_->RegisterRtpHeaderExtension(
RtpVideoLayersAllocationExtension::kUri, RtpVideoLayersAllocationExtension::Uri(),
kVideoLayersAllocationExtensionId); kVideoLayersAllocationExtensionId);
VideoLayersAllocation allocation; VideoLayersAllocation allocation;
@ -967,7 +967,7 @@ TEST_P(RtpSenderVideoTest,
const size_t kFrameSize = 100; const size_t kFrameSize = 100;
uint8_t kFrame[kFrameSize]; uint8_t kFrame[kFrameSize];
rtp_module_->RegisterRtpHeaderExtension( rtp_module_->RegisterRtpHeaderExtension(
RtpVideoLayersAllocationExtension::kUri, RtpVideoLayersAllocationExtension::Uri(),
kVideoLayersAllocationExtensionId); kVideoLayersAllocationExtensionId);
VideoLayersAllocation allocation; VideoLayersAllocation allocation;
@ -1012,7 +1012,7 @@ TEST_P(RtpSenderVideoTest, VideoLayersAllocationSentOnDeltaFramesOnlyOnUpdate) {
const size_t kFrameSize = 100; const size_t kFrameSize = 100;
uint8_t kFrame[kFrameSize]; uint8_t kFrame[kFrameSize];
rtp_module_->RegisterRtpHeaderExtension( rtp_module_->RegisterRtpHeaderExtension(
RtpVideoLayersAllocationExtension::kUri, RtpVideoLayersAllocationExtension::Uri(),
kVideoLayersAllocationExtensionId); kVideoLayersAllocationExtensionId);
VideoLayersAllocation allocation; VideoLayersAllocation allocation;
@ -1054,7 +1054,7 @@ TEST_P(RtpSenderVideoTest, VideoLayersAllocationNotSentOnHigherTemporalLayers) {
const size_t kFrameSize = 100; const size_t kFrameSize = 100;
uint8_t kFrame[kFrameSize]; uint8_t kFrame[kFrameSize];
rtp_module_->RegisterRtpHeaderExtension( rtp_module_->RegisterRtpHeaderExtension(
RtpVideoLayersAllocationExtension::kUri, RtpVideoLayersAllocationExtension::Uri(),
kVideoLayersAllocationExtensionId); kVideoLayersAllocationExtensionId);
VideoLayersAllocation allocation; VideoLayersAllocation allocation;
@ -1089,7 +1089,7 @@ TEST_P(RtpSenderVideoTest, VideoLayersAllocationNotSentOnHigherTemporalLayers) {
TEST_P(RtpSenderVideoTest, AbsoluteCaptureTime) { TEST_P(RtpSenderVideoTest, AbsoluteCaptureTime) {
constexpr int64_t kAbsoluteCaptureTimestampMs = 12345678; constexpr int64_t kAbsoluteCaptureTimestampMs = 12345678;
uint8_t kFrame[kMaxPacketLength]; uint8_t kFrame[kMaxPacketLength];
rtp_module_->RegisterRtpHeaderExtension(AbsoluteCaptureTimeExtension::kUri, rtp_module_->RegisterRtpHeaderExtension(AbsoluteCaptureTimeExtension::Uri(),
kAbsoluteCaptureTimeExtensionId); kAbsoluteCaptureTimeExtensionId);
RTPVideoHeader hdr; RTPVideoHeader hdr;
@ -1127,7 +1127,7 @@ TEST_P(RtpSenderVideoTest, AbsoluteCaptureTimeWithCaptureClockOffset) {
constexpr int64_t kAbsoluteCaptureTimestampMs = 12345678; constexpr int64_t kAbsoluteCaptureTimestampMs = 12345678;
uint8_t kFrame[kMaxPacketLength]; uint8_t kFrame[kMaxPacketLength];
rtp_module_->RegisterRtpHeaderExtension(AbsoluteCaptureTimeExtension::kUri, rtp_module_->RegisterRtpHeaderExtension(AbsoluteCaptureTimeExtension::Uri(),
kAbsoluteCaptureTimeExtensionId); kAbsoluteCaptureTimeExtensionId);
RTPVideoHeader hdr; RTPVideoHeader hdr;
@ -1162,7 +1162,7 @@ TEST_P(RtpSenderVideoTest, PopulatesPlayoutDelay) {
// Single packet frames. // Single packet frames.
constexpr size_t kPacketSize = 123; constexpr size_t kPacketSize = 123;
uint8_t kFrame[kPacketSize]; uint8_t kFrame[kPacketSize];
rtp_module_->RegisterRtpHeaderExtension(PlayoutDelayLimits::kUri, rtp_module_->RegisterRtpHeaderExtension(PlayoutDelayLimits::Uri(),
kPlayoutDelayExtensionId); kPlayoutDelayExtensionId);
const VideoPlayoutDelay kExpectedDelay = {10, 20}; const VideoPlayoutDelay kExpectedDelay = {10, 20};

View file

@ -11,6 +11,9 @@
#ifndef MODULES_RTP_RTCP_SOURCE_RTP_VIDEO_LAYERS_ALLOCATION_EXTENSION_H_ #ifndef MODULES_RTP_RTCP_SOURCE_RTP_VIDEO_LAYERS_ALLOCATION_EXTENSION_H_
#define MODULES_RTP_RTCP_SOURCE_RTP_VIDEO_LAYERS_ALLOCATION_EXTENSION_H_ #define MODULES_RTP_RTCP_SOURCE_RTP_VIDEO_LAYERS_ALLOCATION_EXTENSION_H_
#include "absl/base/attributes.h"
#include "absl/strings/string_view.h"
#include "api/rtp_parameters.h"
#include "api/video/video_layers_allocation.h" #include "api/video/video_layers_allocation.h"
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
@ -22,8 +25,12 @@ class RtpVideoLayersAllocationExtension {
public: public:
using value_type = VideoLayersAllocation; using value_type = VideoLayersAllocation;
static constexpr RTPExtensionType kId = kRtpExtensionVideoLayersAllocation; static constexpr RTPExtensionType kId = kRtpExtensionVideoLayersAllocation;
static constexpr const char kUri[] = static constexpr ABSL_DEPRECATED("Use Uri()") const char kUri[] =
"http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00"; "http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00";
static constexpr absl::string_view Uri() {
return RtpExtension::kVideoLayersAllocationUri;
}
static bool Parse(rtc::ArrayView<const uint8_t> data, static bool Parse(rtc::ArrayView<const uint8_t> data,
VideoLayersAllocation* allocation); VideoLayersAllocation* allocation);
static size_t ValueSize(const VideoLayersAllocation& allocation); static size_t ValueSize(const VideoLayersAllocation& allocation);