mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-12 21:30:45 +01:00
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:
parent
b2f827cb79
commit
4a97488714
18 changed files with 94 additions and 73 deletions
|
@ -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();
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ constexpr ExtensionInfo CreateExtensionInfo() {
|
|||
|
||||
constexpr ExtensionInfo kExtensions[] = {
|
||||
CreateExtensionInfo<TransmissionOffset>(),
|
||||
CreateExtensionInfo<AudioLevel>(),
|
||||
CreateExtensionInfo<AudioLevelExtension>(),
|
||||
CreateExtensionInfo<CsrcAudioLevel>(),
|
||||
CreateExtensionInfo<AbsoluteSendTime>(),
|
||||
CreateExtensionInfo<AbsoluteCaptureTimeExtension>(),
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -89,7 +89,7 @@ constexpr RtpExtensionSize kVideoExtensionSizes[] = {
|
|||
constexpr RtpExtensionSize kAudioExtensionSizes[] = {
|
||||
CreateExtensionSize<AbsoluteSendTime>(),
|
||||
CreateExtensionSize<AbsoluteCaptureTimeExtension>(),
|
||||
CreateExtensionSize<AudioLevel>(),
|
||||
CreateExtensionSize<AudioLevelExtension>(),
|
||||
CreateExtensionSize<InbandComfortNoiseExtension>(),
|
||||
CreateExtensionSize<TransmissionOffset>(),
|
||||
CreateExtensionSize<TransportSequenceNumber>(),
|
||||
|
|
|
@ -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));
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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>());
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue