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