| 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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 kVideoFrameCaptureBegin, | 81 FRAME_CAPTURE_BEGIN, |
| 82 VIDEO_EVENT, |
| 82 i * 100, | 83 i * 100, |
| 83 /*frame_id*/ 0); | 84 /*frame_id*/ 0); |
| 84 cast_environment_->Logging()->InsertFrameEvent(now, | 85 cast_environment_->Logging()->InsertFrameEvent(now, |
| 85 kVideoFrameDecoded, | 86 FRAME_DECODED, |
| 87 VIDEO_EVENT, |
| 86 i * 100, | 88 i * 100, |
| 87 /*frame_id*/ 0); | 89 /*frame_id*/ 0); |
| 88 } | 90 } |
| 89 | 91 |
| 90 GetEventsAndReset(); | 92 GetEventsAndReset(); |
| 91 | 93 |
| 92 ASSERT_EQ(10u, frame_events_.size()); | 94 ASSERT_EQ(10u, frame_events_.size()); |
| 93 EXPECT_EQ(100u, frame_events_.front()->relative_rtp_timestamp()); | 95 EXPECT_EQ(100u, frame_events_.front()->relative_rtp_timestamp()); |
| 94 EXPECT_EQ(1000u, frame_events_.back()->relative_rtp_timestamp()); | 96 EXPECT_EQ(1000u, frame_events_.back()->relative_rtp_timestamp()); |
| 95 } | 97 } |
| 96 | 98 |
| 97 TEST_F(EncodingEventSubscriberTest, PacketEventTruncating) { | 99 TEST_F(EncodingEventSubscriberTest, PacketEventTruncating) { |
| 98 Init(AUDIO_EVENT); | 100 Init(AUDIO_EVENT); |
| 99 | 101 |
| 100 base::TimeTicks now(testing_clock_->NowTicks()); | 102 base::TimeTicks now(testing_clock_->NowTicks()); |
| 101 | 103 |
| 102 // Entry with RTP timestamp 0 should get dropped. | 104 // Entry with RTP timestamp 0 should get dropped. |
| 103 for (int i = 0; i < 11; i++) { | 105 for (int i = 0; i < 11; i++) { |
| 104 cast_environment_->Logging()->InsertPacketEvent(now, | 106 cast_environment_->Logging()->InsertPacketEvent(now, |
| 105 kAudioPacketReceived, | 107 PACKET_RECEIVED, |
| 108 AUDIO_EVENT, |
| 106 /*rtp_timestamp*/ i * 100, | 109 /*rtp_timestamp*/ i * 100, |
| 107 /*frame_id*/ 0, | 110 /*frame_id*/ 0, |
| 108 /*packet_id*/ i, | 111 /*packet_id*/ i, |
| 109 /*max_packet_id*/ 10, | 112 /*max_packet_id*/ 10, |
| 110 /*size*/ 123); | 113 /*size*/ 123); |
| 111 } | 114 } |
| 112 | 115 |
| 113 GetEventsAndReset(); | 116 GetEventsAndReset(); |
| 114 | 117 |
| 115 ASSERT_EQ(10u, packet_events_.size()); | 118 ASSERT_EQ(10u, packet_events_.size()); |
| 116 EXPECT_EQ(100u, packet_events_.front()->relative_rtp_timestamp()); | 119 EXPECT_EQ(100u, packet_events_.front()->relative_rtp_timestamp()); |
| 117 EXPECT_EQ(1000u, packet_events_.back()->relative_rtp_timestamp()); | 120 EXPECT_EQ(1000u, packet_events_.back()->relative_rtp_timestamp()); |
| 118 } | 121 } |
| 119 | 122 |
| 120 TEST_F(EncodingEventSubscriberTest, EventFiltering) { | 123 TEST_F(EncodingEventSubscriberTest, EventFiltering) { |
| 121 Init(VIDEO_EVENT); | 124 Init(VIDEO_EVENT); |
| 122 | 125 |
| 123 base::TimeTicks now(testing_clock_->NowTicks()); | 126 base::TimeTicks now(testing_clock_->NowTicks()); |
| 124 RtpTimestamp rtp_timestamp = 100; | 127 RtpTimestamp rtp_timestamp = 100; |
| 125 cast_environment_->Logging()->InsertFrameEvent(now, | 128 cast_environment_->Logging()->InsertFrameEvent(now, |
| 126 kVideoFrameDecoded, | 129 FRAME_DECODED, |
| 130 VIDEO_EVENT, |
| 127 rtp_timestamp, | 131 rtp_timestamp, |
| 128 /*frame_id*/ 0); | 132 /*frame_id*/ 0); |
| 129 | 133 |
| 130 // This is an AUDIO_EVENT and shouldn't be processed by the subscriber. | 134 // This is an AUDIO_EVENT and shouldn't be processed by the subscriber. |
| 131 cast_environment_->Logging()->InsertFrameEvent(now, | 135 cast_environment_->Logging()->InsertFrameEvent(now, |
| 132 kAudioFrameDecoded, | 136 FRAME_DECODED, |
| 137 AUDIO_EVENT, |
| 133 rtp_timestamp, | 138 rtp_timestamp, |
| 134 /*frame_id*/ 0); | 139 /*frame_id*/ 0); |
| 135 | 140 |
| 136 GetEventsAndReset(); | 141 GetEventsAndReset(); |
| 137 | 142 |
| 138 ASSERT_EQ(1u, frame_events_.size()); | 143 ASSERT_EQ(1u, frame_events_.size()); |
| 139 FrameEventList::iterator it = frame_events_.begin(); | 144 FrameEventList::iterator it = frame_events_.begin(); |
| 140 | 145 |
| 141 linked_ptr<AggregatedFrameEvent> frame_event = *it; | 146 linked_ptr<AggregatedFrameEvent> frame_event = *it; |
| 142 | 147 |
| 143 ASSERT_EQ(1, frame_event->event_type_size()); | 148 ASSERT_EQ(1, frame_event->event_type_size()); |
| 144 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_DECODED, | 149 EXPECT_EQ(media::cast::proto::FRAME_DECODED, |
| 145 frame_event->event_type(0)); | 150 frame_event->event_type(0)); |
| 146 | 151 |
| 147 GetEventsAndReset(); | 152 GetEventsAndReset(); |
| 148 | 153 |
| 149 EXPECT_TRUE(packet_events_.empty()); | 154 EXPECT_TRUE(packet_events_.empty()); |
| 150 } | 155 } |
| 151 | 156 |
| 152 TEST_F(EncodingEventSubscriberTest, FrameEvent) { | 157 TEST_F(EncodingEventSubscriberTest, FrameEvent) { |
| 153 Init(VIDEO_EVENT); | 158 Init(VIDEO_EVENT); |
| 154 base::TimeTicks now(testing_clock_->NowTicks()); | 159 base::TimeTicks now(testing_clock_->NowTicks()); |
| 155 RtpTimestamp rtp_timestamp = 100; | 160 RtpTimestamp rtp_timestamp = 100; |
| 156 cast_environment_->Logging()->InsertFrameEvent(now, kVideoFrameDecoded, | 161 cast_environment_->Logging()->InsertFrameEvent(now, FRAME_DECODED, |
| 162 VIDEO_EVENT, |
| 157 rtp_timestamp, | 163 rtp_timestamp, |
| 158 /*frame_id*/ 0); | 164 /*frame_id*/ 0); |
| 159 | 165 |
| 160 GetEventsAndReset(); | 166 GetEventsAndReset(); |
| 161 | 167 |
| 162 ASSERT_EQ(1u, frame_events_.size()); | 168 ASSERT_EQ(1u, frame_events_.size()); |
| 163 | 169 |
| 164 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 170 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
| 165 FrameEventList::iterator it = frame_events_.begin(); | 171 FrameEventList::iterator it = frame_events_.begin(); |
| 166 | 172 |
| 167 linked_ptr<AggregatedFrameEvent> event = *it; | 173 linked_ptr<AggregatedFrameEvent> event = *it; |
| 168 | 174 |
| 169 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 175 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 170 | 176 |
| 171 ASSERT_EQ(1, event->event_type_size()); | 177 ASSERT_EQ(1, event->event_type_size()); |
| 172 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_DECODED, event->event_type(0)); | 178 EXPECT_EQ(media::cast::proto::FRAME_DECODED, event->event_type(0)); |
| 173 ASSERT_EQ(1, event->event_timestamp_ms_size()); | 179 ASSERT_EQ(1, event->event_timestamp_ms_size()); |
| 174 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); | 180 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); |
| 175 | 181 |
| 176 EXPECT_EQ(0, event->encoded_frame_size()); | 182 EXPECT_EQ(0, event->encoded_frame_size()); |
| 177 EXPECT_EQ(0, event->delay_millis()); | 183 EXPECT_EQ(0, event->delay_millis()); |
| 178 | 184 |
| 179 GetEventsAndReset(); | 185 GetEventsAndReset(); |
| 180 EXPECT_TRUE(frame_events_.empty()); | 186 EXPECT_TRUE(frame_events_.empty()); |
| 181 } | 187 } |
| 182 | 188 |
| 183 TEST_F(EncodingEventSubscriberTest, FrameEventDelay) { | 189 TEST_F(EncodingEventSubscriberTest, FrameEventDelay) { |
| 184 Init(AUDIO_EVENT); | 190 Init(AUDIO_EVENT); |
| 185 base::TimeTicks now(testing_clock_->NowTicks()); | 191 base::TimeTicks now(testing_clock_->NowTicks()); |
| 186 RtpTimestamp rtp_timestamp = 100; | 192 RtpTimestamp rtp_timestamp = 100; |
| 187 int delay_ms = 100; | 193 int delay_ms = 100; |
| 188 cast_environment_->Logging()->InsertFrameEventWithDelay( | 194 cast_environment_->Logging()->InsertFrameEventWithDelay( |
| 189 now, kAudioPlayoutDelay, rtp_timestamp, | 195 now, FRAME_PLAYOUT, AUDIO_EVENT, rtp_timestamp, |
| 190 /*frame_id*/ 0, base::TimeDelta::FromMilliseconds(delay_ms)); | 196 /*frame_id*/ 0, base::TimeDelta::FromMilliseconds(delay_ms)); |
| 191 | 197 |
| 192 GetEventsAndReset(); | 198 GetEventsAndReset(); |
| 193 | 199 |
| 194 ASSERT_EQ(1u, frame_events_.size()); | 200 ASSERT_EQ(1u, frame_events_.size()); |
| 195 | 201 |
| 196 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 202 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
| 197 FrameEventList::iterator it = frame_events_.begin(); | 203 FrameEventList::iterator it = frame_events_.begin(); |
| 198 | 204 |
| 199 linked_ptr<AggregatedFrameEvent> event = *it; | 205 linked_ptr<AggregatedFrameEvent> event = *it; |
| 200 | 206 |
| 201 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 207 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 202 | 208 |
| 203 ASSERT_EQ(1, event->event_type_size()); | 209 ASSERT_EQ(1, event->event_type_size()); |
| 204 EXPECT_EQ(media::cast::proto::AUDIO_PLAYOUT_DELAY, event->event_type(0)); | 210 EXPECT_EQ(media::cast::proto::FRAME_PLAYOUT, event->event_type(0)); |
| 205 ASSERT_EQ(1, event->event_timestamp_ms_size()); | 211 ASSERT_EQ(1, event->event_timestamp_ms_size()); |
| 206 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); | 212 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); |
| 207 | 213 |
| 208 EXPECT_EQ(0, event->encoded_frame_size()); | 214 EXPECT_EQ(0, event->encoded_frame_size()); |
| 209 EXPECT_EQ(100, event->delay_millis()); | 215 EXPECT_EQ(100, event->delay_millis()); |
| 210 EXPECT_FALSE(event->has_key_frame()); | 216 EXPECT_FALSE(event->has_key_frame()); |
| 211 } | 217 } |
| 212 | 218 |
| 213 TEST_F(EncodingEventSubscriberTest, FrameEventSize) { | 219 TEST_F(EncodingEventSubscriberTest, FrameEventSize) { |
| 214 Init(VIDEO_EVENT); | 220 Init(VIDEO_EVENT); |
| 215 base::TimeTicks now(testing_clock_->NowTicks()); | 221 base::TimeTicks now(testing_clock_->NowTicks()); |
| 216 RtpTimestamp rtp_timestamp = 100; | 222 RtpTimestamp rtp_timestamp = 100; |
| 217 int size = 123; | 223 int size = 123; |
| 218 bool key_frame = true; | 224 bool key_frame = true; |
| 219 int target_bitrate = 1024; | 225 int target_bitrate = 1024; |
| 220 cast_environment_->Logging()->InsertEncodedFrameEvent( | 226 cast_environment_->Logging()->InsertEncodedFrameEvent( |
| 221 now, kVideoFrameEncoded, rtp_timestamp, | 227 now, FRAME_ENCODED, VIDEO_EVENT, rtp_timestamp, |
| 222 /*frame_id*/ 0, size, key_frame, target_bitrate); | 228 /*frame_id*/ 0, size, key_frame, target_bitrate); |
| 223 | 229 |
| 224 GetEventsAndReset(); | 230 GetEventsAndReset(); |
| 225 | 231 |
| 226 ASSERT_EQ(1u, frame_events_.size()); | 232 ASSERT_EQ(1u, frame_events_.size()); |
| 227 | 233 |
| 228 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 234 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
| 229 FrameEventList::iterator it = frame_events_.begin(); | 235 FrameEventList::iterator it = frame_events_.begin(); |
| 230 | 236 |
| 231 linked_ptr<AggregatedFrameEvent> event = *it; | 237 linked_ptr<AggregatedFrameEvent> event = *it; |
| 232 | 238 |
| 233 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 239 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 234 | 240 |
| 235 ASSERT_EQ(1, event->event_type_size()); | 241 ASSERT_EQ(1, event->event_type_size()); |
| 236 EXPECT_EQ(media::cast::proto::VIDEO_FRAME_ENCODED, event->event_type(0)); | 242 EXPECT_EQ(media::cast::proto::FRAME_ENCODED, event->event_type(0)); |
| 237 ASSERT_EQ(1, event->event_timestamp_ms_size()); | 243 ASSERT_EQ(1, event->event_timestamp_ms_size()); |
| 238 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); | 244 EXPECT_EQ(InMilliseconds(now), event->event_timestamp_ms(0)); |
| 239 | 245 |
| 240 EXPECT_EQ(size, event->encoded_frame_size()); | 246 EXPECT_EQ(size, event->encoded_frame_size()); |
| 241 EXPECT_EQ(0, event->delay_millis()); | 247 EXPECT_EQ(0, event->delay_millis()); |
| 242 EXPECT_TRUE(event->has_key_frame()); | 248 EXPECT_TRUE(event->has_key_frame()); |
| 243 EXPECT_EQ(key_frame, event->key_frame()); | 249 EXPECT_EQ(key_frame, event->key_frame()); |
| 244 EXPECT_EQ(target_bitrate, event->target_bitrate()); | 250 EXPECT_EQ(target_bitrate, event->target_bitrate()); |
| 245 } | 251 } |
| 246 | 252 |
| 247 TEST_F(EncodingEventSubscriberTest, MultipleFrameEvents) { | 253 TEST_F(EncodingEventSubscriberTest, MultipleFrameEvents) { |
| 248 Init(AUDIO_EVENT); | 254 Init(AUDIO_EVENT); |
| 249 RtpTimestamp rtp_timestamp1 = 100; | 255 RtpTimestamp rtp_timestamp1 = 100; |
| 250 RtpTimestamp rtp_timestamp2 = 200; | 256 RtpTimestamp rtp_timestamp2 = 200; |
| 251 base::TimeTicks now1(testing_clock_->NowTicks()); | 257 base::TimeTicks now1(testing_clock_->NowTicks()); |
| 252 cast_environment_->Logging()->InsertFrameEventWithDelay( | 258 cast_environment_->Logging()->InsertFrameEventWithDelay( |
| 253 now1, kAudioPlayoutDelay, rtp_timestamp1, | 259 now1, FRAME_PLAYOUT, AUDIO_EVENT, rtp_timestamp1, |
| 254 /*frame_id*/ 0, /*delay*/ base::TimeDelta::FromMilliseconds(100)); | 260 /*frame_id*/ 0, /*delay*/ base::TimeDelta::FromMilliseconds(100)); |
| 255 | 261 |
| 256 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); | 262 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); |
| 257 base::TimeTicks now2(testing_clock_->NowTicks()); | 263 base::TimeTicks now2(testing_clock_->NowTicks()); |
| 258 cast_environment_->Logging()->InsertEncodedFrameEvent( | 264 cast_environment_->Logging()->InsertEncodedFrameEvent( |
| 259 now2, kAudioFrameEncoded, rtp_timestamp2, | 265 now2, FRAME_ENCODED, AUDIO_EVENT, rtp_timestamp2, |
| 260 /*frame_id*/ 0, /*size*/ 123, /* key_frame - unused */ false, | 266 /*frame_id*/ 0, /*size*/ 123, /* key_frame - unused */ false, |
| 261 /*target_bitrate - unused*/ 0); | 267 /*target_bitrate - unused*/ 0); |
| 262 | 268 |
| 263 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); | 269 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); |
| 264 base::TimeTicks now3(testing_clock_->NowTicks()); | 270 base::TimeTicks now3(testing_clock_->NowTicks()); |
| 265 cast_environment_->Logging()->InsertFrameEvent( | 271 cast_environment_->Logging()->InsertFrameEvent( |
| 266 now3, kAudioFrameDecoded, rtp_timestamp1, /*frame_id*/ 0); | 272 now3, FRAME_DECODED, AUDIO_EVENT, rtp_timestamp1, /*frame_id*/ 0); |
| 267 | 273 |
| 268 GetEventsAndReset(); | 274 GetEventsAndReset(); |
| 269 | 275 |
| 270 ASSERT_EQ(2u, frame_events_.size()); | 276 ASSERT_EQ(2u, frame_events_.size()); |
| 271 | 277 |
| 272 RtpTimestamp relative_rtp_timestamp = rtp_timestamp1 - first_rtp_timestamp_; | 278 RtpTimestamp relative_rtp_timestamp = rtp_timestamp1 - first_rtp_timestamp_; |
| 273 FrameEventList::iterator it = frame_events_.begin(); | 279 FrameEventList::iterator it = frame_events_.begin(); |
| 274 | 280 |
| 275 linked_ptr<AggregatedFrameEvent> event = *it; | 281 linked_ptr<AggregatedFrameEvent> event = *it; |
| 276 | 282 |
| 277 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 283 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 278 | 284 |
| 279 ASSERT_EQ(2, event->event_type_size()); | 285 ASSERT_EQ(2, event->event_type_size()); |
| 280 EXPECT_EQ(media::cast::proto::AUDIO_PLAYOUT_DELAY, event->event_type(0)); | 286 EXPECT_EQ(media::cast::proto::FRAME_PLAYOUT, event->event_type(0)); |
| 281 EXPECT_EQ(media::cast::proto::AUDIO_FRAME_DECODED, event->event_type(1)); | 287 EXPECT_EQ(media::cast::proto::FRAME_DECODED, event->event_type(1)); |
| 282 | 288 |
| 283 ASSERT_EQ(2, event->event_timestamp_ms_size()); | 289 ASSERT_EQ(2, event->event_timestamp_ms_size()); |
| 284 EXPECT_EQ(InMilliseconds(now1), event->event_timestamp_ms(0)); | 290 EXPECT_EQ(InMilliseconds(now1), event->event_timestamp_ms(0)); |
| 285 EXPECT_EQ(InMilliseconds(now3), event->event_timestamp_ms(1)); | 291 EXPECT_EQ(InMilliseconds(now3), event->event_timestamp_ms(1)); |
| 286 | 292 |
| 287 EXPECT_FALSE(event->has_key_frame()); | 293 EXPECT_FALSE(event->has_key_frame()); |
| 288 | 294 |
| 289 relative_rtp_timestamp = rtp_timestamp2 - first_rtp_timestamp_; | 295 relative_rtp_timestamp = rtp_timestamp2 - first_rtp_timestamp_; |
| 290 ++it; | 296 ++it; |
| 291 | 297 |
| 292 event = *it; | 298 event = *it; |
| 293 | 299 |
| 294 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 300 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 295 | 301 |
| 296 ASSERT_EQ(1, event->event_type_size()); | 302 ASSERT_EQ(1, event->event_type_size()); |
| 297 EXPECT_EQ(media::cast::proto::AUDIO_FRAME_ENCODED, event->event_type(0)); | 303 EXPECT_EQ(media::cast::proto::FRAME_ENCODED, event->event_type(0)); |
| 298 | 304 |
| 299 ASSERT_EQ(1, event->event_timestamp_ms_size()); | 305 ASSERT_EQ(1, event->event_timestamp_ms_size()); |
| 300 EXPECT_EQ(InMilliseconds(now2), event->event_timestamp_ms(0)); | 306 EXPECT_EQ(InMilliseconds(now2), event->event_timestamp_ms(0)); |
| 301 | 307 |
| 302 EXPECT_FALSE(event->has_key_frame()); | 308 EXPECT_FALSE(event->has_key_frame()); |
| 303 } | 309 } |
| 304 | 310 |
| 305 TEST_F(EncodingEventSubscriberTest, PacketEvent) { | 311 TEST_F(EncodingEventSubscriberTest, PacketEvent) { |
| 306 Init(AUDIO_EVENT); | 312 Init(AUDIO_EVENT); |
| 307 base::TimeTicks now(testing_clock_->NowTicks()); | 313 base::TimeTicks now(testing_clock_->NowTicks()); |
| 308 RtpTimestamp rtp_timestamp = 100; | 314 RtpTimestamp rtp_timestamp = 100; |
| 309 int packet_id = 2; | 315 int packet_id = 2; |
| 310 int size = 100; | 316 int size = 100; |
| 311 cast_environment_->Logging()->InsertPacketEvent( | 317 cast_environment_->Logging()->InsertPacketEvent( |
| 312 now, kAudioPacketReceived, rtp_timestamp, /*frame_id*/ 0, packet_id, | 318 now, PACKET_RECEIVED, AUDIO_EVENT, |
| 319 rtp_timestamp, /*frame_id*/ 0, packet_id, |
| 313 /*max_packet_id*/ 10, size); | 320 /*max_packet_id*/ 10, size); |
| 314 | 321 |
| 315 GetEventsAndReset(); | 322 GetEventsAndReset(); |
| 316 | 323 |
| 317 ASSERT_EQ(1u, packet_events_.size()); | 324 ASSERT_EQ(1u, packet_events_.size()); |
| 318 | 325 |
| 319 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 326 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
| 320 PacketEventList::iterator it = packet_events_.begin(); | 327 PacketEventList::iterator it = packet_events_.begin(); |
| 321 | 328 |
| 322 linked_ptr<AggregatedPacketEvent> event = *it; | 329 linked_ptr<AggregatedPacketEvent> event = *it; |
| 323 | 330 |
| 324 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 331 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 325 | 332 |
| 326 ASSERT_EQ(1, event->base_packet_event_size()); | 333 ASSERT_EQ(1, event->base_packet_event_size()); |
| 327 const BasePacketEvent& base_event = event->base_packet_event(0); | 334 const BasePacketEvent& base_event = event->base_packet_event(0); |
| 328 EXPECT_EQ(packet_id, base_event.packet_id()); | 335 EXPECT_EQ(packet_id, base_event.packet_id()); |
| 329 ASSERT_EQ(1, base_event.event_type_size()); | 336 ASSERT_EQ(1, base_event.event_type_size()); |
| 330 EXPECT_EQ(media::cast::proto::AUDIO_PACKET_RECEIVED, | 337 EXPECT_EQ(media::cast::proto::PACKET_RECEIVED, |
| 331 base_event.event_type(0)); | 338 base_event.event_type(0)); |
| 332 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); | 339 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); |
| 333 EXPECT_EQ(InMilliseconds(now), base_event.event_timestamp_ms(0)); | 340 EXPECT_EQ(InMilliseconds(now), base_event.event_timestamp_ms(0)); |
| 334 EXPECT_EQ(size, base_event.size()); | 341 EXPECT_EQ(size, base_event.size()); |
| 335 | 342 |
| 336 GetEventsAndReset(); | 343 GetEventsAndReset(); |
| 337 EXPECT_TRUE(packet_events_.empty()); | 344 EXPECT_TRUE(packet_events_.empty()); |
| 338 } | 345 } |
| 339 | 346 |
| 340 TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForPacket) { | 347 TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForPacket) { |
| 341 Init(VIDEO_EVENT); | 348 Init(VIDEO_EVENT); |
| 342 base::TimeTicks now1(testing_clock_->NowTicks()); | 349 base::TimeTicks now1(testing_clock_->NowTicks()); |
| 343 RtpTimestamp rtp_timestamp = 100; | 350 RtpTimestamp rtp_timestamp = 100; |
| 344 int packet_id = 2; | 351 int packet_id = 2; |
| 345 int size = 100; | 352 int size = 100; |
| 346 cast_environment_->Logging()->InsertPacketEvent(now1, | 353 cast_environment_->Logging()->InsertPacketEvent(now1, |
| 347 kVideoPacketSentToNetwork, | 354 PACKET_SENT_TO_NETWORK, |
| 355 VIDEO_EVENT, |
| 348 rtp_timestamp, | 356 rtp_timestamp, |
| 349 /*frame_id*/ 0, | 357 /*frame_id*/ 0, |
| 350 packet_id, | 358 packet_id, |
| 351 /*max_packet_id*/ 10, | 359 /*max_packet_id*/ 10, |
| 352 size); | 360 size); |
| 353 | 361 |
| 354 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); | 362 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); |
| 355 base::TimeTicks now2(testing_clock_->NowTicks()); | 363 base::TimeTicks now2(testing_clock_->NowTicks()); |
| 356 cast_environment_->Logging()->InsertPacketEvent(now2, | 364 cast_environment_->Logging()->InsertPacketEvent(now2, |
| 357 kVideoPacketRetransmitted, | 365 PACKET_RETRANSMITTED, |
| 366 VIDEO_EVENT, |
| 358 rtp_timestamp, | 367 rtp_timestamp, |
| 359 /*frame_id*/ 0, | 368 /*frame_id*/ 0, |
| 360 packet_id, | 369 packet_id, |
| 361 /*max_packet_id*/ 10, | 370 /*max_packet_id*/ 10, |
| 362 size); | 371 size); |
| 363 | 372 |
| 364 GetEventsAndReset(); | 373 GetEventsAndReset(); |
| 365 | 374 |
| 366 ASSERT_EQ(1u, packet_events_.size()); | 375 ASSERT_EQ(1u, packet_events_.size()); |
| 367 | 376 |
| 368 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 377 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
| 369 PacketEventList::iterator it = packet_events_.begin(); | 378 PacketEventList::iterator it = packet_events_.begin(); |
| 370 | 379 |
| 371 linked_ptr<AggregatedPacketEvent> event = *it; | 380 linked_ptr<AggregatedPacketEvent> event = *it; |
| 372 | 381 |
| 373 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 382 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 374 | 383 |
| 375 ASSERT_EQ(1, event->base_packet_event_size()); | 384 ASSERT_EQ(1, event->base_packet_event_size()); |
| 376 const BasePacketEvent& base_event = event->base_packet_event(0); | 385 const BasePacketEvent& base_event = event->base_packet_event(0); |
| 377 EXPECT_EQ(packet_id, base_event.packet_id()); | 386 EXPECT_EQ(packet_id, base_event.packet_id()); |
| 378 ASSERT_EQ(2, base_event.event_type_size()); | 387 ASSERT_EQ(2, base_event.event_type_size()); |
| 379 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_NETWORK, | 388 EXPECT_EQ(media::cast::proto::PACKET_SENT_TO_NETWORK, |
| 380 base_event.event_type(0)); | 389 base_event.event_type(0)); |
| 381 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_RETRANSMITTED, | 390 EXPECT_EQ(media::cast::proto::PACKET_RETRANSMITTED, |
| 382 base_event.event_type(1)); | 391 base_event.event_type(1)); |
| 383 ASSERT_EQ(2, base_event.event_timestamp_ms_size()); | 392 ASSERT_EQ(2, base_event.event_timestamp_ms_size()); |
| 384 EXPECT_EQ(InMilliseconds(now1), base_event.event_timestamp_ms(0)); | 393 EXPECT_EQ(InMilliseconds(now1), base_event.event_timestamp_ms(0)); |
| 385 EXPECT_EQ(InMilliseconds(now2), base_event.event_timestamp_ms(1)); | 394 EXPECT_EQ(InMilliseconds(now2), base_event.event_timestamp_ms(1)); |
| 386 } | 395 } |
| 387 | 396 |
| 388 TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForFrame) { | 397 TEST_F(EncodingEventSubscriberTest, MultiplePacketEventsForFrame) { |
| 389 Init(VIDEO_EVENT); | 398 Init(VIDEO_EVENT); |
| 390 base::TimeTicks now1(testing_clock_->NowTicks()); | 399 base::TimeTicks now1(testing_clock_->NowTicks()); |
| 391 RtpTimestamp rtp_timestamp = 100; | 400 RtpTimestamp rtp_timestamp = 100; |
| 392 int packet_id_1 = 2; | 401 int packet_id_1 = 2; |
| 393 int packet_id_2 = 3; | 402 int packet_id_2 = 3; |
| 394 int size = 100; | 403 int size = 100; |
| 395 cast_environment_->Logging()->InsertPacketEvent(now1, | 404 cast_environment_->Logging()->InsertPacketEvent(now1, |
| 396 kVideoPacketSentToNetwork, | 405 PACKET_SENT_TO_NETWORK, |
| 406 VIDEO_EVENT, |
| 397 rtp_timestamp, | 407 rtp_timestamp, |
| 398 /*frame_id*/ 0, | 408 /*frame_id*/ 0, |
| 399 packet_id_1, | 409 packet_id_1, |
| 400 /*max_packet_id*/ 10, | 410 /*max_packet_id*/ 10, |
| 401 size); | 411 size); |
| 402 | 412 |
| 403 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); | 413 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); |
| 404 base::TimeTicks now2(testing_clock_->NowTicks()); | 414 base::TimeTicks now2(testing_clock_->NowTicks()); |
| 405 cast_environment_->Logging()->InsertPacketEvent(now2, | 415 cast_environment_->Logging()->InsertPacketEvent(now2, |
| 406 kVideoPacketRetransmitted, | 416 PACKET_RETRANSMITTED, |
| 417 VIDEO_EVENT, |
| 407 rtp_timestamp, | 418 rtp_timestamp, |
| 408 /*frame_id*/ 0, | 419 /*frame_id*/ 0, |
| 409 packet_id_2, | 420 packet_id_2, |
| 410 /*max_packet_id*/ 10, | 421 /*max_packet_id*/ 10, |
| 411 size); | 422 size); |
| 412 | 423 |
| 413 GetEventsAndReset(); | 424 GetEventsAndReset(); |
| 414 | 425 |
| 415 ASSERT_EQ(1u, packet_events_.size()); | 426 ASSERT_EQ(1u, packet_events_.size()); |
| 416 | 427 |
| 417 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; | 428 RtpTimestamp relative_rtp_timestamp = rtp_timestamp - first_rtp_timestamp_; |
| 418 PacketEventList::iterator it = packet_events_.begin(); | 429 PacketEventList::iterator it = packet_events_.begin(); |
| 419 | 430 |
| 420 linked_ptr<AggregatedPacketEvent> event = *it; | 431 linked_ptr<AggregatedPacketEvent> event = *it; |
| 421 | 432 |
| 422 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 433 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 423 | 434 |
| 424 ASSERT_EQ(2, event->base_packet_event_size()); | 435 ASSERT_EQ(2, event->base_packet_event_size()); |
| 425 const BasePacketEvent& base_event = event->base_packet_event(0); | 436 const BasePacketEvent& base_event = event->base_packet_event(0); |
| 426 EXPECT_EQ(packet_id_1, base_event.packet_id()); | 437 EXPECT_EQ(packet_id_1, base_event.packet_id()); |
| 427 ASSERT_EQ(1, base_event.event_type_size()); | 438 ASSERT_EQ(1, base_event.event_type_size()); |
| 428 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_NETWORK, | 439 EXPECT_EQ(media::cast::proto::PACKET_SENT_TO_NETWORK, |
| 429 base_event.event_type(0)); | 440 base_event.event_type(0)); |
| 430 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); | 441 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); |
| 431 EXPECT_EQ(InMilliseconds(now1), base_event.event_timestamp_ms(0)); | 442 EXPECT_EQ(InMilliseconds(now1), base_event.event_timestamp_ms(0)); |
| 432 | 443 |
| 433 const BasePacketEvent& base_event_2 = event->base_packet_event(1); | 444 const BasePacketEvent& base_event_2 = event->base_packet_event(1); |
| 434 EXPECT_EQ(packet_id_2, base_event_2.packet_id()); | 445 EXPECT_EQ(packet_id_2, base_event_2.packet_id()); |
| 435 ASSERT_EQ(1, base_event_2.event_type_size()); | 446 ASSERT_EQ(1, base_event_2.event_type_size()); |
| 436 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_RETRANSMITTED, | 447 EXPECT_EQ(media::cast::proto::PACKET_RETRANSMITTED, |
| 437 base_event_2.event_type(0)); | 448 base_event_2.event_type(0)); |
| 438 ASSERT_EQ(1, base_event_2.event_timestamp_ms_size()); | 449 ASSERT_EQ(1, base_event_2.event_timestamp_ms_size()); |
| 439 EXPECT_EQ(InMilliseconds(now2), base_event_2.event_timestamp_ms(0)); | 450 EXPECT_EQ(InMilliseconds(now2), base_event_2.event_timestamp_ms(0)); |
| 440 } | 451 } |
| 441 | 452 |
| 442 TEST_F(EncodingEventSubscriberTest, MultiplePacketEvents) { | 453 TEST_F(EncodingEventSubscriberTest, MultiplePacketEvents) { |
| 443 Init(VIDEO_EVENT); | 454 Init(VIDEO_EVENT); |
| 444 base::TimeTicks now1(testing_clock_->NowTicks()); | 455 base::TimeTicks now1(testing_clock_->NowTicks()); |
| 445 RtpTimestamp rtp_timestamp_1 = 100; | 456 RtpTimestamp rtp_timestamp_1 = 100; |
| 446 RtpTimestamp rtp_timestamp_2 = 200; | 457 RtpTimestamp rtp_timestamp_2 = 200; |
| 447 int packet_id_1 = 2; | 458 int packet_id_1 = 2; |
| 448 int packet_id_2 = 3; | 459 int packet_id_2 = 3; |
| 449 int size = 100; | 460 int size = 100; |
| 450 cast_environment_->Logging()->InsertPacketEvent(now1, | 461 cast_environment_->Logging()->InsertPacketEvent(now1, |
| 451 kVideoPacketSentToNetwork, | 462 PACKET_SENT_TO_NETWORK, |
| 463 VIDEO_EVENT, |
| 452 rtp_timestamp_1, | 464 rtp_timestamp_1, |
| 453 /*frame_id*/ 0, | 465 /*frame_id*/ 0, |
| 454 packet_id_1, | 466 packet_id_1, |
| 455 /*max_packet_id*/ 10, | 467 /*max_packet_id*/ 10, |
| 456 size); | 468 size); |
| 457 | 469 |
| 458 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); | 470 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(20)); |
| 459 base::TimeTicks now2(testing_clock_->NowTicks()); | 471 base::TimeTicks now2(testing_clock_->NowTicks()); |
| 460 cast_environment_->Logging()->InsertPacketEvent(now2, | 472 cast_environment_->Logging()->InsertPacketEvent(now2, |
| 461 kVideoPacketRetransmitted, | 473 PACKET_RETRANSMITTED, |
| 474 VIDEO_EVENT, |
| 462 rtp_timestamp_2, | 475 rtp_timestamp_2, |
| 463 /*frame_id*/ 0, | 476 /*frame_id*/ 0, |
| 464 packet_id_2, | 477 packet_id_2, |
| 465 /*max_packet_id*/ 10, | 478 /*max_packet_id*/ 10, |
| 466 size); | 479 size); |
| 467 | 480 |
| 468 GetEventsAndReset(); | 481 GetEventsAndReset(); |
| 469 | 482 |
| 470 ASSERT_EQ(2u, packet_events_.size()); | 483 ASSERT_EQ(2u, packet_events_.size()); |
| 471 | 484 |
| 472 RtpTimestamp relative_rtp_timestamp = rtp_timestamp_1 - first_rtp_timestamp_; | 485 RtpTimestamp relative_rtp_timestamp = rtp_timestamp_1 - first_rtp_timestamp_; |
| 473 PacketEventList::iterator it = packet_events_.begin(); | 486 PacketEventList::iterator it = packet_events_.begin(); |
| 474 | 487 |
| 475 linked_ptr<AggregatedPacketEvent> event = *it; | 488 linked_ptr<AggregatedPacketEvent> event = *it; |
| 476 | 489 |
| 477 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 490 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 478 | 491 |
| 479 ASSERT_EQ(1, event->base_packet_event_size()); | 492 ASSERT_EQ(1, event->base_packet_event_size()); |
| 480 const BasePacketEvent& base_event = event->base_packet_event(0); | 493 const BasePacketEvent& base_event = event->base_packet_event(0); |
| 481 EXPECT_EQ(packet_id_1, base_event.packet_id()); | 494 EXPECT_EQ(packet_id_1, base_event.packet_id()); |
| 482 ASSERT_EQ(1, base_event.event_type_size()); | 495 ASSERT_EQ(1, base_event.event_type_size()); |
| 483 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_SENT_TO_NETWORK, | 496 EXPECT_EQ(media::cast::proto::PACKET_SENT_TO_NETWORK, |
| 484 base_event.event_type(0)); | 497 base_event.event_type(0)); |
| 485 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); | 498 ASSERT_EQ(1, base_event.event_timestamp_ms_size()); |
| 486 EXPECT_EQ(InMilliseconds(now1), base_event.event_timestamp_ms(0)); | 499 EXPECT_EQ(InMilliseconds(now1), base_event.event_timestamp_ms(0)); |
| 487 | 500 |
| 488 relative_rtp_timestamp = rtp_timestamp_2 - first_rtp_timestamp_; | 501 relative_rtp_timestamp = rtp_timestamp_2 - first_rtp_timestamp_; |
| 489 ++it; | 502 ++it; |
| 490 ASSERT_TRUE(it != packet_events_.end()); | 503 ASSERT_TRUE(it != packet_events_.end()); |
| 491 | 504 |
| 492 event = *it; | 505 event = *it; |
| 493 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); | 506 EXPECT_EQ(relative_rtp_timestamp, event->relative_rtp_timestamp()); |
| 494 | 507 |
| 495 ASSERT_EQ(1, event->base_packet_event_size()); | 508 ASSERT_EQ(1, event->base_packet_event_size()); |
| 496 const BasePacketEvent& base_event_2 = event->base_packet_event(0); | 509 const BasePacketEvent& base_event_2 = event->base_packet_event(0); |
| 497 EXPECT_EQ(packet_id_2, base_event_2.packet_id()); | 510 EXPECT_EQ(packet_id_2, base_event_2.packet_id()); |
| 498 ASSERT_EQ(1, base_event_2.event_type_size()); | 511 ASSERT_EQ(1, base_event_2.event_type_size()); |
| 499 EXPECT_EQ(media::cast::proto::VIDEO_PACKET_RETRANSMITTED, | 512 EXPECT_EQ(media::cast::proto::PACKET_RETRANSMITTED, |
| 500 base_event_2.event_type(0)); | 513 base_event_2.event_type(0)); |
| 501 ASSERT_EQ(1, base_event_2.event_timestamp_ms_size()); | 514 ASSERT_EQ(1, base_event_2.event_timestamp_ms_size()); |
| 502 EXPECT_EQ(InMilliseconds(now2), base_event_2.event_timestamp_ms(0)); | 515 EXPECT_EQ(InMilliseconds(now2), base_event_2.event_timestamp_ms(0)); |
| 503 } | 516 } |
| 504 | 517 |
| 505 TEST_F(EncodingEventSubscriberTest, FirstRtpTimestamp) { | 518 TEST_F(EncodingEventSubscriberTest, FirstRtpTimestamp) { |
| 506 Init(VIDEO_EVENT); | 519 Init(VIDEO_EVENT); |
| 507 RtpTimestamp rtp_timestamp = 12345; | 520 RtpTimestamp rtp_timestamp = 12345; |
| 508 base::TimeTicks now(testing_clock_->NowTicks()); | 521 base::TimeTicks now(testing_clock_->NowTicks()); |
| 509 | 522 |
| 510 cast_environment_->Logging()->InsertFrameEvent(now, | 523 cast_environment_->Logging()->InsertFrameEvent(now, |
| 511 kVideoFrameCaptureBegin, | 524 FRAME_CAPTURE_BEGIN, |
| 525 VIDEO_EVENT, |
| 512 rtp_timestamp, | 526 rtp_timestamp, |
| 513 /*frame_id*/ 0); | 527 /*frame_id*/ 0); |
| 514 | 528 |
| 515 cast_environment_->Logging()->InsertFrameEvent(now, | 529 cast_environment_->Logging()->InsertFrameEvent(now, |
| 516 kVideoFrameCaptureEnd, | 530 FRAME_CAPTURE_END, |
| 531 VIDEO_EVENT, |
| 517 rtp_timestamp + 30, | 532 rtp_timestamp + 30, |
| 518 /*frame_id*/ 1); | 533 /*frame_id*/ 1); |
| 519 | 534 |
| 520 GetEventsAndReset(); | 535 GetEventsAndReset(); |
| 521 | 536 |
| 522 EXPECT_EQ(rtp_timestamp, first_rtp_timestamp_); | 537 EXPECT_EQ(rtp_timestamp, first_rtp_timestamp_); |
| 523 FrameEventList::iterator it = frame_events_.begin(); | 538 FrameEventList::iterator it = frame_events_.begin(); |
| 524 ASSERT_NE(frame_events_.end(), it); | 539 ASSERT_NE(frame_events_.end(), it); |
| 525 EXPECT_EQ(0u, (*it)->relative_rtp_timestamp()); | 540 EXPECT_EQ(0u, (*it)->relative_rtp_timestamp()); |
| 526 | 541 |
| 527 ++it; | 542 ++it; |
| 528 ASSERT_NE(frame_events_.end(), it); | 543 ASSERT_NE(frame_events_.end(), it); |
| 529 EXPECT_EQ(30u, (*it)->relative_rtp_timestamp()); | 544 EXPECT_EQ(30u, (*it)->relative_rtp_timestamp()); |
| 530 | 545 |
| 531 rtp_timestamp = 67890; | 546 rtp_timestamp = 67890; |
| 532 | 547 |
| 533 cast_environment_->Logging()->InsertFrameEvent(now, | 548 cast_environment_->Logging()->InsertFrameEvent(now, |
| 534 kVideoFrameCaptureBegin, | 549 FRAME_CAPTURE_BEGIN, |
| 550 VIDEO_EVENT, |
| 535 rtp_timestamp, | 551 rtp_timestamp, |
| 536 /*frame_id*/ 0); | 552 /*frame_id*/ 0); |
| 537 GetEventsAndReset(); | 553 GetEventsAndReset(); |
| 538 | 554 |
| 539 EXPECT_EQ(rtp_timestamp, first_rtp_timestamp_); | 555 EXPECT_EQ(rtp_timestamp, first_rtp_timestamp_); |
| 540 } | 556 } |
| 541 | 557 |
| 542 TEST_F(EncodingEventSubscriberTest, RelativeRtpTimestampWrapAround) { | 558 TEST_F(EncodingEventSubscriberTest, RelativeRtpTimestampWrapAround) { |
| 543 Init(VIDEO_EVENT); | 559 Init(VIDEO_EVENT); |
| 544 RtpTimestamp rtp_timestamp = 0xffffffff - 20; | 560 RtpTimestamp rtp_timestamp = 0xffffffff - 20; |
| 545 base::TimeTicks now(testing_clock_->NowTicks()); | 561 base::TimeTicks now(testing_clock_->NowTicks()); |
| 546 | 562 |
| 547 cast_environment_->Logging()->InsertFrameEvent(now, | 563 cast_environment_->Logging()->InsertFrameEvent(now, |
| 548 kVideoFrameCaptureBegin, | 564 FRAME_CAPTURE_BEGIN, |
| 565 VIDEO_EVENT, |
| 549 rtp_timestamp, | 566 rtp_timestamp, |
| 550 /*frame_id*/ 0); | 567 /*frame_id*/ 0); |
| 551 | 568 |
| 552 // RtpTimestamp has now wrapped around. | 569 // RtpTimestamp has now wrapped around. |
| 553 cast_environment_->Logging()->InsertFrameEvent(now, | 570 cast_environment_->Logging()->InsertFrameEvent(now, |
| 554 kVideoFrameCaptureEnd, | 571 FRAME_CAPTURE_END, |
| 572 VIDEO_EVENT, |
| 555 rtp_timestamp + 30, | 573 rtp_timestamp + 30, |
| 556 /*frame_id*/ 1); | 574 /*frame_id*/ 1); |
| 557 | 575 |
| 558 GetEventsAndReset(); | 576 GetEventsAndReset(); |
| 559 | 577 |
| 560 FrameEventList::iterator it = frame_events_.begin(); | 578 FrameEventList::iterator it = frame_events_.begin(); |
| 561 ASSERT_NE(frame_events_.end(), it); | 579 ASSERT_NE(frame_events_.end(), it); |
| 562 EXPECT_EQ(0u, (*it)->relative_rtp_timestamp()); | 580 EXPECT_EQ(0u, (*it)->relative_rtp_timestamp()); |
| 563 | 581 |
| 564 ++it; | 582 ++it; |
| 565 ASSERT_NE(frame_events_.end(), it); | 583 ASSERT_NE(frame_events_.end(), it); |
| 566 EXPECT_EQ(30u, (*it)->relative_rtp_timestamp()); | 584 EXPECT_EQ(30u, (*it)->relative_rtp_timestamp()); |
| 567 } | 585 } |
| 568 | 586 |
| 569 TEST_F(EncodingEventSubscriberTest, MaxEventsPerProto) { | 587 TEST_F(EncodingEventSubscriberTest, MaxEventsPerProto) { |
| 570 Init(VIDEO_EVENT); | 588 Init(VIDEO_EVENT); |
| 571 RtpTimestamp rtp_timestamp = 100; | 589 RtpTimestamp rtp_timestamp = 100; |
| 572 for (int i = 0; i < kMaxEventsPerProto + 1; i++) { | 590 for (int i = 0; i < kMaxEventsPerProto + 1; i++) { |
| 573 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(), | 591 cast_environment_->Logging()->InsertFrameEvent(testing_clock_->NowTicks(), |
| 574 kVideoAckReceived, | 592 FRAME_ACK_RECEIVED, |
| 593 VIDEO_EVENT, |
| 575 rtp_timestamp, | 594 rtp_timestamp, |
| 576 /*frame_id*/ 0); | 595 /*frame_id*/ 0); |
| 577 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(30)); | 596 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(30)); |
| 578 } | 597 } |
| 579 | 598 |
| 580 GetEventsAndReset(); | 599 GetEventsAndReset(); |
| 581 | 600 |
| 582 ASSERT_EQ(2u, frame_events_.size()); | 601 ASSERT_EQ(2u, frame_events_.size()); |
| 583 FrameEventList::iterator frame_it = frame_events_.begin(); | 602 FrameEventList::iterator frame_it = frame_events_.begin(); |
| 584 ASSERT_TRUE(frame_it != frame_events_.end()); | 603 ASSERT_TRUE(frame_it != frame_events_.end()); |
| 585 | 604 |
| 586 linked_ptr<AggregatedFrameEvent> frame_event = *frame_it; | 605 linked_ptr<AggregatedFrameEvent> frame_event = *frame_it; |
| 587 | 606 |
| 588 EXPECT_EQ(kMaxEventsPerProto, frame_event->event_type_size()); | 607 EXPECT_EQ(kMaxEventsPerProto, frame_event->event_type_size()); |
| 589 | 608 |
| 590 for (int i = 0; i < kMaxPacketsPerFrame + 1; i++) { | 609 for (int i = 0; i < kMaxPacketsPerFrame + 1; i++) { |
| 591 cast_environment_->Logging()->InsertPacketEvent( | 610 cast_environment_->Logging()->InsertPacketEvent( |
| 592 testing_clock_->NowTicks(), | 611 testing_clock_->NowTicks(), |
| 593 kVideoPacketRetransmitted, | 612 PACKET_SENT_TO_NETWORK, |
| 613 VIDEO_EVENT, |
| 594 rtp_timestamp, | 614 rtp_timestamp, |
| 595 /*frame_id*/ 0, | 615 /*frame_id*/ 0, |
| 596 i, | 616 i, |
| 597 kMaxPacketsPerFrame, | 617 kMaxPacketsPerFrame, |
| 598 123); | 618 123); |
| 599 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(30)); | 619 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(30)); |
| 600 } | 620 } |
| 601 | 621 |
| 602 GetEventsAndReset(); | 622 GetEventsAndReset(); |
| 603 | 623 |
| 604 EXPECT_EQ(2u, packet_events_.size()); | 624 EXPECT_EQ(2u, packet_events_.size()); |
| 605 | 625 |
| 606 PacketEventList::iterator packet_it = packet_events_.begin(); | 626 PacketEventList::iterator packet_it = packet_events_.begin(); |
| 607 ASSERT_TRUE(packet_it != packet_events_.end()); | 627 ASSERT_TRUE(packet_it != packet_events_.end()); |
| 608 | 628 |
| 609 linked_ptr<AggregatedPacketEvent> packet_event = *packet_it; | 629 linked_ptr<AggregatedPacketEvent> packet_event = *packet_it; |
| 610 | 630 |
| 611 EXPECT_EQ(kMaxPacketsPerFrame, | 631 EXPECT_EQ(kMaxPacketsPerFrame, |
| 612 packet_event->base_packet_event_size()); | 632 packet_event->base_packet_event_size()); |
| 613 | 633 |
| 614 ++packet_it; | 634 ++packet_it; |
| 615 packet_event = *packet_it; | 635 packet_event = *packet_it; |
| 616 EXPECT_EQ(1, packet_event->base_packet_event_size()); | 636 EXPECT_EQ(1, packet_event->base_packet_event_size()); |
| 617 | 637 |
| 618 for (int j = 0; j < kMaxEventsPerProto + 1; j++) { | 638 for (int j = 0; j < kMaxEventsPerProto + 1; j++) { |
| 619 cast_environment_->Logging()->InsertPacketEvent( | 639 cast_environment_->Logging()->InsertPacketEvent( |
| 620 testing_clock_->NowTicks(), | 640 testing_clock_->NowTicks(), |
| 621 kVideoPacketRetransmitted, | 641 PACKET_SENT_TO_NETWORK, |
| 642 VIDEO_EVENT, |
| 622 rtp_timestamp, | 643 rtp_timestamp, |
| 623 /*frame_id*/ 0, | 644 /*frame_id*/ 0, |
| 624 0, | 645 0, |
| 625 0, | 646 0, |
| 626 123); | 647 123); |
| 627 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(30)); | 648 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(30)); |
| 628 } | 649 } |
| 629 | 650 |
| 630 GetEventsAndReset(); | 651 GetEventsAndReset(); |
| 631 | 652 |
| 632 EXPECT_EQ(2u, packet_events_.size()); | 653 EXPECT_EQ(2u, packet_events_.size()); |
| 633 packet_it = packet_events_.begin(); | 654 packet_it = packet_events_.begin(); |
| 634 ASSERT_TRUE(packet_it != packet_events_.end()); | 655 ASSERT_TRUE(packet_it != packet_events_.end()); |
| 635 | 656 |
| 636 packet_event = *packet_it; | 657 packet_event = *packet_it; |
| 637 | 658 |
| 638 EXPECT_EQ(kMaxEventsPerProto, | 659 EXPECT_EQ(kMaxEventsPerProto, |
| 639 packet_event->base_packet_event(0).event_type_size()); | 660 packet_event->base_packet_event(0).event_type_size()); |
| 640 | 661 |
| 641 ++packet_it; | 662 ++packet_it; |
| 642 packet_event = *packet_it; | 663 packet_event = *packet_it; |
| 643 EXPECT_EQ(1, packet_event->base_packet_event(0).event_type_size()); | 664 EXPECT_EQ(1, packet_event->base_packet_event(0).event_type_size()); |
| 644 } | 665 } |
| 645 | 666 |
| 646 } // namespace cast | 667 } // namespace cast |
| 647 } // namespace media | 668 } // namespace media |
| OLD | NEW |