Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Side by Side Diff: content/browser/renderer_host/media/video_capture_controller.h

Issue 2613793007: Revert of [Mojo Video Capture] Simplify media::VideoCaptureDevice::Client:Buffer to a struct (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // VideoCaptureController is the glue between a VideoCaptureDevice and all 5 // VideoCaptureController is the glue between a VideoCaptureDevice and all
6 // VideoCaptureHosts that have connected to it. A controller exists on behalf of 6 // VideoCaptureHosts that have connected to it. A controller exists on behalf of
7 // one (and only one) VideoCaptureDevice; both are owned by the 7 // one (and only one) VideoCaptureDevice; both are owned by the
8 // VideoCaptureManager. 8 // VideoCaptureManager.
9 // 9 //
10 // The VideoCaptureController is responsible for: 10 // The VideoCaptureController is responsible for:
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 60
61 namespace content { 61 namespace content {
62 62
63 class CONTENT_EXPORT VideoCaptureController : public media::VideoFrameReceiver { 63 class CONTENT_EXPORT VideoCaptureController : public media::VideoFrameReceiver {
64 public: 64 public:
65 VideoCaptureController(); 65 VideoCaptureController();
66 ~VideoCaptureController() override; 66 ~VideoCaptureController() override;
67 67
68 base::WeakPtr<VideoCaptureController> GetWeakPtrForIOThread(); 68 base::WeakPtr<VideoCaptureController> GetWeakPtrForIOThread();
69 69
70 // Factory code creating instances of VideoCaptureController may optionally 70 // Factory code creating instances of VideoCaptureController must set a
71 // set a FrameBufferPool. Setting the host is done in this method separate 71 // FrameBufferPool before any of the media::VideoFrameReceiver are used.
72 // from the constructor to allow clients to create and use instances before 72 // Setting the observer is done in this method separate from the constructor
73 // they can provide the observer. (This is the case with VideoCaptureManager). 73 // in order to allow use the media::VideoFrameReceiver methods
74 // before the observer can be provided. (This is the case with
75 // VideoCaptureManager).
74 void SetFrameBufferPool( 76 void SetFrameBufferPool(
75 std::unique_ptr<media::FrameBufferPool> frame_buffer_pool); 77 std::unique_ptr<media::FrameBufferPool> frame_buffer_pool);
76 78
77 // Factory code creating instances of VideoCaptureController may optionally 79 // Factory code creating instances of VideoCaptureController may optionally
78 // set a VideoFrameConsumerFeedbackObserver. Setting the observer is done in 80 // set a VideoFrameConsumerFeedbackObserver. Setting the observer is done in
79 // this method separate from the constructor to allow clients to create and 81 // this method separate from the constructor to allow clients to create and
80 // use instances before they can provide the observer. (This is the case with 82 // use instances before they can provide the observer. (This is the case with
81 // VideoCaptureManager). 83 // VideoCaptureManager).
82 void SetConsumerFeedbackObserver( 84 void SetConsumerFeedbackObserver(
83 std::unique_ptr<media::VideoFrameConsumerFeedbackObserver> observer); 85 std::unique_ptr<media::VideoFrameConsumerFeedbackObserver> observer);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 VideoCaptureControllerEventHandler* event_handler, 127 VideoCaptureControllerEventHandler* event_handler,
126 int buffer_id, 128 int buffer_id,
127 double consumer_resource_utilization); 129 double consumer_resource_utilization);
128 130
129 const media::VideoCaptureFormat& GetVideoCaptureFormat() const; 131 const media::VideoCaptureFormat& GetVideoCaptureFormat() const;
130 132
131 bool has_received_frames() const { return has_received_frames_; } 133 bool has_received_frames() const { return has_received_frames_; }
132 134
133 // Implementation of media::VideoFrameReceiver interface: 135 // Implementation of media::VideoFrameReceiver interface:
134 void OnIncomingCapturedVideoFrame( 136 void OnIncomingCapturedVideoFrame(
135 media::VideoCaptureDevice::Client::Buffer buffer, 137 std::unique_ptr<media::VideoCaptureDevice::Client::Buffer> buffer,
136 scoped_refptr<media::VideoFrame> frame) override; 138 scoped_refptr<media::VideoFrame> frame) override;
137 void OnError() override; 139 void OnError() override;
138 void OnLog(const std::string& message) override; 140 void OnLog(const std::string& message) override;
139 void OnBufferDestroyed(int buffer_id_to_drop) override; 141 void OnBufferDestroyed(int buffer_id_to_drop) override;
140 142
141 private: 143 private:
142 struct ControllerClient; 144 struct ControllerClient;
143 typedef std::list<std::unique_ptr<ControllerClient>> ControllerClients; 145 typedef std::list<std::unique_ptr<ControllerClient>> ControllerClients;
144 146
145 class BufferState { 147 class BufferState {
146 public: 148 public:
147 explicit BufferState( 149 explicit BufferState(
148 int buffer_id, 150 int buffer_id,
149 int frame_feedback_id, 151 int frame_feedback_id,
150 media::VideoFrameConsumerFeedbackObserver* consumer_feedback_observer, 152 media::VideoFrameConsumerFeedbackObserver* consumer_feedback_observer,
151 media::FrameBufferPool* frame_buffer_pool); 153 media::FrameBufferPool* frame_buffer_pool,
154 scoped_refptr<media::VideoFrame> frame);
152 ~BufferState(); 155 ~BufferState();
153 BufferState(const BufferState& other); 156 BufferState(const BufferState& other);
154 void RecordConsumerUtilization(double utilization); 157 void RecordConsumerUtilization(double utilization);
155 void IncreaseConsumerCount(); 158 void IncreaseConsumerCount();
156 void DecreaseConsumerCount(); 159 void DecreaseConsumerCount();
157 bool HasZeroConsumerHoldCount(); 160 bool HasZeroConsumerHoldCount();
158 void SetConsumerFeedbackObserver( 161 void SetConsumerFeedbackObserver(
159 media::VideoFrameConsumerFeedbackObserver* consumer_feedback_observer); 162 media::VideoFrameConsumerFeedbackObserver* consumer_feedback_observer);
160 void SetFrameBufferPool(media::FrameBufferPool* frame_buffer_pool); 163 void SetFrameBufferPool(media::FrameBufferPool* frame_buffer_pool);
161 164
162 private: 165 private:
163 const int buffer_id_; 166 const int buffer_id_;
164 const int frame_feedback_id_; 167 const int frame_feedback_id_;
165 media::VideoFrameConsumerFeedbackObserver* consumer_feedback_observer_; 168 media::VideoFrameConsumerFeedbackObserver* consumer_feedback_observer_;
166 media::FrameBufferPool* frame_buffer_pool_; 169 media::FrameBufferPool* frame_buffer_pool_;
170 const scoped_refptr<media::VideoFrame> frame_;
167 double max_consumer_utilization_; 171 double max_consumer_utilization_;
168 int consumer_hold_count_; 172 int consumer_hold_count_;
169 }; 173 };
170 174
175 // Notify renderer that a new buffer has been created.
176 void DoNewBufferOnIOThread(ControllerClient* client,
177 media::VideoCaptureDevice::Client::Buffer* buffer,
178 const scoped_refptr<media::VideoFrame>& frame);
179
171 // Find a client of |id| and |handler| in |clients|. 180 // Find a client of |id| and |handler| in |clients|.
172 ControllerClient* FindClient(VideoCaptureControllerID id, 181 ControllerClient* FindClient(VideoCaptureControllerID id,
173 VideoCaptureControllerEventHandler* handler, 182 VideoCaptureControllerEventHandler* handler,
174 const ControllerClients& clients); 183 const ControllerClients& clients);
175 184
176 // Find a client of |session_id| in |clients|. 185 // Find a client of |session_id| in |clients|.
177 ControllerClient* FindClient(int session_id, 186 ControllerClient* FindClient(int session_id,
178 const ControllerClients& clients); 187 const ControllerClients& clients);
179 188
180 std::unique_ptr<media::FrameBufferPool> frame_buffer_pool_; 189 std::unique_ptr<media::FrameBufferPool> frame_buffer_pool_;
(...skipping 16 matching lines...) Expand all
197 media::VideoCaptureFormat video_capture_format_; 206 media::VideoCaptureFormat video_capture_format_;
198 207
199 base::WeakPtrFactory<VideoCaptureController> weak_ptr_factory_; 208 base::WeakPtrFactory<VideoCaptureController> weak_ptr_factory_;
200 209
201 DISALLOW_COPY_AND_ASSIGN(VideoCaptureController); 210 DISALLOW_COPY_AND_ASSIGN(VideoCaptureController);
202 }; 211 };
203 212
204 } // namespace content 213 } // namespace content
205 214
206 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_VIDEO_CAPTURE_CONTROLLER_H_ 215 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_VIDEO_CAPTURE_CONTROLLER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698