Rename AudioLevel to AudioLevelExtension in rtp_header_extensions.h

To prepare for a new AudioLevel struct to be added to the public WebRTC API, rename the internal RTP extension reader/writer class to AudioLevelExtension. A temporary alias is provided to avoid breaking downstream projects.

Bug: webrtc:15788
Change-Id: Ie231668f25932fd9b539229114128b1d0b949a6e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/339887
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#41787}
This commit is contained in:
Joachim Reiersen 2024-02-22 11:26:04 -08:00 committed by WebRTC LUCI CQ
parent b2f827cb79
commit 4a97488714
18 changed files with 94 additions and 73 deletions

View file

@ -109,7 +109,7 @@ TEST_F(AudioSendStreamCallTest, SupportsAudioLevel) {
class AudioLevelObserver : public AudioSendTest {
public:
AudioLevelObserver() : AudioSendTest() {
extensions_.Register<AudioLevel>(kAudioLevelExtensionId);
extensions_.Register<AudioLevelExtension>(kAudioLevelExtensionId);
}
Action OnSendRtp(rtc::ArrayView<const uint8_t> packet) override {
@ -118,7 +118,8 @@ TEST_F(AudioSendStreamCallTest, SupportsAudioLevel) {
uint8_t audio_level = 0;
bool voice = false;
EXPECT_TRUE(rtp_packet.GetExtension<AudioLevel>(&voice, &audio_level));
EXPECT_TRUE(
rtp_packet.GetExtension<AudioLevelExtension>(&voice, &audio_level));
if (audio_level != 0) {
// Wait for at least one packet with a non-zero level.
observation_complete_.Set();

View file

@ -643,9 +643,9 @@ void ChannelSend::SetSendAudioLevelIndicationStatus(bool enable, int id) {
RTC_DCHECK_RUN_ON(&worker_thread_checker_);
include_audio_level_indication_.store(enable);
if (enable) {
rtp_rtcp_->RegisterRtpHeaderExtension(AudioLevel::Uri(), id);
rtp_rtcp_->RegisterRtpHeaderExtension(AudioLevelExtension::Uri(), id);
} else {
rtp_rtcp_->DeregisterSendRtpHeaderExtension(AudioLevel::Uri());
rtp_rtcp_->DeregisterSendRtpHeaderExtension(AudioLevelExtension::Uri());
}
}

View file

@ -449,8 +449,8 @@ void RtcEventLogEncoderNewFormat::EncodeRtpPacket(const Batch& batch,
{
bool voice_activity;
uint8_t audio_level;
if (base_event->template GetExtension<AudioLevel>(&voice_activity,
&audio_level)) {
if (base_event->template GetExtension<AudioLevelExtension>(&voice_activity,
&audio_level)) {
RTC_DCHECK_LE(audio_level, 0x7Fu);
base_audio_level = audio_level;
proto_batch->set_audio_level(audio_level);
@ -646,8 +646,8 @@ void RtcEventLogEncoderNewFormat::EncodeRtpPacket(const Batch& batch,
const EventType* event = batch[i + 1];
bool voice_activity;
uint8_t audio_level;
if (event->template GetExtension<AudioLevel>(&voice_activity,
&audio_level)) {
if (event->template GetExtension<AudioLevelExtension>(&voice_activity,
&audio_level)) {
RTC_DCHECK_LE(audio_level, 0x7Fu);
values[i] = audio_level;
} else {
@ -664,8 +664,8 @@ void RtcEventLogEncoderNewFormat::EncodeRtpPacket(const Batch& batch,
const EventType* event = batch[i + 1];
bool voice_activity;
uint8_t audio_level;
if (event->template GetExtension<AudioLevel>(&voice_activity,
&audio_level)) {
if (event->template GetExtension<AudioLevelExtension>(&voice_activity,
&audio_level)) {
RTC_DCHECK_LE(audio_level, 0x7Fu);
values[i] = voice_activity;
} else {

View file

@ -136,7 +136,7 @@ void ConvertRtpPacket(
reconstructed_packet.SetExtension<webrtc::TransportSequenceNumber>(
incoming.rtp.header.extension.transportSequenceNumber);
if (incoming.rtp.header.extension.hasAudioLevel)
reconstructed_packet.SetExtension<webrtc::AudioLevel>(
reconstructed_packet.SetExtension<webrtc::AudioLevelExtension>(
incoming.rtp.header.extension.voiceActivity,
incoming.rtp.header.extension.audioLevel);
if (incoming.rtp.header.extension.hasVideoRotation)

View file

@ -1036,7 +1036,7 @@ ParsedRtcEventLog::GetDefaultHeaderExtensionMap() {
constexpr int kDependencyDescriptorDefaultId = 9;
webrtc::RtpHeaderExtensionMap default_map(/*extmap_allow_mixed=*/true);
default_map.Register<AudioLevel>(kAudioLevelDefaultId);
default_map.Register<AudioLevelExtension>(kAudioLevelDefaultId);
default_map.Register<TransmissionOffset>(kTimestampOffsetDefaultId);
default_map.Register<AbsoluteSendTime>(kAbsSendTimeDefaultId);
default_map.Register<VideoOrientation>(kVideoRotationDefaultId);

View file

@ -616,9 +616,10 @@ void EventGenerator::RandomizeRtpPacket(
rtp_packet->SetExtension<TransmissionOffset>(prng_.Rand(0x00ffffff));
}
if (extension_map.IsRegistered(AudioLevel::kId) &&
if (extension_map.IsRegistered(AudioLevelExtension::kId) &&
(all_configured_exts || prng_.Rand<bool>())) {
rtp_packet->SetExtension<AudioLevel>(prng_.Rand<bool>(), prng_.Rand(127));
rtp_packet->SetExtension<AudioLevelExtension>(prng_.Rand<bool>(),
prng_.Rand(127));
}
if (extension_map.IsRegistered(AbsoluteSendTime::kId) &&
@ -728,8 +729,9 @@ RtpHeaderExtensionMap EventGenerator::NewRtpHeaderExtensionMap(
return !absl::c_linear_search(excluded_extensions, type);
};
if (not_excluded(AudioLevel::kId) && (configure_all || prng_.Rand<bool>())) {
extension_map.Register<AudioLevel>(id[0]);
if (not_excluded(AudioLevelExtension::kId) &&
(configure_all || prng_.Rand<bool>())) {
extension_map.Register<AudioLevelExtension>(id[0]);
}
if (not_excluded(TransmissionOffset::kId) &&
(configure_all || prng_.Rand<bool>())) {
@ -1026,12 +1028,12 @@ void VerifyLoggedRtpHeader(const Event& original_header,
}
// AudioLevel header extension.
ASSERT_EQ(original_header.template HasExtension<AudioLevel>(),
ASSERT_EQ(original_header.template HasExtension<AudioLevelExtension>(),
logged_header.extension.hasAudioLevel);
if (logged_header.extension.hasAudioLevel) {
bool voice_activity;
uint8_t audio_level;
ASSERT_TRUE(original_header.template GetExtension<AudioLevel>(
ASSERT_TRUE(original_header.template GetExtension<AudioLevelExtension>(
&voice_activity, &audio_level));
EXPECT_EQ(voice_activity, logged_header.extension.voiceActivity);
EXPECT_EQ(audio_level, logged_header.extension.audioLevel);

View file

@ -1560,8 +1560,8 @@ TEST_P(WebRtcVoiceEngineTestFake, OnPacketReceivedIdentifiesExtensions) {
webrtc::RtpHeaderExtensionMap extension_map(parameters.extensions);
webrtc::RtpPacketReceived reference_packet(&extension_map);
constexpr uint8_t kAudioLevel = 123;
reference_packet.SetExtension<webrtc::AudioLevel>(/*voice_activity=*/true,
kAudioLevel);
reference_packet.SetExtension<webrtc::AudioLevelExtension>(
/*voice_activity=*/true, kAudioLevel);
// Create a packet without the extension map but with the same content.
webrtc::RtpPacketReceived received_packet;
ASSERT_TRUE(received_packet.Parse(reference_packet.Buffer()));
@ -1571,8 +1571,9 @@ TEST_P(WebRtcVoiceEngineTestFake, OnPacketReceivedIdentifiesExtensions) {
bool voice_activity;
uint8_t audio_level;
EXPECT_TRUE(call_.last_received_rtp_packet().GetExtension<webrtc::AudioLevel>(
&voice_activity, &audio_level));
EXPECT_TRUE(call_.last_received_rtp_packet()
.GetExtension<webrtc::AudioLevelExtension>(&voice_activity,
&audio_level));
EXPECT_EQ(audio_level, kAudioLevel);
}

View file

@ -34,7 +34,7 @@ constexpr ExtensionInfo CreateExtensionInfo() {
constexpr ExtensionInfo kExtensions[] = {
CreateExtensionInfo<TransmissionOffset>(),
CreateExtensionInfo<AudioLevel>(),
CreateExtensionInfo<AudioLevelExtension>(),
CreateExtensionInfo<CsrcAudioLevel>(),
CreateExtensionInfo<AbsoluteSendTime>(),
CreateExtensionInfo<AbsoluteCaptureTimeExtension>(),

View file

@ -85,8 +85,8 @@ TEST(RtpHeaderExtensionTest, NonUniqueId) {
RtpHeaderExtensionMap map;
EXPECT_TRUE(map.Register<TransmissionOffset>(3));
EXPECT_FALSE(map.Register<AudioLevel>(3));
EXPECT_TRUE(map.Register<AudioLevel>(4));
EXPECT_FALSE(map.Register<AudioLevelExtension>(3));
EXPECT_TRUE(map.Register<AudioLevelExtension>(4));
}
TEST(RtpHeaderExtensionTest, GetType) {

View file

@ -160,9 +160,9 @@ bool AbsoluteCaptureTimeExtension::Write(rtc::ArrayView<uint8_t> data,
// | ID | len=1 |V| level |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Sample Audio Level Encoding Using the Two-Byte Header Format
bool AudioLevel::Parse(rtc::ArrayView<const uint8_t> data,
bool* voice_activity,
uint8_t* audio_level) {
bool AudioLevelExtension::Parse(rtc::ArrayView<const uint8_t> data,
bool* voice_activity,
uint8_t* audio_level) {
// One-byte and two-byte format share the same data definition.
if (data.size() != 1)
return false;
@ -171,9 +171,9 @@ bool AudioLevel::Parse(rtc::ArrayView<const uint8_t> data,
return true;
}
bool AudioLevel::Write(rtc::ArrayView<uint8_t> data,
bool voice_activity,
uint8_t audio_level) {
bool AudioLevelExtension::Write(rtc::ArrayView<uint8_t> data,
bool voice_activity,
uint8_t audio_level) {
// One-byte and two-byte format share the same data definition.
RTC_DCHECK_EQ(data.size(), 1);
RTC_CHECK_LE(audio_level, 0x7f);

View file

@ -28,6 +28,13 @@
#include "api/video/video_timing.h"
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
// This file contains class definitions for reading/writing each RTP header
// extension. Each class must be defined such that it is compatible with being
// an argument to the templated RtpPacket::GetExtension and
// RtpPacketToSend::SetExtension methods. New header extensions must have class
// names ending with "Extension", for the purpose of avoiding collisions with
// RTP extension information exposed in the public API of WebRTC.
namespace webrtc {
class AbsoluteSendTime {
@ -75,7 +82,7 @@ class AbsoluteCaptureTimeExtension {
const AbsoluteCaptureTime& extension);
};
class AudioLevel {
class AudioLevelExtension {
public:
static constexpr RTPExtensionType kId = kRtpExtensionAudioLevel;
static constexpr uint8_t kValueSizeBytes = 1;
@ -93,6 +100,9 @@ class AudioLevel {
bool voice_activity,
uint8_t audio_level);
};
// TODO: bugs.webrtc.org/15788 - In two weeks remove this alias and put new
// meaning into AudioLevel class.
using AudioLevel [[deprecated]] = AudioLevelExtension;
class CsrcAudioLevel {
public:

View file

@ -61,7 +61,7 @@ void RtpPacketReceived::GetHeader(RTPHeader* header) const {
&header->extension.feedback_request) ||
GetExtension<TransportSequenceNumber>(
&header->extension.transportSequenceNumber);
header->extension.hasAudioLevel = GetExtension<AudioLevel>(
header->extension.hasAudioLevel = GetExtension<AudioLevelExtension>(
&header->extension.voiceActivity, &header->extension.audioLevel);
header->extension.hasVideoRotation =
GetExtension<VideoOrientation>(&header->extension.videoRotation);

View file

@ -230,14 +230,14 @@ TEST(RtpPacketTest, CreateWithExtension) {
TEST(RtpPacketTest, CreateWith2Extensions) {
RtpPacketToSend::ExtensionManager extensions;
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
RtpPacketToSend packet(&extensions);
packet.SetPayloadType(kPayloadType);
packet.SetSequenceNumber(kSeqNum);
packet.SetTimestamp(kTimestamp);
packet.SetSsrc(kSsrc);
packet.SetExtension<TransmissionOffset>(kTimeOffset);
packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel);
packet.SetExtension<AudioLevelExtension>(kVoiceActive, kAudioLevel);
EXPECT_THAT(kPacketWithTOAndAL,
ElementsAreArray(packet.data(), packet.size()));
}
@ -245,7 +245,7 @@ TEST(RtpPacketTest, CreateWith2Extensions) {
TEST(RtpPacketTest, CreateWithTwoByteHeaderExtensionFirst) {
RtpPacketToSend::ExtensionManager extensions(/*extmap_allow_mixed=*/true);
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
extensions.Register<PlayoutDelayLimits>(kTwoByteExtensionId);
RtpPacketToSend packet(&extensions);
packet.SetPayloadType(kPayloadType);
@ -257,7 +257,7 @@ TEST(RtpPacketTest, CreateWithTwoByteHeaderExtensionFirst) {
TimeDelta::Millis(340));
ASSERT_TRUE(packet.SetExtension<PlayoutDelayLimits>(playout_delay));
packet.SetExtension<TransmissionOffset>(kTimeOffset);
packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel);
packet.SetExtension<AudioLevelExtension>(kVoiceActive, kAudioLevel);
EXPECT_THAT(kPacketWithTwoByteExtensionIdFirst,
ElementsAreArray(packet.data(), packet.size()));
}
@ -266,7 +266,7 @@ TEST(RtpPacketTest, CreateWithTwoByteHeaderExtensionLast) {
// This test will trigger RtpPacket::PromoteToTwoByteHeaderExtension().
RtpPacketToSend::ExtensionManager extensions(/*extmap_allow_mixed=*/true);
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
extensions.Register<PlayoutDelayLimits>(kTwoByteExtensionId);
RtpPacketToSend packet(&extensions);
packet.SetPayloadType(kPayloadType);
@ -274,7 +274,7 @@ TEST(RtpPacketTest, CreateWithTwoByteHeaderExtensionLast) {
packet.SetTimestamp(kTimestamp);
packet.SetSsrc(kSsrc);
packet.SetExtension<TransmissionOffset>(kTimeOffset);
packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel);
packet.SetExtension<AudioLevelExtension>(kVoiceActive, kAudioLevel);
EXPECT_THAT(kPacketWithTOAndAL,
ElementsAreArray(packet.data(), packet.size()));
// Set extension that requires two-byte header.
@ -331,18 +331,20 @@ TEST(RtpPacketTest, TryToCreateWithLongMid) {
TEST(RtpPacketTest, TryToCreateTwoByteHeaderNotSupported) {
RtpPacketToSend::ExtensionManager extensions;
extensions.Register<AudioLevel>(kTwoByteExtensionId);
extensions.Register<AudioLevelExtension>(kTwoByteExtensionId);
RtpPacketToSend packet(&extensions);
// Set extension that requires two-byte header.
EXPECT_FALSE(packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel));
EXPECT_FALSE(
packet.SetExtension<AudioLevelExtension>(kVoiceActive, kAudioLevel));
}
TEST(RtpPacketTest, CreateTwoByteHeaderSupportedIfExtmapAllowMixed) {
RtpPacketToSend::ExtensionManager extensions(/*extmap_allow_mixed=*/true);
extensions.Register<AudioLevel>(kTwoByteExtensionId);
extensions.Register<AudioLevelExtension>(kTwoByteExtensionId);
RtpPacketToSend packet(&extensions);
// Set extension that requires two-byte header.
EXPECT_TRUE(packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel));
EXPECT_TRUE(
packet.SetExtension<AudioLevelExtension>(kVoiceActive, kAudioLevel));
}
TEST(RtpPacketTest, CreateWithMaxSizeHeaderExtension) {
@ -401,13 +403,14 @@ TEST(RtpPacketTest, SetReservedExtensionsAfterPayload) {
const size_t kPayloadSize = 4;
RtpPacketToSend::ExtensionManager extensions;
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
RtpPacketToSend packet(&extensions);
EXPECT_TRUE(packet.ReserveExtension<TransmissionOffset>());
packet.SetPayloadSize(kPayloadSize);
// Can't set extension after payload.
EXPECT_FALSE(packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel));
EXPECT_FALSE(
packet.SetExtension<AudioLevelExtension>(kVoiceActive, kAudioLevel));
// Unless reserved.
EXPECT_TRUE(packet.SetExtension<TransmissionOffset>(kTimeOffset));
}
@ -679,7 +682,7 @@ TEST(RtpPacketTest, ParseWithOverSizedExtension) {
TEST(RtpPacketTest, ParseWith2Extensions) {
RtpPacketToSend::ExtensionManager extensions;
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
RtpPacketReceived packet(&extensions);
EXPECT_TRUE(packet.Parse(kPacketWithTOAndAL, sizeof(kPacketWithTOAndAL)));
int32_t time_offset;
@ -687,7 +690,8 @@ TEST(RtpPacketTest, ParseWith2Extensions) {
EXPECT_EQ(kTimeOffset, time_offset);
bool voice_active;
uint8_t audio_level;
EXPECT_TRUE(packet.GetExtension<AudioLevel>(&voice_active, &audio_level));
EXPECT_TRUE(
packet.GetExtension<AudioLevelExtension>(&voice_active, &audio_level));
EXPECT_EQ(kVoiceActive, voice_active);
EXPECT_EQ(kAudioLevel, audio_level);
}
@ -695,22 +699,22 @@ TEST(RtpPacketTest, ParseWith2Extensions) {
TEST(RtpPacketTest, ParseSecondPacketWithFewerExtensions) {
RtpPacketToSend::ExtensionManager extensions;
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
RtpPacketReceived packet(&extensions);
EXPECT_TRUE(packet.Parse(kPacketWithTOAndAL, sizeof(kPacketWithTOAndAL)));
EXPECT_TRUE(packet.HasExtension<TransmissionOffset>());
EXPECT_TRUE(packet.HasExtension<AudioLevel>());
EXPECT_TRUE(packet.HasExtension<AudioLevelExtension>());
// Second packet without audio level.
EXPECT_TRUE(packet.Parse(kPacketWithTO, sizeof(kPacketWithTO)));
EXPECT_TRUE(packet.HasExtension<TransmissionOffset>());
EXPECT_FALSE(packet.HasExtension<AudioLevel>());
EXPECT_FALSE(packet.HasExtension<AudioLevelExtension>());
}
TEST(RtpPacketTest, ParseWith2ExtensionsInvalidPadding) {
RtpPacketToSend::ExtensionManager extensions;
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
RtpPacketReceived packet(&extensions);
EXPECT_TRUE(packet.Parse(kPacketWithTOAndALInvalidPadding,
sizeof(kPacketWithTOAndALInvalidPadding)));
@ -719,13 +723,14 @@ TEST(RtpPacketTest, ParseWith2ExtensionsInvalidPadding) {
EXPECT_EQ(kTimeOffset, time_offset);
bool voice_active;
uint8_t audio_level;
EXPECT_FALSE(packet.GetExtension<AudioLevel>(&voice_active, &audio_level));
EXPECT_FALSE(
packet.GetExtension<AudioLevelExtension>(&voice_active, &audio_level));
}
TEST(RtpPacketTest, ParseWith2ExtensionsReservedExtensionId) {
RtpPacketToSend::ExtensionManager extensions;
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
RtpPacketReceived packet(&extensions);
EXPECT_TRUE(packet.Parse(kPacketWithTOAndALReservedExtensionId,
sizeof(kPacketWithTOAndALReservedExtensionId)));
@ -734,7 +739,8 @@ TEST(RtpPacketTest, ParseWith2ExtensionsReservedExtensionId) {
EXPECT_EQ(kTimeOffset, time_offset);
bool voice_active;
uint8_t audio_level;
EXPECT_FALSE(packet.GetExtension<AudioLevel>(&voice_active, &audio_level));
EXPECT_FALSE(
packet.GetExtension<AudioLevelExtension>(&voice_active, &audio_level));
}
TEST(RtpPacketTest, ParseWithAllFeatures) {
@ -778,7 +784,7 @@ TEST(RtpPacketTest, ParseLongTwoByteHeaderExtension) {
TEST(RtpPacketTest, ParseTwoByteHeaderExtensionWithPadding) {
RtpPacketToSend::ExtensionManager extensions;
extensions.Register<TransmissionOffset>(kTwoByteExtensionId);
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
RtpPacketReceived packet(&extensions);
EXPECT_TRUE(
packet.Parse(kPacketWithTwoByteHeaderExtensionWithPadding,
@ -788,7 +794,8 @@ TEST(RtpPacketTest, ParseTwoByteHeaderExtensionWithPadding) {
EXPECT_EQ(kTimeOffset, time_offset);
bool voice_active;
uint8_t audio_level;
EXPECT_TRUE(packet.GetExtension<AudioLevel>(&voice_active, &audio_level));
EXPECT_TRUE(
packet.GetExtension<AudioLevelExtension>(&voice_active, &audio_level));
EXPECT_EQ(kVoiceActive, voice_active);
EXPECT_EQ(kAudioLevel, audio_level);
}
@ -1187,7 +1194,7 @@ TEST(RtpPacketTest, ReservedExtensionsCountedAsSetExtension) {
// Register two extensions.
RtpPacketToSend::ExtensionManager extensions;
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
RtpPacketReceived packet(&extensions);
@ -1199,7 +1206,7 @@ TEST(RtpPacketTest, ReservedExtensionsCountedAsSetExtension) {
// Only the extension that is both registered and reserved matches
// IsExtensionReserved().
EXPECT_FALSE(packet.HasExtension<VideoContentTypeExtension>());
EXPECT_FALSE(packet.HasExtension<AudioLevel>());
EXPECT_FALSE(packet.HasExtension<AudioLevelExtension>());
EXPECT_TRUE(packet.HasExtension<TransmissionOffset>());
}
@ -1207,14 +1214,14 @@ TEST(RtpPacketTest, ReservedExtensionsCountedAsSetExtension) {
TEST(RtpPacketTest, RemoveMultipleExtensions) {
RtpPacketToSend::ExtensionManager extensions;
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
RtpPacketToSend packet(&extensions);
packet.SetPayloadType(kPayloadType);
packet.SetSequenceNumber(kSeqNum);
packet.SetTimestamp(kTimestamp);
packet.SetSsrc(kSsrc);
packet.SetExtension<TransmissionOffset>(kTimeOffset);
packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel);
packet.SetExtension<AudioLevelExtension>(kVoiceActive, kAudioLevel);
EXPECT_THAT(kPacketWithTOAndAL,
ElementsAreArray(packet.data(), packet.size()));
@ -1235,21 +1242,21 @@ TEST(RtpPacketTest, RemoveMultipleExtensions) {
TEST(RtpPacketTest, RemoveExtensionPreservesOtherUnregisteredExtensions) {
RtpPacketToSend::ExtensionManager extensions;
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
RtpPacketToSend packet(&extensions);
packet.SetPayloadType(kPayloadType);
packet.SetSequenceNumber(kSeqNum);
packet.SetTimestamp(kTimestamp);
packet.SetSsrc(kSsrc);
packet.SetExtension<TransmissionOffset>(kTimeOffset);
packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel);
packet.SetExtension<AudioLevelExtension>(kVoiceActive, kAudioLevel);
EXPECT_THAT(kPacketWithTOAndAL,
ElementsAreArray(packet.data(), packet.size()));
// "Unregister" kRtpExtensionTransmissionTimeOffset.
RtpPacketToSend::ExtensionManager extensions1;
extensions1.Register<AudioLevel>(kAudioLevelExtensionId);
extensions1.Register<AudioLevelExtension>(kAudioLevelExtensionId);
packet.IdentifyExtensions(extensions1);
// Make sure we can not delete extension which is set but not registered.
@ -1266,7 +1273,7 @@ TEST(RtpPacketTest, RemoveExtensionPreservesOtherUnregisteredExtensions) {
TEST(RtpPacketTest, RemoveExtensionFailure) {
RtpPacketToSend::ExtensionManager extensions;
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
RtpPacketToSend packet(&extensions);
packet.SetPayloadType(kPayloadType);
packet.SetSequenceNumber(kSeqNum);

View file

@ -89,7 +89,7 @@ constexpr RtpExtensionSize kVideoExtensionSizes[] = {
constexpr RtpExtensionSize kAudioExtensionSizes[] = {
CreateExtensionSize<AbsoluteSendTime>(),
CreateExtensionSize<AbsoluteCaptureTimeExtension>(),
CreateExtensionSize<AudioLevel>(),
CreateExtensionSize<AudioLevelExtension>(),
CreateExtensionSize<InbandComfortNoiseExtension>(),
CreateExtensionSize<TransmissionOffset>(),
CreateExtensionSize<TransportSequenceNumber>(),

View file

@ -261,7 +261,7 @@ bool RTPSenderAudio::SendAudio(const RtpAudioFrame& frame) {
packet->SetTimestamp(frame.rtp_timestamp);
packet->set_capture_time(clock_->CurrentTime());
// Set audio level extension, if included.
packet->SetExtension<AudioLevel>(
packet->SetExtension<AudioLevelExtension>(
frame.type == AudioFrameType::kAudioFrameSpeech,
frame.audio_level_dbov.value_or(127));

View file

@ -39,7 +39,7 @@ using ::testing::ElementsAreArray;
class LoopbackTransportTest : public webrtc::Transport {
public:
LoopbackTransportTest() {
receivers_extensions_.Register<AudioLevel>(kAudioLevelExtensionId);
receivers_extensions_.Register<AudioLevelExtension>(kAudioLevelExtensionId);
receivers_extensions_.Register<AbsoluteCaptureTimeExtension>(
kAbsoluteCaptureTimeExtensionId);
}
@ -102,7 +102,7 @@ TEST_F(RtpSenderAudioTest, SendAudio) {
TEST_F(RtpSenderAudioTest, SendAudioWithAudioLevelExtension) {
const uint8_t kAudioLevel = 0x5a;
rtp_module_->RegisterRtpHeaderExtension(AudioLevel::Uri(),
rtp_module_->RegisterRtpHeaderExtension(AudioLevelExtension::Uri(),
kAudioLevelExtensionId);
const char payload_name[] = "PAYLOAD_NAME";
@ -123,7 +123,7 @@ TEST_F(RtpSenderAudioTest, SendAudioWithAudioLevelExtension) {
// Verify AudioLevel extension.
bool voice_activity;
uint8_t audio_level;
EXPECT_TRUE(transport_.last_sent_packet().GetExtension<AudioLevel>(
EXPECT_TRUE(transport_.last_sent_packet().GetExtension<AudioLevelExtension>(
&voice_activity, &audio_level));
EXPECT_EQ(kAudioLevel, audio_level);
EXPECT_FALSE(voice_activity);

View file

@ -290,8 +290,8 @@ TEST_F(RtpSenderTest, AllocatePacketReserveExtensions) {
TransmissionOffset::Uri(), kTransmissionTimeOffsetExtensionId));
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
AbsoluteSendTime::Uri(), kAbsoluteSendTimeExtensionId));
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(AudioLevel::Uri(),
kAudioLevelExtensionId));
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
AudioLevelExtension::Uri(), kAudioLevelExtensionId));
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
TransportSequenceNumber::Uri(), kTransportSequenceNumberExtensionId));
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
@ -305,7 +305,7 @@ TEST_F(RtpSenderTest, AllocatePacketReserveExtensions) {
EXPECT_TRUE(packet->HasExtension<AbsoluteSendTime>());
EXPECT_TRUE(packet->HasExtension<TransportSequenceNumber>());
// Do not allocate media specific extensions.
EXPECT_FALSE(packet->HasExtension<AudioLevel>());
EXPECT_FALSE(packet->HasExtension<AudioLevelExtension>());
EXPECT_FALSE(packet->HasExtension<VideoOrientation>());
}

View file

@ -75,7 +75,7 @@ void FuzzOneInput(const uint8_t* data, size_t size) {
case kRtpExtensionAudioLevel:
bool voice_activity;
uint8_t audio_level;
packet.GetExtension<AudioLevel>(&voice_activity, &audio_level);
packet.GetExtension<AudioLevelExtension>(&voice_activity, &audio_level);
break;
case kRtpExtensionCsrcAudioLevel: {
std::vector<uint8_t> audio_levels;