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

Unified Diff: webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc

Issue 1861303002: NetEq::GetPlayoutTimestamp returns empty during CNG (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@neteq-set-audio-frame-ts
Patch Set: Consolidate the test code Created 4 years, 8 months 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/audio_coding/neteq/neteq_impl_unittest.cc
diff --git a/webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc b/webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc
index 1353d108eab941100a7fc14051b5235c1d840326..561c0459bfb79c955cad80b18d463038e10c4156 100644
--- a/webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc
+++ b/webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc
@@ -666,6 +666,12 @@ TEST_F(NetEqImplTest, CodecInternalCng) {
EXPECT_CALL(mock_decoder, Channels()).WillRepeatedly(Return(1));
EXPECT_CALL(mock_decoder, IncomingPacket(_, kPayloadLengthBytes, _, _, _))
.WillRepeatedly(Return(0));
+ EXPECT_CALL(mock_decoder, PacketDuration(_, kPayloadLengthBytes))
+ .WillRepeatedly(Return(kPayloadLengthSamples));
+ // Packed duration when asking the decoder for more CNG data (without a new
+ // packet).
+ EXPECT_CALL(mock_decoder, PacketDuration(nullptr, 0))
+ .WillRepeatedly(Return(kPayloadLengthSamples));
// Pointee(x) verifies that first byte of the payload equals x, this makes it
// possible to verify that the correct payload is fed to Decode().
@@ -723,8 +729,8 @@ TEST_F(NetEqImplTest, CodecInternalCng) {
int expected_timestamp_increment[8] = {
-1, // will not be used.
10 * kSampleRateKhz,
- 0, 0, // timestamp does not increase during CNG mode.
- 0, 0,
+ -1, -1, // timestamp will be empty during CNG mode; indicated by -1 here.
+ -1, -1,
50 * kSampleRateKhz, 10 * kSampleRateKhz
};
@@ -732,17 +738,27 @@ TEST_F(NetEqImplTest, CodecInternalCng) {
rtc::Optional<uint32_t> last_timestamp = neteq_->GetPlayoutTimestamp();
ASSERT_TRUE(last_timestamp);
+ // Lambda for verifying the timestamps.
minyue-webrtc 2016/04/06 18:13:07 I like it
+ auto verify_timestamp = [&last_timestamp, &expected_timestamp_increment](
+ rtc::Optional<uint32_t> ts, size_t i) {
+ if (expected_timestamp_increment[i] == -1) {
+ // Expect to get an empty timestamp value during CNG and PLC.
+ EXPECT_FALSE(ts) << "i = " << i;
+ } else {
+ ASSERT_TRUE(ts) << "i = " << i;
+ EXPECT_EQ(*ts, *last_timestamp + expected_timestamp_increment[i])
+ << "i = " << i;
+ last_timestamp = ts;
+ }
+ };
+
for (size_t i = 1; i < 6; ++i) {
ASSERT_EQ(kMaxOutputSize, output.samples_per_channel_);
EXPECT_EQ(1u, output.num_channels_);
EXPECT_EQ(expected_type[i - 1], output.speech_type_);
- rtc::Optional<uint32_t> timestamp = neteq_->GetPlayoutTimestamp();
- EXPECT_TRUE(timestamp);
EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
- timestamp = neteq_->GetPlayoutTimestamp();
- ASSERT_TRUE(timestamp);
- EXPECT_EQ(*timestamp, *last_timestamp + expected_timestamp_increment[i]);
- last_timestamp = timestamp;
+ SCOPED_TRACE("");
minyue-webrtc 2016/04/06 18:13:07 what does this do?
hlundin-webrtc 2016/04/06 18:21:39 If a failure happens in the lambda, a printout wil
+ verify_timestamp(neteq_->GetPlayoutTimestamp(), i);
}
// Insert third packet, which leaves a gap from last packet.
@@ -757,10 +773,8 @@ TEST_F(NetEqImplTest, CodecInternalCng) {
EXPECT_EQ(1u, output.num_channels_);
EXPECT_EQ(expected_type[i - 1], output.speech_type_);
EXPECT_EQ(NetEq::kOK, neteq_->GetAudio(&output));
- rtc::Optional<uint32_t> timestamp = neteq_->GetPlayoutTimestamp();
- ASSERT_TRUE(timestamp);
- EXPECT_EQ(*timestamp, *last_timestamp + expected_timestamp_increment[i]);
- last_timestamp = timestamp;
+ SCOPED_TRACE("");
+ verify_timestamp(neteq_->GetPlayoutTimestamp(), i);
}
// Now check the packet buffer, and make sure it is empty.
« no previous file with comments | « webrtc/modules/audio_coding/neteq/neteq_impl.cc ('k') | webrtc/modules/audio_coding/neteq/neteq_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698