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

Unified Diff: webrtc/video/end_to_end_tests.cc

Issue 1639253007: Validates sending RTCP before RTP. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: adjusted RtpRtcpImplTest to comply with stricter conditions for Sender Report Created 4 years, 11 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/video/end_to_end_tests.cc
diff --git a/webrtc/video/end_to_end_tests.cc b/webrtc/video/end_to_end_tests.cc
index fc793eccf60b13b3ac9d56a9320d99307fede504..a12b63ea68892bce56063042e3e58e1a2a74da0d 100644
--- a/webrtc/video/end_to_end_tests.cc
+++ b/webrtc/video/end_to_end_tests.cc
@@ -80,7 +80,7 @@ class EndToEndTest : public test::CallTest {
void RespectsRtcpMode(RtcpMode rtcp_mode);
void TestXrReceiverReferenceTimeReport(bool enable_rrtr);
void TestSendsSetSsrcs(size_t num_ssrcs, bool send_single_ssrc_first);
- void TestRtpStatePreservation(bool use_rtx);
+ void TestRtpStatePreservation(bool use_rtx, bool wait_rtcp);
void VerifyHistogramStats(bool use_rtx, bool use_red, bool screenshare);
};
@@ -2936,7 +2936,7 @@ TEST_F(EndToEndTest, DISABLED_RedundantPayloadsTransmittedOnAllSsrcs) {
RunBaseTest(&test);
}
-void EndToEndTest::TestRtpStatePreservation(bool use_rtx) {
+void EndToEndTest::TestRtpStatePreservation(bool use_rtx, bool wait_rtcp) {
static const uint32_t kMaxSequenceNumberGap = 100;
class RtpSequenceObserver : public test::RtpRtcpObserver {
public:
@@ -3105,6 +3105,16 @@ void EndToEndTest::TestRtpStatePreservation(bool use_rtx) {
video_send_stream_ =
sender_call_->CreateVideoSendStream(video_send_config_, one_stream);
video_send_stream_->Start();
+ if (wait_rtcp) {
+ // Wait for SR rtcp packet before generating rtp packets.
stefan-webrtc 2016/02/01 17:32:07 I'm not sure I understand this test change. How ca
danilchap 2016/02/01 18:24:18 RTP packets will not be send until FrameGeneratorC
+ // There should be no rtcp packet or its time should be in sync with rtp.
+
+ // Rapid Resync Request forces sending RTCP Sender Report back.
+ // Alternative approach is to wait several seconds for SR to be generated.
+ // TODO(danilchap): Create rtcp packet with dedicated class when it lands.
+ const uint8_t kPacket[] = {0x85, 205, 0x00, 0x02, 0, 0, 0, 0, 0, 0, 0, 0};
+ video_send_stream_->DeliverRtcp(kPacket, sizeof(kPacket));
+ }
CreateFrameGeneratorCapturer();
frame_generator_capturer_->Start();
@@ -3137,11 +3147,15 @@ void EndToEndTest::TestRtpStatePreservation(bool use_rtx) {
}
TEST_F(EndToEndTest, DISABLED_RestartingSendStreamPreservesRtpState) {
- TestRtpStatePreservation(false);
+ TestRtpStatePreservation(false, false);
}
TEST_F(EndToEndTest, RestartingSendStreamPreservesRtpStatesWithRtx) {
- TestRtpStatePreservation(true);
+ TestRtpStatePreservation(true, false);
+}
+
+TEST_F(EndToEndTest, RestartingSendStreamKeepsRtpAndRtcpTimestampsSynced) {
+ TestRtpStatePreservation(true, true);
}
TEST_F(EndToEndTest, RespectsNetworkState) {

Powered by Google App Engine
This is Rietveld 408576698