OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 CONTENT_BROWSER_MEDIA_CAPTURE_AURA_WINDOW_CAPTURE_MACHINE_H_ | 5 #ifndef CONTENT_BROWSER_MEDIA_CAPTURE_AURA_WINDOW_CAPTURE_MACHINE_H_ |
6 #define CONTENT_BROWSER_MEDIA_CAPTURE_AURA_WINDOW_CAPTURE_MACHINE_H_ | 6 #define CONTENT_BROWSER_MEDIA_CAPTURE_AURA_WINDOW_CAPTURE_MACHINE_H_ |
7 | 7 |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/memory/weak_ptr.h" | 9 #include "base/memory/weak_ptr.h" |
10 #include "base/timer/timer.h" | 10 #include "base/timer/timer.h" |
(...skipping 17 matching lines...) Expand all Loading... |
28 class AuraWindowCaptureMachine | 28 class AuraWindowCaptureMachine |
29 : public VideoCaptureMachine, | 29 : public VideoCaptureMachine, |
30 public aura::WindowObserver, | 30 public aura::WindowObserver, |
31 public ui::CompositorObserver, | 31 public ui::CompositorObserver, |
32 public base::SupportsWeakPtr<AuraWindowCaptureMachine> { | 32 public base::SupportsWeakPtr<AuraWindowCaptureMachine> { |
33 public: | 33 public: |
34 AuraWindowCaptureMachine(); | 34 AuraWindowCaptureMachine(); |
35 ~AuraWindowCaptureMachine() override; | 35 ~AuraWindowCaptureMachine() override; |
36 | 36 |
37 // VideoCaptureFrameSource overrides. | 37 // VideoCaptureFrameSource overrides. |
38 bool Start(const scoped_refptr<ThreadSafeCaptureOracle>& oracle_proxy, | 38 void Start(const scoped_refptr<ThreadSafeCaptureOracle>& oracle_proxy, |
39 const media::VideoCaptureParams& params) override; | 39 const media::VideoCaptureParams& params, |
| 40 const base::Callback<void(bool)> callback) override; |
40 void Stop(const base::Closure& callback) override; | 41 void Stop(const base::Closure& callback) override; |
41 | 42 |
42 // Implements aura::WindowObserver. | 43 // Implements aura::WindowObserver. |
43 void OnWindowBoundsChanged(aura::Window* window, | 44 void OnWindowBoundsChanged(aura::Window* window, |
44 const gfx::Rect& old_bounds, | 45 const gfx::Rect& old_bounds, |
45 const gfx::Rect& new_bounds) override; | 46 const gfx::Rect& new_bounds) override; |
46 void OnWindowDestroyed(aura::Window* window) override; | 47 void OnWindowDestroyed(aura::Window* window) override; |
47 void OnWindowAddedToRootWindow(aura::Window* window) override; | 48 void OnWindowAddedToRootWindow(aura::Window* window) override; |
48 void OnWindowRemovingFromRootWindow(aura::Window* window, | 49 void OnWindowRemovingFromRootWindow(aura::Window* window, |
49 aura::Window* new_root) override; | 50 aura::Window* new_root) override; |
50 | 51 |
51 // Implements ui::CompositorObserver. | 52 // Implements ui::CompositorObserver. |
52 void OnCompositingDidCommit(ui::Compositor* compositor) override {} | 53 void OnCompositingDidCommit(ui::Compositor* compositor) override {} |
53 void OnCompositingStarted(ui::Compositor* compositor, | 54 void OnCompositingStarted(ui::Compositor* compositor, |
54 base::TimeTicks start_time) override {} | 55 base::TimeTicks start_time) override {} |
55 void OnCompositingEnded(ui::Compositor* compositor) override; | 56 void OnCompositingEnded(ui::Compositor* compositor) override; |
56 void OnCompositingAborted(ui::Compositor* compositor) override {} | 57 void OnCompositingAborted(ui::Compositor* compositor) override {} |
57 void OnCompositingLockStateChanged(ui::Compositor* compositor) override {} | 58 void OnCompositingLockStateChanged(ui::Compositor* compositor) override {} |
58 void OnCompositingShuttingDown(ui::Compositor* compositor) override {} | 59 void OnCompositingShuttingDown(ui::Compositor* compositor) override {} |
59 | 60 |
60 // Sets the window to use for capture. | 61 // Sets the window to use for capture. |
61 void SetWindow(aura::Window* window); | 62 void SetWindow(aura::Window* window); |
62 | 63 |
63 private: | 64 private: |
| 65 bool InternalStart(const scoped_refptr<ThreadSafeCaptureOracle>& oracle_proxy, |
| 66 const media::VideoCaptureParams& params); |
| 67 void InternalStop(const base::Closure& callback); |
| 68 |
64 // Captures a frame. | 69 // Captures a frame. |
65 // |dirty| is false for timer polls and true for compositor updates. | 70 // |dirty| is false for timer polls and true for compositor updates. |
66 void Capture(bool dirty); | 71 void Capture(bool dirty); |
67 | 72 |
68 // Update capture size. Must be called on the UI thread. | 73 // Update capture size. Must be called on the UI thread. |
69 void UpdateCaptureSize(); | 74 void UpdateCaptureSize(); |
70 | 75 |
71 // Response callback for cc::Layer::RequestCopyOfOutput(). | 76 // Response callback for cc::Layer::RequestCopyOfOutput(). |
72 void DidCopyOutput( | 77 void DidCopyOutput( |
73 scoped_refptr<media::VideoFrame> video_frame, | 78 scoped_refptr<media::VideoFrame> video_frame, |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 // TODO(jiayl): Remove power_save_blocker_ when there is an API to keep the | 124 // TODO(jiayl): Remove power_save_blocker_ when there is an API to keep the |
120 // screen from sleeping for the drive-by web. | 125 // screen from sleeping for the drive-by web. |
121 scoped_ptr<PowerSaveBlocker> power_save_blocker_; | 126 scoped_ptr<PowerSaveBlocker> power_save_blocker_; |
122 | 127 |
123 DISALLOW_COPY_AND_ASSIGN(AuraWindowCaptureMachine); | 128 DISALLOW_COPY_AND_ASSIGN(AuraWindowCaptureMachine); |
124 }; | 129 }; |
125 | 130 |
126 } // namespace content | 131 } // namespace content |
127 | 132 |
128 #endif // CONTENT_BROWSER_MEDIA_CAPTURE_AURA_WINDOW_CAPTURE_MACHINE_H_ | 133 #endif // CONTENT_BROWSER_MEDIA_CAPTURE_AURA_WINDOW_CAPTURE_MACHINE_H_ |
OLD | NEW |