mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-15 06:40:43 +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 {
|
class AudioLevelObserver : public AudioSendTest {
|
||||||
public:
|
public:
|
||||||
AudioLevelObserver() : AudioSendTest() {
|
AudioLevelObserver() : AudioSendTest() {
|
||||||
extensions_.Register<AudioLevel>(kAudioLevelExtensionId);
|
extensions_.Register<AudioLevelExtension>(kAudioLevelExtensionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
Action OnSendRtp(rtc::ArrayView<const uint8_t> packet) override {
|
Action OnSendRtp(rtc::ArrayView<const uint8_t> packet) override {
|
||||||
|
@ -118,7 +118,8 @@ TEST_F(AudioSendStreamCallTest, SupportsAudioLevel) {
|
||||||
|
|
||||||
uint8_t audio_level = 0;
|
uint8_t audio_level = 0;
|
||||||
bool voice = false;
|
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) {
|
if (audio_level != 0) {
|
||||||
// Wait for at least one packet with a non-zero level.
|
// Wait for at least one packet with a non-zero level.
|
||||||
observation_complete_.Set();
|
observation_complete_.Set();
|
||||||
|
|
|
@ -643,9 +643,9 @@ void ChannelSend::SetSendAudioLevelIndicationStatus(bool enable, int id) {
|
||||||
RTC_DCHECK_RUN_ON(&worker_thread_checker_);
|
RTC_DCHECK_RUN_ON(&worker_thread_checker_);
|
||||||
include_audio_level_indication_.store(enable);
|
include_audio_level_indication_.store(enable);
|
||||||
if (enable) {
|
if (enable) {
|
||||||
rtp_rtcp_->RegisterRtpHeaderExtension(AudioLevel::Uri(), id);
|
rtp_rtcp_->RegisterRtpHeaderExtension(AudioLevelExtension::Uri(), id);
|
||||||
} else {
|
} else {
|
||||||
rtp_rtcp_->DeregisterSendRtpHeaderExtension(AudioLevel::Uri());
|
rtp_rtcp_->DeregisterSendRtpHeaderExtension(AudioLevelExtension::Uri());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -449,7 +449,7 @@ void RtcEventLogEncoderNewFormat::EncodeRtpPacket(const Batch& batch,
|
||||||
{
|
{
|
||||||
bool voice_activity;
|
bool voice_activity;
|
||||||
uint8_t audio_level;
|
uint8_t audio_level;
|
||||||
if (base_event->template GetExtension<AudioLevel>(&voice_activity,
|
if (base_event->template GetExtension<AudioLevelExtension>(&voice_activity,
|
||||||
&audio_level)) {
|
&audio_level)) {
|
||||||
RTC_DCHECK_LE(audio_level, 0x7Fu);
|
RTC_DCHECK_LE(audio_level, 0x7Fu);
|
||||||
base_audio_level = audio_level;
|
base_audio_level = audio_level;
|
||||||
|
@ -646,7 +646,7 @@ void RtcEventLogEncoderNewFormat::EncodeRtpPacket(const Batch& batch,
|
||||||
const EventType* event = batch[i + 1];
|
const EventType* event = batch[i + 1];
|
||||||
bool voice_activity;
|
bool voice_activity;
|
||||||
uint8_t audio_level;
|
uint8_t audio_level;
|
||||||
if (event->template GetExtension<AudioLevel>(&voice_activity,
|
if (event->template GetExtension<AudioLevelExtension>(&voice_activity,
|
||||||
&audio_level)) {
|
&audio_level)) {
|
||||||
RTC_DCHECK_LE(audio_level, 0x7Fu);
|
RTC_DCHECK_LE(audio_level, 0x7Fu);
|
||||||
values[i] = audio_level;
|
values[i] = audio_level;
|
||||||
|
@ -664,7 +664,7 @@ void RtcEventLogEncoderNewFormat::EncodeRtpPacket(const Batch& batch,
|
||||||
const EventType* event = batch[i + 1];
|
const EventType* event = batch[i + 1];
|
||||||
bool voice_activity;
|
bool voice_activity;
|
||||||
uint8_t audio_level;
|
uint8_t audio_level;
|
||||||
if (event->template GetExtension<AudioLevel>(&voice_activity,
|
if (event->template GetExtension<AudioLevelExtension>(&voice_activity,
|
||||||
&audio_level)) {
|
&audio_level)) {
|
||||||
RTC_DCHECK_LE(audio_level, 0x7Fu);
|
RTC_DCHECK_LE(audio_level, 0x7Fu);
|
||||||
values[i] = voice_activity;
|
values[i] = voice_activity;
|
||||||
|
|
|
@ -136,7 +136,7 @@ void ConvertRtpPacket(
|
||||||
reconstructed_packet.SetExtension<webrtc::TransportSequenceNumber>(
|
reconstructed_packet.SetExtension<webrtc::TransportSequenceNumber>(
|
||||||
incoming.rtp.header.extension.transportSequenceNumber);
|
incoming.rtp.header.extension.transportSequenceNumber);
|
||||||
if (incoming.rtp.header.extension.hasAudioLevel)
|
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.voiceActivity,
|
||||||
incoming.rtp.header.extension.audioLevel);
|
incoming.rtp.header.extension.audioLevel);
|
||||||
if (incoming.rtp.header.extension.hasVideoRotation)
|
if (incoming.rtp.header.extension.hasVideoRotation)
|
||||||
|
|
|
@ -1036,7 +1036,7 @@ ParsedRtcEventLog::GetDefaultHeaderExtensionMap() {
|
||||||
constexpr int kDependencyDescriptorDefaultId = 9;
|
constexpr int kDependencyDescriptorDefaultId = 9;
|
||||||
|
|
||||||
webrtc::RtpHeaderExtensionMap default_map(/*extmap_allow_mixed=*/true);
|
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<TransmissionOffset>(kTimestampOffsetDefaultId);
|
||||||
default_map.Register<AbsoluteSendTime>(kAbsSendTimeDefaultId);
|
default_map.Register<AbsoluteSendTime>(kAbsSendTimeDefaultId);
|
||||||
default_map.Register<VideoOrientation>(kVideoRotationDefaultId);
|
default_map.Register<VideoOrientation>(kVideoRotationDefaultId);
|
||||||
|
|
|
@ -616,9 +616,10 @@ void EventGenerator::RandomizeRtpPacket(
|
||||||
rtp_packet->SetExtension<TransmissionOffset>(prng_.Rand(0x00ffffff));
|
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>())) {
|
(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) &&
|
if (extension_map.IsRegistered(AbsoluteSendTime::kId) &&
|
||||||
|
@ -728,8 +729,9 @@ RtpHeaderExtensionMap EventGenerator::NewRtpHeaderExtensionMap(
|
||||||
return !absl::c_linear_search(excluded_extensions, type);
|
return !absl::c_linear_search(excluded_extensions, type);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (not_excluded(AudioLevel::kId) && (configure_all || prng_.Rand<bool>())) {
|
if (not_excluded(AudioLevelExtension::kId) &&
|
||||||
extension_map.Register<AudioLevel>(id[0]);
|
(configure_all || prng_.Rand<bool>())) {
|
||||||
|
extension_map.Register<AudioLevelExtension>(id[0]);
|
||||||
}
|
}
|
||||||
if (not_excluded(TransmissionOffset::kId) &&
|
if (not_excluded(TransmissionOffset::kId) &&
|
||||||
(configure_all || prng_.Rand<bool>())) {
|
(configure_all || prng_.Rand<bool>())) {
|
||||||
|
@ -1026,12 +1028,12 @@ void VerifyLoggedRtpHeader(const Event& original_header,
|
||||||
}
|
}
|
||||||
|
|
||||||
// AudioLevel header extension.
|
// AudioLevel header extension.
|
||||||
ASSERT_EQ(original_header.template HasExtension<AudioLevel>(),
|
ASSERT_EQ(original_header.template HasExtension<AudioLevelExtension>(),
|
||||||
logged_header.extension.hasAudioLevel);
|
logged_header.extension.hasAudioLevel);
|
||||||
if (logged_header.extension.hasAudioLevel) {
|
if (logged_header.extension.hasAudioLevel) {
|
||||||
bool voice_activity;
|
bool voice_activity;
|
||||||
uint8_t audio_level;
|
uint8_t audio_level;
|
||||||
ASSERT_TRUE(original_header.template GetExtension<AudioLevel>(
|
ASSERT_TRUE(original_header.template GetExtension<AudioLevelExtension>(
|
||||||
&voice_activity, &audio_level));
|
&voice_activity, &audio_level));
|
||||||
EXPECT_EQ(voice_activity, logged_header.extension.voiceActivity);
|
EXPECT_EQ(voice_activity, logged_header.extension.voiceActivity);
|
||||||
EXPECT_EQ(audio_level, logged_header.extension.audioLevel);
|
EXPECT_EQ(audio_level, logged_header.extension.audioLevel);
|
||||||
|
|
|
@ -1560,8 +1560,8 @@ TEST_P(WebRtcVoiceEngineTestFake, OnPacketReceivedIdentifiesExtensions) {
|
||||||
webrtc::RtpHeaderExtensionMap extension_map(parameters.extensions);
|
webrtc::RtpHeaderExtensionMap extension_map(parameters.extensions);
|
||||||
webrtc::RtpPacketReceived reference_packet(&extension_map);
|
webrtc::RtpPacketReceived reference_packet(&extension_map);
|
||||||
constexpr uint8_t kAudioLevel = 123;
|
constexpr uint8_t kAudioLevel = 123;
|
||||||
reference_packet.SetExtension<webrtc::AudioLevel>(/*voice_activity=*/true,
|
reference_packet.SetExtension<webrtc::AudioLevelExtension>(
|
||||||
kAudioLevel);
|
/*voice_activity=*/true, kAudioLevel);
|
||||||
// Create a packet without the extension map but with the same content.
|
// Create a packet without the extension map but with the same content.
|
||||||
webrtc::RtpPacketReceived received_packet;
|
webrtc::RtpPacketReceived received_packet;
|
||||||
ASSERT_TRUE(received_packet.Parse(reference_packet.Buffer()));
|
ASSERT_TRUE(received_packet.Parse(reference_packet.Buffer()));
|
||||||
|
@ -1571,8 +1571,9 @@ TEST_P(WebRtcVoiceEngineTestFake, OnPacketReceivedIdentifiesExtensions) {
|
||||||
|
|
||||||
bool voice_activity;
|
bool voice_activity;
|
||||||
uint8_t audio_level;
|
uint8_t audio_level;
|
||||||
EXPECT_TRUE(call_.last_received_rtp_packet().GetExtension<webrtc::AudioLevel>(
|
EXPECT_TRUE(call_.last_received_rtp_packet()
|
||||||
&voice_activity, &audio_level));
|
.GetExtension<webrtc::AudioLevelExtension>(&voice_activity,
|
||||||
|
&audio_level));
|
||||||
EXPECT_EQ(audio_level, kAudioLevel);
|
EXPECT_EQ(audio_level, kAudioLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ constexpr ExtensionInfo CreateExtensionInfo() {
|
||||||
|
|
||||||
constexpr ExtensionInfo kExtensions[] = {
|
constexpr ExtensionInfo kExtensions[] = {
|
||||||
CreateExtensionInfo<TransmissionOffset>(),
|
CreateExtensionInfo<TransmissionOffset>(),
|
||||||
CreateExtensionInfo<AudioLevel>(),
|
CreateExtensionInfo<AudioLevelExtension>(),
|
||||||
CreateExtensionInfo<CsrcAudioLevel>(),
|
CreateExtensionInfo<CsrcAudioLevel>(),
|
||||||
CreateExtensionInfo<AbsoluteSendTime>(),
|
CreateExtensionInfo<AbsoluteSendTime>(),
|
||||||
CreateExtensionInfo<AbsoluteCaptureTimeExtension>(),
|
CreateExtensionInfo<AbsoluteCaptureTimeExtension>(),
|
||||||
|
|
|
@ -85,8 +85,8 @@ TEST(RtpHeaderExtensionTest, NonUniqueId) {
|
||||||
RtpHeaderExtensionMap map;
|
RtpHeaderExtensionMap map;
|
||||||
EXPECT_TRUE(map.Register<TransmissionOffset>(3));
|
EXPECT_TRUE(map.Register<TransmissionOffset>(3));
|
||||||
|
|
||||||
EXPECT_FALSE(map.Register<AudioLevel>(3));
|
EXPECT_FALSE(map.Register<AudioLevelExtension>(3));
|
||||||
EXPECT_TRUE(map.Register<AudioLevel>(4));
|
EXPECT_TRUE(map.Register<AudioLevelExtension>(4));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(RtpHeaderExtensionTest, GetType) {
|
TEST(RtpHeaderExtensionTest, GetType) {
|
||||||
|
|
|
@ -160,7 +160,7 @@ bool AbsoluteCaptureTimeExtension::Write(rtc::ArrayView<uint8_t> data,
|
||||||
// | ID | len=1 |V| level |
|
// | ID | len=1 |V| level |
|
||||||
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
// Sample Audio Level Encoding Using the Two-Byte Header Format
|
// Sample Audio Level Encoding Using the Two-Byte Header Format
|
||||||
bool AudioLevel::Parse(rtc::ArrayView<const uint8_t> data,
|
bool AudioLevelExtension::Parse(rtc::ArrayView<const uint8_t> data,
|
||||||
bool* voice_activity,
|
bool* voice_activity,
|
||||||
uint8_t* audio_level) {
|
uint8_t* audio_level) {
|
||||||
// One-byte and two-byte format share the same data definition.
|
// One-byte and two-byte format share the same data definition.
|
||||||
|
@ -171,7 +171,7 @@ bool AudioLevel::Parse(rtc::ArrayView<const uint8_t> data,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AudioLevel::Write(rtc::ArrayView<uint8_t> data,
|
bool AudioLevelExtension::Write(rtc::ArrayView<uint8_t> data,
|
||||||
bool voice_activity,
|
bool voice_activity,
|
||||||
uint8_t audio_level) {
|
uint8_t audio_level) {
|
||||||
// One-byte and two-byte format share the same data definition.
|
// One-byte and two-byte format share the same data definition.
|
||||||
|
|
|
@ -28,6 +28,13 @@
|
||||||
#include "api/video/video_timing.h"
|
#include "api/video/video_timing.h"
|
||||||
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.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 {
|
namespace webrtc {
|
||||||
|
|
||||||
class AbsoluteSendTime {
|
class AbsoluteSendTime {
|
||||||
|
@ -75,7 +82,7 @@ class AbsoluteCaptureTimeExtension {
|
||||||
const AbsoluteCaptureTime& extension);
|
const AbsoluteCaptureTime& extension);
|
||||||
};
|
};
|
||||||
|
|
||||||
class AudioLevel {
|
class AudioLevelExtension {
|
||||||
public:
|
public:
|
||||||
static constexpr RTPExtensionType kId = kRtpExtensionAudioLevel;
|
static constexpr RTPExtensionType kId = kRtpExtensionAudioLevel;
|
||||||
static constexpr uint8_t kValueSizeBytes = 1;
|
static constexpr uint8_t kValueSizeBytes = 1;
|
||||||
|
@ -93,6 +100,9 @@ class AudioLevel {
|
||||||
bool voice_activity,
|
bool voice_activity,
|
||||||
uint8_t audio_level);
|
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 {
|
class CsrcAudioLevel {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -61,7 +61,7 @@ void RtpPacketReceived::GetHeader(RTPHeader* header) const {
|
||||||
&header->extension.feedback_request) ||
|
&header->extension.feedback_request) ||
|
||||||
GetExtension<TransportSequenceNumber>(
|
GetExtension<TransportSequenceNumber>(
|
||||||
&header->extension.transportSequenceNumber);
|
&header->extension.transportSequenceNumber);
|
||||||
header->extension.hasAudioLevel = GetExtension<AudioLevel>(
|
header->extension.hasAudioLevel = GetExtension<AudioLevelExtension>(
|
||||||
&header->extension.voiceActivity, &header->extension.audioLevel);
|
&header->extension.voiceActivity, &header->extension.audioLevel);
|
||||||
header->extension.hasVideoRotation =
|
header->extension.hasVideoRotation =
|
||||||
GetExtension<VideoOrientation>(&header->extension.videoRotation);
|
GetExtension<VideoOrientation>(&header->extension.videoRotation);
|
||||||
|
|
|
@ -230,14 +230,14 @@ TEST(RtpPacketTest, CreateWithExtension) {
|
||||||
TEST(RtpPacketTest, CreateWith2Extensions) {
|
TEST(RtpPacketTest, CreateWith2Extensions) {
|
||||||
RtpPacketToSend::ExtensionManager extensions;
|
RtpPacketToSend::ExtensionManager extensions;
|
||||||
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
||||||
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
|
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
|
||||||
RtpPacketToSend packet(&extensions);
|
RtpPacketToSend packet(&extensions);
|
||||||
packet.SetPayloadType(kPayloadType);
|
packet.SetPayloadType(kPayloadType);
|
||||||
packet.SetSequenceNumber(kSeqNum);
|
packet.SetSequenceNumber(kSeqNum);
|
||||||
packet.SetTimestamp(kTimestamp);
|
packet.SetTimestamp(kTimestamp);
|
||||||
packet.SetSsrc(kSsrc);
|
packet.SetSsrc(kSsrc);
|
||||||
packet.SetExtension<TransmissionOffset>(kTimeOffset);
|
packet.SetExtension<TransmissionOffset>(kTimeOffset);
|
||||||
packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel);
|
packet.SetExtension<AudioLevelExtension>(kVoiceActive, kAudioLevel);
|
||||||
EXPECT_THAT(kPacketWithTOAndAL,
|
EXPECT_THAT(kPacketWithTOAndAL,
|
||||||
ElementsAreArray(packet.data(), packet.size()));
|
ElementsAreArray(packet.data(), packet.size()));
|
||||||
}
|
}
|
||||||
|
@ -245,7 +245,7 @@ TEST(RtpPacketTest, CreateWith2Extensions) {
|
||||||
TEST(RtpPacketTest, CreateWithTwoByteHeaderExtensionFirst) {
|
TEST(RtpPacketTest, CreateWithTwoByteHeaderExtensionFirst) {
|
||||||
RtpPacketToSend::ExtensionManager extensions(/*extmap_allow_mixed=*/true);
|
RtpPacketToSend::ExtensionManager extensions(/*extmap_allow_mixed=*/true);
|
||||||
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
||||||
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
|
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
|
||||||
extensions.Register<PlayoutDelayLimits>(kTwoByteExtensionId);
|
extensions.Register<PlayoutDelayLimits>(kTwoByteExtensionId);
|
||||||
RtpPacketToSend packet(&extensions);
|
RtpPacketToSend packet(&extensions);
|
||||||
packet.SetPayloadType(kPayloadType);
|
packet.SetPayloadType(kPayloadType);
|
||||||
|
@ -257,7 +257,7 @@ TEST(RtpPacketTest, CreateWithTwoByteHeaderExtensionFirst) {
|
||||||
TimeDelta::Millis(340));
|
TimeDelta::Millis(340));
|
||||||
ASSERT_TRUE(packet.SetExtension<PlayoutDelayLimits>(playout_delay));
|
ASSERT_TRUE(packet.SetExtension<PlayoutDelayLimits>(playout_delay));
|
||||||
packet.SetExtension<TransmissionOffset>(kTimeOffset);
|
packet.SetExtension<TransmissionOffset>(kTimeOffset);
|
||||||
packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel);
|
packet.SetExtension<AudioLevelExtension>(kVoiceActive, kAudioLevel);
|
||||||
EXPECT_THAT(kPacketWithTwoByteExtensionIdFirst,
|
EXPECT_THAT(kPacketWithTwoByteExtensionIdFirst,
|
||||||
ElementsAreArray(packet.data(), packet.size()));
|
ElementsAreArray(packet.data(), packet.size()));
|
||||||
}
|
}
|
||||||
|
@ -266,7 +266,7 @@ TEST(RtpPacketTest, CreateWithTwoByteHeaderExtensionLast) {
|
||||||
// This test will trigger RtpPacket::PromoteToTwoByteHeaderExtension().
|
// This test will trigger RtpPacket::PromoteToTwoByteHeaderExtension().
|
||||||
RtpPacketToSend::ExtensionManager extensions(/*extmap_allow_mixed=*/true);
|
RtpPacketToSend::ExtensionManager extensions(/*extmap_allow_mixed=*/true);
|
||||||
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
||||||
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
|
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
|
||||||
extensions.Register<PlayoutDelayLimits>(kTwoByteExtensionId);
|
extensions.Register<PlayoutDelayLimits>(kTwoByteExtensionId);
|
||||||
RtpPacketToSend packet(&extensions);
|
RtpPacketToSend packet(&extensions);
|
||||||
packet.SetPayloadType(kPayloadType);
|
packet.SetPayloadType(kPayloadType);
|
||||||
|
@ -274,7 +274,7 @@ TEST(RtpPacketTest, CreateWithTwoByteHeaderExtensionLast) {
|
||||||
packet.SetTimestamp(kTimestamp);
|
packet.SetTimestamp(kTimestamp);
|
||||||
packet.SetSsrc(kSsrc);
|
packet.SetSsrc(kSsrc);
|
||||||
packet.SetExtension<TransmissionOffset>(kTimeOffset);
|
packet.SetExtension<TransmissionOffset>(kTimeOffset);
|
||||||
packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel);
|
packet.SetExtension<AudioLevelExtension>(kVoiceActive, kAudioLevel);
|
||||||
EXPECT_THAT(kPacketWithTOAndAL,
|
EXPECT_THAT(kPacketWithTOAndAL,
|
||||||
ElementsAreArray(packet.data(), packet.size()));
|
ElementsAreArray(packet.data(), packet.size()));
|
||||||
// Set extension that requires two-byte header.
|
// Set extension that requires two-byte header.
|
||||||
|
@ -331,18 +331,20 @@ TEST(RtpPacketTest, TryToCreateWithLongMid) {
|
||||||
|
|
||||||
TEST(RtpPacketTest, TryToCreateTwoByteHeaderNotSupported) {
|
TEST(RtpPacketTest, TryToCreateTwoByteHeaderNotSupported) {
|
||||||
RtpPacketToSend::ExtensionManager extensions;
|
RtpPacketToSend::ExtensionManager extensions;
|
||||||
extensions.Register<AudioLevel>(kTwoByteExtensionId);
|
extensions.Register<AudioLevelExtension>(kTwoByteExtensionId);
|
||||||
RtpPacketToSend packet(&extensions);
|
RtpPacketToSend packet(&extensions);
|
||||||
// Set extension that requires two-byte header.
|
// Set extension that requires two-byte header.
|
||||||
EXPECT_FALSE(packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel));
|
EXPECT_FALSE(
|
||||||
|
packet.SetExtension<AudioLevelExtension>(kVoiceActive, kAudioLevel));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(RtpPacketTest, CreateTwoByteHeaderSupportedIfExtmapAllowMixed) {
|
TEST(RtpPacketTest, CreateTwoByteHeaderSupportedIfExtmapAllowMixed) {
|
||||||
RtpPacketToSend::ExtensionManager extensions(/*extmap_allow_mixed=*/true);
|
RtpPacketToSend::ExtensionManager extensions(/*extmap_allow_mixed=*/true);
|
||||||
extensions.Register<AudioLevel>(kTwoByteExtensionId);
|
extensions.Register<AudioLevelExtension>(kTwoByteExtensionId);
|
||||||
RtpPacketToSend packet(&extensions);
|
RtpPacketToSend packet(&extensions);
|
||||||
// Set extension that requires two-byte header.
|
// Set extension that requires two-byte header.
|
||||||
EXPECT_TRUE(packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel));
|
EXPECT_TRUE(
|
||||||
|
packet.SetExtension<AudioLevelExtension>(kVoiceActive, kAudioLevel));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(RtpPacketTest, CreateWithMaxSizeHeaderExtension) {
|
TEST(RtpPacketTest, CreateWithMaxSizeHeaderExtension) {
|
||||||
|
@ -401,13 +403,14 @@ TEST(RtpPacketTest, SetReservedExtensionsAfterPayload) {
|
||||||
const size_t kPayloadSize = 4;
|
const size_t kPayloadSize = 4;
|
||||||
RtpPacketToSend::ExtensionManager extensions;
|
RtpPacketToSend::ExtensionManager extensions;
|
||||||
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
||||||
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
|
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
|
||||||
RtpPacketToSend packet(&extensions);
|
RtpPacketToSend packet(&extensions);
|
||||||
|
|
||||||
EXPECT_TRUE(packet.ReserveExtension<TransmissionOffset>());
|
EXPECT_TRUE(packet.ReserveExtension<TransmissionOffset>());
|
||||||
packet.SetPayloadSize(kPayloadSize);
|
packet.SetPayloadSize(kPayloadSize);
|
||||||
// Can't set extension after payload.
|
// Can't set extension after payload.
|
||||||
EXPECT_FALSE(packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel));
|
EXPECT_FALSE(
|
||||||
|
packet.SetExtension<AudioLevelExtension>(kVoiceActive, kAudioLevel));
|
||||||
// Unless reserved.
|
// Unless reserved.
|
||||||
EXPECT_TRUE(packet.SetExtension<TransmissionOffset>(kTimeOffset));
|
EXPECT_TRUE(packet.SetExtension<TransmissionOffset>(kTimeOffset));
|
||||||
}
|
}
|
||||||
|
@ -679,7 +682,7 @@ TEST(RtpPacketTest, ParseWithOverSizedExtension) {
|
||||||
TEST(RtpPacketTest, ParseWith2Extensions) {
|
TEST(RtpPacketTest, ParseWith2Extensions) {
|
||||||
RtpPacketToSend::ExtensionManager extensions;
|
RtpPacketToSend::ExtensionManager extensions;
|
||||||
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
||||||
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
|
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
|
||||||
RtpPacketReceived packet(&extensions);
|
RtpPacketReceived packet(&extensions);
|
||||||
EXPECT_TRUE(packet.Parse(kPacketWithTOAndAL, sizeof(kPacketWithTOAndAL)));
|
EXPECT_TRUE(packet.Parse(kPacketWithTOAndAL, sizeof(kPacketWithTOAndAL)));
|
||||||
int32_t time_offset;
|
int32_t time_offset;
|
||||||
|
@ -687,7 +690,8 @@ TEST(RtpPacketTest, ParseWith2Extensions) {
|
||||||
EXPECT_EQ(kTimeOffset, time_offset);
|
EXPECT_EQ(kTimeOffset, time_offset);
|
||||||
bool voice_active;
|
bool voice_active;
|
||||||
uint8_t audio_level;
|
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(kVoiceActive, voice_active);
|
||||||
EXPECT_EQ(kAudioLevel, audio_level);
|
EXPECT_EQ(kAudioLevel, audio_level);
|
||||||
}
|
}
|
||||||
|
@ -695,22 +699,22 @@ TEST(RtpPacketTest, ParseWith2Extensions) {
|
||||||
TEST(RtpPacketTest, ParseSecondPacketWithFewerExtensions) {
|
TEST(RtpPacketTest, ParseSecondPacketWithFewerExtensions) {
|
||||||
RtpPacketToSend::ExtensionManager extensions;
|
RtpPacketToSend::ExtensionManager extensions;
|
||||||
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
||||||
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
|
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
|
||||||
RtpPacketReceived packet(&extensions);
|
RtpPacketReceived packet(&extensions);
|
||||||
EXPECT_TRUE(packet.Parse(kPacketWithTOAndAL, sizeof(kPacketWithTOAndAL)));
|
EXPECT_TRUE(packet.Parse(kPacketWithTOAndAL, sizeof(kPacketWithTOAndAL)));
|
||||||
EXPECT_TRUE(packet.HasExtension<TransmissionOffset>());
|
EXPECT_TRUE(packet.HasExtension<TransmissionOffset>());
|
||||||
EXPECT_TRUE(packet.HasExtension<AudioLevel>());
|
EXPECT_TRUE(packet.HasExtension<AudioLevelExtension>());
|
||||||
|
|
||||||
// Second packet without audio level.
|
// Second packet without audio level.
|
||||||
EXPECT_TRUE(packet.Parse(kPacketWithTO, sizeof(kPacketWithTO)));
|
EXPECT_TRUE(packet.Parse(kPacketWithTO, sizeof(kPacketWithTO)));
|
||||||
EXPECT_TRUE(packet.HasExtension<TransmissionOffset>());
|
EXPECT_TRUE(packet.HasExtension<TransmissionOffset>());
|
||||||
EXPECT_FALSE(packet.HasExtension<AudioLevel>());
|
EXPECT_FALSE(packet.HasExtension<AudioLevelExtension>());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(RtpPacketTest, ParseWith2ExtensionsInvalidPadding) {
|
TEST(RtpPacketTest, ParseWith2ExtensionsInvalidPadding) {
|
||||||
RtpPacketToSend::ExtensionManager extensions;
|
RtpPacketToSend::ExtensionManager extensions;
|
||||||
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
||||||
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
|
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
|
||||||
RtpPacketReceived packet(&extensions);
|
RtpPacketReceived packet(&extensions);
|
||||||
EXPECT_TRUE(packet.Parse(kPacketWithTOAndALInvalidPadding,
|
EXPECT_TRUE(packet.Parse(kPacketWithTOAndALInvalidPadding,
|
||||||
sizeof(kPacketWithTOAndALInvalidPadding)));
|
sizeof(kPacketWithTOAndALInvalidPadding)));
|
||||||
|
@ -719,13 +723,14 @@ TEST(RtpPacketTest, ParseWith2ExtensionsInvalidPadding) {
|
||||||
EXPECT_EQ(kTimeOffset, time_offset);
|
EXPECT_EQ(kTimeOffset, time_offset);
|
||||||
bool voice_active;
|
bool voice_active;
|
||||||
uint8_t audio_level;
|
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) {
|
TEST(RtpPacketTest, ParseWith2ExtensionsReservedExtensionId) {
|
||||||
RtpPacketToSend::ExtensionManager extensions;
|
RtpPacketToSend::ExtensionManager extensions;
|
||||||
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
||||||
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
|
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
|
||||||
RtpPacketReceived packet(&extensions);
|
RtpPacketReceived packet(&extensions);
|
||||||
EXPECT_TRUE(packet.Parse(kPacketWithTOAndALReservedExtensionId,
|
EXPECT_TRUE(packet.Parse(kPacketWithTOAndALReservedExtensionId,
|
||||||
sizeof(kPacketWithTOAndALReservedExtensionId)));
|
sizeof(kPacketWithTOAndALReservedExtensionId)));
|
||||||
|
@ -734,7 +739,8 @@ TEST(RtpPacketTest, ParseWith2ExtensionsReservedExtensionId) {
|
||||||
EXPECT_EQ(kTimeOffset, time_offset);
|
EXPECT_EQ(kTimeOffset, time_offset);
|
||||||
bool voice_active;
|
bool voice_active;
|
||||||
uint8_t audio_level;
|
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) {
|
TEST(RtpPacketTest, ParseWithAllFeatures) {
|
||||||
|
@ -778,7 +784,7 @@ TEST(RtpPacketTest, ParseLongTwoByteHeaderExtension) {
|
||||||
TEST(RtpPacketTest, ParseTwoByteHeaderExtensionWithPadding) {
|
TEST(RtpPacketTest, ParseTwoByteHeaderExtensionWithPadding) {
|
||||||
RtpPacketToSend::ExtensionManager extensions;
|
RtpPacketToSend::ExtensionManager extensions;
|
||||||
extensions.Register<TransmissionOffset>(kTwoByteExtensionId);
|
extensions.Register<TransmissionOffset>(kTwoByteExtensionId);
|
||||||
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
|
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
|
||||||
RtpPacketReceived packet(&extensions);
|
RtpPacketReceived packet(&extensions);
|
||||||
EXPECT_TRUE(
|
EXPECT_TRUE(
|
||||||
packet.Parse(kPacketWithTwoByteHeaderExtensionWithPadding,
|
packet.Parse(kPacketWithTwoByteHeaderExtensionWithPadding,
|
||||||
|
@ -788,7 +794,8 @@ TEST(RtpPacketTest, ParseTwoByteHeaderExtensionWithPadding) {
|
||||||
EXPECT_EQ(kTimeOffset, time_offset);
|
EXPECT_EQ(kTimeOffset, time_offset);
|
||||||
bool voice_active;
|
bool voice_active;
|
||||||
uint8_t audio_level;
|
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(kVoiceActive, voice_active);
|
||||||
EXPECT_EQ(kAudioLevel, audio_level);
|
EXPECT_EQ(kAudioLevel, audio_level);
|
||||||
}
|
}
|
||||||
|
@ -1187,7 +1194,7 @@ TEST(RtpPacketTest, ReservedExtensionsCountedAsSetExtension) {
|
||||||
// Register two extensions.
|
// Register two extensions.
|
||||||
RtpPacketToSend::ExtensionManager extensions;
|
RtpPacketToSend::ExtensionManager extensions;
|
||||||
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
||||||
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
|
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
|
||||||
|
|
||||||
RtpPacketReceived packet(&extensions);
|
RtpPacketReceived packet(&extensions);
|
||||||
|
|
||||||
|
@ -1199,7 +1206,7 @@ TEST(RtpPacketTest, ReservedExtensionsCountedAsSetExtension) {
|
||||||
// Only the extension that is both registered and reserved matches
|
// Only the extension that is both registered and reserved matches
|
||||||
// IsExtensionReserved().
|
// IsExtensionReserved().
|
||||||
EXPECT_FALSE(packet.HasExtension<VideoContentTypeExtension>());
|
EXPECT_FALSE(packet.HasExtension<VideoContentTypeExtension>());
|
||||||
EXPECT_FALSE(packet.HasExtension<AudioLevel>());
|
EXPECT_FALSE(packet.HasExtension<AudioLevelExtension>());
|
||||||
EXPECT_TRUE(packet.HasExtension<TransmissionOffset>());
|
EXPECT_TRUE(packet.HasExtension<TransmissionOffset>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1207,14 +1214,14 @@ TEST(RtpPacketTest, ReservedExtensionsCountedAsSetExtension) {
|
||||||
TEST(RtpPacketTest, RemoveMultipleExtensions) {
|
TEST(RtpPacketTest, RemoveMultipleExtensions) {
|
||||||
RtpPacketToSend::ExtensionManager extensions;
|
RtpPacketToSend::ExtensionManager extensions;
|
||||||
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
||||||
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
|
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
|
||||||
RtpPacketToSend packet(&extensions);
|
RtpPacketToSend packet(&extensions);
|
||||||
packet.SetPayloadType(kPayloadType);
|
packet.SetPayloadType(kPayloadType);
|
||||||
packet.SetSequenceNumber(kSeqNum);
|
packet.SetSequenceNumber(kSeqNum);
|
||||||
packet.SetTimestamp(kTimestamp);
|
packet.SetTimestamp(kTimestamp);
|
||||||
packet.SetSsrc(kSsrc);
|
packet.SetSsrc(kSsrc);
|
||||||
packet.SetExtension<TransmissionOffset>(kTimeOffset);
|
packet.SetExtension<TransmissionOffset>(kTimeOffset);
|
||||||
packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel);
|
packet.SetExtension<AudioLevelExtension>(kVoiceActive, kAudioLevel);
|
||||||
|
|
||||||
EXPECT_THAT(kPacketWithTOAndAL,
|
EXPECT_THAT(kPacketWithTOAndAL,
|
||||||
ElementsAreArray(packet.data(), packet.size()));
|
ElementsAreArray(packet.data(), packet.size()));
|
||||||
|
@ -1235,21 +1242,21 @@ TEST(RtpPacketTest, RemoveMultipleExtensions) {
|
||||||
TEST(RtpPacketTest, RemoveExtensionPreservesOtherUnregisteredExtensions) {
|
TEST(RtpPacketTest, RemoveExtensionPreservesOtherUnregisteredExtensions) {
|
||||||
RtpPacketToSend::ExtensionManager extensions;
|
RtpPacketToSend::ExtensionManager extensions;
|
||||||
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
||||||
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
|
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
|
||||||
RtpPacketToSend packet(&extensions);
|
RtpPacketToSend packet(&extensions);
|
||||||
packet.SetPayloadType(kPayloadType);
|
packet.SetPayloadType(kPayloadType);
|
||||||
packet.SetSequenceNumber(kSeqNum);
|
packet.SetSequenceNumber(kSeqNum);
|
||||||
packet.SetTimestamp(kTimestamp);
|
packet.SetTimestamp(kTimestamp);
|
||||||
packet.SetSsrc(kSsrc);
|
packet.SetSsrc(kSsrc);
|
||||||
packet.SetExtension<TransmissionOffset>(kTimeOffset);
|
packet.SetExtension<TransmissionOffset>(kTimeOffset);
|
||||||
packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel);
|
packet.SetExtension<AudioLevelExtension>(kVoiceActive, kAudioLevel);
|
||||||
|
|
||||||
EXPECT_THAT(kPacketWithTOAndAL,
|
EXPECT_THAT(kPacketWithTOAndAL,
|
||||||
ElementsAreArray(packet.data(), packet.size()));
|
ElementsAreArray(packet.data(), packet.size()));
|
||||||
|
|
||||||
// "Unregister" kRtpExtensionTransmissionTimeOffset.
|
// "Unregister" kRtpExtensionTransmissionTimeOffset.
|
||||||
RtpPacketToSend::ExtensionManager extensions1;
|
RtpPacketToSend::ExtensionManager extensions1;
|
||||||
extensions1.Register<AudioLevel>(kAudioLevelExtensionId);
|
extensions1.Register<AudioLevelExtension>(kAudioLevelExtensionId);
|
||||||
packet.IdentifyExtensions(extensions1);
|
packet.IdentifyExtensions(extensions1);
|
||||||
|
|
||||||
// Make sure we can not delete extension which is set but not registered.
|
// Make sure we can not delete extension which is set but not registered.
|
||||||
|
@ -1266,7 +1273,7 @@ TEST(RtpPacketTest, RemoveExtensionPreservesOtherUnregisteredExtensions) {
|
||||||
TEST(RtpPacketTest, RemoveExtensionFailure) {
|
TEST(RtpPacketTest, RemoveExtensionFailure) {
|
||||||
RtpPacketToSend::ExtensionManager extensions;
|
RtpPacketToSend::ExtensionManager extensions;
|
||||||
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
extensions.Register<TransmissionOffset>(kTransmissionOffsetExtensionId);
|
||||||
extensions.Register<AudioLevel>(kAudioLevelExtensionId);
|
extensions.Register<AudioLevelExtension>(kAudioLevelExtensionId);
|
||||||
RtpPacketToSend packet(&extensions);
|
RtpPacketToSend packet(&extensions);
|
||||||
packet.SetPayloadType(kPayloadType);
|
packet.SetPayloadType(kPayloadType);
|
||||||
packet.SetSequenceNumber(kSeqNum);
|
packet.SetSequenceNumber(kSeqNum);
|
||||||
|
|
|
@ -89,7 +89,7 @@ constexpr RtpExtensionSize kVideoExtensionSizes[] = {
|
||||||
constexpr RtpExtensionSize kAudioExtensionSizes[] = {
|
constexpr RtpExtensionSize kAudioExtensionSizes[] = {
|
||||||
CreateExtensionSize<AbsoluteSendTime>(),
|
CreateExtensionSize<AbsoluteSendTime>(),
|
||||||
CreateExtensionSize<AbsoluteCaptureTimeExtension>(),
|
CreateExtensionSize<AbsoluteCaptureTimeExtension>(),
|
||||||
CreateExtensionSize<AudioLevel>(),
|
CreateExtensionSize<AudioLevelExtension>(),
|
||||||
CreateExtensionSize<InbandComfortNoiseExtension>(),
|
CreateExtensionSize<InbandComfortNoiseExtension>(),
|
||||||
CreateExtensionSize<TransmissionOffset>(),
|
CreateExtensionSize<TransmissionOffset>(),
|
||||||
CreateExtensionSize<TransportSequenceNumber>(),
|
CreateExtensionSize<TransportSequenceNumber>(),
|
||||||
|
|
|
@ -261,7 +261,7 @@ bool RTPSenderAudio::SendAudio(const RtpAudioFrame& frame) {
|
||||||
packet->SetTimestamp(frame.rtp_timestamp);
|
packet->SetTimestamp(frame.rtp_timestamp);
|
||||||
packet->set_capture_time(clock_->CurrentTime());
|
packet->set_capture_time(clock_->CurrentTime());
|
||||||
// Set audio level extension, if included.
|
// Set audio level extension, if included.
|
||||||
packet->SetExtension<AudioLevel>(
|
packet->SetExtension<AudioLevelExtension>(
|
||||||
frame.type == AudioFrameType::kAudioFrameSpeech,
|
frame.type == AudioFrameType::kAudioFrameSpeech,
|
||||||
frame.audio_level_dbov.value_or(127));
|
frame.audio_level_dbov.value_or(127));
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ using ::testing::ElementsAreArray;
|
||||||
class LoopbackTransportTest : public webrtc::Transport {
|
class LoopbackTransportTest : public webrtc::Transport {
|
||||||
public:
|
public:
|
||||||
LoopbackTransportTest() {
|
LoopbackTransportTest() {
|
||||||
receivers_extensions_.Register<AudioLevel>(kAudioLevelExtensionId);
|
receivers_extensions_.Register<AudioLevelExtension>(kAudioLevelExtensionId);
|
||||||
receivers_extensions_.Register<AbsoluteCaptureTimeExtension>(
|
receivers_extensions_.Register<AbsoluteCaptureTimeExtension>(
|
||||||
kAbsoluteCaptureTimeExtensionId);
|
kAbsoluteCaptureTimeExtensionId);
|
||||||
}
|
}
|
||||||
|
@ -102,7 +102,7 @@ TEST_F(RtpSenderAudioTest, SendAudio) {
|
||||||
|
|
||||||
TEST_F(RtpSenderAudioTest, SendAudioWithAudioLevelExtension) {
|
TEST_F(RtpSenderAudioTest, SendAudioWithAudioLevelExtension) {
|
||||||
const uint8_t kAudioLevel = 0x5a;
|
const uint8_t kAudioLevel = 0x5a;
|
||||||
rtp_module_->RegisterRtpHeaderExtension(AudioLevel::Uri(),
|
rtp_module_->RegisterRtpHeaderExtension(AudioLevelExtension::Uri(),
|
||||||
kAudioLevelExtensionId);
|
kAudioLevelExtensionId);
|
||||||
|
|
||||||
const char payload_name[] = "PAYLOAD_NAME";
|
const char payload_name[] = "PAYLOAD_NAME";
|
||||||
|
@ -123,7 +123,7 @@ TEST_F(RtpSenderAudioTest, SendAudioWithAudioLevelExtension) {
|
||||||
// Verify AudioLevel extension.
|
// Verify AudioLevel extension.
|
||||||
bool voice_activity;
|
bool voice_activity;
|
||||||
uint8_t audio_level;
|
uint8_t audio_level;
|
||||||
EXPECT_TRUE(transport_.last_sent_packet().GetExtension<AudioLevel>(
|
EXPECT_TRUE(transport_.last_sent_packet().GetExtension<AudioLevelExtension>(
|
||||||
&voice_activity, &audio_level));
|
&voice_activity, &audio_level));
|
||||||
EXPECT_EQ(kAudioLevel, audio_level);
|
EXPECT_EQ(kAudioLevel, audio_level);
|
||||||
EXPECT_FALSE(voice_activity);
|
EXPECT_FALSE(voice_activity);
|
||||||
|
|
|
@ -290,8 +290,8 @@ TEST_F(RtpSenderTest, AllocatePacketReserveExtensions) {
|
||||||
TransmissionOffset::Uri(), kTransmissionTimeOffsetExtensionId));
|
TransmissionOffset::Uri(), kTransmissionTimeOffsetExtensionId));
|
||||||
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
|
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
|
||||||
AbsoluteSendTime::Uri(), kAbsoluteSendTimeExtensionId));
|
AbsoluteSendTime::Uri(), kAbsoluteSendTimeExtensionId));
|
||||||
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(AudioLevel::Uri(),
|
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
|
||||||
kAudioLevelExtensionId));
|
AudioLevelExtension::Uri(), kAudioLevelExtensionId));
|
||||||
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
|
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
|
||||||
TransportSequenceNumber::Uri(), kTransportSequenceNumberExtensionId));
|
TransportSequenceNumber::Uri(), kTransportSequenceNumberExtensionId));
|
||||||
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
|
ASSERT_TRUE(rtp_sender_->RegisterRtpHeaderExtension(
|
||||||
|
@ -305,7 +305,7 @@ TEST_F(RtpSenderTest, AllocatePacketReserveExtensions) {
|
||||||
EXPECT_TRUE(packet->HasExtension<AbsoluteSendTime>());
|
EXPECT_TRUE(packet->HasExtension<AbsoluteSendTime>());
|
||||||
EXPECT_TRUE(packet->HasExtension<TransportSequenceNumber>());
|
EXPECT_TRUE(packet->HasExtension<TransportSequenceNumber>());
|
||||||
// Do not allocate media specific extensions.
|
// Do not allocate media specific extensions.
|
||||||
EXPECT_FALSE(packet->HasExtension<AudioLevel>());
|
EXPECT_FALSE(packet->HasExtension<AudioLevelExtension>());
|
||||||
EXPECT_FALSE(packet->HasExtension<VideoOrientation>());
|
EXPECT_FALSE(packet->HasExtension<VideoOrientation>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,7 @@ void FuzzOneInput(const uint8_t* data, size_t size) {
|
||||||
case kRtpExtensionAudioLevel:
|
case kRtpExtensionAudioLevel:
|
||||||
bool voice_activity;
|
bool voice_activity;
|
||||||
uint8_t audio_level;
|
uint8_t audio_level;
|
||||||
packet.GetExtension<AudioLevel>(&voice_activity, &audio_level);
|
packet.GetExtension<AudioLevelExtension>(&voice_activity, &audio_level);
|
||||||
break;
|
break;
|
||||||
case kRtpExtensionCsrcAudioLevel: {
|
case kRtpExtensionCsrcAudioLevel: {
|
||||||
std::vector<uint8_t> audio_levels;
|
std::vector<uint8_t> audio_levels;
|
||||||
|
|
Loading…
Reference in a new issue