NetEq: Add codec name and RTP timestamp rate to DecoderInfo
The new fields are default-populated for built-in decoders, but for external decoders, the name can now be given when registering the decoder. BUG=webrtc:3520 Review URL: https://codereview.webrtc.org/1484343003 Cr-Commit-Position: refs/heads/master@{#10952}
This commit is contained in:
committed by
Commit bot
parent
3980d46960
commit
4cf61dd116
@ -32,8 +32,10 @@ TEST(DecoderDatabase, CreateAndDestroy) {
|
||||
TEST(DecoderDatabase, InsertAndRemove) {
|
||||
DecoderDatabase db;
|
||||
const uint8_t kPayloadType = 0;
|
||||
EXPECT_EQ(DecoderDatabase::kOK,
|
||||
db.RegisterPayload(kPayloadType, NetEqDecoder::kDecoderPCMu));
|
||||
const std::string kCodecName = "Robert\'); DROP TABLE Students;";
|
||||
EXPECT_EQ(
|
||||
DecoderDatabase::kOK,
|
||||
db.RegisterPayload(kPayloadType, NetEqDecoder::kDecoderPCMu, kCodecName));
|
||||
EXPECT_EQ(1, db.Size());
|
||||
EXPECT_FALSE(db.Empty());
|
||||
EXPECT_EQ(DecoderDatabase::kOK, db.Remove(kPayloadType));
|
||||
@ -44,14 +46,17 @@ TEST(DecoderDatabase, InsertAndRemove) {
|
||||
TEST(DecoderDatabase, GetDecoderInfo) {
|
||||
DecoderDatabase db;
|
||||
const uint8_t kPayloadType = 0;
|
||||
EXPECT_EQ(DecoderDatabase::kOK,
|
||||
db.RegisterPayload(kPayloadType, NetEqDecoder::kDecoderPCMu));
|
||||
const std::string kCodecName = "Robert\'); DROP TABLE Students;";
|
||||
EXPECT_EQ(
|
||||
DecoderDatabase::kOK,
|
||||
db.RegisterPayload(kPayloadType, NetEqDecoder::kDecoderPCMu, kCodecName));
|
||||
const DecoderDatabase::DecoderInfo* info;
|
||||
info = db.GetDecoderInfo(kPayloadType);
|
||||
ASSERT_TRUE(info != NULL);
|
||||
EXPECT_EQ(NetEqDecoder::kDecoderPCMu, info->codec_type);
|
||||
EXPECT_EQ(NULL, info->decoder);
|
||||
EXPECT_EQ(8000, info->fs_hz);
|
||||
EXPECT_EQ(kCodecName, info->name);
|
||||
EXPECT_FALSE(info->external);
|
||||
info = db.GetDecoderInfo(kPayloadType + 1); // Other payload type.
|
||||
EXPECT_TRUE(info == NULL); // Should not be found.
|
||||
@ -60,8 +65,10 @@ TEST(DecoderDatabase, GetDecoderInfo) {
|
||||
TEST(DecoderDatabase, GetRtpPayloadType) {
|
||||
DecoderDatabase db;
|
||||
const uint8_t kPayloadType = 0;
|
||||
EXPECT_EQ(DecoderDatabase::kOK,
|
||||
db.RegisterPayload(kPayloadType, NetEqDecoder::kDecoderPCMu));
|
||||
const std::string kCodecName = "Robert\'); DROP TABLE Students;";
|
||||
EXPECT_EQ(
|
||||
DecoderDatabase::kOK,
|
||||
db.RegisterPayload(kPayloadType, NetEqDecoder::kDecoderPCMu, kCodecName));
|
||||
EXPECT_EQ(kPayloadType, db.GetRtpPayloadType(NetEqDecoder::kDecoderPCMu));
|
||||
const uint8_t expected_value = DecoderDatabase::kRtpPayloadTypeError;
|
||||
EXPECT_EQ(expected_value,
|
||||
@ -72,8 +79,10 @@ TEST(DecoderDatabase, GetRtpPayloadType) {
|
||||
TEST(DecoderDatabase, GetDecoder) {
|
||||
DecoderDatabase db;
|
||||
const uint8_t kPayloadType = 0;
|
||||
const std::string kCodecName = "Robert\'); DROP TABLE Students;";
|
||||
EXPECT_EQ(DecoderDatabase::kOK,
|
||||
db.RegisterPayload(kPayloadType, NetEqDecoder::kDecoderPCM16B));
|
||||
db.RegisterPayload(kPayloadType, NetEqDecoder::kDecoderPCM16B,
|
||||
kCodecName));
|
||||
AudioDecoder* dec = db.GetDecoder(kPayloadType);
|
||||
ASSERT_TRUE(dec != NULL);
|
||||
}
|
||||
@ -86,14 +95,18 @@ TEST(DecoderDatabase, TypeTests) {
|
||||
const uint8_t kPayloadTypeRed = 101;
|
||||
const uint8_t kPayloadNotUsed = 102;
|
||||
// Load into database.
|
||||
EXPECT_EQ(
|
||||
DecoderDatabase::kOK,
|
||||
db.RegisterPayload(kPayloadTypePcmU, NetEqDecoder::kDecoderPCMu, "pcmu"));
|
||||
EXPECT_EQ(DecoderDatabase::kOK,
|
||||
db.RegisterPayload(kPayloadTypePcmU, NetEqDecoder::kDecoderPCMu));
|
||||
EXPECT_EQ(DecoderDatabase::kOK,
|
||||
db.RegisterPayload(kPayloadTypeCng, NetEqDecoder::kDecoderCNGnb));
|
||||
EXPECT_EQ(DecoderDatabase::kOK,
|
||||
db.RegisterPayload(kPayloadTypeDtmf, NetEqDecoder::kDecoderAVT));
|
||||
EXPECT_EQ(DecoderDatabase::kOK,
|
||||
db.RegisterPayload(kPayloadTypeRed, NetEqDecoder::kDecoderRED));
|
||||
db.RegisterPayload(kPayloadTypeCng, NetEqDecoder::kDecoderCNGnb,
|
||||
"cng-nb"));
|
||||
EXPECT_EQ(
|
||||
DecoderDatabase::kOK,
|
||||
db.RegisterPayload(kPayloadTypeDtmf, NetEqDecoder::kDecoderAVT, "avt"));
|
||||
EXPECT_EQ(
|
||||
DecoderDatabase::kOK,
|
||||
db.RegisterPayload(kPayloadTypeRed, NetEqDecoder::kDecoderRED, "red"));
|
||||
EXPECT_EQ(4, db.Size());
|
||||
// Test.
|
||||
EXPECT_FALSE(db.IsComfortNoise(kPayloadNotUsed));
|
||||
@ -112,11 +125,12 @@ TEST(DecoderDatabase, TypeTests) {
|
||||
TEST(DecoderDatabase, ExternalDecoder) {
|
||||
DecoderDatabase db;
|
||||
const uint8_t kPayloadType = 0;
|
||||
const std::string kCodecName = "Robert\'); DROP TABLE Students;";
|
||||
MockAudioDecoder decoder;
|
||||
// Load into database.
|
||||
EXPECT_EQ(DecoderDatabase::kOK,
|
||||
db.InsertExternal(kPayloadType, NetEqDecoder::kDecoderPCMu, 8000,
|
||||
&decoder));
|
||||
db.InsertExternal(kPayloadType, NetEqDecoder::kDecoderPCMu,
|
||||
kCodecName, 8000, &decoder));
|
||||
EXPECT_EQ(1, db.Size());
|
||||
// Get decoder and make sure we get the external one.
|
||||
EXPECT_EQ(&decoder, db.GetDecoder(kPayloadType));
|
||||
@ -125,6 +139,7 @@ TEST(DecoderDatabase, ExternalDecoder) {
|
||||
info = db.GetDecoderInfo(kPayloadType);
|
||||
ASSERT_TRUE(info != NULL);
|
||||
EXPECT_EQ(NetEqDecoder::kDecoderPCMu, info->codec_type);
|
||||
EXPECT_EQ(kCodecName, info->name);
|
||||
EXPECT_EQ(&decoder, info->decoder);
|
||||
EXPECT_EQ(8000, info->fs_hz);
|
||||
EXPECT_TRUE(info->external);
|
||||
@ -146,7 +161,7 @@ TEST(DecoderDatabase, CheckPayloadTypes) {
|
||||
for (uint8_t payload_type = 0; payload_type < kNumPayloads; ++payload_type) {
|
||||
EXPECT_EQ(
|
||||
DecoderDatabase::kOK,
|
||||
db.RegisterPayload(payload_type, NetEqDecoder::kDecoderArbitrary));
|
||||
db.RegisterPayload(payload_type, NetEqDecoder::kDecoderArbitrary, ""));
|
||||
}
|
||||
PacketList packet_list;
|
||||
for (int i = 0; i < kNumPayloads + 1; ++i) {
|
||||
@ -185,11 +200,11 @@ TEST(DecoderDatabase, IF_ISAC(ActiveDecoders)) {
|
||||
DecoderDatabase db;
|
||||
// Load payload types.
|
||||
ASSERT_EQ(DecoderDatabase::kOK,
|
||||
db.RegisterPayload(0, NetEqDecoder::kDecoderPCMu));
|
||||
db.RegisterPayload(0, NetEqDecoder::kDecoderPCMu, "pcmu"));
|
||||
ASSERT_EQ(DecoderDatabase::kOK,
|
||||
db.RegisterPayload(103, NetEqDecoder::kDecoderISAC));
|
||||
db.RegisterPayload(103, NetEqDecoder::kDecoderISAC, "isac"));
|
||||
ASSERT_EQ(DecoderDatabase::kOK,
|
||||
db.RegisterPayload(13, NetEqDecoder::kDecoderCNGnb));
|
||||
db.RegisterPayload(13, NetEqDecoder::kDecoderCNGnb, "cng-nb"));
|
||||
// Verify that no decoders are active from the start.
|
||||
EXPECT_EQ(NULL, db.GetActiveDecoder());
|
||||
EXPECT_EQ(NULL, db.GetActiveCngDecoder());
|
||||
|
||||
Reference in New Issue
Block a user