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/encoding_event_subscriber.h" | 10 #include "media/cast/logging/encoding_event_subscriber.h" |
(...skipping 19 matching lines...) Expand all Loading... | |
30 | 30 |
31 class EncodingEventSubscriberTest : public ::testing::Test { | 31 class EncodingEventSubscriberTest : public ::testing::Test { |
32 protected: | 32 protected: |
33 EncodingEventSubscriberTest() | 33 EncodingEventSubscriberTest() |
34 : testing_clock_(new base::SimpleTestTickClock()), | 34 : testing_clock_(new base::SimpleTestTickClock()), |
35 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)), | 35 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)), |
36 cast_environment_(new CastEnvironment( | 36 cast_environment_(new CastEnvironment( |
37 scoped_ptr<base::TickClock>(testing_clock_).Pass(), | 37 scoped_ptr<base::TickClock>(testing_clock_).Pass(), |
38 task_runner_, | 38 task_runner_, |
39 task_runner_, | 39 task_runner_, |
40 task_runner_)), | 40 task_runner_)) {} |
41 first_rtp_timestamp_(0) {} | |
42 | 41 |
43 void Init(EventMediaType event_media_type) { | 42 void Init(EventMediaType event_media_type) { |
44 DCHECK(!event_subscriber_); | 43 DCHECK(!event_subscriber_); |
45 event_subscriber_.reset(new EncodingEventSubscriber(event_media_type, 10)); | 44 event_subscriber_.reset(new EncodingEventSubscriber(event_media_type, 10)); |
46 cast_environment_->logger()->Subscribe(event_subscriber_.get()); | 45 cast_environment_->logger()->Subscribe(event_subscriber_.get()); |
47 } | 46 } |
48 | 47 |
49 ~EncodingEventSubscriberTest() override { | 48 ~EncodingEventSubscriberTest() override { |
50 if (event_subscriber_) | 49 if (event_subscriber_) |
51 cast_environment_->logger()->Unsubscribe(event_subscriber_.get()); | 50 cast_environment_->logger()->Unsubscribe(event_subscriber_.get()); |
52 } | 51 } |
53 | 52 |
54 void GetEventsAndReset() { | 53 void GetEventsAndReset() { |
55 event_subscriber_->GetEventsAndReset( | 54 event_subscriber_->GetEventsAndReset( |
56 &metadata_, &frame_events_, &packet_events_); | 55 &metadata_, &frame_events_, &packet_events_); |
57 first_rtp_timestamp_ = metadata_.first_rtp_timestamp(); | 56 first_rtp_timestamp_ = |
57 RtpTimeTicks().Expand(metadata_.first_rtp_timestamp()); | |
58 } | 58 } |
59 | 59 |
60 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. | 60 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. |
61 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; | 61 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; |
62 scoped_refptr<CastEnvironment> cast_environment_; | 62 scoped_refptr<CastEnvironment> cast_environment_; |
63 scoped_ptr<EncodingEventSubscriber> event_subscriber_; | 63 scoped_ptr<EncodingEventSubscriber> event_subscriber_; |
64 FrameEventList frame_events_; | 64 FrameEventList frame_events_; |
65 PacketEventList packet_events_; | 65 PacketEventList packet_events_; |
66 LogMetadata metadata_; | 66 LogMetadata metadata_; |
67 RtpTimestamp first_rtp_timestamp_; | 67 RtpTimeTicks first_rtp_timestamp_; |
68 }; | 68 }; |
69 | 69 |
70 TEST_F(EncodingEventSubscriberTest, FrameEventTruncating) { | 70 TEST_F(EncodingEventSubscriberTest, FrameEventTruncating) { |
71 Init(VIDEO_EVENT); | 71 Init(VIDEO_EVENT); |
72 | 72 |
73 base::TimeTicks now(testing_clock_->NowTicks()); | 73 base::TimeTicks now(testing_clock_->NowTicks()); |
74 | 74 |
75 // Entry with RTP timestamp 0 should get dropped. | 75 // Entry with RTP timestamp 0 should get dropped. |
76 int width = 320; | 76 int width = 320; |
77 int height = 180; | 77 int height = 180; |
78 for (int i = 0; i < 11; i++) { | 78 for (int i = 0; i < 11; i++) { |
79 scoped_ptr<FrameEvent> capture_begin_event(new FrameEvent()); | 79 scoped_ptr<FrameEvent> capture_begin_event(new FrameEvent()); |
80 capture_begin_event->timestamp = now; | 80 capture_begin_event->timestamp = now; |
81 capture_begin_event->type = FRAME_CAPTURE_BEGIN; | 81 capture_begin_event->type = FRAME_CAPTURE_BEGIN; |
82 capture_begin_event->media_type = VIDEO_EVENT; | 82 capture_begin_event->media_type = VIDEO_EVENT; |
83 capture_begin_event->rtp_timestamp = i * 100; | 83 capture_begin_event->rtp_timestamp = |
84 RtpTimeTicks().Expand<uint32_t>(i * 100); | |
84 cast_environment_->logger()->DispatchFrameEvent(capture_begin_event.Pass()); | 85 cast_environment_->logger()->DispatchFrameEvent(capture_begin_event.Pass()); |
85 | 86 |
86 scoped_ptr<FrameEvent> capture_end_event(new FrameEvent()); | 87 scoped_ptr<FrameEvent> capture_end_event(new FrameEvent()); |
87 capture_end_event->timestamp = now; | 88 capture_end_event->timestamp = now; |
88 capture_end_event->type = FRAME_CAPTURE_END; | 89 capture_end_event->type = FRAME_CAPTURE_END; |
89 capture_end_event->media_type = VIDEO_EVENT; | 90 capture_end_event->media_type = VIDEO_EVENT; |
90 capture_end_event->rtp_timestamp = i * 100; | 91 capture_end_event->rtp_timestamp = RtpTimeTicks().Expand<uint32_t>(i * 100); |
91 capture_end_event->width = width; | 92 capture_end_event->width = width; |
92 capture_end_event->height = height; | 93 capture_end_event->height = height; |
93 cast_environment_->logger()->DispatchFrameEvent(capture_end_event.Pass()); | 94 cast_environment_->logger()->DispatchFrameEvent(capture_end_event.Pass()); |
94 | 95 |
95 scoped_ptr<FrameEvent> decoded_event(new FrameEvent()); | 96 scoped_ptr<FrameEvent> decoded_event(new FrameEvent()); |
96 decoded_event->timestamp = now; | 97 decoded_event->timestamp = now; |
97 decoded_event->type = FRAME_DECODED; | 98 decoded_event->type = FRAME_DECODED; |
98 decoded_event->media_type = VIDEO_EVENT; | 99 decoded_event->media_type = VIDEO_EVENT; |
99 decoded_event->rtp_timestamp = i * 100; | 100 decoded_event->rtp_timestamp = RtpTimeTicks().Expand<uint32_t>(i * 100); |
100 decoded_event->frame_id = 0; | 101 decoded_event->frame_id = 0; |
101 cast_environment_->logger()->DispatchFrameEvent(decoded_event.Pass()); | 102 cast_environment_->logger()->DispatchFrameEvent(decoded_event.Pass()); |
102 | 103 |
103 width += 160; | 104 width += 160; |
104 height += 90; | 105 height += 90; |
105 } | 106 } |
106 | 107 |
107 GetEventsAndReset(); | 108 GetEventsAndReset(); |
108 | 109 |
109 ASSERT_EQ(10u, frame_events_.size()); | 110 ASSERT_EQ(10u, frame_events_.size()); |
(...skipping 13 matching lines...) Expand all Loading... | |
123 Init(AUDIO_EVENT); | 124 Init(AUDIO_EVENT); |
124 | 125 |
125 base::TimeTicks now(testing_clock_->NowTicks()); | 126 base::TimeTicks now(testing_clock_->NowTicks()); |
126 | 127 |
127 // Entry with RTP timestamp 0 should get dropped. | 128 // Entry with RTP timestamp 0 should get dropped. |
128 for (int i = 0; i < 11; i++) { | 129 for (int i = 0; i < 11; i++) { |
129 scoped_ptr<PacketEvent> receive_event(new PacketEvent()); | 130 scoped_ptr<PacketEvent> receive_event(new PacketEvent()); |
130 receive_event->timestamp = now; | 131 receive_event->timestamp = now; |
131 receive_event->type = PACKET_RECEIVED; | 132 receive_event->type = PACKET_RECEIVED; |
132 receive_event->media_type = AUDIO_EVENT; | 133 receive_event->media_type = AUDIO_EVENT; |
133 receive_event->rtp_timestamp = i * 100; | 134 receive_event->rtp_timestamp = RtpTimeTicks().Expand<uint32_t>(i * 100); |
134 receive_event->frame_id = 0; | 135 receive_event->frame_id = 0; |
135 receive_event->packet_id = i; | 136 receive_event->packet_id = i; |
136 receive_event->max_packet_id = 10; | 137 receive_event->max_packet_id = 10; |
137 receive_event->size = 123; | 138 receive_event->size = 123; |
138 cast_environment_->logger()->DispatchPacketEvent(receive_event.Pass()); | 139 cast_environment_->logger()->DispatchPacketEvent(receive_event.Pass()); |
139 } | 140 } |
140 | 141 |
141 GetEventsAndReset(); | 142 GetEventsAndReset(); |
142 | 143 |
143 ASSERT_EQ(10u, packet_events_.size()); | 144 ASSERT_EQ(10u, packet_events_.size()); |
144 EXPECT_EQ(100u, packet_events_.front()->relative_rtp_timestamp()); | 145 EXPECT_EQ(100u, packet_events_.front()->relative_rtp_timestamp()); |
145 EXPECT_EQ(1000u, packet_events_.back()->relative_rtp_timestamp()); | 146 EXPECT_EQ(1000u, packet_events_.back()->relative_rtp_timestamp()); |
146 } | 147 } |
147 | 148 |
148 TEST_F(EncodingEventSubscriberTest, EventFiltering) { | 149 TEST_F(EncodingEventSubscriberTest, EventFiltering) { |
149 Init(VIDEO_EVENT); | 150 Init(VIDEO_EVENT); |
150 | 151 |
151 base::TimeTicks now(testing_clock_->NowTicks()); | 152 base::TimeTicks now(testing_clock_->NowTicks()); |
152 RtpTimestamp rtp_timestamp = 100; | 153 RtpTimeTicks rtp_timestamp = RtpTimeTicks().Expand(UINT32_C(100)); |
153 scoped_ptr<FrameEvent> video_event(new FrameEvent()); | 154 scoped_ptr<FrameEvent> video_event(new FrameEvent()); |
154 video_event->timestamp = now; | 155 video_event->timestamp = now; |
155 video_event->type = FRAME_DECODED; | 156 video_event->type = FRAME_DECODED; |
156 video_event->media_type = VIDEO_EVENT; | 157 video_event->media_type = VIDEO_EVENT; |
157 video_event->rtp_timestamp = rtp_timestamp; | 158 video_event->rtp_timestamp = rtp_timestamp; |
158 video_event->frame_id = 0; | 159 video_event->frame_id = 0; |
159 cast_environment_->logger()->DispatchFrameEvent(video_event.Pass()); | 160 cast_environment_->logger()->DispatchFrameEvent(video_event.Pass()); |
160 | 161 |
161 // This is an AUDIO_EVENT and shouldn't be processed by the subscriber. | 162 // This is an AUDIO_EVENT and shouldn't be processed by the subscriber. |
162 scoped_ptr<FrameEvent> audio_event(new FrameEvent()); | 163 scoped_ptr<FrameEvent> audio_event(new FrameEvent()); |
(...skipping 16 matching lines...) Expand all Loading... | |
179 frame_event->event_type(0)); | 180 frame_event->event_type(0)); |
180 | 181 |
181 GetEventsAndReset(); | 182 GetEventsAndReset(); |
182 | 183 |
183 EXPECT_TRUE(packet_events_.empty()); | 184 EXPECT_TRUE(packet_events_.empty()); |
184 } | 185 } |
185 | 186 |
186 TEST_F(EncodingEventSubscriberTest, FrameEvent) { | 187 TEST_F(EncodingEventSubscriberTest, FrameEvent) { |
187 Init(VIDEO_EVENT); | 188 Init(VIDEO_EVENT); |
188 base::TimeTicks now(testing_clock_->NowTicks()); | 189 base::TimeTicks now(testing_clock_->NowTicks()); |
189 RtpTimestamp rtp_timestamp = 100; | 190 RtpTimeTicks rtp_timestamp = RtpTimeTicks().Expand(UINT32_C(100)); |
190 scoped_ptr<FrameEvent> decode_event(new FrameEvent()); | 191 scoped_ptr<FrameEvent> decode_event(new FrameEvent()); |
191 decode_event->timestamp = now; | 192 decode_event->timestamp = now; |
192 decode_event->type = FRAME_DECODED; | 193 decode_event->type = FRAME_DECODED; |
193 decode_event->media_type = VIDEO_EVENT; | 194 decode_event->media_type = VIDEO_EVENT; |
194 decode_event->rtp_timestamp = rtp_timestamp; | 195 decode_event->rtp_timestamp = rtp_timestamp; |
195 decode_event->frame_id = 0; | 196 decode_event->frame_id = 0; |
196 cast_environment_->logger()->DispatchFrameEvent(decode_event.Pass()); | 197 cast_environment_->logger()->DispatchFrameEvent(decode_event.Pass()); |
197 | 198 |
198 GetEventsAndReset(); | 199 GetEventsAndReset(); |
199 | 200 |
200 ASSERT_EQ(1u, frame_events_.size()); | 201 ASSERT_EQ(1u, frame_events_.size()); |
201 | 202 |
202 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | |
203 FrameEventList::iterator it = frame_events_.begin(); | 203 FrameEventList::iterator it = frame_events_.begin(); |
204 | 204 |
205 linked_ptr<AggregatedFrameEvent> event = *it; | 205 linked_ptr<AggregatedFrameEvent> event = *it; |
206 | 206 |
207 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 207 EXPECT_EQ((rtp_timestamp - first_rtp_timestamp_).lower_32_bits(), |
208 event->relative_rtp_timestamp()); | |
208 | 209 |
209 ASSERT_EQ(1, event->event_type_size()); | 210 ASSERT_EQ(1, event->event_type_size()); |
210 EXPECT_EQ(media::cast::proto::FRAME_DECODED, event->event_type(0)); | 211 EXPECT_EQ(media::cast::proto::FRAME_DECODED, event->event_type(0)); |
211 ASSERT_EQ(1, event->event_timestamp_ms_size()); | 212 ASSERT_EQ(1, event->event_timestamp_ms_size()); |
212 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); | 213 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); |
213 | 214 |
214 EXPECT_EQ(0, event->encoded_frame_size()); | 215 EXPECT_EQ(0, event->encoded_frame_size()); |
215 EXPECT_EQ(0, event->delay_millis()); | 216 EXPECT_EQ(0, event->delay_millis()); |
216 | 217 |
217 GetEventsAndReset(); | 218 GetEventsAndReset(); |
218 EXPECT_TRUE(frame_events_.empty()); | 219 EXPECT_TRUE(frame_events_.empty()); |
219 } | 220 } |
220 | 221 |
221 TEST_F(EncodingEventSubscriberTest, FrameEventDelay) { | 222 TEST_F(EncodingEventSubscriberTest, FrameEventDelay) { |
222 Init(AUDIO_EVENT); | 223 Init(AUDIO_EVENT); |
223 base::TimeTicks now(testing_clock_->NowTicks()); | 224 base::TimeTicks now(testing_clock_->NowTicks()); |
224 RtpTimestamp rtp_timestamp = 100; | 225 RtpTimeTicks rtp_timestamp = RtpTimeTicks().Expand(UINT32_C(100)); |
225 int delay_ms = 100; | 226 int delay_ms = 100; |
226 scoped_ptr<FrameEvent> playout_event(new FrameEvent()); | 227 scoped_ptr<FrameEvent> playout_event(new FrameEvent()); |
227 playout_event->timestamp = now; | 228 playout_event->timestamp = now; |
228 playout_event->type = FRAME_PLAYOUT; | 229 playout_event->type = FRAME_PLAYOUT; |
229 playout_event->media_type = AUDIO_EVENT; | 230 playout_event->media_type = AUDIO_EVENT; |
230 playout_event->rtp_timestamp = rtp_timestamp; | 231 playout_event->rtp_timestamp = rtp_timestamp; |
231 playout_event->frame_id = 0; | 232 playout_event->frame_id = 0; |
232 playout_event->delay_delta = base::TimeDelta::FromMilliseconds(delay_ms); | 233 playout_event->delay_delta = base::TimeDelta::FromMilliseconds(delay_ms); |
233 cast_environment_->logger()->DispatchFrameEvent(playout_event.Pass()); | 234 cast_environment_->logger()->DispatchFrameEvent(playout_event.Pass()); |
234 | 235 |
235 GetEventsAndReset(); | 236 GetEventsAndReset(); |
236 | 237 |
237 ASSERT_EQ(1u, frame_events_.size()); | 238 ASSERT_EQ(1u, frame_events_.size()); |
238 | 239 |
239 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | |
240 FrameEventList::iterator it = frame_events_.begin(); | 240 FrameEventList::iterator it = frame_events_.begin(); |
241 | 241 |
242 linked_ptr<AggregatedFrameEvent> event = *it; | 242 linked_ptr<AggregatedFrameEvent> event = *it; |
243 | 243 |
244 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 244 EXPECT_EQ((rtp_timestamp - first_rtp_timestamp_).lower_32_bits(), |
245 event->relative_rtp_timestamp()); | |
245 | 246 |
246 ASSERT_EQ(1, event->event_type_size()); | 247 ASSERT_EQ(1, event->event_type_size()); |
247 EXPECT_EQ(media::cast::proto::FRAME_PLAYOUT, event->event_type(0)); | 248 EXPECT_EQ(media::cast::proto::FRAME_PLAYOUT, event->event_type(0)); |
248 ASSERT_EQ(1, event->event_timestamp_ms_size()); | 249 ASSERT_EQ(1, event->event_timestamp_ms_size()); |
249 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); | 250 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); |
250 | 251 |
251 EXPECT_EQ(0, event->encoded_frame_size()); | 252 EXPECT_EQ(0, event->encoded_frame_size()); |
252 EXPECT_EQ(100, event->delay_millis()); | 253 EXPECT_EQ(100, event->delay_millis()); |
253 EXPECT_FALSE(event->has_key_frame()); | 254 EXPECT_FALSE(event->has_key_frame()); |
254 } | 255 } |
255 | 256 |
256 TEST_F(EncodingEventSubscriberTest, FrameEventSize) { | 257 TEST_F(EncodingEventSubscriberTest, FrameEventSize) { |
257 Init(VIDEO_EVENT); | 258 Init(VIDEO_EVENT); |
258 base::TimeTicks now(testing_clock_->NowTicks()); | 259 base::TimeTicks now(testing_clock_->NowTicks()); |
259 RtpTimestamp rtp_timestamp = 100; | 260 RtpTimeTicks rtp_timestamp = RtpTimeTicks().Expand(UINT32_C(100)); |
260 int size = 123; | 261 int size = 123; |
261 bool key_frame = true; | 262 bool key_frame = true; |
262 int target_bitrate = 1024; | 263 int target_bitrate = 1024; |
263 double encoder_cpu_utilization = 0.90; | 264 double encoder_cpu_utilization = 0.90; |
264 double idealized_bitrate_utilization = 0.42; | 265 double idealized_bitrate_utilization = 0.42; |
265 scoped_ptr<FrameEvent> encode_event(new FrameEvent()); | 266 scoped_ptr<FrameEvent> encode_event(new FrameEvent()); |
266 encode_event->timestamp = now; | 267 encode_event->timestamp = now; |
267 encode_event->type = FRAME_ENCODED; | 268 encode_event->type = FRAME_ENCODED; |
268 encode_event->media_type = VIDEO_EVENT; | 269 encode_event->media_type = VIDEO_EVENT; |
269 encode_event->rtp_timestamp = rtp_timestamp; | 270 encode_event->rtp_timestamp = rtp_timestamp; |
270 encode_event->frame_id = 0; | 271 encode_event->frame_id = 0; |
271 encode_event->size = size; | 272 encode_event->size = size; |
272 encode_event->key_frame = key_frame; | 273 encode_event->key_frame = key_frame; |
273 encode_event->target_bitrate = target_bitrate; | 274 encode_event->target_bitrate = target_bitrate; |
274 encode_event->encoder_cpu_utilization = encoder_cpu_utilization; | 275 encode_event->encoder_cpu_utilization = encoder_cpu_utilization; |
275 encode_event->idealized_bitrate_utilization = idealized_bitrate_utilization; | 276 encode_event->idealized_bitrate_utilization = idealized_bitrate_utilization; |
276 cast_environment_->logger()->DispatchFrameEvent(encode_event.Pass()); | 277 cast_environment_->logger()->DispatchFrameEvent(encode_event.Pass()); |
277 | 278 |
278 GetEventsAndReset(); | 279 GetEventsAndReset(); |
279 | 280 |
280 ASSERT_EQ(1u, frame_events_.size()); | 281 ASSERT_EQ(1u, frame_events_.size()); |
281 | 282 |
282 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | |
283 FrameEventList::iterator it = frame_events_.begin(); | 283 FrameEventList::iterator it = frame_events_.begin(); |
284 | 284 |
285 linked_ptr<AggregatedFrameEvent> event = *it; | 285 linked_ptr<AggregatedFrameEvent> event = *it; |
286 | 286 |
287 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 287 EXPECT_EQ((rtp_timestamp - first_rtp_timestamp_).lower_32_bits(), |
288 event->relative_rtp_timestamp()); | |
288 | 289 |
289 ASSERT_EQ(1, event->event_type_size()); | 290 ASSERT_EQ(1, event->event_type_size()); |
290 EXPECT_EQ(media::cast::proto::FRAME_ENCODED, event->event_type(0)); | 291 EXPECT_EQ(media::cast::proto::FRAME_ENCODED, event->event_type(0)); |
291 ASSERT_EQ(1, event->event_timestamp_ms_size()); | 292 ASSERT_EQ(1, event->event_timestamp_ms_size()); |
292 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); | 293 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); |
293 | 294 |
294 EXPECT_EQ(size, event->encoded_frame_size()); | 295 EXPECT_EQ(size, event->encoded_frame_size()); |
295 EXPECT_EQ(0, event->delay_millis()); | 296 EXPECT_EQ(0, event->delay_millis()); |
296 EXPECT_TRUE(event->has_key_frame()); | 297 EXPECT_TRUE(event->has_key_frame()); |
297 EXPECT_EQ(key_frame, event->key_frame()); | 298 EXPECT_EQ(key_frame, event->key_frame()); |
298 EXPECT_EQ(target_bitrate, event->target_bitrate()); | 299 EXPECT_EQ(target_bitrate, event->target_bitrate()); |
299 EXPECT_EQ(90, event->encoder_cpu_percent_utilized()); | 300 EXPECT_EQ(90, event->encoder_cpu_percent_utilized()); |
300 EXPECT_EQ(42, event->idealized_bitrate_percent_utilized()); | 301 EXPECT_EQ(42, event->idealized_bitrate_percent_utilized()); |
301 } | 302 } |
302 | 303 |
303 TEST_F(EncodingEventSubscriberTest, MultipleFrameEvents) { | 304 TEST_F(EncodingEventSubscriberTest, MultipleFrameEvents) { |
304 Init(AUDIO_EVENT); | 305 Init(AUDIO_EVENT); |
305 RtpTimestamp rtp_timestamp1 = 100; | 306 RtpTimeTicks rtp_timestamp1 = RtpTimeTicks().Expand(UINT32_C(100)); |
Irfan
2015/12/09 21:24:28
Should we add an explicit constructor so we can do
miu
2015/12/10 00:38:36
No. I explicitly want to avoid this since it woul
| |
306 RtpTimestamp rtp_timestamp2 = 200; | 307 RtpTimeTicks rtp_timestamp2 = rtp_timestamp1.Expand(UINT32_C(200)); |
307 base::TimeTicks now1(testing_clock_->NowTicks()); | 308 base::TimeTicks now1(testing_clock_->NowTicks()); |
308 scoped_ptr<FrameEvent> playout_event(new FrameEvent()); | 309 scoped_ptr<FrameEvent> playout_event(new FrameEvent()); |
309 playout_event->timestamp = now1; | 310 playout_event->timestamp = now1; |
310 playout_event->type = FRAME_PLAYOUT; | 311 playout_event->type = FRAME_PLAYOUT; |
311 playout_event->media_type = AUDIO_EVENT; | 312 playout_event->media_type = AUDIO_EVENT; |
312 playout_event->rtp_timestamp = rtp_timestamp1; | 313 playout_event->rtp_timestamp = rtp_timestamp1; |
313 playout_event->frame_id = 0; | 314 playout_event->frame_id = 0; |
314 playout_event->delay_delta = base::TimeDelta::FromMilliseconds(100); | 315 playout_event->delay_delta = base::TimeDelta::FromMilliseconds(100); |
315 cast_environment_->logger()->DispatchFrameEvent(playout_event.Pass()); | 316 cast_environment_->logger()->DispatchFrameEvent(playout_event.Pass()); |
316 | 317 |
(...skipping 17 matching lines...) Expand all Loading... | |
334 decode_event->type = FRAME_DECODED; | 335 decode_event->type = FRAME_DECODED; |
335 decode_event->media_type = AUDIO_EVENT; | 336 decode_event->media_type = AUDIO_EVENT; |
336 decode_event->rtp_timestamp = rtp_timestamp1; | 337 decode_event->rtp_timestamp = rtp_timestamp1; |
337 decode_event->frame_id = 0; | 338 decode_event->frame_id = 0; |
338 cast_environment_->logger()->DispatchFrameEvent(decode_event.Pass()); | 339 cast_environment_->logger()->DispatchFrameEvent(decode_event.Pass()); |
339 | 340 |
340 GetEventsAndReset(); | 341 GetEventsAndReset(); |
341 | 342 |
342 ASSERT_EQ(2u, frame_events_.size()); | 343 ASSERT_EQ(2u, frame_events_.size()); |
343 | 344 |
344 RtpTimestamp relative_rtp_timestamp = rtp_timestamp1 - first_rtp_timestamp_; | |
345 FrameEventList::iterator it = frame_events_.begin(); | 345 FrameEventList::iterator it = frame_events_.begin(); |
346 | 346 |
347 linked_ptr<AggregatedFrameEvent> event = *it; | 347 linked_ptr<AggregatedFrameEvent> event = *it; |
348 | 348 |
349 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 349 EXPECT_EQ((rtp_timestamp1 - first_rtp_timestamp_).lower_32_bits(), |
350 event->relative_rtp_timestamp()); | |
350 | 351 |
351 ASSERT_EQ(2, event->event_type_size()); | 352 ASSERT_EQ(2, event->event_type_size()); |
352 EXPECT_EQ(media::cast::proto::FRAME_PLAYOUT, event->event_type(0)); | 353 EXPECT_EQ(media::cast::proto::FRAME_PLAYOUT, event->event_type(0)); |
353 EXPECT_EQ(media::cast::proto::FRAME_DECODED, event->event_type(1)); | 354 EXPECT_EQ(media::cast::proto::FRAME_DECODED, event->event_type(1)); |
354 | 355 |
355 ASSERT_EQ(2, event->event_timestamp_ms_size()); | 356 ASSERT_EQ(2, event->event_timestamp_ms_size()); |
356 EXPECT_EQ(InMilliseconds(now1), event->event_timestamp_ms(0)); | 357 EXPECT_EQ(InMilliseconds(now1), event->event_timestamp_ms(0)); |
357 EXPECT_EQ(InMilliseconds(now3), event->event_timestamp_ms(1)); | 358 EXPECT_EQ(InMilliseconds(now3), event->event_timestamp_ms(1)); |
358 | 359 |
359 EXPECT_FALSE(event->has_key_frame()); | 360 EXPECT_FALSE(event->has_key_frame()); |
360 | 361 |
361 relative_rtp_timestamp = rtp_timestamp2 - first_rtp_timestamp_; | |
362 ++it; | 362 ++it; |
363 | 363 |
364 event = *it; | 364 event = *it; |
365 | 365 |
366 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 366 EXPECT_EQ((rtp_timestamp2 - first_rtp_timestamp_).lower_32_bits(), |
367 event->relative_rtp_timestamp()); | |
367 | 368 |
368 ASSERT_EQ(1, event->event_type_size()); | 369 ASSERT_EQ(1, event->event_type_size()); |
369 EXPECT_EQ(media::cast::proto::FRAME_ENCODED, event->event_type(0)); | 370 EXPECT_EQ(media::cast::proto::FRAME_ENCODED, event->event_type(0)); |
370 | 371 |
371 ASSERT_EQ(1, event->event_timestamp_ms_size()); | 372 ASSERT_EQ(1, event->event_timestamp_ms_size()); |
372 EXPECT_EQ(InMilliseconds(now2), event->event_timestamp_ms(0)); | 373 EXPECT_EQ(InMilliseconds(now2), event->event_timestamp_ms(0)); |
373 | 374 |
374 EXPECT_FALSE(event->has_key_frame()); | 375 EXPECT_FALSE(event->has_key_frame()); |
375 EXPECT_EQ(44, event->encoder_cpu_percent_utilized()); | 376 EXPECT_EQ(44, event->encoder_cpu_percent_utilized()); |
376 EXPECT_EQ(55, event->idealized_bitrate_percent_utilized()); | 377 EXPECT_EQ(55, event->idealized_bitrate_percent_utilized()); |
377 } | 378 } |
378 | 379 |
379 TEST_F(EncodingEventSubscriberTest, PacketEvent) { | 380 TEST_F(EncodingEventSubscriberTest, PacketEvent) { |
380 Init(AUDIO_EVENT); | 381 Init(AUDIO_EVENT); |
381 base::TimeTicks now(testing_clock_->NowTicks()); | 382 base::TimeTicks now(testing_clock_->NowTicks()); |
382 RtpTimestamp rtp_timestamp = 100; | 383 RtpTimeTicks rtp_timestamp = RtpTimeTicks().Expand(UINT32_C(100)); |
383 int packet_id = 2; | 384 int packet_id = 2; |
384 int size = 100; | 385 int size = 100; |
385 scoped_ptr<PacketEvent> receive_event(new PacketEvent()); | 386 scoped_ptr<PacketEvent> receive_event(new PacketEvent()); |
386 receive_event->timestamp = now; | 387 receive_event->timestamp = now; |
387 receive_event->type = PACKET_RECEIVED; | 388 receive_event->type = PACKET_RECEIVED; |
388 receive_event->media_type = AUDIO_EVENT; | 389 receive_event->media_type = AUDIO_EVENT; |
389 receive_event->rtp_timestamp = rtp_timestamp; | 390 receive_event->rtp_timestamp = rtp_timestamp; |
390 receive_event->frame_id = 0; | 391 receive_event->frame_id = 0; |
391 receive_event->packet_id = packet_id; | 392 receive_event->packet_id = packet_id; |
392 receive_event->max_packet_id = 10; | 393 receive_event->max_packet_id = 10; |
393 receive_event->size = size; | 394 receive_event->size = size; |
394 cast_environment_->logger()->DispatchPacketEvent(receive_event.Pass()); | 395 cast_environment_->logger()->DispatchPacketEvent(receive_event.Pass()); |
395 | 396 |
396 GetEventsAndReset(); | 397 GetEventsAndReset(); |
397 | 398 |
398 ASSERT_EQ(1u, packet_events_.size()); | 399 ASSERT_EQ(1u, packet_events_.size()); |
399 | 400 |
400 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | |
401 PacketEventList::iterator it = packet_events_.begin(); | 401 PacketEventList::iterator it = packet_events_.begin(); |
402 | 402 |
403 linked_ptr<AggregatedPacketEvent> event = *it; | 403 linked_ptr<AggregatedPacketEvent> event = *it; |
404 | 404 |
405 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 405 EXPECT_EQ((rtp_timestamp - first_rtp_timestamp_).lower_32_bits(), |
406 event->relative_rtp_timestamp()); | |
406 | 407 |
407 ASSERT_EQ(1, event->base_packet_event_size()); | 408 ASSERT_EQ(1, event->base_packet_event_size()); |
408 const BasePacketEvent& base_event = event->base_packet_event(0); | 409 const BasePacketEvent& base_event = event->base_packet_event(0); |
409 EXPECT_EQ(packet_id, base_event.packet_id()); | 410 EXPECT_EQ(packet_id, base_event.packet_id()); |
410 ASSERT_EQ(1, base_event.event_type_size()); | 411 ASSERT_EQ(1, base_event.event_type_size()); |
411 EXPECT_EQ(media::cast::proto::PACKET_RECEIVED, | 412 EXPECT_EQ(media::cast::proto::PACKET_RECEIVED, |
412 base_event.event_type(0)); | 413 base_event.event_type(0)); |
413 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); | 414 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); |
414 EXPECT_EQ(InMilliseconds(now), base_event.event_timestamp_ms(0)); | 415 EXPECT_EQ(InMilliseconds(now), base_event.event_timestamp_ms(0)); |
415 EXPECT_EQ(size, base_event.size()); | 416 EXPECT_EQ(size, base_event.size()); |
416 | 417 |
417 GetEventsAndReset(); | 418 GetEventsAndReset(); |
418 EXPECT_TRUE(packet_events_.empty()); | 419 EXPECT_TRUE(packet_events_.empty()); |
419 } | 420 } |
420 | 421 |
421 TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForPacket) { | 422 TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForPacket) { |
422 Init(VIDEO_EVENT); | 423 Init(VIDEO_EVENT); |
423 base::TimeTicks now1(testing_clock_->NowTicks()); | 424 base::TimeTicks now1(testing_clock_->NowTicks()); |
424 RtpTimestamp rtp_timestamp = 100; | 425 RtpTimeTicks rtp_timestamp = RtpTimeTicks().Expand(UINT32_C(100)); |
425 int packet_id = 2; | 426 int packet_id = 2; |
426 int size = 100; | 427 int size = 100; |
427 scoped_ptr<PacketEvent> send_event(new PacketEvent()); | 428 scoped_ptr<PacketEvent> send_event(new PacketEvent()); |
428 send_event->timestamp = now1; | 429 send_event->timestamp = now1; |
429 send_event->type = PACKET_SENT_TO_NETWORK; | 430 send_event->type = PACKET_SENT_TO_NETWORK; |
430 send_event->media_type = VIDEO_EVENT; | 431 send_event->media_type = VIDEO_EVENT; |
431 send_event->rtp_timestamp = rtp_timestamp; | 432 send_event->rtp_timestamp = rtp_timestamp; |
432 send_event->frame_id = 0; | 433 send_event->frame_id = 0; |
433 send_event->packet_id = packet_id; | 434 send_event->packet_id = packet_id; |
434 send_event->max_packet_id = 10; | 435 send_event->max_packet_id = 10; |
(...skipping 10 matching lines...) Expand all Loading... | |
445 retransmit_event->frame_id = 0; | 446 retransmit_event->frame_id = 0; |
446 retransmit_event->packet_id = packet_id; | 447 retransmit_event->packet_id = packet_id; |
447 retransmit_event->max_packet_id = 10; | 448 retransmit_event->max_packet_id = 10; |
448 retransmit_event->size = size; | 449 retransmit_event->size = size; |
449 cast_environment_->logger()->DispatchPacketEvent(retransmit_event.Pass()); | 450 cast_environment_->logger()->DispatchPacketEvent(retransmit_event.Pass()); |
450 | 451 |
451 GetEventsAndReset(); | 452 GetEventsAndReset(); |
452 | 453 |
453 ASSERT_EQ(1u, packet_events_.size()); | 454 ASSERT_EQ(1u, packet_events_.size()); |
454 | 455 |
455 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | |
456 PacketEventList::iterator it = packet_events_.begin(); | 456 PacketEventList::iterator it = packet_events_.begin(); |
457 | 457 |
458 linked_ptr<AggregatedPacketEvent> event = *it; | 458 linked_ptr<AggregatedPacketEvent> event = *it; |
459 | 459 |
460 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 460 EXPECT_EQ((rtp_timestamp - first_rtp_timestamp_).lower_32_bits(), |
461 event->relative_rtp_timestamp()); | |
461 | 462 |
462 ASSERT_EQ(1, event->base_packet_event_size()); | 463 ASSERT_EQ(1, event->base_packet_event_size()); |
463 const BasePacketEvent& base_event = event->base_packet_event(0); | 464 const BasePacketEvent& base_event = event->base_packet_event(0); |
464 EXPECT_EQ(packet_id, base_event.packet_id()); | 465 EXPECT_EQ(packet_id, base_event.packet_id()); |
465 ASSERT_EQ(2, base_event.event_type_size()); | 466 ASSERT_EQ(2, base_event.event_type_size()); |
466 EXPECT_EQ(media::cast::proto::PACKET_SENT_TO_NETWORK, | 467 EXPECT_EQ(media::cast::proto::PACKET_SENT_TO_NETWORK, |
467 base_event.event_type(0)); | 468 base_event.event_type(0)); |
468 EXPECT_EQ(media::cast::proto::PACKET_RETRANSMITTED, | 469 EXPECT_EQ(media::cast::proto::PACKET_RETRANSMITTED, |
469 base_event.event_type(1)); | 470 base_event.event_type(1)); |
470 ASSERT_EQ(2, base_event.event_timestamp_ms_size()); | 471 ASSERT_EQ(2, base_event.event_timestamp_ms_size()); |
471 EXPECT_EQ(InMilliseconds(now1), base_event.event_timestamp_ms(0)); | 472 EXPECT_EQ(InMilliseconds(now1), base_event.event_timestamp_ms(0)); |
472 EXPECT_EQ(InMilliseconds(now2), base_event.event_timestamp_ms(1)); | 473 EXPECT_EQ(InMilliseconds(now2), base_event.event_timestamp_ms(1)); |
473 } | 474 } |
474 | 475 |
475 TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForFrame) { | 476 TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForFrame) { |
476 Init(VIDEO_EVENT); | 477 Init(VIDEO_EVENT); |
477 base::TimeTicks now1(testing_clock_->NowTicks()); | 478 base::TimeTicks now1(testing_clock_->NowTicks()); |
478 RtpTimestamp rtp_timestamp = 100; | 479 RtpTimeTicks rtp_timestamp = RtpTimeTicks().Expand(UINT32_C(100)); |
479 int packet_id_1 = 2; | 480 int packet_id_1 = 2; |
480 int packet_id_2 = 3; | 481 int packet_id_2 = 3; |
481 int size = 100; | 482 int size = 100; |
482 scoped_ptr<PacketEvent> send_event(new PacketEvent()); | 483 scoped_ptr<PacketEvent> send_event(new PacketEvent()); |
483 send_event->timestamp = now1; | 484 send_event->timestamp = now1; |
484 send_event->type = PACKET_SENT_TO_NETWORK; | 485 send_event->type = PACKET_SENT_TO_NETWORK; |
485 send_event->media_type = VIDEO_EVENT; | 486 send_event->media_type = VIDEO_EVENT; |
486 send_event->rtp_timestamp = rtp_timestamp; | 487 send_event->rtp_timestamp = rtp_timestamp; |
487 send_event->frame_id = 0; | 488 send_event->frame_id = 0; |
488 send_event->packet_id = packet_id_1; | 489 send_event->packet_id = packet_id_1; |
(...skipping 11 matching lines...) Expand all Loading... | |
500 retransmit_event->frame_id = 0; | 501 retransmit_event->frame_id = 0; |
501 retransmit_event->packet_id = packet_id_2; | 502 retransmit_event->packet_id = packet_id_2; |
502 retransmit_event->max_packet_id = 10; | 503 retransmit_event->max_packet_id = 10; |
503 retransmit_event->size = size; | 504 retransmit_event->size = size; |
504 cast_environment_->logger()->DispatchPacketEvent(retransmit_event.Pass()); | 505 cast_environment_->logger()->DispatchPacketEvent(retransmit_event.Pass()); |
505 | 506 |
506 GetEventsAndReset(); | 507 GetEventsAndReset(); |
507 | 508 |
508 ASSERT_EQ(1u, packet_events_.size()); | 509 ASSERT_EQ(1u, packet_events_.size()); |
509 | 510 |
510 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | |
511 PacketEventList::iterator it = packet_events_.begin(); | 511 PacketEventList::iterator it = packet_events_.begin(); |
512 | 512 |
513 linked_ptr<AggregatedPacketEvent> event = *it; | 513 linked_ptr<AggregatedPacketEvent> event = *it; |
514 | 514 |
515 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 515 EXPECT_EQ((rtp_timestamp - first_rtp_timestamp_).lower_32_bits(), |
516 event->relative_rtp_timestamp()); | |
516 | 517 |
517 ASSERT_EQ(2, event->base_packet_event_size()); | 518 ASSERT_EQ(2, event->base_packet_event_size()); |
518 const BasePacketEvent& base_event = event->base_packet_event(0); | 519 const BasePacketEvent& base_event = event->base_packet_event(0); |
519 EXPECT_EQ(packet_id_1, base_event.packet_id()); | 520 EXPECT_EQ(packet_id_1, base_event.packet_id()); |
520 ASSERT_EQ(1, base_event.event_type_size()); | 521 ASSERT_EQ(1, base_event.event_type_size()); |
521 EXPECT_EQ(media::cast::proto::PACKET_SENT_TO_NETWORK, | 522 EXPECT_EQ(media::cast::proto::PACKET_SENT_TO_NETWORK, |
522 base_event.event_type(0)); | 523 base_event.event_type(0)); |
523 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); | 524 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); |
524 EXPECT_EQ(InMilliseconds(now1), base_event.event_timestamp_ms(0)); | 525 EXPECT_EQ(InMilliseconds(now1), base_event.event_timestamp_ms(0)); |
525 | 526 |
526 const BasePacketEvent& base_event_2 = event->base_packet_event(1); | 527 const BasePacketEvent& base_event_2 = event->base_packet_event(1); |
527 EXPECT_EQ(packet_id_2, base_event_2.packet_id()); | 528 EXPECT_EQ(packet_id_2, base_event_2.packet_id()); |
528 ASSERT_EQ(1, base_event_2.event_type_size()); | 529 ASSERT_EQ(1, base_event_2.event_type_size()); |
529 EXPECT_EQ(media::cast::proto::PACKET_RETRANSMITTED, | 530 EXPECT_EQ(media::cast::proto::PACKET_RETRANSMITTED, |
530 base_event_2.event_type(0)); | 531 base_event_2.event_type(0)); |
531 ASSERT_EQ(1, base_event_2.event_timestamp_ms_size()); | 532 ASSERT_EQ(1, base_event_2.event_timestamp_ms_size()); |
532 EXPECT_EQ(InMilliseconds(now2), base_event_2.event_timestamp_ms(0)); | 533 EXPECT_EQ(InMilliseconds(now2), base_event_2.event_timestamp_ms(0)); |
533 } | 534 } |
534 | 535 |
535 TEST_F(EncodingEventSubscriberTest, MultiplePacketEvents) { | 536 TEST_F(EncodingEventSubscriberTest, MultiplePacketEvents) { |
536 Init(VIDEO_EVENT); | 537 Init(VIDEO_EVENT); |
537 base::TimeTicks now1(testing_clock_->NowTicks()); | 538 base::TimeTicks now1(testing_clock_->NowTicks()); |
538 RtpTimestamp rtp_timestamp_1 = 100; | 539 RtpTimeTicks rtp_timestamp_1 = RtpTimeTicks().Expand(UINT32_C(100)); |
539 RtpTimestamp rtp_timestamp_2 = 200; | 540 RtpTimeTicks rtp_timestamp_2 = rtp_timestamp_1.Expand(UINT32_C(200)); |
540 int packet_id_1 = 2; | 541 int packet_id_1 = 2; |
541 int packet_id_2 = 3; | 542 int packet_id_2 = 3; |
542 int size = 100; | 543 int size = 100; |
543 scoped_ptr<PacketEvent> send_event(new PacketEvent()); | 544 scoped_ptr<PacketEvent> send_event(new PacketEvent()); |
544 send_event->timestamp = now1; | 545 send_event->timestamp = now1; |
545 send_event->type = PACKET_SENT_TO_NETWORK; | 546 send_event->type = PACKET_SENT_TO_NETWORK; |
546 send_event->media_type = VIDEO_EVENT; | 547 send_event->media_type = VIDEO_EVENT; |
547 send_event->rtp_timestamp = rtp_timestamp_1; | 548 send_event->rtp_timestamp = rtp_timestamp_1; |
548 send_event->frame_id = 0; | 549 send_event->frame_id = 0; |
549 send_event->packet_id = packet_id_1; | 550 send_event->packet_id = packet_id_1; |
(...skipping 11 matching lines...) Expand all Loading... | |
561 retransmit_event->frame_id = 0; | 562 retransmit_event->frame_id = 0; |
562 retransmit_event->packet_id = packet_id_2; | 563 retransmit_event->packet_id = packet_id_2; |
563 retransmit_event->max_packet_id = 10; | 564 retransmit_event->max_packet_id = 10; |
564 retransmit_event->size = size; | 565 retransmit_event->size = size; |
565 cast_environment_->logger()->DispatchPacketEvent(retransmit_event.Pass()); | 566 cast_environment_->logger()->DispatchPacketEvent(retransmit_event.Pass()); |
566 | 567 |
567 GetEventsAndReset(); | 568 GetEventsAndReset(); |
568 | 569 |
569 ASSERT_EQ(2u, packet_events_.size()); | 570 ASSERT_EQ(2u, packet_events_.size()); |
570 | 571 |
571 RtpTimestamp relative_rtp_timestamp = rtp_timestamp_1 - first_rtp_timestamp_; | |
572 PacketEventList::iterator it = packet_events_.begin(); | 572 PacketEventList::iterator it = packet_events_.begin(); |
573 | 573 |
574 linked_ptr<AggregatedPacketEvent> event = *it; | 574 linked_ptr<AggregatedPacketEvent> event = *it; |
575 | 575 |
576 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 576 EXPECT_EQ((rtp_timestamp_1 - first_rtp_timestamp_).lower_32_bits(), |
577 event->relative_rtp_timestamp()); | |
577 | 578 |
578 ASSERT_EQ(1, event->base_packet_event_size()); | 579 ASSERT_EQ(1, event->base_packet_event_size()); |
579 const BasePacketEvent& base_event = event->base_packet_event(0); | 580 const BasePacketEvent& base_event = event->base_packet_event(0); |
580 EXPECT_EQ(packet_id_1, base_event.packet_id()); | 581 EXPECT_EQ(packet_id_1, base_event.packet_id()); |
581 ASSERT_EQ(1, base_event.event_type_size()); | 582 ASSERT_EQ(1, base_event.event_type_size()); |
582 EXPECT_EQ(media::cast::proto::PACKET_SENT_TO_NETWORK, | 583 EXPECT_EQ(media::cast::proto::PACKET_SENT_TO_NETWORK, |
583 base_event.event_type(0)); | 584 base_event.event_type(0)); |
584 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); | 585 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); |
585 EXPECT_EQ(InMilliseconds(now1), base_event.event_timestamp_ms(0)); | 586 EXPECT_EQ(InMilliseconds(now1), base_event.event_timestamp_ms(0)); |
586 | 587 |
587 relative_rtp_timestamp = rtp_timestamp_2 - first_rtp_timestamp_; | |
588 ++it; | 588 ++it; |
589 ASSERT_TRUE(it != packet_events_.end()); | 589 ASSERT_TRUE(it != packet_events_.end()); |
590 | 590 |
591 event = *it; | 591 event = *it; |
592 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 592 EXPECT_EQ((rtp_timestamp_2 - first_rtp_timestamp_).lower_32_bits(), |
593 event->relative_rtp_timestamp()); | |
593 | 594 |
594 ASSERT_EQ(1, event->base_packet_event_size()); | 595 ASSERT_EQ(1, event->base_packet_event_size()); |
595 const BasePacketEvent& base_event_2 = event->base_packet_event(0); | 596 const BasePacketEvent& base_event_2 = event->base_packet_event(0); |
596 EXPECT_EQ(packet_id_2, base_event_2.packet_id()); | 597 EXPECT_EQ(packet_id_2, base_event_2.packet_id()); |
597 ASSERT_EQ(1, base_event_2.event_type_size()); | 598 ASSERT_EQ(1, base_event_2.event_type_size()); |
598 EXPECT_EQ(media::cast::proto::PACKET_RETRANSMITTED, | 599 EXPECT_EQ(media::cast::proto::PACKET_RETRANSMITTED, |
599 base_event_2.event_type(0)); | 600 base_event_2.event_type(0)); |
600 ASSERT_EQ(1, base_event_2.event_timestamp_ms_size()); | 601 ASSERT_EQ(1, base_event_2.event_timestamp_ms_size()); |
601 EXPECT_EQ(InMilliseconds(now2), base_event_2.event_timestamp_ms(0)); | 602 EXPECT_EQ(InMilliseconds(now2), base_event_2.event_timestamp_ms(0)); |
602 } | 603 } |
603 | 604 |
604 TEST_F(EncodingEventSubscriberTest, FirstRtpTimestamp) { | 605 TEST_F(EncodingEventSubscriberTest, FirstRtpTimeTicks) { |
605 Init(VIDEO_EVENT); | 606 Init(VIDEO_EVENT); |
606 RtpTimestamp rtp_timestamp = 12345; | 607 RtpTimeTicks rtp_timestamp = RtpTimeTicks().Expand(UINT32_C(12345)); |
607 base::TimeTicks now(testing_clock_->NowTicks()); | 608 base::TimeTicks now(testing_clock_->NowTicks()); |
608 | 609 |
609 scoped_ptr<FrameEvent> capture_begin_event(new FrameEvent()); | 610 scoped_ptr<FrameEvent> capture_begin_event(new FrameEvent()); |
610 capture_begin_event->timestamp = now; | 611 capture_begin_event->timestamp = now; |
611 capture_begin_event->type = FRAME_CAPTURE_BEGIN; | 612 capture_begin_event->type = FRAME_CAPTURE_BEGIN; |
612 capture_begin_event->media_type = VIDEO_EVENT; | 613 capture_begin_event->media_type = VIDEO_EVENT; |
613 capture_begin_event->rtp_timestamp = rtp_timestamp; | 614 capture_begin_event->rtp_timestamp = rtp_timestamp; |
614 cast_environment_->logger()->DispatchFrameEvent(capture_begin_event.Pass()); | 615 cast_environment_->logger()->DispatchFrameEvent(capture_begin_event.Pass()); |
615 | 616 |
616 scoped_ptr<FrameEvent> capture_end_event(new FrameEvent()); | 617 scoped_ptr<FrameEvent> capture_end_event(new FrameEvent()); |
617 capture_end_event->timestamp = now; | 618 capture_end_event->timestamp = now; |
618 capture_end_event->type = FRAME_CAPTURE_END; | 619 capture_end_event->type = FRAME_CAPTURE_END; |
619 capture_end_event->media_type = VIDEO_EVENT; | 620 capture_end_event->media_type = VIDEO_EVENT; |
620 capture_end_event->rtp_timestamp = rtp_timestamp + 30; | 621 capture_end_event->rtp_timestamp = |
622 rtp_timestamp + RtpTimeDelta::FromTicks(30); | |
621 capture_end_event->width = 1280; | 623 capture_end_event->width = 1280; |
622 capture_end_event->height = 720; | 624 capture_end_event->height = 720; |
623 cast_environment_->logger()->DispatchFrameEvent(capture_end_event.Pass()); | 625 cast_environment_->logger()->DispatchFrameEvent(capture_end_event.Pass()); |
624 | 626 |
625 GetEventsAndReset(); | 627 GetEventsAndReset(); |
626 | 628 |
627 EXPECT_EQ(rtp_timestamp, first_rtp_timestamp_); | 629 EXPECT_EQ(rtp_timestamp, first_rtp_timestamp_); |
628 FrameEventList::iterator it = frame_events_.begin(); | 630 FrameEventList::iterator it = frame_events_.begin(); |
629 ASSERT_NE(frame_events_.end(), it); | 631 ASSERT_NE(frame_events_.end(), it); |
630 EXPECT_EQ(0u, (*it)->relative_rtp_timestamp()); | 632 EXPECT_EQ(0u, (*it)->relative_rtp_timestamp()); |
631 | 633 |
632 ++it; | 634 ++it; |
633 ASSERT_NE(frame_events_.end(), it); | 635 ASSERT_NE(frame_events_.end(), it); |
634 EXPECT_EQ(30u, (*it)->relative_rtp_timestamp()); | 636 EXPECT_EQ(30u, (*it)->relative_rtp_timestamp()); |
635 EXPECT_EQ(1280, (*it)->width()); | 637 EXPECT_EQ(1280, (*it)->width()); |
636 EXPECT_EQ(720, (*it)->height()); | 638 EXPECT_EQ(720, (*it)->height()); |
637 | 639 |
638 rtp_timestamp = 67890; | 640 rtp_timestamp = rtp_timestamp.Expand(UINT32_C(67890)); |
639 | 641 |
640 capture_begin_event.reset(new FrameEvent()); | 642 capture_begin_event.reset(new FrameEvent()); |
641 capture_begin_event->timestamp = now; | 643 capture_begin_event->timestamp = now; |
642 capture_begin_event->type = FRAME_CAPTURE_BEGIN; | 644 capture_begin_event->type = FRAME_CAPTURE_BEGIN; |
643 capture_begin_event->media_type = VIDEO_EVENT; | 645 capture_begin_event->media_type = VIDEO_EVENT; |
644 capture_begin_event->rtp_timestamp = rtp_timestamp; | 646 capture_begin_event->rtp_timestamp = rtp_timestamp; |
645 cast_environment_->logger()->DispatchFrameEvent(capture_begin_event.Pass()); | 647 cast_environment_->logger()->DispatchFrameEvent(capture_begin_event.Pass()); |
646 | 648 |
647 GetEventsAndReset(); | 649 GetEventsAndReset(); |
648 | 650 |
649 EXPECT_EQ(rtp_timestamp, first_rtp_timestamp_); | 651 EXPECT_EQ(rtp_timestamp, first_rtp_timestamp_); |
650 } | 652 } |
651 | 653 |
652 TEST_F(EncodingEventSubscriberTest, RelativeRtpTimestampWrapAround) { | 654 TEST_F(EncodingEventSubscriberTest, RelativeRtpTimeTicksWrapAround) { |
653 Init(VIDEO_EVENT); | 655 Init(VIDEO_EVENT); |
654 RtpTimestamp rtp_timestamp = 0xffffffff - 20; | 656 RtpTimeTicks rtp_timestamp = RtpTimeTicks() - RtpTimeDelta::FromTicks(20); |
655 base::TimeTicks now(testing_clock_->NowTicks()); | 657 base::TimeTicks now(testing_clock_->NowTicks()); |
656 | 658 |
657 scoped_ptr<FrameEvent> capture_begin_event(new FrameEvent()); | 659 scoped_ptr<FrameEvent> capture_begin_event(new FrameEvent()); |
658 capture_begin_event->timestamp = now; | 660 capture_begin_event->timestamp = now; |
659 capture_begin_event->type = FRAME_CAPTURE_BEGIN; | 661 capture_begin_event->type = FRAME_CAPTURE_BEGIN; |
660 capture_begin_event->media_type = VIDEO_EVENT; | 662 capture_begin_event->media_type = VIDEO_EVENT; |
661 capture_begin_event->rtp_timestamp = rtp_timestamp; | 663 capture_begin_event->rtp_timestamp = rtp_timestamp; |
662 cast_environment_->logger()->DispatchFrameEvent(capture_begin_event.Pass()); | 664 cast_environment_->logger()->DispatchFrameEvent(capture_begin_event.Pass()); |
663 | 665 |
664 // RtpTimestamp has now wrapped around. | 666 // RtpTimeTicks has now wrapped around. |
665 scoped_ptr<FrameEvent> capture_end_event(new FrameEvent()); | 667 scoped_ptr<FrameEvent> capture_end_event(new FrameEvent()); |
666 capture_end_event->timestamp = now; | 668 capture_end_event->timestamp = now; |
667 capture_end_event->type = FRAME_CAPTURE_END; | 669 capture_end_event->type = FRAME_CAPTURE_END; |
668 capture_end_event->media_type = VIDEO_EVENT; | 670 capture_end_event->media_type = VIDEO_EVENT; |
669 capture_end_event->rtp_timestamp = rtp_timestamp + 30; | 671 capture_end_event->rtp_timestamp = |
672 rtp_timestamp + RtpTimeDelta::FromTicks(30); | |
670 capture_end_event->width = 1280; | 673 capture_end_event->width = 1280; |
671 capture_end_event->height = 720; | 674 capture_end_event->height = 720; |
672 cast_environment_->logger()->DispatchFrameEvent(capture_end_event.Pass()); | 675 cast_environment_->logger()->DispatchFrameEvent(capture_end_event.Pass()); |
673 | 676 |
674 GetEventsAndReset(); | 677 GetEventsAndReset(); |
675 | 678 |
676 FrameEventList::iterator it = frame_events_.begin(); | 679 FrameEventList::iterator it = frame_events_.begin(); |
677 ASSERT_NE(frame_events_.end(), it); | 680 ASSERT_NE(frame_events_.end(), it); |
678 EXPECT_EQ(0u, (*it)->relative_rtp_timestamp()); | 681 EXPECT_EQ(0u, (*it)->relative_rtp_timestamp()); |
679 | 682 |
680 ++it; | 683 ++it; |
681 ASSERT_NE(frame_events_.end(), it); | 684 ASSERT_NE(frame_events_.end(), it); |
682 EXPECT_EQ(30u, (*it)->relative_rtp_timestamp()); | 685 EXPECT_EQ(30u, (*it)->relative_rtp_timestamp()); |
683 EXPECT_EQ(1280, (*it)->width()); | 686 EXPECT_EQ(1280, (*it)->width()); |
684 EXPECT_EQ(720, (*it)->height()); | 687 EXPECT_EQ(720, (*it)->height()); |
685 } | 688 } |
686 | 689 |
687 TEST_F(EncodingEventSubscriberTest, MaxEventsPerProto) { | 690 TEST_F(EncodingEventSubscriberTest, MaxEventsPerProto) { |
688 Init(VIDEO_EVENT); | 691 Init(VIDEO_EVENT); |
689 RtpTimestamp rtp_timestamp = 100; | 692 RtpTimeTicks rtp_timestamp = RtpTimeTicks().Expand(UINT32_C(100)); |
690 for (int i = 0; i < kMaxEventsPerProto + 1; i++) { | 693 for (int i = 0; i < kMaxEventsPerProto + 1; i++) { |
691 scoped_ptr<FrameEvent> ack_event(new FrameEvent()); | 694 scoped_ptr<FrameEvent> ack_event(new FrameEvent()); |
692 ack_event->timestamp = testing_clock_->NowTicks(); | 695 ack_event->timestamp = testing_clock_->NowTicks(); |
693 ack_event->type = FRAME_ACK_RECEIVED; | 696 ack_event->type = FRAME_ACK_RECEIVED; |
694 ack_event->media_type = VIDEO_EVENT; | 697 ack_event->media_type = VIDEO_EVENT; |
695 ack_event->rtp_timestamp = rtp_timestamp; | 698 ack_event->rtp_timestamp = rtp_timestamp; |
696 ack_event->frame_id = 0; | 699 ack_event->frame_id = 0; |
697 cast_environment_->logger()->DispatchFrameEvent(ack_event.Pass()); | 700 cast_environment_->logger()->DispatchFrameEvent(ack_event.Pass()); |
698 | 701 |
699 task_runner_->Sleep(base::TimeDelta::FromMilliseconds(30)); | 702 task_runner_->Sleep(base::TimeDelta::FromMilliseconds(30)); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
766 EXPECT_EQ(kMaxEventsPerProto, | 769 EXPECT_EQ(kMaxEventsPerProto, |
767 packet_event->base_packet_event(0).event_type_size()); | 770 packet_event->base_packet_event(0).event_type_size()); |
768 | 771 |
769 ++packet_it; | 772 ++packet_it; |
770 packet_event = *packet_it; | 773 packet_event = *packet_it; |
771 EXPECT_EQ(1, packet_event->base_packet_event(0).event_type_size()); | 774 EXPECT_EQ(1, packet_event->base_packet_event(0).event_type_size()); |
772 } | 775 } |
773 | 776 |
774 } // namespace cast | 777 } // namespace cast |
775 } // namespace media | 778 } // namespace media |
OLD | NEW |