Index: webrtc/audio/audio_receive_stream_unittest.cc |
diff --git a/webrtc/audio/audio_receive_stream_unittest.cc b/webrtc/audio/audio_receive_stream_unittest.cc |
index 4e267f17389fa9fbc45e6e122f915fe035c6043c..0bb9b51e166e00243a5cfb72291192f500769e83 100644 |
--- a/webrtc/audio/audio_receive_stream_unittest.cc |
+++ b/webrtc/audio/audio_receive_stream_unittest.cc |
@@ -14,12 +14,15 @@ |
#include "webrtc/audio/conversion.h" |
#include "webrtc/modules/remote_bitrate_estimator/include/mock/mock_remote_bitrate_estimator.h" |
#include "webrtc/modules/rtp_rtcp/source/byte_io.h" |
-#include "webrtc/test/fake_voice_engine.h" |
+#include "webrtc/test/mock_voice_engine.h" |
+namespace webrtc { |
+namespace test { |
namespace { |
-using webrtc::ByteWriter; |
- |
+const int kChannelId = 2; |
+const uint32_t kRemoteSsrc = 1234; |
+const uint32_t kLocalSsrc = 5678; |
const size_t kAbsoluteSendTimeLength = 4; |
void BuildAbsoluteSendTimeExtension(uint8_t* buffer, |
@@ -58,39 +61,38 @@ size_t CreateRtpHeaderWithAbsSendTime(uint8_t* header, |
} |
} // namespace |
-namespace webrtc { |
-namespace test { |
- |
TEST(AudioReceiveStreamTest, ConfigToString) { |
const int kAbsSendTimeId = 3; |
AudioReceiveStream::Config config; |
- config.rtp.remote_ssrc = 1234; |
- config.rtp.local_ssrc = 5678; |
+ config.rtp.remote_ssrc = kRemoteSsrc; |
+ config.rtp.local_ssrc = kLocalSsrc; |
config.rtp.extensions.push_back( |
RtpExtension(RtpExtension::kAbsSendTime, kAbsSendTimeId)); |
- config.voe_channel_id = 1; |
+ config.voe_channel_id = kChannelId; |
config.combined_audio_video_bwe = true; |
- EXPECT_EQ("{rtp: {remote_ssrc: 1234, local_ssrc: 5678, extensions: [{name: " |
+ EXPECT_EQ( |
+ "{rtp: {remote_ssrc: 1234, local_ssrc: 5678, extensions: [{name: " |
"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time, id: 3}]}, " |
"receive_transport: nullptr, rtcp_send_transport: nullptr, " |
- "voe_channel_id: 1, combined_audio_video_bwe: true}", config.ToString()); |
+ "voe_channel_id: 2, combined_audio_video_bwe: true}", |
+ config.ToString()); |
} |
TEST(AudioReceiveStreamTest, ConstructDestruct) { |
MockRemoteBitrateEstimator remote_bitrate_estimator; |
- FakeVoiceEngine voice_engine; |
+ MockVoiceEngine voice_engine; |
AudioReceiveStream::Config config; |
- config.voe_channel_id = 1; |
+ config.voe_channel_id = kChannelId; |
internal::AudioReceiveStream recv_stream(&remote_bitrate_estimator, config, |
&voice_engine); |
} |
TEST(AudioReceiveStreamTest, AudioPacketUpdatesBweWithTimestamp) { |
MockRemoteBitrateEstimator remote_bitrate_estimator; |
- FakeVoiceEngine voice_engine; |
+ MockVoiceEngine voice_engine; |
AudioReceiveStream::Config config; |
config.combined_audio_video_bwe = true; |
- config.voe_channel_id = FakeVoiceEngine::kRecvChannelId; |
+ config.voe_channel_id = kChannelId; |
const int kAbsSendTimeId = 3; |
config.rtp.extensions.push_back( |
RtpExtension(RtpExtension::kAbsSendTime, kAbsSendTimeId)); |
@@ -102,60 +104,100 @@ TEST(AudioReceiveStreamTest, AudioPacketUpdatesBweWithTimestamp) { |
PacketTime packet_time(5678000, 0); |
const size_t kExpectedHeaderLength = 20; |
EXPECT_CALL(remote_bitrate_estimator, |
- IncomingPacket(packet_time.timestamp / 1000, |
- sizeof(rtp_packet) - kExpectedHeaderLength, testing::_, false)) |
+ IncomingPacket(packet_time.timestamp / 1000, |
+ sizeof(rtp_packet) - kExpectedHeaderLength, |
+ testing::_, false)) |
.Times(1); |
EXPECT_TRUE( |
recv_stream.DeliverRtp(rtp_packet, sizeof(rtp_packet), packet_time)); |
} |
TEST(AudioReceiveStreamTest, GetStats) { |
+ const int kJitterBufferDelay = -7; |
+ const int kPlayoutBufferDelay = 302; |
+ const unsigned int kSpeechOutputLevel = 99; |
+ const CallStatistics kCallStats = {345, 678, 901, 234, -12, |
+ 3456, 7890, 567, 890, 123}; |
+ |
+ const CodecInst kCodecInst = {123, "codec_name_recv", 96000, -187, -198, |
+ -103}; |
+ |
+ const NetworkStatistics kNetworkStats = { |
+ 123, 456, false, 0, 0, 789, 12, 345, 678, 901, -1, -1, -1, -1, -1, 0}; |
+ |
+ webrtc::AudioDecodingCallStats audio_decode_stats; |
+ { |
+ audio_decode_stats.calls_to_silence_generator = 234; |
+ audio_decode_stats.calls_to_neteq = 567; |
+ audio_decode_stats.decoded_normal = 890; |
+ audio_decode_stats.decoded_plc = 123; |
+ audio_decode_stats.decoded_cng = 456; |
+ audio_decode_stats.decoded_plc_cng = 789; |
+ } |
+ |
MockRemoteBitrateEstimator remote_bitrate_estimator; |
- FakeVoiceEngine voice_engine; |
+ MockVoiceEngine voice_engine; |
AudioReceiveStream::Config config; |
- config.rtp.remote_ssrc = FakeVoiceEngine::kRecvSsrc; |
- config.voe_channel_id = FakeVoiceEngine::kRecvChannelId; |
+ config.rtp.remote_ssrc = kRemoteSsrc; |
+ config.voe_channel_id = kChannelId; |
internal::AudioReceiveStream recv_stream(&remote_bitrate_estimator, config, |
&voice_engine); |
+ using testing::_; |
+ using testing::DoAll; |
+ using testing::Return; |
+ using testing::SetArgPointee; |
+ using testing::SetArgReferee; |
+ EXPECT_CALL(voice_engine, GetRemoteSSRC(kChannelId, _)) |
+ .WillOnce(DoAll(SetArgReferee<1>(0), Return(0))); |
+ EXPECT_CALL(voice_engine, GetRTCPStatistics(kChannelId, _)) |
+ .WillOnce(DoAll(SetArgReferee<1>(kCallStats), Return(0))); |
+ EXPECT_CALL(voice_engine, GetRecCodec(kChannelId, _)) |
+ .WillOnce(DoAll(SetArgReferee<1>(kCodecInst), Return(0))); |
+ EXPECT_CALL(voice_engine, GetDelayEstimate(kChannelId, _, _)) |
+ .WillOnce(DoAll(SetArgPointee<1>(kJitterBufferDelay), |
+ SetArgPointee<2>(kPlayoutBufferDelay), Return(0))); |
+ EXPECT_CALL(voice_engine, GetSpeechOutputLevelFullRange(kChannelId, _)) |
+ .WillOnce(DoAll(SetArgReferee<1>(kSpeechOutputLevel), Return(0))); |
+ EXPECT_CALL(voice_engine, GetNetworkStatistics(kChannelId, _)) |
+ .WillOnce(DoAll(SetArgReferee<1>(kNetworkStats), Return(0))); |
+ EXPECT_CALL(voice_engine, GetDecodingCallStatistics(kChannelId, _)) |
+ .WillOnce(DoAll(SetArgPointee<1>(audio_decode_stats), Return(0))); |
+ |
AudioReceiveStream::Stats stats = recv_stream.GetStats(); |
- const CallStatistics& call_stats = FakeVoiceEngine::kRecvCallStats; |
- const CodecInst& codec_inst = FakeVoiceEngine::kRecvCodecInst; |
- const NetworkStatistics& net_stats = FakeVoiceEngine::kRecvNetworkStats; |
- const AudioDecodingCallStats& decode_stats = |
- FakeVoiceEngine::kRecvAudioDecodingCallStats; |
- EXPECT_EQ(FakeVoiceEngine::kRecvSsrc, stats.remote_ssrc); |
- EXPECT_EQ(static_cast<int64_t>(call_stats.bytesReceived), stats.bytes_rcvd); |
- EXPECT_EQ(static_cast<uint32_t>(call_stats.packetsReceived), |
+ EXPECT_EQ(kRemoteSsrc, stats.remote_ssrc); |
+ EXPECT_EQ(static_cast<int64_t>(kCallStats.bytesReceived), stats.bytes_rcvd); |
+ EXPECT_EQ(static_cast<uint32_t>(kCallStats.packetsReceived), |
stats.packets_rcvd); |
- EXPECT_EQ(call_stats.cumulativeLost, stats.packets_lost); |
- EXPECT_EQ(Q8ToFloat(call_stats.fractionLost), stats.fraction_lost); |
- EXPECT_EQ(std::string(codec_inst.plname), stats.codec_name); |
- EXPECT_EQ(call_stats.extendedMax, stats.ext_seqnum); |
- EXPECT_EQ(call_stats.jitterSamples / (codec_inst.plfreq / 1000), |
+ EXPECT_EQ(kCallStats.cumulativeLost, stats.packets_lost); |
+ EXPECT_EQ(Q8ToFloat(kCallStats.fractionLost), stats.fraction_lost); |
+ EXPECT_EQ(std::string(kCodecInst.plname), stats.codec_name); |
+ EXPECT_EQ(kCallStats.extendedMax, stats.ext_seqnum); |
+ EXPECT_EQ(kCallStats.jitterSamples / (kCodecInst.plfreq / 1000), |
stats.jitter_ms); |
- EXPECT_EQ(net_stats.currentBufferSize, stats.jitter_buffer_ms); |
- EXPECT_EQ(net_stats.preferredBufferSize, stats.jitter_buffer_preferred_ms); |
- EXPECT_EQ(static_cast<uint32_t>(FakeVoiceEngine::kRecvJitterBufferDelay + |
- FakeVoiceEngine::kRecvPlayoutBufferDelay), stats.delay_estimate_ms); |
- EXPECT_EQ(static_cast<int32_t>(FakeVoiceEngine::kRecvSpeechOutputLevel), |
- stats.audio_level); |
- EXPECT_EQ(Q14ToFloat(net_stats.currentExpandRate), stats.expand_rate); |
- EXPECT_EQ(Q14ToFloat(net_stats.currentSpeechExpandRate), |
+ EXPECT_EQ(kNetworkStats.currentBufferSize, stats.jitter_buffer_ms); |
+ EXPECT_EQ(kNetworkStats.preferredBufferSize, |
+ stats.jitter_buffer_preferred_ms); |
+ EXPECT_EQ(static_cast<uint32_t>(kJitterBufferDelay + kPlayoutBufferDelay), |
+ stats.delay_estimate_ms); |
+ EXPECT_EQ(static_cast<int32_t>(kSpeechOutputLevel), stats.audio_level); |
+ EXPECT_EQ(Q14ToFloat(kNetworkStats.currentExpandRate), stats.expand_rate); |
+ EXPECT_EQ(Q14ToFloat(kNetworkStats.currentSpeechExpandRate), |
stats.speech_expand_rate); |
- EXPECT_EQ(Q14ToFloat(net_stats.currentSecondaryDecodedRate), |
+ EXPECT_EQ(Q14ToFloat(kNetworkStats.currentSecondaryDecodedRate), |
stats.secondary_decoded_rate); |
- EXPECT_EQ(Q14ToFloat(net_stats.currentAccelerateRate), stats.accelerate_rate); |
- EXPECT_EQ(Q14ToFloat(net_stats.currentPreemptiveRate), |
+ EXPECT_EQ(Q14ToFloat(kNetworkStats.currentAccelerateRate), |
+ stats.accelerate_rate); |
+ EXPECT_EQ(Q14ToFloat(kNetworkStats.currentPreemptiveRate), |
stats.preemptive_expand_rate); |
- EXPECT_EQ(decode_stats.calls_to_silence_generator, |
+ EXPECT_EQ(audio_decode_stats.calls_to_silence_generator, |
stats.decoding_calls_to_silence_generator); |
- EXPECT_EQ(decode_stats.calls_to_neteq, stats.decoding_calls_to_neteq); |
- EXPECT_EQ(decode_stats.decoded_normal, stats.decoding_normal); |
- EXPECT_EQ(decode_stats.decoded_plc, stats.decoding_plc); |
- EXPECT_EQ(decode_stats.decoded_cng, stats.decoding_cng); |
- EXPECT_EQ(decode_stats.decoded_plc_cng, stats.decoding_plc_cng); |
- EXPECT_EQ(call_stats.capture_start_ntp_time_ms_, |
+ EXPECT_EQ(audio_decode_stats.calls_to_neteq, stats.decoding_calls_to_neteq); |
+ EXPECT_EQ(audio_decode_stats.decoded_normal, stats.decoding_normal); |
+ EXPECT_EQ(audio_decode_stats.decoded_plc, stats.decoding_plc); |
+ EXPECT_EQ(audio_decode_stats.decoded_cng, stats.decoding_cng); |
+ EXPECT_EQ(audio_decode_stats.decoded_plc_cng, stats.decoding_plc_cng); |
+ EXPECT_EQ(kCallStats.capture_start_ntp_time_ms_, |
stats.capture_start_ntp_time_ms); |
} |
} // namespace test |