Chromium Code Reviews| Index: webrtc/modules/rtp_rtcp/source/rtp_receiver_unittest.cc |
| diff --git a/webrtc/modules/rtp_rtcp/source/rtp_receiver_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_receiver_unittest.cc |
| index b0531c3c51a820ec7fd361b7653b06f1df00b586..14be2dd0a214c8c37038613b060a9a67a85339e2 100644 |
| --- a/webrtc/modules/rtp_rtcp/source/rtp_receiver_unittest.cc |
| +++ b/webrtc/modules/rtp_rtcp/source/rtp_receiver_unittest.cc |
| @@ -255,4 +255,82 @@ TEST_F(RtpReceiverTest, GetSourcesRemoveOutdatedSource) { |
| csrc_sources.begin()->timestamp_ms()); |
| } |
| +// The audio level from the RTPHeader extension should be stored in the |
| +// RTPSource with the matching SSRC. |
|
Taylor Brandstetter
2017/08/24 20:40:57
nit: RtpSource
Zach Stein
2017/08/24 21:14:53
Done.
|
| +TEST_F(RtpReceiverTest, GetSourcesContainsAudioLevelExtension) { |
| + RTPHeader header; |
| + int64_t time1_ms = fake_clock_.TimeInMilliseconds(); |
| + header.payloadType = kPcmuPayloadType; |
| + header.ssrc = kSsrc1; |
| + header.timestamp = rtp_timestamp(time1_ms); |
| + header.extension.hasAudioLevel = true; |
| + header.extension.audioLevel = 10; |
| + PayloadUnion payload_specific = {AudioPayload()}; |
| + |
| + EXPECT_TRUE(rtp_receiver_->IncomingRtpPacket( |
| + header, kTestPayload, sizeof(kTestPayload), payload_specific, !kInOrder)); |
| + auto sources = rtp_receiver_->GetSources(); |
| + EXPECT_THAT(sources, UnorderedElementsAre(RtpSource( |
| + time1_ms, kSsrc1, RtpSourceType::SSRC, 10))); |
| + |
|
Taylor Brandstetter
2017/08/24 20:40:57
May help to have some comments for the different s
Zach Stein
2017/08/24 21:14:53
Done.
|
| + fake_clock_.AdvanceTimeMilliseconds(1); |
| + int64_t time2_ms = fake_clock_.TimeInMilliseconds(); |
| + header.ssrc = kSsrc2; |
| + header.timestamp = rtp_timestamp(time2_ms); |
| + header.extension.hasAudioLevel = true; |
| + header.extension.audioLevel = 20; |
| + |
| + EXPECT_TRUE(rtp_receiver_->IncomingRtpPacket( |
| + header, kTestPayload, sizeof(kTestPayload), payload_specific, !kInOrder)); |
| + sources = rtp_receiver_->GetSources(); |
| + EXPECT_THAT(sources, |
| + UnorderedElementsAre( |
| + RtpSource(time1_ms, kSsrc1, RtpSourceType::SSRC, 10), |
| + RtpSource(time2_ms, kSsrc2, RtpSourceType::SSRC, 20))); |
| + |
| + fake_clock_.AdvanceTimeMilliseconds(1); |
| + int64_t time3_ms = fake_clock_.TimeInMilliseconds(); |
| + header.ssrc = kSsrc1; |
| + header.timestamp = rtp_timestamp(time3_ms); |
| + header.extension.hasAudioLevel = true; |
| + header.extension.audioLevel = 30; |
| + |
| + EXPECT_TRUE(rtp_receiver_->IncomingRtpPacket( |
| + header, kTestPayload, sizeof(kTestPayload), payload_specific, !kInOrder)); |
| + sources = rtp_receiver_->GetSources(); |
| + EXPECT_THAT(sources, |
| + UnorderedElementsAre( |
| + RtpSource(time3_ms, kSsrc1, RtpSourceType::SSRC, 30), |
| + RtpSource(time2_ms, kSsrc2, RtpSourceType::SSRC, 20))); |
| +} |
| + |
| +TEST_F(RtpReceiverTest, |
| + MissingAudioLevelHeaderExtensionClearsRtpSourceAudioLevel) { |
| + RTPHeader header; |
| + int64_t time1_ms = fake_clock_.TimeInMilliseconds(); |
| + header.payloadType = kPcmuPayloadType; |
| + header.ssrc = kSsrc1; |
| + header.timestamp = rtp_timestamp(time1_ms); |
| + header.extension.hasAudioLevel = true; |
| + header.extension.audioLevel = 10; |
| + PayloadUnion payload_specific = {AudioPayload()}; |
| + |
| + EXPECT_TRUE(rtp_receiver_->IncomingRtpPacket( |
| + header, kTestPayload, sizeof(kTestPayload), payload_specific, !kInOrder)); |
| + auto sources = rtp_receiver_->GetSources(); |
| + EXPECT_THAT(sources, UnorderedElementsAre(RtpSource( |
| + time1_ms, kSsrc1, RtpSourceType::SSRC, 10))); |
| + |
| + fake_clock_.AdvanceTimeMilliseconds(1); |
| + int64_t time2_ms = fake_clock_.TimeInMilliseconds(); |
| + header.timestamp = rtp_timestamp(time2_ms); |
| + header.extension.hasAudioLevel = false; |
| + |
| + EXPECT_TRUE(rtp_receiver_->IncomingRtpPacket( |
| + header, kTestPayload, sizeof(kTestPayload), payload_specific, !kInOrder)); |
| + sources = rtp_receiver_->GetSources(); |
| + EXPECT_THAT(sources, UnorderedElementsAre( |
| + RtpSource(time2_ms, kSsrc1, RtpSourceType::SSRC))); |
| +} |
|
Taylor Brandstetter
2017/08/24 20:40:57
Good tests!
|
| + |
| } // namespace webrtc |