| 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)); |
| 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 |