| 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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 void GetEventsAndReset() { | 57 void GetEventsAndReset() { |
| 58 event_subscriber_->GetEventsAndReset( | 58 event_subscriber_->GetEventsAndReset( |
| 59 &metadata_, &frame_events_, &packet_events_); | 59 &metadata_, &frame_events_, &packet_events_); |
| 60 first_rtp_timestamp_ = metadata_.first_rtp_timestamp(); | 60 first_rtp_timestamp_ = metadata_.first_rtp_timestamp(); |
| 61 } | 61 } |
| 62 | 62 |
| 63 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. | 63 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. |
| 64 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; | 64 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; |
| 65 scoped_refptr<CastEnvironment> cast_environment_; | 65 scoped_refptr<CastEnvironment> cast_environment_; |
| 66 scoped_ptr<EncodingEventSubscriber> event_subscriber_; | 66 scoped_ptr<EncodingEventSubscriber> event_subscriber_; |
| 67 FrameEventMap frame_events_; | 67 FrameEventList frame_events_; |
| 68 PacketEventMap packet_events_; | 68 PacketEventList packet_events_; |
| 69 LogMetadata metadata_; | 69 LogMetadata metadata_; |
| 70 RtpTimestamp first_rtp_timestamp_; | 70 RtpTimestamp first_rtp_timestamp_; |
| 71 }; | 71 }; |
| 72 | 72 |
| 73 TEST_F(EncodingEventSubscriberTest, FrameEventTruncating) { | 73 TEST_F(EncodingEventSubscriberTest, FrameEventTruncating) { |
| 74 Init(VIDEO_EVENT); | 74 Init(VIDEO_EVENT); |
| 75 | 75 |
| 76 base::TimeTicks now(testing_clock_->NowTicks()); | 76 base::TimeTicks now(testing_clock_->NowTicks()); |
| 77 | 77 |
| 78 // Entry with RTP timestamp 0 should get dropped. | 78 // Entry with RTP timestamp 0 should get dropped. |
| 79 for (int i = 0; i < 11; i++) { | 79 for (int i = 0; i < 11; i++) { |
| 80 cast_environment_->Logging()->InsertFrameEvent(now, | 80 cast_environment_->Logging()->InsertFrameEvent(now, |
| 81 kVideoFrameCaptured, | 81 kVideoFrameCaptured, |
| 82 i * 100, | 82 i * 100, |
| 83 /*frame_id*/ 0); | 83 /*frame_id*/ 0); |
| 84 cast_environment_->Logging()->InsertFrameEvent(now, | 84 cast_environment_->Logging()->InsertFrameEvent(now, |
| 85 kVideoFrameDecoded, | 85 kVideoFrameDecoded, |
| 86 i * 100, | 86 i * 100, |
| 87 /*frame_id*/ 0); | 87 /*frame_id*/ 0); |
| 88 } | 88 } |
| 89 | 89 |
| 90 GetEventsAndReset(); | 90 GetEventsAndReset(); |
| 91 | 91 |
| 92 ASSERT_EQ(10u, frame_events_.size()); | 92 ASSERT_EQ(10u, frame_events_.size()); |
| 93 EXPECT_EQ(100u, frame_events_.begin()->first); | 93 EXPECT_EQ(100u, frame_events_.front()->relative_rtp_timestamp()); |
| 94 EXPECT_EQ(1000u, frame_events_.rbegin()->first); | 94 EXPECT_EQ(1000u, frame_events_.back()->relative_rtp_timestamp()); |
| 95 } | 95 } |
| 96 | 96 |
| 97 TEST_F(EncodingEventSubscriberTest, PacketEventTruncating) { | 97 TEST_F(EncodingEventSubscriberTest, PacketEventTruncating) { |
| 98 Init(AUDIO_EVENT); | 98 Init(AUDIO_EVENT); |
| 99 | 99 |
| 100 base::TimeTicks now(testing_clock_->NowTicks()); | 100 base::TimeTicks now(testing_clock_->NowTicks()); |
| 101 | 101 |
| 102 // Entry with RTP timestamp 0 should get dropped. | 102 // Entry with RTP timestamp 0 should get dropped. |
| 103 for (int i = 0; i < 11; i++) { | 103 for (int i = 0; i < 11; i++) { |
| 104 cast_environment_->Logging()->InsertPacketEvent(now, | 104 cast_environment_->Logging()->InsertPacketEvent(now, |
| 105 kAudioPacketReceived, | 105 kAudioPacketReceived, |
| 106 /*rtp_timestamp*/ i * 100, | 106 /*rtp_timestamp*/ i * 100, |
| 107 /*frame_id*/ 0, | 107 /*frame_id*/ 0, |
| 108 /*packet_id*/ i, | 108 /*packet_id*/ i, |
| 109 /*max_packet_id*/ 10, | 109 /*max_packet_id*/ 10, |
| 110 /*size*/ 123); | 110 /*size*/ 123); |
| 111 } | 111 } |
| 112 | 112 |
| 113 GetEventsAndReset(); | 113 GetEventsAndReset(); |
| 114 | 114 |
| 115 ASSERT_EQ(10u, packet_events_.size()); | 115 ASSERT_EQ(10u, packet_events_.size()); |
| 116 EXPECT_EQ(100u, packet_events_.begin()->first); | 116 EXPECT_EQ(100u, packet_events_.front()->relative_rtp_timestamp()); |
| 117 EXPECT_EQ(1000u, packet_events_.rbegin()->first); | 117 EXPECT_EQ(1000u, packet_events_.back()->relative_rtp_timestamp()); |
| 118 } | 118 } |
| 119 | 119 |
| 120 TEST_F(EncodingEventSubscriberTest, EventFiltering) { | 120 TEST_F(EncodingEventSubscriberTest, EventFiltering) { |
| 121 Init(VIDEO_EVENT); | 121 Init(VIDEO_EVENT); |
| 122 | 122 |
| 123 base::TimeTicks now(testing_clock_->NowTicks()); | 123 base::TimeTicks now(testing_clock_->NowTicks()); |
| 124 RtpTimestamp rtp_timestamp = 100; | 124 RtpTimestamp rtp_timestamp = 100; |
| 125 cast_environment_->Logging()->InsertFrameEvent(now, | 125 cast_environment_->Logging()->InsertFrameEvent(now, |
| 126 kVideoFrameDecoded, | 126 kVideoFrameDecoded, |
| 127 rtp_timestamp, | 127 rtp_timestamp, |
| 128 /*frame_id*/ 0); | 128 /*frame_id*/ 0); |
| 129 | 129 |
| 130 // This is an AUDIO_EVENT and shouldn't be processed by the subscriber. | 130 // This is an AUDIO_EVENT and shouldn't be processed by the subscriber. |
| 131 cast_environment_->Logging()->InsertFrameEvent(now, | 131 cast_environment_->Logging()->InsertFrameEvent(now, |
| 132 kAudioFrameDecoded, | 132 kAudioFrameDecoded, |
| 133 rtp_timestamp, | 133 rtp_timestamp, |
| 134 /*frame_id*/ 0); | 134 /*frame_id*/ 0); |
| 135 | 135 |
| 136 GetEventsAndReset(); | 136 GetEventsAndReset(); |
| 137 | 137 |
| 138 FrameEventMap::iterator frame_it = frame_events_.find(0); | 138 ASSERT_EQ(1u, frame_events_.size()); |
| 139 ASSERT_TRUE(frame_it != frame_events_.end()); | 139 FrameEventList::iterator it = frame_events_.begin(); |
| 140 | 140 |
| 141 linked_ptr<AggregatedFrameEvent> frame_event = frame_it->second; | 141 linked_ptr<AggregatedFrameEvent> frame_event = *it; |
| 142 | 142 |
| 143 ASSERT_EQ(1, frame_event->event_type_size()); | 143 ASSERT_EQ(1, frame_event->event_type_size()); |
| 144 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_DECODED, | 144 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_DECODED, |
| 145 frame_event->event_type(0)); | 145 frame_event->event_type(0)); |
| 146 | 146 |
| 147 GetEventsAndReset(); | 147 GetEventsAndReset(); |
| 148 | 148 |
| 149 EXPECT_TRUE(packet_events_.empty()); | 149 EXPECT_TRUE(packet_events_.empty()); |
| 150 } | 150 } |
| 151 | 151 |
| 152 TEST_F(EncodingEventSubscriberTest, FrameEvent) { | 152 TEST_F(EncodingEventSubscriberTest, FrameEvent) { |
| 153 Init(VIDEO_EVENT); | 153 Init(VIDEO_EVENT); |
| 154 base::TimeTicks now(testing_clock_->NowTicks()); | 154 base::TimeTicks now(testing_clock_->NowTicks()); |
| 155 RtpTimestamp rtp_timestamp = 100; | 155 RtpTimestamp rtp_timestamp = 100; |
| 156 cast_environment_->Logging()->InsertFrameEvent(now, kVideoFrameDecoded, | 156 cast_environment_->Logging()->InsertFrameEvent(now, kVideoFrameDecoded, |
| 157 rtp_timestamp, | 157 rtp_timestamp, |
| 158 /*frame_id*/ 0); | 158 /*frame_id*/ 0); |
| 159 | 159 |
| 160 GetEventsAndReset(); | 160 GetEventsAndReset(); |
| 161 | 161 |
| 162 ASSERT_EQ(1u, frame_events_.size()); | 162 ASSERT_EQ(1u, frame_events_.size()); |
| 163 | 163 |
| 164 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 164 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
| 165 FrameEventMap::iterator it = frame_events_.find(relative_rtp_timestamp); | 165 FrameEventList::iterator it = frame_events_.begin(); |
| 166 ASSERT_TRUE(it != frame_events_.end()); | |
| 167 | 166 |
| 168 linked_ptr<AggregatedFrameEvent> event = it->second; | 167 linked_ptr<AggregatedFrameEvent> event = *it; |
| 169 | 168 |
| 170 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 169 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 171 | 170 |
| 172 ASSERT_EQ(1, event->event_type_size()); | 171 ASSERT_EQ(1, event->event_type_size()); |
| 173 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_DECODED, event->event_type(0)); | 172 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_DECODED, event->event_type(0)); |
| 174 ASSERT_EQ(1, event->event_timestamp_ms_size()); | 173 ASSERT_EQ(1, event->event_timestamp_ms_size()); |
| 175 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); | 174 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); |
| 176 | 175 |
| 177 EXPECT_EQ(0, event->encoded_frame_size()); | 176 EXPECT_EQ(0, event->encoded_frame_size()); |
| 178 EXPECT_EQ(0, event->delay_millis()); | 177 EXPECT_EQ(0, event->delay_millis()); |
| 179 | 178 |
| 180 GetEventsAndReset(); | 179 GetEventsAndReset(); |
| 181 EXPECT_TRUE(frame_events_.empty()); | 180 EXPECT_TRUE(frame_events_.empty()); |
| 182 } | 181 } |
| 183 | 182 |
| 184 TEST_F(EncodingEventSubscriberTest, FrameEventDelay) { | 183 TEST_F(EncodingEventSubscriberTest, FrameEventDelay) { |
| 185 Init(AUDIO_EVENT); | 184 Init(AUDIO_EVENT); |
| 186 base::TimeTicks now(testing_clock_->NowTicks()); | 185 base::TimeTicks now(testing_clock_->NowTicks()); |
| 187 RtpTimestamp rtp_timestamp = 100; | 186 RtpTimestamp rtp_timestamp = 100; |
| 188 int delay_ms = 100; | 187 int delay_ms = 100; |
| 189 cast_environment_->Logging()->InsertFrameEventWithDelay( | 188 cast_environment_->Logging()->InsertFrameEventWithDelay( |
| 190 now, kAudioPlayoutDelay, rtp_timestamp, | 189 now, kAudioPlayoutDelay, rtp_timestamp, |
| 191 /*frame_id*/ 0, base::TimeDelta::FromMilliseconds(delay_ms)); | 190 /*frame_id*/ 0, base::TimeDelta::FromMilliseconds(delay_ms)); |
| 192 | 191 |
| 193 GetEventsAndReset(); | 192 GetEventsAndReset(); |
| 194 | 193 |
| 195 ASSERT_EQ(1u, frame_events_.size()); | 194 ASSERT_EQ(1u, frame_events_.size()); |
| 196 | 195 |
| 197 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 196 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
| 198 FrameEventMap::iterator it = frame_events_.find(relative_rtp_timestamp); | 197 FrameEventList::iterator it = frame_events_.begin(); |
| 199 ASSERT_TRUE(it != frame_events_.end()); | |
| 200 | 198 |
| 201 linked_ptr<AggregatedFrameEvent> event = it->second; | 199 linked_ptr<AggregatedFrameEvent> event = *it; |
| 202 | 200 |
| 203 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 201 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 204 | 202 |
| 205 ASSERT_EQ(1, event->event_type_size()); | 203 ASSERT_EQ(1, event->event_type_size()); |
| 206 EXPECT_EQ(media::cast::proto::AUDIO_PLAYOUT_DELAY, event->event_type(0)); | 204 EXPECT_EQ(media::cast::proto::AUDIO_PLAYOUT_DELAY, event->event_type(0)); |
| 207 ASSERT_EQ(1, event->event_timestamp_ms_size()); | 205 ASSERT_EQ(1, event->event_timestamp_ms_size()); |
| 208 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); | 206 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); |
| 209 | 207 |
| 210 EXPECT_EQ(0, event->encoded_frame_size()); | 208 EXPECT_EQ(0, event->encoded_frame_size()); |
| 211 EXPECT_EQ(100, event->delay_millis()); | 209 EXPECT_EQ(100, event->delay_millis()); |
| 212 EXPECT_FALSE(event->has_key_frame()); | 210 EXPECT_FALSE(event->has_key_frame()); |
| 213 } | 211 } |
| 214 | 212 |
| 215 TEST_F(EncodingEventSubscriberTest, FrameEventSize) { | 213 TEST_F(EncodingEventSubscriberTest, FrameEventSize) { |
| 216 Init(VIDEO_EVENT); | 214 Init(VIDEO_EVENT); |
| 217 base::TimeTicks now(testing_clock_->NowTicks()); | 215 base::TimeTicks now(testing_clock_->NowTicks()); |
| 218 RtpTimestamp rtp_timestamp = 100; | 216 RtpTimestamp rtp_timestamp = 100; |
| 219 int size = 123; | 217 int size = 123; |
| 220 bool key_frame = true; | 218 bool key_frame = true; |
| 221 int target_bitrate = 1024; | 219 int target_bitrate = 1024; |
| 222 cast_environment_->Logging()->InsertEncodedFrameEvent( | 220 cast_environment_->Logging()->InsertEncodedFrameEvent( |
| 223 now, kVideoFrameEncoded, rtp_timestamp, | 221 now, kVideoFrameEncoded, rtp_timestamp, |
| 224 /*frame_id*/ 0, size, key_frame, target_bitrate); | 222 /*frame_id*/ 0, size, key_frame, target_bitrate); |
| 225 | 223 |
| 226 GetEventsAndReset(); | 224 GetEventsAndReset(); |
| 227 | 225 |
| 228 ASSERT_EQ(1u, frame_events_.size()); | 226 ASSERT_EQ(1u, frame_events_.size()); |
| 229 | 227 |
| 230 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 228 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
| 231 FrameEventMap::iterator it = frame_events_.find(relative_rtp_timestamp); | 229 FrameEventList::iterator it = frame_events_.begin(); |
| 232 ASSERT_TRUE(it != frame_events_.end()); | |
| 233 | 230 |
| 234 linked_ptr<AggregatedFrameEvent> event = it->second; | 231 linked_ptr<AggregatedFrameEvent> event = *it; |
| 235 | 232 |
| 236 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 233 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 237 | 234 |
| 238 ASSERT_EQ(1, event->event_type_size()); | 235 ASSERT_EQ(1, event->event_type_size()); |
| 239 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_ENCODED, event->event_type(0)); | 236 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_ENCODED, event->event_type(0)); |
| 240 ASSERT_EQ(1, event->event_timestamp_ms_size()); | 237 ASSERT_EQ(1, event->event_timestamp_ms_size()); |
| 241 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); | 238 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); |
| 242 | 239 |
| 243 EXPECT_EQ(size, event->encoded_frame_size()); | 240 EXPECT_EQ(size, event->encoded_frame_size()); |
| 244 EXPECT_EQ(0, event->delay_millis()); | 241 EXPECT_EQ(0, event->delay_millis()); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 266 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); | 263 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); |
| 267 base::TimeTicks now3(testing_clock_->NowTicks()); | 264 base::TimeTicks now3(testing_clock_->NowTicks()); |
| 268 cast_environment_->Logging()->InsertFrameEvent( | 265 cast_environment_->Logging()->InsertFrameEvent( |
| 269 now3, kAudioFrameDecoded, rtp_timestamp1, /*frame_id*/ 0); | 266 now3, kAudioFrameDecoded, rtp_timestamp1, /*frame_id*/ 0); |
| 270 | 267 |
| 271 GetEventsAndReset(); | 268 GetEventsAndReset(); |
| 272 | 269 |
| 273 ASSERT_EQ(2u, frame_events_.size()); | 270 ASSERT_EQ(2u, frame_events_.size()); |
| 274 | 271 |
| 275 RtpTimestamp relative_rtp_timestamp = rtp_timestamp1 - first_rtp_timestamp_; | 272 RtpTimestamp relative_rtp_timestamp = rtp_timestamp1 - first_rtp_timestamp_; |
| 276 FrameEventMap::iterator it = frame_events_.find(relative_rtp_timestamp); | 273 FrameEventList::iterator it = frame_events_.begin(); |
| 277 ASSERT_TRUE(it != frame_events_.end()); | |
| 278 | 274 |
| 279 linked_ptr<AggregatedFrameEvent> event = it->second; | 275 linked_ptr<AggregatedFrameEvent> event = *it; |
| 280 | 276 |
| 281 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 277 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 282 | 278 |
| 283 ASSERT_EQ(2, event->event_type_size()); | 279 ASSERT_EQ(2, event->event_type_size()); |
| 284 EXPECT_EQ(media::cast::proto::AUDIO_PLAYOUT_DELAY, event->event_type(0)); | 280 EXPECT_EQ(media::cast::proto::AUDIO_PLAYOUT_DELAY, event->event_type(0)); |
| 285 EXPECT_EQ(media::cast::proto::AUDIO_FRAME_DECODED, event->event_type(1)); | 281 EXPECT_EQ(media::cast::proto::AUDIO_FRAME_DECODED, event->event_type(1)); |
| 286 | 282 |
| 287 ASSERT_EQ(2, event->event_timestamp_ms_size()); | 283 ASSERT_EQ(2, event->event_timestamp_ms_size()); |
| 288 EXPECT_EQ(InMilliseconds(now1), event->event_timestamp_ms(0)); | 284 EXPECT_EQ(InMilliseconds(now1), event->event_timestamp_ms(0)); |
| 289 EXPECT_EQ(InMilliseconds(now3), event->event_timestamp_ms(1)); | 285 EXPECT_EQ(InMilliseconds(now3), event->event_timestamp_ms(1)); |
| 290 | 286 |
| 291 EXPECT_FALSE(event->has_key_frame()); | 287 EXPECT_FALSE(event->has_key_frame()); |
| 292 | 288 |
| 293 relative_rtp_timestamp = rtp_timestamp2 - first_rtp_timestamp_; | 289 relative_rtp_timestamp = rtp_timestamp2 - first_rtp_timestamp_; |
| 294 it = frame_events_.find(relative_rtp_timestamp); | 290 ++it; |
| 295 ASSERT_TRUE(it != frame_events_.end()); | |
| 296 | 291 |
| 297 event = it->second; | 292 event = *it; |
| 298 | 293 |
| 299 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 294 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 300 | 295 |
| 301 ASSERT_EQ(1, event->event_type_size()); | 296 ASSERT_EQ(1, event->event_type_size()); |
| 302 EXPECT_EQ(media::cast::proto::AUDIO_FRAME_ENCODED, event->event_type(0)); | 297 EXPECT_EQ(media::cast::proto::AUDIO_FRAME_ENCODED, event->event_type(0)); |
| 303 | 298 |
| 304 ASSERT_EQ(1, event->event_timestamp_ms_size()); | 299 ASSERT_EQ(1, event->event_timestamp_ms_size()); |
| 305 EXPECT_EQ(InMilliseconds(now2), event->event_timestamp_ms(0)); | 300 EXPECT_EQ(InMilliseconds(now2), event->event_timestamp_ms(0)); |
| 306 | 301 |
| 307 EXPECT_FALSE(event->has_key_frame()); | 302 EXPECT_FALSE(event->has_key_frame()); |
| 308 } | 303 } |
| 309 | 304 |
| 310 TEST_F(EncodingEventSubscriberTest, PacketEvent) { | 305 TEST_F(EncodingEventSubscriberTest, PacketEvent) { |
| 311 Init(AUDIO_EVENT); | 306 Init(AUDIO_EVENT); |
| 312 base::TimeTicks now(testing_clock_->NowTicks()); | 307 base::TimeTicks now(testing_clock_->NowTicks()); |
| 313 RtpTimestamp rtp_timestamp = 100; | 308 RtpTimestamp rtp_timestamp = 100; |
| 314 int packet_id = 2; | 309 int packet_id = 2; |
| 315 int size = 100; | 310 int size = 100; |
| 316 cast_environment_->Logging()->InsertPacketEvent( | 311 cast_environment_->Logging()->InsertPacketEvent( |
| 317 now, kAudioPacketReceived, rtp_timestamp, /*frame_id*/ 0, packet_id, | 312 now, kAudioPacketReceived, rtp_timestamp, /*frame_id*/ 0, packet_id, |
| 318 /*max_packet_id*/ 10, size); | 313 /*max_packet_id*/ 10, size); |
| 319 | 314 |
| 320 GetEventsAndReset(); | 315 GetEventsAndReset(); |
| 321 | 316 |
| 322 ASSERT_EQ(1u, packet_events_.size()); | 317 ASSERT_EQ(1u, packet_events_.size()); |
| 323 | 318 |
| 324 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 319 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
| 325 PacketEventMap::iterator it = packet_events_.find(relative_rtp_timestamp); | 320 PacketEventList::iterator it = packet_events_.begin(); |
| 326 ASSERT_TRUE(it != packet_events_.end()); | |
| 327 | 321 |
| 328 linked_ptr<AggregatedPacketEvent> event = it->second; | 322 linked_ptr<AggregatedPacketEvent> event = *it; |
| 329 | 323 |
| 330 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 324 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 331 | 325 |
| 332 ASSERT_EQ(1, event->base_packet_event_size()); | 326 ASSERT_EQ(1, event->base_packet_event_size()); |
| 333 const BasePacketEvent& base_event = event->base_packet_event(0); | 327 const BasePacketEvent& base_event = event->base_packet_event(0); |
| 334 EXPECT_EQ(packet_id, base_event.packet_id()); | 328 EXPECT_EQ(packet_id, base_event.packet_id()); |
| 335 ASSERT_EQ(1, base_event.event_type_size()); | 329 ASSERT_EQ(1, base_event.event_type_size()); |
| 336 EXPECT_EQ(media::cast::proto::AUDIO_PACKET_RECEIVED, | 330 EXPECT_EQ(media::cast::proto::AUDIO_PACKET_RECEIVED, |
| 337 base_event.event_type(0)); | 331 base_event.event_type(0)); |
| 338 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); | 332 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 364 /*frame_id*/ 0, | 358 /*frame_id*/ 0, |
| 365 packet_id, | 359 packet_id, |
| 366 /*max_packet_id*/ 10, | 360 /*max_packet_id*/ 10, |
| 367 size); | 361 size); |
| 368 | 362 |
| 369 GetEventsAndReset(); | 363 GetEventsAndReset(); |
| 370 | 364 |
| 371 ASSERT_EQ(1u, packet_events_.size()); | 365 ASSERT_EQ(1u, packet_events_.size()); |
| 372 | 366 |
| 373 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 367 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
| 374 PacketEventMap::iterator it = packet_events_.find(relative_rtp_timestamp); | 368 PacketEventList::iterator it = packet_events_.begin(); |
| 375 ASSERT_TRUE(it != packet_events_.end()); | |
| 376 | 369 |
| 377 linked_ptr<AggregatedPacketEvent> event = it->second; | 370 linked_ptr<AggregatedPacketEvent> event = *it; |
| 378 | 371 |
| 379 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 372 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 380 | 373 |
| 381 ASSERT_EQ(1, event->base_packet_event_size()); | 374 ASSERT_EQ(1, event->base_packet_event_size()); |
| 382 const BasePacketEvent& base_event = event->base_packet_event(0); | 375 const BasePacketEvent& base_event = event->base_packet_event(0); |
| 383 EXPECT_EQ(packet_id, base_event.packet_id()); | 376 EXPECT_EQ(packet_id, base_event.packet_id()); |
| 384 ASSERT_EQ(2, base_event.event_type_size()); | 377 ASSERT_EQ(2, base_event.event_type_size()); |
| 385 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_PACER, | 378 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_PACER, |
| 386 base_event.event_type(0)); | 379 base_event.event_type(0)); |
| 387 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_NETWORK, | 380 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_NETWORK, |
| (...skipping 26 matching lines...) Expand all Loading... |
| 414 /*frame_id*/ 0, | 407 /*frame_id*/ 0, |
| 415 packet_id_2, | 408 packet_id_2, |
| 416 /*max_packet_id*/ 10, | 409 /*max_packet_id*/ 10, |
| 417 size); | 410 size); |
| 418 | 411 |
| 419 GetEventsAndReset(); | 412 GetEventsAndReset(); |
| 420 | 413 |
| 421 ASSERT_EQ(1u, packet_events_.size()); | 414 ASSERT_EQ(1u, packet_events_.size()); |
| 422 | 415 |
| 423 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 416 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
| 424 PacketEventMap::iterator it = packet_events_.find(relative_rtp_timestamp); | 417 PacketEventList::iterator it = packet_events_.begin(); |
| 425 ASSERT_TRUE(it != packet_events_.end()); | |
| 426 | 418 |
| 427 linked_ptr<AggregatedPacketEvent> event = it->second; | 419 linked_ptr<AggregatedPacketEvent> event = *it; |
| 428 | 420 |
| 429 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 421 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 430 | 422 |
| 431 ASSERT_EQ(2, event->base_packet_event_size()); | 423 ASSERT_EQ(2, event->base_packet_event_size()); |
| 432 const BasePacketEvent& base_event = event->base_packet_event(0); | 424 const BasePacketEvent& base_event = event->base_packet_event(0); |
| 433 EXPECT_EQ(packet_id_1, base_event.packet_id()); | 425 EXPECT_EQ(packet_id_1, base_event.packet_id()); |
| 434 ASSERT_EQ(1, base_event.event_type_size()); | 426 ASSERT_EQ(1, base_event.event_type_size()); |
| 435 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_PACER, | 427 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_PACER, |
| 436 base_event.event_type(0)); | 428 base_event.event_type(0)); |
| 437 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); | 429 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 470 /*frame_id*/ 0, | 462 /*frame_id*/ 0, |
| 471 packet_id_2, | 463 packet_id_2, |
| 472 /*max_packet_id*/ 10, | 464 /*max_packet_id*/ 10, |
| 473 size); | 465 size); |
| 474 | 466 |
| 475 GetEventsAndReset(); | 467 GetEventsAndReset(); |
| 476 | 468 |
| 477 ASSERT_EQ(2u, packet_events_.size()); | 469 ASSERT_EQ(2u, packet_events_.size()); |
| 478 | 470 |
| 479 RtpTimestamp relative_rtp_timestamp = rtp_timestamp_1 - first_rtp_timestamp_; | 471 RtpTimestamp relative_rtp_timestamp = rtp_timestamp_1 - first_rtp_timestamp_; |
| 480 PacketEventMap::iterator it = packet_events_.find(relative_rtp_timestamp); | 472 PacketEventList::iterator it = packet_events_.begin(); |
| 481 ASSERT_TRUE(it != packet_events_.end()); | |
| 482 | 473 |
| 483 linked_ptr<AggregatedPacketEvent> event = it->second; | 474 linked_ptr<AggregatedPacketEvent> event = *it; |
| 484 | 475 |
| 485 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 476 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 486 | 477 |
| 487 ASSERT_EQ(1, event->base_packet_event_size()); | 478 ASSERT_EQ(1, event->base_packet_event_size()); |
| 488 const BasePacketEvent& base_event = event->base_packet_event(0); | 479 const BasePacketEvent& base_event = event->base_packet_event(0); |
| 489 EXPECT_EQ(packet_id_1, base_event.packet_id()); | 480 EXPECT_EQ(packet_id_1, base_event.packet_id()); |
| 490 ASSERT_EQ(1, base_event.event_type_size()); | 481 ASSERT_EQ(1, base_event.event_type_size()); |
| 491 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_PACER, | 482 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_PACER, |
| 492 base_event.event_type(0)); | 483 base_event.event_type(0)); |
| 493 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); | 484 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); |
| 494 EXPECT_EQ(InMilliseconds(now1), base_event.event_timestamp_ms(0)); | 485 EXPECT_EQ(InMilliseconds(now1), base_event.event_timestamp_ms(0)); |
| 495 | 486 |
| 496 relative_rtp_timestamp = rtp_timestamp_2 - first_rtp_timestamp_; | 487 relative_rtp_timestamp = rtp_timestamp_2 - first_rtp_timestamp_; |
| 497 it = packet_events_.find(relative_rtp_timestamp); | 488 ++it; |
| 498 ASSERT_TRUE(it != packet_events_.end()); | 489 ASSERT_TRUE(it != packet_events_.end()); |
| 499 | 490 |
| 500 event = it->second; | 491 event = *it; |
| 501 | |
| 502 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 492 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 503 | 493 |
| 504 ASSERT_EQ(1, event->base_packet_event_size()); | 494 ASSERT_EQ(1, event->base_packet_event_size()); |
| 505 const BasePacketEvent& base_event_2 = event->base_packet_event(0); | 495 const BasePacketEvent& base_event_2 = event->base_packet_event(0); |
| 506 EXPECT_EQ(packet_id_2, base_event_2.packet_id()); | 496 EXPECT_EQ(packet_id_2, base_event_2.packet_id()); |
| 507 ASSERT_EQ(1, base_event_2.event_type_size()); | 497 ASSERT_EQ(1, base_event_2.event_type_size()); |
| 508 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_RETRANSMITTED, | 498 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_RETRANSMITTED, |
| 509 base_event_2.event_type(0)); | 499 base_event_2.event_type(0)); |
| 510 ASSERT_EQ(1, base_event_2.event_timestamp_ms_size()); | 500 ASSERT_EQ(1, base_event_2.event_timestamp_ms_size()); |
| 511 EXPECT_EQ(InMilliseconds(now2), base_event_2.event_timestamp_ms(0)); | 501 EXPECT_EQ(InMilliseconds(now2), base_event_2.event_timestamp_ms(0)); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 522 /*frame_id*/ 0); | 512 /*frame_id*/ 0); |
| 523 | 513 |
| 524 cast_environment_->Logging()->InsertFrameEvent(now, | 514 cast_environment_->Logging()->InsertFrameEvent(now, |
| 525 kVideoFrameReceived, | 515 kVideoFrameReceived, |
| 526 rtp_timestamp + 30, | 516 rtp_timestamp + 30, |
| 527 /*frame_id*/ 1); | 517 /*frame_id*/ 1); |
| 528 | 518 |
| 529 GetEventsAndReset(); | 519 GetEventsAndReset(); |
| 530 | 520 |
| 531 EXPECT_EQ(rtp_timestamp, first_rtp_timestamp_); | 521 EXPECT_EQ(rtp_timestamp, first_rtp_timestamp_); |
| 532 FrameEventMap::iterator it = frame_events_.find(0); | 522 FrameEventList::iterator it = frame_events_.begin(); |
| 533 ASSERT_NE(frame_events_.end(), it); | 523 ASSERT_NE(frame_events_.end(), it); |
| 524 EXPECT_EQ(0u, (*it)->relative_rtp_timestamp()); |
| 534 | 525 |
| 535 it = frame_events_.find(30); | 526 ++it; |
| 536 ASSERT_NE(frame_events_.end(), it); | 527 ASSERT_NE(frame_events_.end(), it); |
| 528 EXPECT_EQ(30u, (*it)->relative_rtp_timestamp()); |
| 537 | 529 |
| 538 rtp_timestamp = 67890; | 530 rtp_timestamp = 67890; |
| 539 | 531 |
| 540 cast_environment_->Logging()->InsertFrameEvent(now, | 532 cast_environment_->Logging()->InsertFrameEvent(now, |
| 541 kVideoFrameCaptured, | 533 kVideoFrameCaptured, |
| 542 rtp_timestamp, | 534 rtp_timestamp, |
| 543 /*frame_id*/ 0); | 535 /*frame_id*/ 0); |
| 544 GetEventsAndReset(); | 536 GetEventsAndReset(); |
| 545 | 537 |
| 546 EXPECT_EQ(rtp_timestamp, first_rtp_timestamp_); | 538 EXPECT_EQ(rtp_timestamp, first_rtp_timestamp_); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 557 /*frame_id*/ 0); | 549 /*frame_id*/ 0); |
| 558 | 550 |
| 559 // RtpTimestamp has now wrapped around. | 551 // RtpTimestamp has now wrapped around. |
| 560 cast_environment_->Logging()->InsertFrameEvent(now, | 552 cast_environment_->Logging()->InsertFrameEvent(now, |
| 561 kVideoFrameReceived, | 553 kVideoFrameReceived, |
| 562 rtp_timestamp + 30, | 554 rtp_timestamp + 30, |
| 563 /*frame_id*/ 1); | 555 /*frame_id*/ 1); |
| 564 | 556 |
| 565 GetEventsAndReset(); | 557 GetEventsAndReset(); |
| 566 | 558 |
| 567 FrameEventMap::iterator it = frame_events_.find(0); | 559 FrameEventList::iterator it = frame_events_.begin(); |
| 568 ASSERT_NE(frame_events_.end(), it); | 560 ASSERT_NE(frame_events_.end(), it); |
| 561 EXPECT_EQ(0u, (*it)->relative_rtp_timestamp()); |
| 569 | 562 |
| 570 it = frame_events_.find(30); | 563 ++it; |
| 571 ASSERT_NE(frame_events_.end(), it); | 564 ASSERT_NE(frame_events_.end(), it); |
| 565 EXPECT_EQ(30u, (*it)->relative_rtp_timestamp()); |
| 566 } |
| 567 |
| 568 TEST_F(EncodingEventSubscriberTest, MaxEventsPerProto) { |
| 569 Init(VIDEO_EVENT); |
| 570 RtpTimestamp rtp_timestamp = 100; |
| 571 for (int i = 0; i < kMaxEventsPerProto + 1; i++) { |
| 572 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(), |
| 573 kVideoAckReceived, |
| 574 rtp_timestamp, |
| 575 /*frame_id*/ 0); |
| 576 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(30)); |
| 577 } |
| 578 |
| 579 GetEventsAndReset(); |
| 580 |
| 581 ASSERT_EQ(2u, frame_events_.size()); |
| 582 FrameEventList::iterator frame_it = frame_events_.begin(); |
| 583 ASSERT_TRUE(frame_it != frame_events_.end()); |
| 584 |
| 585 linked_ptr<AggregatedFrameEvent> frame_event = *frame_it; |
| 586 |
| 587 EXPECT_EQ(kMaxEventsPerProto, frame_event->event_type_size()); |
| 588 |
| 589 for (int i = 0; i < kMaxPacketsPerFrame + 1; i++) { |
| 590 cast_environment_->Logging()->InsertPacketEvent( |
| 591 testing_clock_->NowTicks(), |
| 592 kVideoPacketRetransmitted, |
| 593 rtp_timestamp, |
| 594 /*frame_id*/ 0, |
| 595 i, |
| 596 kMaxPacketsPerFrame, |
| 597 123); |
| 598 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(30)); |
| 599 } |
| 600 |
| 601 GetEventsAndReset(); |
| 602 |
| 603 EXPECT_EQ(2u, packet_events_.size()); |
| 604 |
| 605 PacketEventList::iterator packet_it = packet_events_.begin(); |
| 606 ASSERT_TRUE(packet_it != packet_events_.end()); |
| 607 |
| 608 linked_ptr<AggregatedPacketEvent> packet_event = *packet_it; |
| 609 |
| 610 EXPECT_EQ(kMaxPacketsPerFrame, |
| 611 packet_event->base_packet_event_size()); |
| 612 |
| 613 ++packet_it; |
| 614 packet_event = *packet_it; |
| 615 EXPECT_EQ(1, packet_event->base_packet_event_size()); |
| 616 |
| 617 for (int j = 0; j < kMaxEventsPerProto + 1; j++) { |
| 618 cast_environment_->Logging()->InsertPacketEvent( |
| 619 testing_clock_->NowTicks(), |
| 620 kVideoPacketRetransmitted, |
| 621 rtp_timestamp, |
| 622 /*frame_id*/ 0, |
| 623 0, |
| 624 0, |
| 625 123); |
| 626 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(30)); |
| 627 } |
| 628 |
| 629 GetEventsAndReset(); |
| 630 |
| 631 EXPECT_EQ(2u, packet_events_.size()); |
| 632 packet_it = packet_events_.begin(); |
| 633 ASSERT_TRUE(packet_it != packet_events_.end()); |
| 634 |
| 635 packet_event = *packet_it; |
| 636 |
| 637 EXPECT_EQ(kMaxEventsPerProto, |
| 638 packet_event->base_packet_event(0).event_type_size()); |
| 639 |
| 640 ++packet_it; |
| 641 packet_event = *packet_it; |
| 642 EXPECT_EQ(1, packet_event->base_packet_event(0).event_type_size()); |
| 572 } | 643 } |
| 573 | 644 |
| 574 } // namespace cast | 645 } // namespace cast |
| 575 } // namespace media | 646 } // namespace media |
| OLD | NEW |