OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #ifndef MEDIA_BLINK_WEBMEDIAPLAYER_IMPL_H_ | 5 #ifndef MEDIA_BLINK_WEBMEDIAPLAYER_IMPL_H_ |
6 #define MEDIA_BLINK_WEBMEDIAPLAYER_IMPL_H_ | 6 #define MEDIA_BLINK_WEBMEDIAPLAYER_IMPL_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
11 #include <string> | 11 #include <string> |
12 #include <vector> | 12 #include <vector> |
13 | 13 |
14 #include "base/cancelable_callback.h" | 14 #include "base/cancelable_callback.h" |
15 #include "base/compiler_specific.h" | 15 #include "base/compiler_specific.h" |
16 #include "base/macros.h" | 16 #include "base/macros.h" |
17 #include "base/memory/linked_ptr.h" | 17 #include "base/memory/linked_ptr.h" |
18 #include "base/memory/memory_pressure_listener.h" | |
18 #include "base/memory/ref_counted.h" | 19 #include "base/memory/ref_counted.h" |
19 #include "base/memory/weak_ptr.h" | 20 #include "base/memory/weak_ptr.h" |
21 #include "base/optional.h" | |
20 #include "base/threading/thread.h" | 22 #include "base/threading/thread.h" |
21 #include "base/time/default_tick_clock.h" | 23 #include "base/time/default_tick_clock.h" |
22 #include "base/timer/elapsed_timer.h" | 24 #include "base/timer/elapsed_timer.h" |
23 #include "base/timer/timer.h" | 25 #include "base/timer/timer.h" |
24 #include "build/build_config.h" | 26 #include "build/build_config.h" |
25 #include "media/base/media_observer.h" | 27 #include "media/base/media_observer.h" |
26 #include "media/base/media_tracks.h" | 28 #include "media/base/media_tracks.h" |
27 #include "media/base/pipeline_impl.h" | 29 #include "media/base/pipeline_impl.h" |
28 #include "media/base/renderer_factory.h" | 30 #include "media/base/renderer_factory.h" |
29 #include "media/base/surface_manager.h" | 31 #include "media/base/surface_manager.h" |
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
336 // Methods internal to UpdatePlayState(). | 338 // Methods internal to UpdatePlayState(). |
337 PlayState UpdatePlayState_ComputePlayState(bool is_remote, | 339 PlayState UpdatePlayState_ComputePlayState(bool is_remote, |
338 bool is_streaming, | 340 bool is_streaming, |
339 bool is_suspended, | 341 bool is_suspended, |
340 bool is_backgrounded); | 342 bool is_backgrounded); |
341 void SetDelegateState(DelegateState new_state); | 343 void SetDelegateState(DelegateState new_state); |
342 void SetMemoryReportingState(bool is_memory_reporting_enabled); | 344 void SetMemoryReportingState(bool is_memory_reporting_enabled); |
343 void SetSuspendState(bool is_suspended); | 345 void SetSuspendState(bool is_suspended); |
344 | 346 |
345 // Called at low frequency to tell external observers how much memory we're | 347 // Called at low frequency to tell external observers how much memory we're |
346 // using for video playback. Called by |memory_usage_reporting_timer_|. | 348 // using for video playback. Called by |memory_usage_reporting_timer_| and |
349 // when we get notified about memory pressure via MemoryPressureListener. | |
347 // Memory usage reporting is done in two steps, because |demuxer_| must be | 350 // Memory usage reporting is done in two steps, because |demuxer_| must be |
348 // accessed on the media thread. | 351 // accessed on the media thread. |
349 void ReportMemoryUsage(); | 352 using OptionalMemoryPressureLevel = |
350 void FinishMemoryUsageReport(int64_t demuxer_memory_usage); | 353 base::Optional<base::MemoryPressureListener::MemoryPressureLevel>; |
354 void ReportMemoryUsage(OptionalMemoryPressureLevel memory_pressure_level); | |
355 void FinishMemoryUsageReport( | |
356 OptionalMemoryPressureLevel memory_pressure_level, | |
357 int64_t demuxer_memory_usage); | |
351 | 358 |
352 // Called during OnHidden() when we want a suspended player to enter the | 359 // Called during OnHidden() when we want a suspended player to enter the |
353 // paused state after some idle timeout. | 360 // paused state after some idle timeout. |
354 void ScheduleIdlePauseTimer(); | 361 void ScheduleIdlePauseTimer(); |
355 | 362 |
356 void CreateWatchTimeReporter(); | 363 void CreateWatchTimeReporter(); |
357 | 364 |
358 // Returns true if the player is hidden. | 365 // Returns true if the player is hidden. |
359 bool IsHidden() const; | 366 bool IsHidden() const; |
360 | 367 |
368 void OnMemoryPressure(base::MemoryPressureListener::MemoryPressureLevel lvl); | |
watk
2016/12/14 00:34:05
name doesn't match cc.
servolk
2016/12/14 02:34:34
Done.
| |
369 | |
361 blink::WebLocalFrame* frame_; | 370 blink::WebLocalFrame* frame_; |
362 | 371 |
363 // The playback state last reported to |delegate_|, to avoid setting duplicate | 372 // The playback state last reported to |delegate_|, to avoid setting duplicate |
364 // states. (Which can have undesired effects like resetting the idle timer.) | 373 // states. (Which can have undesired effects like resetting the idle timer.) |
365 DelegateState delegate_state_; | 374 DelegateState delegate_state_; |
366 | 375 |
367 // Set when OnSuspendRequested() is called with |must_suspend| unset. | 376 // Set when OnSuspendRequested() is called with |must_suspend| unset. |
368 bool is_idle_; | 377 bool is_idle_; |
369 | 378 |
370 // Set when OnSuspendRequested() is called with |must_suspend| set. | 379 // Set when OnSuspendRequested() is called with |must_suspend| set. |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
572 base::TimeTicks last_time_loading_progressed_; | 581 base::TimeTicks last_time_loading_progressed_; |
573 | 582 |
574 std::unique_ptr<base::TickClock> tick_clock_; | 583 std::unique_ptr<base::TickClock> tick_clock_; |
575 | 584 |
576 // Monitors the player events. | 585 // Monitors the player events. |
577 base::WeakPtr<MediaObserver> observer_; | 586 base::WeakPtr<MediaObserver> observer_; |
578 | 587 |
579 // Whether the player is currently in autoplay muted state. | 588 // Whether the player is currently in autoplay muted state. |
580 bool autoplay_muted_ = false; | 589 bool autoplay_muted_ = false; |
581 | 590 |
591 std::unique_ptr<base::MemoryPressureListener> memory_pressure_listener_; | |
592 | |
582 DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerImpl); | 593 DISALLOW_COPY_AND_ASSIGN(WebMediaPlayerImpl); |
583 }; | 594 }; |
584 | 595 |
585 } // namespace media | 596 } // namespace media |
586 | 597 |
587 #endif // MEDIA_BLINK_WEBMEDIAPLAYER_IMPL_H_ | 598 #endif // MEDIA_BLINK_WEBMEDIAPLAYER_IMPL_H_ |
OLD | NEW |