Skip to content

Commit

Permalink
Migrate several call tests from legacy RtpHeaderParser to RtpPacket p…
Browse files Browse the repository at this point in the history
…arsing.

Bug: None
Change-Id: I96f11922b3cd66eb02093fa7e6e4d21774c19575
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161323
Reviewed-by: Niels Moller <[email protected]>
Reviewed-by: Oskar Sundbom <[email protected]>
Commit-Queue: Danil Chapovalov <[email protected]>
Cr-Commit-Position: refs/heads/master@{#30166}
  • Loading branch information
DanilChapovalov authored and Commit Bot committed Jan 7, 2020
1 parent ec7b36c commit 1b4e4bf
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 38 deletions.
61 changes: 31 additions & 30 deletions audio/audio_send_stream_tests.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
#include <utility>
#include <vector>

#include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
#include "modules/rtp_rtcp/source/rtp_header_extensions.h"
#include "modules/rtp_rtcp/source/rtp_packet.h"
#include "test/call_test.h"
#include "test/field_trial.h"
#include "test/gtest.h"
Expand Down Expand Up @@ -79,17 +82,11 @@ TEST_F(AudioSendStreamCallTest, NoExtensionsByDefault) {

private:
Action OnSendRtp(const uint8_t* packet, size_t length) override {
RTPHeader header;
EXPECT_TRUE(parser_->Parse(packet, length, &header));

EXPECT_FALSE(header.extension.hasTransmissionTimeOffset);
EXPECT_FALSE(header.extension.hasAbsoluteSendTime);
EXPECT_FALSE(header.extension.hasTransportSequenceNumber);
EXPECT_FALSE(header.extension.hasAudioLevel);
EXPECT_FALSE(header.extension.hasVideoRotation);
EXPECT_FALSE(header.extension.hasVideoContentType);
observation_complete_.Set();
RtpPacket rtp_packet;
EXPECT_TRUE(rtp_packet.Parse(packet, length)); // rtp packet is valid.
EXPECT_EQ(packet[0] & 0b0001'0000, 0); // extension bit not set.

observation_complete_.Set();
return SEND_PACKET;
}

Expand All @@ -111,16 +108,17 @@ TEST_F(AudioSendStreamCallTest, SupportsAudioLevel) {
class AudioLevelObserver : public AudioSendTest {
public:
AudioLevelObserver() : AudioSendTest() {
EXPECT_TRUE(parser_->RegisterRtpHeaderExtension(kRtpExtensionAudioLevel,
kAudioLevelExtensionId));
extensions_.Register<AudioLevel>(kAudioLevelExtensionId);
}

Action OnSendRtp(const uint8_t* packet, size_t length) override {
RTPHeader header;
EXPECT_TRUE(parser_->Parse(packet, length, &header));
RtpPacket rtp_packet(&extensions_);
EXPECT_TRUE(rtp_packet.Parse(packet, length));

EXPECT_TRUE(header.extension.hasAudioLevel);
if (header.extension.audioLevel != 0) {
uint8_t audio_level = 0;
bool voice = false;
EXPECT_TRUE(rtp_packet.GetExtension<AudioLevel>(&voice, &audio_level));
if (audio_level != 0) {
// Wait for at least one packet with a non-zero level.
observation_complete_.Set();
} else {
Expand All @@ -142,6 +140,9 @@ TEST_F(AudioSendStreamCallTest, SupportsAudioLevel) {
void PerformTest() override {
EXPECT_TRUE(Wait()) << "Timed out while waiting for single RTP packet.";
}

private:
RtpHeaderExtensionMap extensions_;
} test;

RunBaseTest(&test);
Expand All @@ -151,20 +152,19 @@ class TransportWideSequenceNumberObserver : public AudioSendTest {
public:
explicit TransportWideSequenceNumberObserver(bool expect_sequence_number)
: AudioSendTest(), expect_sequence_number_(expect_sequence_number) {
EXPECT_TRUE(parser_->RegisterRtpHeaderExtension(
kRtpExtensionTransportSequenceNumber,
kTransportSequenceNumberExtensionId));
extensions_.Register<TransportSequenceNumber>(
kTransportSequenceNumberExtensionId);
}

private:
Action OnSendRtp(const uint8_t* packet, size_t length) override {
RTPHeader header;
EXPECT_TRUE(parser_->Parse(packet, length, &header));
RtpPacket rtp_packet(&extensions_);
EXPECT_TRUE(rtp_packet.Parse(packet, length));

EXPECT_EQ(header.extension.hasTransportSequenceNumber,
EXPECT_EQ(rtp_packet.HasExtension<TransportSequenceNumber>(),
expect_sequence_number_);
EXPECT_FALSE(header.extension.hasTransmissionTimeOffset);
EXPECT_FALSE(header.extension.hasAbsoluteSendTime);
EXPECT_FALSE(rtp_packet.HasExtension<TransmissionOffset>());
EXPECT_FALSE(rtp_packet.HasExtension<AbsoluteSendTime>());

observation_complete_.Set();

Expand All @@ -184,6 +184,7 @@ class TransportWideSequenceNumberObserver : public AudioSendTest {
EXPECT_TRUE(Wait()) << "Timed out while waiting for a single RTP packet.";
}
const bool expect_sequence_number_;
RtpHeaderExtensionMap extensions_;
};

TEST_F(AudioSendStreamCallTest, SendsTransportWideSequenceNumbersInFieldTrial) {
Expand All @@ -210,13 +211,13 @@ TEST_F(AudioSendStreamCallTest, SendDtmf) {

private:
Action OnSendRtp(const uint8_t* packet, size_t length) override {
RTPHeader header;
EXPECT_TRUE(parser_->Parse(packet, length, &header));
RtpPacket rtp_packet;
EXPECT_TRUE(rtp_packet.Parse(packet, length));

if (header.payloadType == kDtmfPayloadType) {
EXPECT_EQ(12u, header.headerLength);
EXPECT_EQ(16u, length);
const int event = packet[12];
if (rtp_packet.PayloadType() == kDtmfPayloadType) {
EXPECT_EQ(rtp_packet.headers_size(), 12u);
EXPECT_EQ(rtp_packet.size(), 16u);
const int event = rtp_packet.payload()[0];
if (event != expected_dtmf_event_) {
++expected_dtmf_event_;
EXPECT_EQ(event, expected_dtmf_event_);
Expand Down
1 change: 1 addition & 0 deletions call/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -457,6 +457,7 @@ if (rtc_include_tests) {
"../modules/audio_device:audio_device_impl",
"../modules/audio_mixer:audio_mixer_impl",
"../modules/rtp_rtcp",
"../modules/rtp_rtcp:rtp_rtcp_format",
"../rtc_base",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
Expand Down
12 changes: 7 additions & 5 deletions call/call_perf_tests.cc
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include "modules/audio_coding/include/audio_coding_module.h"
#include "modules/audio_device/include/test_audio_device.h"
#include "modules/audio_mixer/audio_mixer_impl.h"
#include "modules/rtp_rtcp/source/rtp_packet.h"
#include "rtc_base/checks.h"
#include "rtc_base/task_queue_for_test.h"
#include "rtc_base/thread.h"
Expand Down Expand Up @@ -434,22 +435,23 @@ void CallPerfTest::TestCaptureNtpTime(

Action OnSendRtp(const uint8_t* packet, size_t length) override {
rtc::CritScope lock(&crit_);
RTPHeader header;
EXPECT_TRUE(parser_->Parse(packet, length, &header));
RtpPacket rtp_packet;
EXPECT_TRUE(rtp_packet.Parse(packet, length));

if (!rtp_start_timestamp_set_) {
// Calculate the rtp timestamp offset in order to calculate the real
// capture time.
uint32_t first_capture_timestamp =
90 * static_cast<uint32_t>(capturer_->first_frame_capture_time());
rtp_start_timestamp_ = header.timestamp - first_capture_timestamp;
rtp_start_timestamp_ = rtp_packet.Timestamp() - first_capture_timestamp;
rtp_start_timestamp_set_ = true;
}

uint32_t capture_timestamp = header.timestamp - rtp_start_timestamp_;
uint32_t capture_timestamp =
rtp_packet.Timestamp() - rtp_start_timestamp_;
capture_time_list_.insert(
capture_time_list_.end(),
std::make_pair(header.timestamp, capture_timestamp));
std::make_pair(rtp_packet.Timestamp(), capture_timestamp));
return SEND_PACKET;
}

Expand Down
4 changes: 1 addition & 3 deletions test/rtp_rtcp_observer.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,11 +70,9 @@ class RtpRtcpObserver {
protected:
RtpRtcpObserver() : RtpRtcpObserver(0) {}
explicit RtpRtcpObserver(int event_timeout_ms)
: parser_(RtpHeaderParser::CreateForTest()),
timeout_ms_(event_timeout_ms) {}
: timeout_ms_(event_timeout_ms) {}

rtc::Event observation_complete_;
const std::unique_ptr<RtpHeaderParser> parser_;

private:
const int timeout_ms_;
Expand Down

0 comments on commit 1b4e4bf

Please sign in to comment.