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 <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 // Close to zero is better. (can be negative) | 229 // Close to zero is better. (can be negative) |
230 MeanAndError(deltas).Print(name, modifier, "av_sync", "ms"); | 230 MeanAndError(deltas).Print(name, modifier, "av_sync", "ms"); |
231 // lower is better. | 231 // lower is better. |
232 AnalyzeJitter(audio_events_).Print(name, modifier, "audio_jitter", "ms"); | 232 AnalyzeJitter(audio_events_).Print(name, modifier, "audio_jitter", "ms"); |
233 // lower is better. | 233 // lower is better. |
234 AnalyzeJitter(video_events_).Print(name, modifier, "video_jitter", "ms"); | 234 AnalyzeJitter(video_events_).Print(name, modifier, "video_jitter", "ms"); |
235 } | 235 } |
236 | 236 |
237 private: | 237 private: |
238 // Invoked by InProcessReceiver for each received audio frame. | 238 // Invoked by InProcessReceiver for each received audio frame. |
239 void OnAudioFrame(scoped_ptr<media::AudioBus> audio_frame, | 239 void OnAudioFrame(std::unique_ptr<media::AudioBus> audio_frame, |
240 const base::TimeTicks& playout_time, | 240 const base::TimeTicks& playout_time, |
241 bool is_continuous) override { | 241 bool is_continuous) override { |
242 CHECK(cast_env()->CurrentlyOn(media::cast::CastEnvironment::MAIN)); | 242 CHECK(cast_env()->CurrentlyOn(media::cast::CastEnvironment::MAIN)); |
243 | 243 |
244 if (audio_frame->frames() <= 0) { | 244 if (audio_frame->frames() <= 0) { |
245 NOTREACHED() << "OnAudioFrame called with no samples?!?"; | 245 NOTREACHED() << "OnAudioFrame called with no samples?!?"; |
246 return; | 246 return; |
247 } | 247 } |
248 | 248 |
249 // Note: This is the number of the video frame that this audio belongs to. | 249 // Note: This is the number of the video frame that this audio belongs to. |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 if (HasFlag(k60fps)) | 328 if (HasFlag(k60fps)) |
329 return 60; | 329 return 60; |
330 NOTREACHED(); | 330 NOTREACHED(); |
331 return 0; | 331 return 0; |
332 } | 332 } |
333 | 333 |
334 net::IPEndPoint GetFreeLocalPort() { | 334 net::IPEndPoint GetFreeLocalPort() { |
335 // Determine a unused UDP port for the in-process receiver to listen on. | 335 // Determine a unused UDP port for the in-process receiver to listen on. |
336 // Method: Bind a UDP socket on port 0, and then check which port the | 336 // Method: Bind a UDP socket on port 0, and then check which port the |
337 // operating system assigned to it. | 337 // operating system assigned to it. |
338 scoped_ptr<net::UDPServerSocket> receive_socket( | 338 std::unique_ptr<net::UDPServerSocket> receive_socket( |
339 new net::UDPServerSocket(NULL, net::NetLog::Source())); | 339 new net::UDPServerSocket(NULL, net::NetLog::Source())); |
340 receive_socket->AllowAddressReuse(); | 340 receive_socket->AllowAddressReuse(); |
341 CHECK_EQ(net::OK, receive_socket->Listen( | 341 CHECK_EQ(net::OK, receive_socket->Listen( |
342 net::IPEndPoint(net::IPAddress::IPv4Localhost(), 0))); | 342 net::IPEndPoint(net::IPAddress::IPv4Localhost(), 0))); |
343 net::IPEndPoint endpoint; | 343 net::IPEndPoint endpoint; |
344 CHECK_EQ(net::OK, receive_socket->GetLocalAddress(&endpoint)); | 344 CHECK_EQ(net::OK, receive_socket->GetLocalAddress(&endpoint)); |
345 return endpoint; | 345 return endpoint; |
346 } | 346 } |
347 | 347 |
348 void SetUp() override { | 348 void SetUp() override { |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
578 } | 578 } |
579 if (HasFlag(kSlowClock)) { | 579 if (HasFlag(kSlowClock)) { |
580 delta = base::TimeDelta::FromSeconds(-10); | 580 delta = base::TimeDelta::FromSeconds(-10); |
581 } | 581 } |
582 scoped_refptr<media::cast::StandaloneCastEnvironment> cast_environment( | 582 scoped_refptr<media::cast::StandaloneCastEnvironment> cast_environment( |
583 new SkewedCastEnvironment(delta)); | 583 new SkewedCastEnvironment(delta)); |
584 TestPatternReceiver* const receiver = | 584 TestPatternReceiver* const receiver = |
585 new TestPatternReceiver(cast_environment, receiver_end_point); | 585 new TestPatternReceiver(cast_environment, receiver_end_point); |
586 receiver->Start(); | 586 receiver->Start(); |
587 | 587 |
588 scoped_ptr<media::cast::test::UDPProxy> udp_proxy; | 588 std::unique_ptr<media::cast::test::UDPProxy> udp_proxy; |
589 if (HasFlag(kProxyWifi) || HasFlag(kProxyBad)) { | 589 if (HasFlag(kProxyWifi) || HasFlag(kProxyBad)) { |
590 net::IPEndPoint proxy_end_point = GetFreeLocalPort(); | 590 net::IPEndPoint proxy_end_point = GetFreeLocalPort(); |
591 if (HasFlag(kProxyWifi)) { | 591 if (HasFlag(kProxyWifi)) { |
592 udp_proxy = media::cast::test::UDPProxy::Create( | 592 udp_proxy = media::cast::test::UDPProxy::Create( |
593 proxy_end_point, receiver_end_point, | 593 proxy_end_point, receiver_end_point, |
594 media::cast::test::WifiNetwork(), media::cast::test::WifiNetwork(), | 594 media::cast::test::WifiNetwork(), media::cast::test::WifiNetwork(), |
595 NULL); | 595 NULL); |
596 } else if (HasFlag(kProxyBad)) { | 596 } else if (HasFlag(kProxyBad)) { |
597 udp_proxy = media::cast::test::UDPProxy::Create( | 597 udp_proxy = media::cast::test::UDPProxy::Create( |
598 proxy_end_point, receiver_end_point, | 598 proxy_end_point, receiver_end_point, |
(...skipping 10 matching lines...) Expand all Loading... |
609 "performance%d.html?port=%d", | 609 "performance%d.html?port=%d", |
610 getfps(), | 610 getfps(), |
611 receiver_end_point.port()); | 611 receiver_end_point.port()); |
612 ASSERT_TRUE(RunExtensionSubtest("cast_streaming", page_url)) << message_; | 612 ASSERT_TRUE(RunExtensionSubtest("cast_streaming", page_url)) << message_; |
613 ASSERT_TRUE(tracing::EndTracing(&json_events)); | 613 ASSERT_TRUE(tracing::EndTracing(&json_events)); |
614 receiver->Stop(); | 614 receiver->Stop(); |
615 | 615 |
616 // Stop all threads, removes the need for synchronization when analyzing | 616 // Stop all threads, removes the need for synchronization when analyzing |
617 // the data. | 617 // the data. |
618 cast_environment->Shutdown(); | 618 cast_environment->Shutdown(); |
619 scoped_ptr<trace_analyzer::TraceAnalyzer> analyzer; | 619 std::unique_ptr<trace_analyzer::TraceAnalyzer> analyzer; |
620 analyzer.reset(trace_analyzer::TraceAnalyzer::Create(json_events)); | 620 analyzer.reset(trace_analyzer::TraceAnalyzer::Create(json_events)); |
621 analyzer->AssociateAsyncBeginEndEvents(); | 621 analyzer->AssociateAsyncBeginEndEvents(); |
622 | 622 |
623 MeanAndError frame_data = AnalyzeTraceDistance( | 623 MeanAndError frame_data = AnalyzeTraceDistance( |
624 analyzer.get(), | 624 analyzer.get(), |
625 "OnSwapCompositorFrame"); | 625 "OnSwapCompositorFrame"); |
626 | 626 |
627 EXPECT_GT(frame_data.num_values, 0UL); | 627 EXPECT_GT(frame_data.num_values, 0UL); |
628 // Lower is better. | 628 // Lower is better. |
629 frame_data.Print(test_name, | 629 frame_data.Print(test_name, |
(...skipping 30 matching lines...) Expand all Loading... |
660 CastV2PerformanceTest, | 660 CastV2PerformanceTest, |
661 testing::Values( | 661 testing::Values( |
662 kUseGpu | k24fps, | 662 kUseGpu | k24fps, |
663 kUseGpu | k30fps, | 663 kUseGpu | k30fps, |
664 kUseGpu | k60fps, | 664 kUseGpu | k60fps, |
665 kUseGpu | k24fps | kDisableVsync, | 665 kUseGpu | k24fps | kDisableVsync, |
666 kUseGpu | k30fps | kProxyWifi, | 666 kUseGpu | k30fps | kProxyWifi, |
667 kUseGpu | k30fps | kProxyBad, | 667 kUseGpu | k30fps | kProxyBad, |
668 kUseGpu | k30fps | kSlowClock, | 668 kUseGpu | k30fps | kSlowClock, |
669 kUseGpu | k30fps | kFastClock)); | 669 kUseGpu | k30fps | kFastClock)); |
OLD | NEW |