Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1752)

Unified Diff: webrtc/modules/rtp_rtcp/source/rtp_payload_registry_unittest.cc

Issue 2523843002: Send audio and video codecs to RTPPayloadRegistry (Closed)
Patch Set: Change strcpy to strncpy Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/rtp_rtcp/source/rtp_payload_registry_unittest.cc
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_payload_registry_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_payload_registry_unittest.cc
index abb2ae91c4eedbbfca564949ac6f2ee5bcab946b..5940ad82607c9c06fe3e08bff38c785fba2d68e6 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_payload_registry_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_payload_registry_unittest.cc
@@ -10,6 +10,7 @@
#include <memory>
+#include "webrtc/common_types.h"
#include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h"
#include "webrtc/modules/rtp_rtcp/include/rtp_payload_registry.h"
#include "webrtc/modules/rtp_rtcp/source/byte_io.h"
@@ -22,12 +23,16 @@ namespace webrtc {
using ::testing::Eq;
using ::testing::Return;
+using ::testing::StrEq;
using ::testing::_;
static const char* kTypicalPayloadName = "name";
static const size_t kTypicalChannels = 1;
static const int kTypicalFrequency = 44000;
static const int kTypicalRate = 32 * 1024;
+static const CodecInst kTypicalAudioCodec = {-1 /* pltype */, "name",
+ kTypicalFrequency, 0 /* pacsize */,
+ kTypicalChannels, kTypicalRate};
class RtpPayloadRegistryTest : public ::testing::Test {
public:
@@ -52,7 +57,7 @@ class RtpPayloadRegistryTest : public ::testing::Test {
RtpUtility::Payload* returned_payload_on_heap =
new RtpUtility::Payload(returned_payload);
EXPECT_CALL(*mock_payload_strategy_,
- CreatePayloadType(kTypicalPayloadName, payload_type,
+ CreatePayloadType(StrEq(kTypicalPayloadName), payload_type,
kTypicalFrequency, kTypicalChannels, rate))
.WillOnce(Return(returned_payload_on_heap));
return returned_payload_on_heap;
@@ -62,15 +67,52 @@ class RtpPayloadRegistryTest : public ::testing::Test {
testing::NiceMock<MockRTPPayloadStrategy>* mock_payload_strategy_;
};
-TEST_F(RtpPayloadRegistryTest, RegistersAndRemembersPayloadsUntilDeregistered) {
+TEST_F(RtpPayloadRegistryTest,
+ RegistersAndRemembersVideoPayloadsUntilDeregistered) {
+ const uint8_t payload_type = 97;
+ RtpUtility::Payload returned_video_payload = {
+ "VP8", false /* audio */, {{kRtpVideoVp8}}};
+ // Note: The payload registry takes ownership of this object in
+ // RegisterReceivePayload.
+ RtpUtility::Payload* returned_video_payload_on_heap =
+ new RtpUtility::Payload(returned_video_payload);
+ EXPECT_CALL(
+ *mock_payload_strategy_,
+ CreatePayloadType(StrEq("VP8"), payload_type, kVideoPayloadTypeFrequency,
+ 0 /* channels */, 0 /* rate */))
+ .WillOnce(Return(returned_video_payload_on_heap));
+
+ VideoCodec video_codec;
+ video_codec.codecType = kVideoCodecVP8;
+ strncpy(video_codec.plName, "VP8", RTP_PAYLOAD_NAME_SIZE);
+ video_codec.plType = payload_type;
+
+ EXPECT_EQ(0, rtp_payload_registry_->RegisterReceivePayload(video_codec));
+
+ const RtpUtility::Payload* retrieved_payload =
+ rtp_payload_registry_->PayloadTypeToPayload(payload_type);
+ EXPECT_TRUE(retrieved_payload);
+
+ // We should get back the exact pointer to the payload returned by the
+ // payload strategy.
+ EXPECT_EQ(returned_video_payload_on_heap, retrieved_payload);
+
+ // Now forget about it and verify it's gone.
+ EXPECT_EQ(0, rtp_payload_registry_->DeRegisterReceivePayload(payload_type));
+ EXPECT_FALSE(rtp_payload_registry_->PayloadTypeToPayload(payload_type));
+}
+
+TEST_F(RtpPayloadRegistryTest,
+ RegistersAndRemembersAudioPayloadsUntilDeregistered) {
uint8_t payload_type = 97;
RtpUtility::Payload* returned_payload_on_heap =
ExpectReturnOfTypicalAudioPayload(payload_type, kTypicalRate);
bool new_payload_created = false;
+ CodecInst audio_codec = kTypicalAudioCodec;
+ audio_codec.pltype = payload_type;
EXPECT_EQ(0, rtp_payload_registry_->RegisterReceivePayload(
- kTypicalPayloadName, payload_type, kTypicalFrequency,
- kTypicalChannels, kTypicalRate, &new_payload_created));
+ audio_codec, &new_payload_created));
EXPECT_TRUE(new_payload_created) << "A new payload WAS created.";
@@ -98,9 +140,14 @@ TEST_F(RtpPayloadRegistryTest, AudioRedWorkProperly) {
new RTPPayloadRegistry(RTPPayloadStrategy::CreateStrategy(true)));
bool new_payload_created = false;
+ CodecInst red_audio_codec;
+ strncpy(red_audio_codec.plname, "red", RTP_PAYLOAD_NAME_SIZE);
+ red_audio_codec.pltype = kRedPayloadType;
+ red_audio_codec.plfreq = kRedSampleRate;
+ red_audio_codec.channels = kRedChannels;
+ red_audio_codec.rate = kRedBitRate;
EXPECT_EQ(0, rtp_payload_registry_->RegisterReceivePayload(
- "red", kRedPayloadType, kRedSampleRate, kRedChannels,
- kRedBitRate, &new_payload_created));
+ red_audio_codec, &new_payload_created));
EXPECT_TRUE(new_payload_created);
EXPECT_EQ(kRedPayloadType, rtp_payload_registry_->red_payload_type());
@@ -123,20 +170,21 @@ TEST_F(RtpPayloadRegistryTest,
bool ignored = false;
RtpUtility::Payload* first_payload_on_heap =
ExpectReturnOfTypicalAudioPayload(payload_type, kTypicalRate);
- EXPECT_EQ(0, rtp_payload_registry_->RegisterReceivePayload(
- kTypicalPayloadName, payload_type, kTypicalFrequency,
- kTypicalChannels, kTypicalRate, &ignored));
+ CodecInst audio_codec = kTypicalAudioCodec;
+ audio_codec.pltype = payload_type;
+ EXPECT_EQ(
+ 0, rtp_payload_registry_->RegisterReceivePayload(audio_codec, &ignored));
- EXPECT_EQ(-1, rtp_payload_registry_->RegisterReceivePayload(
- kTypicalPayloadName, payload_type, kTypicalFrequency,
- kTypicalChannels, kTypicalRate, &ignored))
+ EXPECT_EQ(
+ -1, rtp_payload_registry_->RegisterReceivePayload(audio_codec, &ignored))
<< "Adding same codec twice = bad.";
RtpUtility::Payload* second_payload_on_heap =
ExpectReturnOfTypicalAudioPayload(payload_type - 1, kTypicalRate);
- EXPECT_EQ(0, rtp_payload_registry_->RegisterReceivePayload(
- kTypicalPayloadName, payload_type - 1, kTypicalFrequency,
- kTypicalChannels, kTypicalRate, &ignored))
+ CodecInst audio_codec_2 = kTypicalAudioCodec;
+ audio_codec_2.pltype = payload_type - 1;
+ EXPECT_EQ(
+ 0, rtp_payload_registry_->RegisterReceivePayload(audio_codec_2, &ignored))
<< "With a different payload type is fine though.";
// Ensure both payloads are preserved.
@@ -156,9 +204,8 @@ TEST_F(RtpPayloadRegistryTest,
.WillByDefault(Return(true));
EXPECT_CALL(*mock_payload_strategy_,
UpdatePayloadRate(first_payload_on_heap, kTypicalRate));
- EXPECT_EQ(0, rtp_payload_registry_->RegisterReceivePayload(
- kTypicalPayloadName, payload_type, kTypicalFrequency,
- kTypicalChannels, kTypicalRate, &ignored));
+ EXPECT_EQ(
+ 0, rtp_payload_registry_->RegisterReceivePayload(audio_codec, &ignored));
}
TEST_F(RtpPayloadRegistryTest,
@@ -172,13 +219,15 @@ TEST_F(RtpPayloadRegistryTest,
bool ignored = false;
ExpectReturnOfTypicalAudioPayload(payload_type, kTypicalRate);
- EXPECT_EQ(0, rtp_payload_registry_->RegisterReceivePayload(
- kTypicalPayloadName, payload_type, kTypicalFrequency,
- kTypicalChannels, kTypicalRate, &ignored));
+ CodecInst audio_codec = kTypicalAudioCodec;
+ audio_codec.pltype = payload_type;
+ EXPECT_EQ(
+ 0, rtp_payload_registry_->RegisterReceivePayload(audio_codec, &ignored));
ExpectReturnOfTypicalAudioPayload(payload_type - 1, kTypicalRate);
- EXPECT_EQ(0, rtp_payload_registry_->RegisterReceivePayload(
- kTypicalPayloadName, payload_type - 1, kTypicalFrequency,
- kTypicalChannels, kTypicalRate, &ignored));
+ CodecInst audio_codec_2 = kTypicalAudioCodec;
+ audio_codec_2.pltype = payload_type - 1;
+ EXPECT_EQ(0, rtp_payload_registry_->RegisterReceivePayload(audio_codec_2,
+ &ignored));
EXPECT_FALSE(rtp_payload_registry_->PayloadTypeToPayload(payload_type))
<< "The first payload should be "
@@ -190,9 +239,10 @@ TEST_F(RtpPayloadRegistryTest,
ON_CALL(*mock_payload_strategy_, PayloadIsCompatible(_, _, _, _))
.WillByDefault(Return(false));
ExpectReturnOfTypicalAudioPayload(payload_type + 1, kTypicalRate);
- EXPECT_EQ(0, rtp_payload_registry_->RegisterReceivePayload(
- kTypicalPayloadName, payload_type + 1, kTypicalFrequency,
- kTypicalChannels, kTypicalRate, &ignored));
+ CodecInst audio_codec_3 = kTypicalAudioCodec;
+ audio_codec_3.pltype = payload_type + 1;
+ EXPECT_EQ(0, rtp_payload_registry_->RegisterReceivePayload(audio_codec_3,
+ &ignored));
EXPECT_TRUE(rtp_payload_registry_->PayloadTypeToPayload(payload_type - 1))
<< "Not compatible; both payloads should be kept.";
@@ -212,9 +262,10 @@ TEST_F(RtpPayloadRegistryTest,
bool ignored;
ExpectReturnOfTypicalAudioPayload(34, kTypicalRate);
- EXPECT_EQ(0, rtp_payload_registry_->RegisterReceivePayload(
- kTypicalPayloadName, 34, kTypicalFrequency, kTypicalChannels,
- kTypicalRate, &ignored));
+ CodecInst audio_codec = kTypicalAudioCodec;
+ audio_codec.pltype = 34;
+ EXPECT_EQ(
+ 0, rtp_payload_registry_->RegisterReceivePayload(audio_codec, &ignored));
EXPECT_EQ(-1, rtp_payload_registry_->last_received_payload_type());
media_type_unchanged = rtp_payload_registry_->ReportMediaPayloadType(18);
@@ -230,9 +281,14 @@ TEST_P(ParameterizedRtpPayloadRegistryTest,
int payload_type = GetParam();
bool ignored;
- EXPECT_EQ(-1, rtp_payload_registry_->RegisterReceivePayload(
- "whatever", static_cast<uint8_t>(payload_type), 19, 1, 17,
- &ignored));
+ CodecInst audio_codec;
+ strncpy(audio_codec.plname, "whatever", RTP_PAYLOAD_NAME_SIZE);
+ audio_codec.pltype = static_cast<uint8_t>(payload_type);
+ audio_codec.plfreq = 19;
+ audio_codec.channels = 1;
+ audio_codec.rate = 17;
+ EXPECT_EQ(
+ -1, rtp_payload_registry_->RegisterReceivePayload(audio_codec, &ignored));
}
INSTANTIATE_TEST_CASE_P(TestKnownBadPayloadTypes,
@@ -244,13 +300,16 @@ class RtpPayloadRegistryGenericTest
public ::testing::WithParamInterface<int> {};
TEST_P(RtpPayloadRegistryGenericTest, RegisterGenericReceivePayloadType) {
- int payload_type = GetParam();
-
bool ignored;
-
- EXPECT_EQ(0, rtp_payload_registry_->RegisterReceivePayload(
- "generic-codec", static_cast<int8_t>(payload_type), 19, 1,
- 17, &ignored)); // dummy values, except for payload_type
+ CodecInst audio_codec;
+ // Dummy values, except for payload_type.
+ strncpy(audio_codec.plname, "generic-codec", RTP_PAYLOAD_NAME_SIZE);
+ audio_codec.pltype = GetParam();
+ audio_codec.plfreq = 19;
+ audio_codec.channels = 1;
+ audio_codec.rate = 17;
+ EXPECT_EQ(
+ 0, rtp_payload_registry_->RegisterReceivePayload(audio_codec, &ignored));
}
// Generates an RTX packet for the given length and original sequence number.
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_payload_registry.cc ('k') | webrtc/modules/rtp_rtcp/source/rtp_receiver_audio.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698