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

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

Issue 2573223002: [Mojo Video Capture] Simplify media::VideoCaptureDevice::Client:Buffer to a struct (Closed)
Patch Set: mcasas comments 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 must set a 70 // Factory code creating instances of VideoCaptureController may optionally
71 // FrameBufferPool before any of the media::VideoFrameReceiver are used. 71 // set a FrameBufferPool. Setting the host is done in this method separate
72 // Setting the observer is done in this method separate from the constructor 72 // from the constructor to allow clients to create and use instances before
73 // in order to allow use the media::VideoFrameReceiver methods 73 // they can provide the observer. (This is the case with VideoCaptureManager).
74 // before the observer can be provided. (This is the case with
75 // VideoCaptureManager).
76 void SetFrameBufferPool( 74 void SetFrameBufferPool(
77 std::unique_ptr<media::FrameBufferPool> frame_buffer_pool); 75 std::unique_ptr<media::FrameBufferPool> frame_buffer_pool);
78 76
79 // Factory code creating instances of VideoCaptureController may optionally 77 // Factory code creating instances of VideoCaptureController may optionally
80 // set a VideoFrameConsumerFeedbackObserver. Setting the observer is done in 78 // set a VideoFrameConsumerFeedbackObserver. Setting the observer is done in
81 // this method separate from the constructor to allow clients to create and 79 // this method separate from the constructor to allow clients to create and
82 // use instances before they can provide the observer. (This is the case with 80 // use instances before they can provide the observer. (This is the case with
83 // VideoCaptureManager). 81 // VideoCaptureManager).
84 void SetConsumerFeedbackObserver( 82 void SetConsumerFeedbackObserver(
85 std::unique_ptr<media::VideoFrameConsumerFeedbackObserver> observer); 83 std::unique_ptr<media::VideoFrameConsumerFeedbackObserver> observer);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 VideoCaptureControllerEventHandler* event_handler, 125 VideoCaptureControllerEventHandler* event_handler,
128 int buffer_id, 126 int buffer_id,
129 double consumer_resource_utilization); 127 double consumer_resource_utilization);
130 128
131 const media::VideoCaptureFormat& GetVideoCaptureFormat() const; 129 const media::VideoCaptureFormat& GetVideoCaptureFormat() const;
132 130
133 bool has_received_frames() const { return has_received_frames_; } 131 bool has_received_frames() const { return has_received_frames_; }
134 132
135 // Implementation of media::VideoFrameReceiver interface: 133 // Implementation of media::VideoFrameReceiver interface:
136 void OnIncomingCapturedVideoFrame( 134 void OnIncomingCapturedVideoFrame(
137 std::unique_ptr<media::VideoCaptureDevice::Client::Buffer> buffer, 135 media::VideoCaptureDevice::Client::Buffer buffer,
138 scoped_refptr<media::VideoFrame> frame) override; 136 scoped_refptr<media::VideoFrame> frame) override;
139 void OnError() override; 137 void OnError() override;
140 void OnLog(const std::string& message) override; 138 void OnLog(const std::string& message) override;
141 void OnBufferDestroyed(int buffer_id_to_drop) override; 139 void OnBufferDestroyed(int buffer_id_to_drop) override;
142 140
143 private: 141 private:
144 struct ControllerClient; 142 struct ControllerClient;
145 typedef std::list<std::unique_ptr<ControllerClient>> ControllerClients; 143 typedef std::list<std::unique_ptr<ControllerClient>> ControllerClients;
146 144
147 class BufferState { 145 class BufferState {
148 public: 146 public:
149 explicit BufferState( 147 explicit BufferState(
150 int buffer_id, 148 int buffer_id,
151 int frame_feedback_id, 149 int frame_feedback_id,
152 media::VideoFrameConsumerFeedbackObserver* consumer_feedback_observer, 150 media::VideoFrameConsumerFeedbackObserver* consumer_feedback_observer,
153 media::FrameBufferPool* frame_buffer_pool, 151 media::FrameBufferPool* frame_buffer_pool);
154 scoped_refptr<media::VideoFrame> frame);
155 ~BufferState(); 152 ~BufferState();
156 BufferState(const BufferState& other); 153 BufferState(const BufferState& other);
157 void RecordConsumerUtilization(double utilization); 154 void RecordConsumerUtilization(double utilization);
158 void IncreaseConsumerCount(); 155 void IncreaseConsumerCount();
159 void DecreaseConsumerCount(); 156 void DecreaseConsumerCount();
160 bool HasZeroConsumerHoldCount(); 157 bool HasZeroConsumerHoldCount();
161 void SetConsumerFeedbackObserver( 158 void SetConsumerFeedbackObserver(
162 media::VideoFrameConsumerFeedbackObserver* consumer_feedback_observer); 159 media::VideoFrameConsumerFeedbackObserver* consumer_feedback_observer);
163 void SetFrameBufferPool(media::FrameBufferPool* frame_buffer_pool); 160 void SetFrameBufferPool(media::FrameBufferPool* frame_buffer_pool);
164 161
165 private: 162 private:
166 const int buffer_id_; 163 const int buffer_id_;
167 const int frame_feedback_id_; 164 const int frame_feedback_id_;
168 media::VideoFrameConsumerFeedbackObserver* consumer_feedback_observer_; 165 media::VideoFrameConsumerFeedbackObserver* consumer_feedback_observer_;
169 media::FrameBufferPool* frame_buffer_pool_; 166 media::FrameBufferPool* frame_buffer_pool_;
170 const scoped_refptr<media::VideoFrame> frame_;
171 double max_consumer_utilization_; 167 double max_consumer_utilization_;
172 int consumer_hold_count_; 168 int consumer_hold_count_;
173 }; 169 };
174 170
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
180 // Find a client of |id| and |handler| in |clients|. 171 // Find a client of |id| and |handler| in |clients|.
181 ControllerClient* FindClient(VideoCaptureControllerID id, 172 ControllerClient* FindClient(VideoCaptureControllerID id,
182 VideoCaptureControllerEventHandler* handler, 173 VideoCaptureControllerEventHandler* handler,
183 const ControllerClients& clients); 174 const ControllerClients& clients);
184 175
185 // Find a client of |session_id| in |clients|. 176 // Find a client of |session_id| in |clients|.
186 ControllerClient* FindClient(int session_id, 177 ControllerClient* FindClient(int session_id,
187 const ControllerClients& clients); 178 const ControllerClients& clients);
188 179
189 std::unique_ptr<media::FrameBufferPool> frame_buffer_pool_; 180 std::unique_ptr<media::FrameBufferPool> frame_buffer_pool_;
(...skipping 16 matching lines...) Expand all
206 media::VideoCaptureFormat video_capture_format_; 197 media::VideoCaptureFormat video_capture_format_;
207 198
208 base::WeakPtrFactory<VideoCaptureController> weak_ptr_factory_; 199 base::WeakPtrFactory<VideoCaptureController> weak_ptr_factory_;
209 200
210 DISALLOW_COPY_AND_ASSIGN(VideoCaptureController); 201 DISALLOW_COPY_AND_ASSIGN(VideoCaptureController);
211 }; 202 };
212 203
213 } // namespace content 204 } // namespace content
214 205
215 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_VIDEO_CAPTURE_CONTROLLER_H_ 206 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_VIDEO_CAPTURE_CONTROLLER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698