| 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 0bb9b51e166e00243a5cfb72291192f500769e83..755d634d56f24b9924f078db5ff1472e5b2fc73c 100644
|
| --- a/webrtc/audio/audio_receive_stream_unittest.cc
|
| +++ b/webrtc/audio/audio_receive_stream_unittest.cc
|
| @@ -20,10 +20,84 @@ namespace webrtc {
|
| namespace test {
|
| namespace {
|
|
|
| +AudioDecodingCallStats MakeAudioDecodeStatsForTest() {
|
| + 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;
|
| + return audio_decode_stats;
|
| +}
|
| +
|
| const int kChannelId = 2;
|
| const uint32_t kRemoteSsrc = 1234;
|
| const uint32_t kLocalSsrc = 5678;
|
| const size_t kAbsoluteSendTimeLength = 4;
|
| +const int kAbsSendTimeId = 3;
|
| +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};
|
| +const AudioDecodingCallStats kAudioDecodeStats = MakeAudioDecodeStatsForTest();
|
| +
|
| +struct ConfigHelper {
|
| + ConfigHelper() {
|
| + EXPECT_CALL(voice_engine_,
|
| + RegisterVoiceEngineObserver(testing::_)).WillOnce(testing::Return(0));
|
| + EXPECT_CALL(voice_engine_,
|
| + DeRegisterVoiceEngineObserver()).WillOnce(testing::Return(0));
|
| + AudioState::Config config;
|
| + config.voice_engine = &voice_engine_;
|
| + audio_state_ = AudioState::Create(config);
|
| + stream_config_.voe_channel_id = kChannelId;
|
| + stream_config_.rtp.local_ssrc = kLocalSsrc;
|
| + stream_config_.rtp.remote_ssrc = kRemoteSsrc;
|
| + }
|
| +
|
| + MockRemoteBitrateEstimator* remote_bitrate_estimator() {
|
| + return &remote_bitrate_estimator_;
|
| + }
|
| + AudioReceiveStream::Config& config() { return stream_config_; }
|
| + rtc::scoped_refptr<AudioState> audio_state() { return audio_state_; }
|
| + MockVoiceEngine& voice_engine() { return voice_engine_; }
|
| +
|
| + void SetupMockForGetStats() {
|
| + 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>(kAudioDecodeStats), Return(0)));
|
| + }
|
| +
|
| + private:
|
| + MockRemoteBitrateEstimator remote_bitrate_estimator_;
|
| + MockVoiceEngine voice_engine_;
|
| + rtc::scoped_refptr<AudioState> audio_state_;
|
| + AudioReceiveStream::Config stream_config_;
|
| +};
|
|
|
| void BuildAbsoluteSendTimeExtension(uint8_t* buffer,
|
| int id,
|
| @@ -62,7 +136,6 @@ size_t CreateRtpHeaderWithAbsSendTime(uint8_t* header,
|
| } // namespace
|
|
|
| TEST(AudioReceiveStreamTest, ConfigToString) {
|
| - const int kAbsSendTimeId = 3;
|
| AudioReceiveStream::Config config;
|
| config.rtp.remote_ssrc = kRemoteSsrc;
|
| config.rtp.local_ssrc = kLocalSsrc;
|
| @@ -79,31 +152,24 @@ TEST(AudioReceiveStreamTest, ConfigToString) {
|
| }
|
|
|
| TEST(AudioReceiveStreamTest, ConstructDestruct) {
|
| - MockRemoteBitrateEstimator remote_bitrate_estimator;
|
| - MockVoiceEngine voice_engine;
|
| - AudioReceiveStream::Config config;
|
| - config.voe_channel_id = kChannelId;
|
| - internal::AudioReceiveStream recv_stream(&remote_bitrate_estimator, config,
|
| - &voice_engine);
|
| + ConfigHelper helper;
|
| + internal::AudioReceiveStream recv_stream(
|
| + helper.remote_bitrate_estimator(), helper.config(), helper.audio_state());
|
| }
|
|
|
| TEST(AudioReceiveStreamTest, AudioPacketUpdatesBweWithTimestamp) {
|
| - MockRemoteBitrateEstimator remote_bitrate_estimator;
|
| - MockVoiceEngine voice_engine;
|
| - AudioReceiveStream::Config config;
|
| - config.combined_audio_video_bwe = true;
|
| - config.voe_channel_id = kChannelId;
|
| - const int kAbsSendTimeId = 3;
|
| - config.rtp.extensions.push_back(
|
| + ConfigHelper helper;
|
| + helper.config().combined_audio_video_bwe = true;
|
| + helper.config().rtp.extensions.push_back(
|
| RtpExtension(RtpExtension::kAbsSendTime, kAbsSendTimeId));
|
| - internal::AudioReceiveStream recv_stream(&remote_bitrate_estimator, config,
|
| - &voice_engine);
|
| + internal::AudioReceiveStream recv_stream(
|
| + helper.remote_bitrate_estimator(), helper.config(), helper.audio_state());
|
| uint8_t rtp_packet[30];
|
| const int kAbsSendTimeValue = 1234;
|
| CreateRtpHeaderWithAbsSendTime(rtp_packet, kAbsSendTimeId, kAbsSendTimeValue);
|
| PacketTime packet_time(5678000, 0);
|
| const size_t kExpectedHeaderLength = 20;
|
| - EXPECT_CALL(remote_bitrate_estimator,
|
| + EXPECT_CALL(*helper.remote_bitrate_estimator(),
|
| IncomingPacket(packet_time.timestamp / 1000,
|
| sizeof(rtp_packet) - kExpectedHeaderLength,
|
| testing::_, false))
|
| @@ -113,57 +179,10 @@ TEST(AudioReceiveStreamTest, AudioPacketUpdatesBweWithTimestamp) {
|
| }
|
|
|
| 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;
|
| - MockVoiceEngine voice_engine;
|
| - AudioReceiveStream::Config config;
|
| - 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)));
|
| -
|
| + ConfigHelper helper;
|
| + internal::AudioReceiveStream recv_stream(
|
| + helper.remote_bitrate_estimator(), helper.config(), helper.audio_state());
|
| + helper.SetupMockForGetStats();
|
| AudioReceiveStream::Stats stats = recv_stream.GetStats();
|
| EXPECT_EQ(kRemoteSsrc, stats.remote_ssrc);
|
| EXPECT_EQ(static_cast<int64_t>(kCallStats.bytesReceived), stats.bytes_rcvd);
|
| @@ -190,13 +209,13 @@ TEST(AudioReceiveStreamTest, GetStats) {
|
| stats.accelerate_rate);
|
| EXPECT_EQ(Q14ToFloat(kNetworkStats.currentPreemptiveRate),
|
| stats.preemptive_expand_rate);
|
| - EXPECT_EQ(audio_decode_stats.calls_to_silence_generator,
|
| + EXPECT_EQ(kAudioDecodeStats.calls_to_silence_generator,
|
| stats.decoding_calls_to_silence_generator);
|
| - 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(kAudioDecodeStats.calls_to_neteq, stats.decoding_calls_to_neteq);
|
| + EXPECT_EQ(kAudioDecodeStats.decoded_normal, stats.decoding_normal);
|
| + EXPECT_EQ(kAudioDecodeStats.decoded_plc, stats.decoding_plc);
|
| + EXPECT_EQ(kAudioDecodeStats.decoded_cng, stats.decoding_cng);
|
| + EXPECT_EQ(kAudioDecodeStats.decoded_plc_cng, stats.decoding_plc_cng);
|
| EXPECT_EQ(kCallStats.capture_start_ntp_time_ms_,
|
| stats.capture_start_ntp_time_ms);
|
| }
|
|
|