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

Unified Diff: webrtc/video/end_to_end_tests.cc

Issue 1661923002: Re-enable RestartingSendStreamPreservesRtpState. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: 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
« no previous file with comments | « tools/valgrind-webrtc/gtest_exclude/video_engine_tests.gtest-memcheck.txt ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 6201e92220f0291085451ee6bb46bdb98ae8d9fd..a25d1824e1bc360ac36f87015109be059eb68dbb 100644
--- a/webrtc/video/end_to_end_tests.cc
+++ b/webrtc/video/end_to_end_tests.cc
@@ -8,6 +8,7 @@
* be found in the AUTHORS file in the root of the source tree.
*/
#include <algorithm>
+#include <list>
#include <map>
#include <sstream>
#include <string>
@@ -2935,7 +2936,6 @@ TEST_F(EndToEndTest, DISABLED_RedundantPayloadsTransmittedOnAllSsrcs) {
}
void EndToEndTest::TestRtpStatePreservation(bool use_rtx) {
- static const uint32_t kMaxSequenceNumberGap = 100;
static const uint64_t kMaxTimestampGap = kDefaultTimeoutMs * 90;
class RtpSequenceObserver : public test::RtpRtcpObserver {
public:
@@ -2968,25 +2968,41 @@ void EndToEndTest::TestRtpStatePreservation(bool use_rtx) {
EXPECT_TRUE(configured_ssrcs_[ssrc])
<< "Received SSRC that wasn't configured: " << ssrc;
- std::map<uint32_t, uint16_t>::iterator it =
- last_observed_sequence_number_.find(header.ssrc);
- if (it == last_observed_sequence_number_.end()) {
- last_observed_sequence_number_[ssrc] = sequence_number;
- last_observed_timestamp_[ssrc] = timestamp;
+ static const uint16_t kMaxSequenceNumberGap = 100;
+ std::list<uint16_t>& seq_numbers = last_observed_seq_numbers_[ssrc];
pbos-webrtc 2016/02/03 13:03:27 pointer instead of reference here please.
danilchap 2016/02/03 14:04:48 Done.
+ if (seq_numbers.empty()) {
+ seq_numbers.push_back(sequence_number);
} else {
+ // We shouldn't get replays of previous sequence numbers.
+ for (uint16_t observed : seq_numbers) {
+ EXPECT_NE(observed, sequence_number)
+ << "Received sequence number " << sequence_number
+ << " for SSRC " << ssrc << " 2nd time.";
+ }
// Verify sequence numbers are reasonably close.
pbos-webrtc 2016/02/03 13:03:27 There should be some timediff function that does t
danilchap 2016/02/03 14:04:48 Failed to find it. Thank you for pointing where it
- uint32_t extended_sequence_number = sequence_number;
- // Check for roll-over.
- if (sequence_number < last_observed_sequence_number_[ssrc])
- extended_sequence_number += 0xFFFFu + 1;
- EXPECT_LE(
- extended_sequence_number - last_observed_sequence_number_[ssrc],
- kMaxSequenceNumberGap)
- << "Gap in sequence numbers ("
- << last_observed_sequence_number_[ssrc] << " -> " << sequence_number
- << ") too large for SSRC: " << ssrc << ".";
- last_observed_sequence_number_[ssrc] = sequence_number;
+ uint16_t latest_observed = seq_numbers.back();
+ uint16_t diff = sequence_number - latest_observed;
+ uint16_t abs_diff;
+ if (diff < 0x8000) { // Positive difference.
+ abs_diff = diff;
+ } else { // Negative difference.
+ abs_diff = (0xffff - diff) + 1;
+ }
+ EXPECT_LE(abs_diff, kMaxSequenceNumberGap)
+ << "Gap in sequence numbers ("
+ << latest_observed << " -> " << sequence_number
+ << ") too large for SSRC: " << ssrc << ".";
+ seq_numbers.push_back(sequence_number);
+ if (seq_numbers.size() >= kMaxSequenceNumberGap) {
+ seq_numbers.pop_front();
+ }
+ }
+ std::map<uint32_t, uint32_t>::iterator it =
+ last_observed_timestamp_.find(ssrc);
+ if (it == last_observed_timestamp_.end()) {
+ last_observed_timestamp_[ssrc] = timestamp;
+ } else {
// TODO(pbos): Remove this check if we ever have monotonically
// increasing timestamps. Right now padding packets add a delta which
// can cause reordering between padding packets and regular packets,
@@ -3016,7 +3032,7 @@ void EndToEndTest::TestRtpStatePreservation(bool use_rtx) {
return SEND_PACKET;
}
- std::map<uint32_t, uint16_t> last_observed_sequence_number_;
+ std::map<uint32_t, std::list<uint16_t>> last_observed_seq_numbers_;
std::map<uint32_t, uint32_t> last_observed_timestamp_;
std::map<uint32_t, bool> configured_ssrcs_;
@@ -3115,7 +3131,7 @@ void EndToEndTest::TestRtpStatePreservation(bool use_rtx) {
DestroyStreams();
}
-TEST_F(EndToEndTest, DISABLED_RestartingSendStreamPreservesRtpState) {
+TEST_F(EndToEndTest, RestartingSendStreamPreservesRtpState) {
TestRtpStatePreservation(false);
}
« no previous file with comments | « tools/valgrind-webrtc/gtest_exclude/video_engine_tests.gtest-memcheck.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698