OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 })); | 59 })); |
60 DecoderDatabase db(factory); | 60 DecoderDatabase db(factory); |
61 const uint8_t kPayloadType = 0; | 61 const uint8_t kPayloadType = 0; |
62 const std::string kCodecName = "Robert\'); DROP TABLE Students;"; | 62 const std::string kCodecName = "Robert\'); DROP TABLE Students;"; |
63 EXPECT_EQ( | 63 EXPECT_EQ( |
64 DecoderDatabase::kOK, | 64 DecoderDatabase::kOK, |
65 db.RegisterPayload(kPayloadType, NetEqDecoder::kDecoderPCMu, kCodecName)); | 65 db.RegisterPayload(kPayloadType, NetEqDecoder::kDecoderPCMu, kCodecName)); |
66 const DecoderDatabase::DecoderInfo* info; | 66 const DecoderDatabase::DecoderInfo* info; |
67 info = db.GetDecoderInfo(kPayloadType); | 67 info = db.GetDecoderInfo(kPayloadType); |
68 ASSERT_TRUE(info != NULL); | 68 ASSERT_TRUE(info != NULL); |
69 EXPECT_EQ(NetEqDecoder::kDecoderPCMu, info->codec_type); | 69 EXPECT_TRUE(info->IsType("pcmu")); |
70 EXPECT_EQ(kCodecName, info->name); | 70 EXPECT_EQ(kCodecName, info->name); |
71 EXPECT_EQ(decoder, db.GetDecoder(kPayloadType)); | 71 EXPECT_EQ(decoder, db.GetDecoder(kPayloadType)); |
72 info = db.GetDecoderInfo(kPayloadType + 1); // Other payload type. | 72 info = db.GetDecoderInfo(kPayloadType + 1); // Other payload type. |
73 EXPECT_TRUE(info == NULL); // Should not be found. | 73 EXPECT_TRUE(info == NULL); // Should not be found. |
74 } | 74 } |
75 | 75 |
76 TEST(DecoderDatabase, GetRtpPayloadType) { | |
77 DecoderDatabase db(new rtc::RefCountedObject<MockAudioDecoderFactory>); | |
78 const uint8_t kPayloadType = 0; | |
79 const std::string kCodecName = "Robert\'); DROP TABLE Students;"; | |
80 EXPECT_EQ( | |
81 DecoderDatabase::kOK, | |
82 db.RegisterPayload(kPayloadType, NetEqDecoder::kDecoderPCMu, kCodecName)); | |
83 EXPECT_EQ(kPayloadType, db.GetRtpPayloadType(NetEqDecoder::kDecoderPCMu)); | |
84 const uint8_t expected_value = DecoderDatabase::kRtpPayloadTypeError; | |
85 EXPECT_EQ(expected_value, | |
86 db.GetRtpPayloadType( | |
87 NetEqDecoder::kDecoderISAC)); // iSAC is not registered. | |
88 } | |
89 | |
90 TEST(DecoderDatabase, GetDecoder) { | 76 TEST(DecoderDatabase, GetDecoder) { |
91 DecoderDatabase db(CreateBuiltinAudioDecoderFactory()); | 77 DecoderDatabase db(CreateBuiltinAudioDecoderFactory()); |
92 const uint8_t kPayloadType = 0; | 78 const uint8_t kPayloadType = 0; |
93 const std::string kCodecName = "Robert\'); DROP TABLE Students;"; | 79 const std::string kCodecName = "Robert\'); DROP TABLE Students;"; |
94 EXPECT_EQ(DecoderDatabase::kOK, | 80 EXPECT_EQ(DecoderDatabase::kOK, |
95 db.RegisterPayload(kPayloadType, NetEqDecoder::kDecoderPCM16B, | 81 db.RegisterPayload(kPayloadType, NetEqDecoder::kDecoderPCM16B, |
96 kCodecName)); | 82 kCodecName)); |
97 AudioDecoder* dec = db.GetDecoder(kPayloadType); | 83 AudioDecoder* dec = db.GetDecoder(kPayloadType); |
98 ASSERT_TRUE(dec != NULL); | 84 ASSERT_TRUE(dec != NULL); |
99 } | 85 } |
(...skipping 19 matching lines...) Expand all Loading... |
119 DecoderDatabase::kOK, | 105 DecoderDatabase::kOK, |
120 db.RegisterPayload(kPayloadTypeRed, NetEqDecoder::kDecoderRED, "red")); | 106 db.RegisterPayload(kPayloadTypeRed, NetEqDecoder::kDecoderRED, "red")); |
121 EXPECT_EQ(4, db.Size()); | 107 EXPECT_EQ(4, db.Size()); |
122 // Test. | 108 // Test. |
123 EXPECT_FALSE(db.IsComfortNoise(kPayloadNotUsed)); | 109 EXPECT_FALSE(db.IsComfortNoise(kPayloadNotUsed)); |
124 EXPECT_FALSE(db.IsDtmf(kPayloadNotUsed)); | 110 EXPECT_FALSE(db.IsDtmf(kPayloadNotUsed)); |
125 EXPECT_FALSE(db.IsRed(kPayloadNotUsed)); | 111 EXPECT_FALSE(db.IsRed(kPayloadNotUsed)); |
126 EXPECT_FALSE(db.IsComfortNoise(kPayloadTypePcmU)); | 112 EXPECT_FALSE(db.IsComfortNoise(kPayloadTypePcmU)); |
127 EXPECT_FALSE(db.IsDtmf(kPayloadTypePcmU)); | 113 EXPECT_FALSE(db.IsDtmf(kPayloadTypePcmU)); |
128 EXPECT_FALSE(db.IsRed(kPayloadTypePcmU)); | 114 EXPECT_FALSE(db.IsRed(kPayloadTypePcmU)); |
129 EXPECT_FALSE(db.IsType(kPayloadTypePcmU, NetEqDecoder::kDecoderISAC)); | 115 EXPECT_FALSE(db.IsType(kPayloadTypePcmU, "isac")); |
130 EXPECT_TRUE(db.IsType(kPayloadTypePcmU, NetEqDecoder::kDecoderPCMu)); | 116 EXPECT_TRUE(db.IsType(kPayloadTypePcmU, "pcmu")); |
131 EXPECT_TRUE(db.IsComfortNoise(kPayloadTypeCng)); | 117 EXPECT_TRUE(db.IsComfortNoise(kPayloadTypeCng)); |
132 EXPECT_TRUE(db.IsDtmf(kPayloadTypeDtmf)); | 118 EXPECT_TRUE(db.IsDtmf(kPayloadTypeDtmf)); |
133 EXPECT_TRUE(db.IsRed(kPayloadTypeRed)); | 119 EXPECT_TRUE(db.IsRed(kPayloadTypeRed)); |
134 } | 120 } |
135 | 121 |
136 TEST(DecoderDatabase, ExternalDecoder) { | 122 TEST(DecoderDatabase, ExternalDecoder) { |
137 DecoderDatabase db(new rtc::RefCountedObject<MockAudioDecoderFactory>); | 123 DecoderDatabase db(new rtc::RefCountedObject<MockAudioDecoderFactory>); |
138 const uint8_t kPayloadType = 0; | 124 const uint8_t kPayloadType = 0; |
139 const std::string kCodecName = "Robert\'); DROP TABLE Students;"; | 125 const std::string kCodecName = "Robert\'); DROP TABLE Students;"; |
140 MockAudioDecoder decoder; | 126 MockAudioDecoder decoder; |
141 // Load into database. | 127 // Load into database. |
142 EXPECT_EQ(DecoderDatabase::kOK, | 128 EXPECT_EQ(DecoderDatabase::kOK, |
143 db.InsertExternal(kPayloadType, NetEqDecoder::kDecoderPCMu, | 129 db.InsertExternal(kPayloadType, NetEqDecoder::kDecoderPCMu, |
144 kCodecName, &decoder)); | 130 kCodecName, &decoder)); |
145 EXPECT_EQ(1, db.Size()); | 131 EXPECT_EQ(1, db.Size()); |
146 // Get decoder and make sure we get the external one. | 132 // Get decoder and make sure we get the external one. |
147 EXPECT_EQ(&decoder, db.GetDecoder(kPayloadType)); | 133 EXPECT_EQ(&decoder, db.GetDecoder(kPayloadType)); |
148 // Get the decoder info struct and check it too. | 134 // Get the decoder info struct and check it too. |
149 const DecoderDatabase::DecoderInfo* info; | 135 const DecoderDatabase::DecoderInfo* info; |
150 info = db.GetDecoderInfo(kPayloadType); | 136 info = db.GetDecoderInfo(kPayloadType); |
151 ASSERT_TRUE(info != NULL); | 137 ASSERT_TRUE(info != NULL); |
152 EXPECT_EQ(NetEqDecoder::kDecoderPCMu, info->codec_type); | 138 EXPECT_TRUE(info->IsType("pcmu")); |
| 139 EXPECT_EQ(info->name, kCodecName); |
153 EXPECT_EQ(kCodecName, info->name); | 140 EXPECT_EQ(kCodecName, info->name); |
154 // Expect not to delete the decoder when removing it from the database, since | 141 // Expect not to delete the decoder when removing it from the database, since |
155 // it was declared externally. | 142 // it was declared externally. |
156 EXPECT_CALL(decoder, Die()).Times(0); | 143 EXPECT_CALL(decoder, Die()).Times(0); |
157 EXPECT_EQ(DecoderDatabase::kOK, db.Remove(kPayloadType)); | 144 EXPECT_EQ(DecoderDatabase::kOK, db.Remove(kPayloadType)); |
158 EXPECT_TRUE(db.Empty()); | 145 EXPECT_TRUE(db.Empty()); |
159 | 146 |
160 EXPECT_CALL(decoder, Die()).Times(1); // Will be called when |db| is deleted. | 147 EXPECT_CALL(decoder, Die()).Times(1); // Will be called when |db| is deleted. |
161 } | 148 } |
162 | 149 |
163 TEST(DecoderDatabase, CheckPayloadTypes) { | 150 TEST(DecoderDatabase, CheckPayloadTypes) { |
164 DecoderDatabase db(new rtc::RefCountedObject<MockAudioDecoderFactory>); | 151 DecoderDatabase db(new rtc::RefCountedObject<MockAudioDecoderFactory>); |
165 // Load a number of payloads into the database. Payload types are 0, 1, ..., | 152 // Load a number of payloads into the database. Payload types are 0, 1, ..., |
166 // while the decoder type is the same for all payload types (this does not | 153 // while the decoder type is the same for all payload types (this does not |
167 // matter for the test). | 154 // matter for the test). |
168 const int kNumPayloads = 10; | 155 const int kNumPayloads = 10; |
169 for (uint8_t payload_type = 0; payload_type < kNumPayloads; ++payload_type) { | 156 for (uint8_t payload_type = 0; payload_type < kNumPayloads; ++payload_type) { |
170 EXPECT_EQ( | 157 EXPECT_EQ( |
171 DecoderDatabase::kOK, | 158 DecoderDatabase::kOK, |
172 db.RegisterPayload(payload_type, NetEqDecoder::kDecoderArbitrary, "")); | 159 db.RegisterPayload(payload_type, NetEqDecoder::kDecoderPCMu, "")); |
173 } | 160 } |
174 PacketList packet_list; | 161 PacketList packet_list; |
175 for (int i = 0; i < kNumPayloads + 1; ++i) { | 162 for (int i = 0; i < kNumPayloads + 1; ++i) { |
176 // Create packet with payload type |i|. The last packet will have a payload | 163 // Create packet with payload type |i|. The last packet will have a payload |
177 // type that is not registered in the decoder database. | 164 // type that is not registered in the decoder database. |
178 Packet* packet = new Packet; | 165 Packet* packet = new Packet; |
179 packet->header.payloadType = i; | 166 packet->header.payloadType = i; |
180 packet_list.push_back(packet); | 167 packet_list.push_back(packet); |
181 } | 168 } |
182 | 169 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 EXPECT_EQ(DecoderDatabase::kOK, db.Remove(13)); | 236 EXPECT_EQ(DecoderDatabase::kOK, db.Remove(13)); |
250 EXPECT_EQ(NULL, db.GetActiveCngDecoder()); | 237 EXPECT_EQ(NULL, db.GetActiveCngDecoder()); |
251 | 238 |
252 // Try to set non-existing codecs as active. | 239 // Try to set non-existing codecs as active. |
253 EXPECT_EQ(DecoderDatabase::kDecoderNotFound, | 240 EXPECT_EQ(DecoderDatabase::kDecoderNotFound, |
254 db.SetActiveDecoder(17, &changed)); | 241 db.SetActiveDecoder(17, &changed)); |
255 EXPECT_EQ(DecoderDatabase::kDecoderNotFound, | 242 EXPECT_EQ(DecoderDatabase::kDecoderNotFound, |
256 db.SetActiveCngDecoder(17)); | 243 db.SetActiveCngDecoder(17)); |
257 } | 244 } |
258 } // namespace webrtc | 245 } // namespace webrtc |
OLD | NEW |