OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/memory/ref_counted.h" | 5 #include "base/memory/ref_counted.h" |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "base/test/simple_test_tick_clock.h" | 7 #include "base/test/simple_test_tick_clock.h" |
8 #include "base/time/tick_clock.h" | 8 #include "base/time/tick_clock.h" |
9 #include "media/cast/cast_environment.h" | 9 #include "media/cast/cast_environment.h" |
10 #include "media/cast/logging/logging_defines.h" | 10 #include "media/cast/logging/logging_defines.h" |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 | 58 |
59 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); | 59 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); |
60 | 60 |
61 RtpTimestamp rtp_timestamp = 0; | 61 RtpTimestamp rtp_timestamp = 0; |
62 uint32 frame_id = 0; | 62 uint32 frame_id = 0; |
63 | 63 |
64 AdvanceClocks(base::TimeDelta::FromMilliseconds(20)); | 64 AdvanceClocks(base::TimeDelta::FromMilliseconds(20)); |
65 | 65 |
66 cast_environment_->Logging()->InsertEncodedFrameEvent( | 66 cast_environment_->Logging()->InsertEncodedFrameEvent( |
67 sender_clock_->NowTicks(), | 67 sender_clock_->NowTicks(), |
68 kVideoFrameEncoded, | 68 FRAME_ENCODED, VIDEO_EVENT, |
69 rtp_timestamp, | 69 rtp_timestamp, |
70 frame_id, | 70 frame_id, |
71 1234, | 71 1234, |
72 true, | 72 true, |
73 5678); | 73 5678); |
74 | 74 |
75 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); | 75 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); |
76 | 76 |
77 AdvanceClocks(base::TimeDelta::FromMilliseconds(10)); | 77 AdvanceClocks(base::TimeDelta::FromMilliseconds(10)); |
78 cast_environment_->Logging()->InsertFrameEvent( | 78 cast_environment_->Logging()->InsertFrameEvent( |
79 receiver_clock_.NowTicks(), kVideoAckSent, rtp_timestamp, frame_id); | 79 receiver_clock_.NowTicks(), FRAME_ACK_SENT, VIDEO_EVENT, |
| 80 rtp_timestamp, frame_id); |
80 | 81 |
81 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); | 82 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); |
82 | 83 |
83 AdvanceClocks(base::TimeDelta::FromMilliseconds(30)); | 84 AdvanceClocks(base::TimeDelta::FromMilliseconds(30)); |
84 cast_environment_->Logging()->InsertFrameEvent( | 85 cast_environment_->Logging()->InsertFrameEvent( |
85 sender_clock_->NowTicks(), kVideoAckReceived, rtp_timestamp, frame_id); | 86 sender_clock_->NowTicks(), FRAME_ACK_RECEIVED, VIDEO_EVENT, |
| 87 rtp_timestamp, frame_id); |
86 | 88 |
87 EXPECT_TRUE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); | 89 EXPECT_TRUE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); |
88 | 90 |
89 int64 lower_bound_ms = lower_bound.InMilliseconds(); | 91 int64 lower_bound_ms = lower_bound.InMilliseconds(); |
90 int64 upper_bound_ms = upper_bound.InMilliseconds(); | 92 int64 upper_bound_ms = upper_bound.InMilliseconds(); |
91 EXPECT_EQ(70, lower_bound_ms); | 93 EXPECT_EQ(70, lower_bound_ms); |
92 EXPECT_EQ(110, upper_bound_ms); | 94 EXPECT_EQ(110, upper_bound_ms); |
93 EXPECT_GE(true_offset_ms, lower_bound_ms); | 95 EXPECT_GE(true_offset_ms, lower_bound_ms); |
94 EXPECT_LE(true_offset_ms, upper_bound_ms); | 96 EXPECT_LE(true_offset_ms, upper_bound_ms); |
95 } | 97 } |
96 | 98 |
97 // Same scenario as above, but event C arrives before event B. It doens't mean | 99 // Same scenario as above, but event C arrives before event B. It doens't mean |
98 // event C occurred before event B. | 100 // event C occurred before event B. |
99 TEST_F(ReceiverTimeOffsetEstimatorImplTest, EventCArrivesBeforeEventB) { | 101 TEST_F(ReceiverTimeOffsetEstimatorImplTest, EventCArrivesBeforeEventB) { |
100 int64 true_offset_ms = 100; | 102 int64 true_offset_ms = 100; |
101 receiver_clock_.Advance(base::TimeDelta::FromMilliseconds(true_offset_ms)); | 103 receiver_clock_.Advance(base::TimeDelta::FromMilliseconds(true_offset_ms)); |
102 | 104 |
103 base::TimeDelta lower_bound; | 105 base::TimeDelta lower_bound; |
104 base::TimeDelta upper_bound; | 106 base::TimeDelta upper_bound; |
105 | 107 |
106 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); | 108 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); |
107 | 109 |
108 RtpTimestamp rtp_timestamp = 0; | 110 RtpTimestamp rtp_timestamp = 0; |
109 uint32 frame_id = 0; | 111 uint32 frame_id = 0; |
110 | 112 |
111 AdvanceClocks(base::TimeDelta::FromMilliseconds(20)); | 113 AdvanceClocks(base::TimeDelta::FromMilliseconds(20)); |
112 | 114 |
113 cast_environment_->Logging()->InsertEncodedFrameEvent( | 115 cast_environment_->Logging()->InsertEncodedFrameEvent( |
114 sender_clock_->NowTicks(), | 116 sender_clock_->NowTicks(), |
115 kVideoFrameEncoded, | 117 FRAME_ENCODED, VIDEO_EVENT, |
116 rtp_timestamp, | 118 rtp_timestamp, |
117 frame_id, | 119 frame_id, |
118 1234, | 120 1234, |
119 true, | 121 true, |
120 5678); | 122 5678); |
121 | 123 |
122 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); | 124 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); |
123 | 125 |
124 AdvanceClocks(base::TimeDelta::FromMilliseconds(10)); | 126 AdvanceClocks(base::TimeDelta::FromMilliseconds(10)); |
125 base::TimeTicks event_b_time = receiver_clock_.NowTicks(); | 127 base::TimeTicks event_b_time = receiver_clock_.NowTicks(); |
126 AdvanceClocks(base::TimeDelta::FromMilliseconds(30)); | 128 AdvanceClocks(base::TimeDelta::FromMilliseconds(30)); |
127 base::TimeTicks event_c_time = sender_clock_->NowTicks(); | 129 base::TimeTicks event_c_time = sender_clock_->NowTicks(); |
128 | 130 |
129 cast_environment_->Logging()->InsertFrameEvent( | 131 cast_environment_->Logging()->InsertFrameEvent( |
130 event_c_time, kVideoAckReceived, rtp_timestamp, frame_id); | 132 event_c_time, FRAME_ACK_RECEIVED, VIDEO_EVENT, rtp_timestamp, frame_id); |
131 | 133 |
132 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); | 134 EXPECT_FALSE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); |
133 | 135 |
134 cast_environment_->Logging()->InsertFrameEvent( | 136 cast_environment_->Logging()->InsertFrameEvent( |
135 event_b_time, kVideoAckSent, rtp_timestamp, frame_id); | 137 event_b_time, FRAME_ACK_SENT, VIDEO_EVENT, rtp_timestamp, frame_id); |
136 | 138 |
137 EXPECT_TRUE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); | 139 EXPECT_TRUE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); |
138 | 140 |
139 int64 lower_bound_ms = lower_bound.InMilliseconds(); | 141 int64 lower_bound_ms = lower_bound.InMilliseconds(); |
140 int64 upper_bound_ms = upper_bound.InMilliseconds(); | 142 int64 upper_bound_ms = upper_bound.InMilliseconds(); |
141 EXPECT_EQ(70, lower_bound_ms); | 143 EXPECT_EQ(70, lower_bound_ms); |
142 EXPECT_EQ(110, upper_bound_ms); | 144 EXPECT_EQ(110, upper_bound_ms); |
143 EXPECT_GE(true_offset_ms, lower_bound_ms); | 145 EXPECT_GE(true_offset_ms, lower_bound_ms); |
144 EXPECT_LE(true_offset_ms, upper_bound_ms); | 146 EXPECT_LE(true_offset_ms, upper_bound_ms); |
145 } | 147 } |
(...skipping 13 matching lines...) Expand all Loading... |
159 int frame_id_c = 2; | 161 int frame_id_c = 2; |
160 | 162 |
161 // Frame 1 times: [20, 30+100, 60] | 163 // Frame 1 times: [20, 30+100, 60] |
162 // Frame 2 times: [30, 50+100, 55] | 164 // Frame 2 times: [30, 50+100, 55] |
163 // Frame 3 times: [77, 80+100, 110] | 165 // Frame 3 times: [77, 80+100, 110] |
164 // Bound should end up at [95, 103] | 166 // Bound should end up at [95, 103] |
165 // Events times in chronological order: 20, 30 x2, 50, 55, 60, 77, 80, 110 | 167 // Events times in chronological order: 20, 30 x2, 50, 55, 60, 77, 80, 110 |
166 AdvanceClocks(base::TimeDelta::FromMilliseconds(20)); | 168 AdvanceClocks(base::TimeDelta::FromMilliseconds(20)); |
167 cast_environment_->Logging()->InsertEncodedFrameEvent( | 169 cast_environment_->Logging()->InsertEncodedFrameEvent( |
168 sender_clock_->NowTicks(), | 170 sender_clock_->NowTicks(), |
169 kVideoFrameEncoded, | 171 FRAME_ENCODED, VIDEO_EVENT, |
170 rtp_timestamp_a, | 172 rtp_timestamp_a, |
171 frame_id_a, | 173 frame_id_a, |
172 1234, | 174 1234, |
173 true, | 175 true, |
174 5678); | 176 5678); |
175 | 177 |
176 AdvanceClocks(base::TimeDelta::FromMilliseconds(10)); | 178 AdvanceClocks(base::TimeDelta::FromMilliseconds(10)); |
177 cast_environment_->Logging()->InsertEncodedFrameEvent( | 179 cast_environment_->Logging()->InsertEncodedFrameEvent( |
178 sender_clock_->NowTicks(), | 180 sender_clock_->NowTicks(), |
179 kVideoFrameEncoded, | 181 FRAME_ENCODED, VIDEO_EVENT, |
180 rtp_timestamp_b, | 182 rtp_timestamp_b, |
181 frame_id_b, | 183 frame_id_b, |
182 1234, | 184 1234, |
183 true, | 185 true, |
184 5678); | 186 5678); |
185 cast_environment_->Logging()->InsertFrameEvent( | 187 cast_environment_->Logging()->InsertFrameEvent( |
186 receiver_clock_.NowTicks(), kVideoAckSent, rtp_timestamp_a, frame_id_a); | 188 receiver_clock_.NowTicks(), FRAME_ACK_SENT, VIDEO_EVENT, |
| 189 rtp_timestamp_a, frame_id_a); |
187 | 190 |
188 AdvanceClocks(base::TimeDelta::FromMilliseconds(20)); | 191 AdvanceClocks(base::TimeDelta::FromMilliseconds(20)); |
189 cast_environment_->Logging()->InsertFrameEvent( | 192 cast_environment_->Logging()->InsertFrameEvent( |
190 receiver_clock_.NowTicks(), kVideoAckSent, rtp_timestamp_b, frame_id_b); | 193 receiver_clock_.NowTicks(), FRAME_ACK_SENT, VIDEO_EVENT, |
| 194 rtp_timestamp_b, frame_id_b); |
191 | 195 |
192 AdvanceClocks(base::TimeDelta::FromMilliseconds(5)); | 196 AdvanceClocks(base::TimeDelta::FromMilliseconds(5)); |
193 cast_environment_->Logging()->InsertFrameEvent(sender_clock_->NowTicks(), | 197 cast_environment_->Logging()->InsertFrameEvent(sender_clock_->NowTicks(), |
194 kVideoAckReceived, | 198 FRAME_ACK_RECEIVED, |
| 199 VIDEO_EVENT, |
195 rtp_timestamp_b, | 200 rtp_timestamp_b, |
196 frame_id_b); | 201 frame_id_b); |
197 | 202 |
198 AdvanceClocks(base::TimeDelta::FromMilliseconds(5)); | 203 AdvanceClocks(base::TimeDelta::FromMilliseconds(5)); |
199 cast_environment_->Logging()->InsertFrameEvent(sender_clock_->NowTicks(), | 204 cast_environment_->Logging()->InsertFrameEvent(sender_clock_->NowTicks(), |
200 kVideoAckReceived, | 205 FRAME_ACK_RECEIVED, |
| 206 VIDEO_EVENT, |
201 rtp_timestamp_a, | 207 rtp_timestamp_a, |
202 frame_id_a); | 208 frame_id_a); |
203 | 209 |
204 AdvanceClocks(base::TimeDelta::FromMilliseconds(17)); | 210 AdvanceClocks(base::TimeDelta::FromMilliseconds(17)); |
205 cast_environment_->Logging()->InsertEncodedFrameEvent( | 211 cast_environment_->Logging()->InsertEncodedFrameEvent( |
206 sender_clock_->NowTicks(), | 212 sender_clock_->NowTicks(), |
207 kVideoFrameEncoded, | 213 FRAME_ENCODED, VIDEO_EVENT, |
208 rtp_timestamp_c, | 214 rtp_timestamp_c, |
209 frame_id_c, | 215 frame_id_c, |
210 1234, | 216 1234, |
211 true, | 217 true, |
212 5678); | 218 5678); |
213 | 219 |
214 AdvanceClocks(base::TimeDelta::FromMilliseconds(3)); | 220 AdvanceClocks(base::TimeDelta::FromMilliseconds(3)); |
215 cast_environment_->Logging()->InsertFrameEvent( | 221 cast_environment_->Logging()->InsertFrameEvent( |
216 receiver_clock_.NowTicks(), kVideoAckSent, rtp_timestamp_c, frame_id_c); | 222 receiver_clock_.NowTicks(), FRAME_ACK_SENT, VIDEO_EVENT, |
| 223 rtp_timestamp_c, frame_id_c); |
217 | 224 |
218 AdvanceClocks(base::TimeDelta::FromMilliseconds(30)); | 225 AdvanceClocks(base::TimeDelta::FromMilliseconds(30)); |
219 cast_environment_->Logging()->InsertFrameEvent(sender_clock_->NowTicks(), | 226 cast_environment_->Logging()->InsertFrameEvent(sender_clock_->NowTicks(), |
220 kVideoAckReceived, | 227 FRAME_ACK_RECEIVED, |
| 228 VIDEO_EVENT, |
221 rtp_timestamp_c, | 229 rtp_timestamp_c, |
222 frame_id_c); | 230 frame_id_c); |
223 | 231 |
224 EXPECT_TRUE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); | 232 EXPECT_TRUE(estimator_.GetReceiverOffsetBounds(&lower_bound, &upper_bound)); |
225 int64 lower_bound_ms = lower_bound.InMilliseconds(); | 233 int64 lower_bound_ms = lower_bound.InMilliseconds(); |
226 int64 upper_bound_ms = upper_bound.InMilliseconds(); | 234 int64 upper_bound_ms = upper_bound.InMilliseconds(); |
227 EXPECT_EQ(95, lower_bound_ms); | 235 EXPECT_EQ(95, lower_bound_ms); |
228 EXPECT_EQ(103, upper_bound_ms); | 236 EXPECT_EQ(103, upper_bound_ms); |
229 EXPECT_GE(true_offset_ms, lower_bound_ms); | 237 EXPECT_GE(true_offset_ms, lower_bound_ms); |
230 EXPECT_LE(true_offset_ms, upper_bound_ms); | 238 EXPECT_LE(true_offset_ms, upper_bound_ms); |
231 } | 239 } |
232 | 240 |
233 } // namespace cast | 241 } // namespace cast |
234 } // namespace media | 242 } // namespace media |
OLD | NEW |