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