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 "content/renderer/pepper/pepper_media_stream_video_track_host.h" | 5 #include "content/renderer/pepper/pepper_media_stream_video_track_host.h" |
6 | 6 |
7 #include "base/base64.h" | 7 #include "base/base64.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/rand_util.h" | 9 #include "base/rand_util.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
175 | 175 |
176 } // namespace | 176 } // namespace |
177 | 177 |
178 namespace content { | 178 namespace content { |
179 | 179 |
180 // Internal class used for delivering video frames on the IO-thread to | 180 // Internal class used for delivering video frames on the IO-thread to |
181 // the MediaStreamVideoSource implementation. | 181 // the MediaStreamVideoSource implementation. |
182 class PepperMediaStreamVideoTrackHost::FrameDeliverer | 182 class PepperMediaStreamVideoTrackHost::FrameDeliverer |
183 : public base::RefCountedThreadSafe<FrameDeliverer> { | 183 : public base::RefCountedThreadSafe<FrameDeliverer> { |
184 public: | 184 public: |
185 FrameDeliverer( | 185 FrameDeliverer(scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, |
186 const scoped_refptr<base::MessageLoopProxy>& io_message_loop_proxy, | 186 const VideoCaptureDeliverFrameCB& new_frame_callback); |
187 const VideoCaptureDeliverFrameCB& new_frame_callback); | |
188 | 187 |
189 void DeliverVideoFrame(const scoped_refptr<media::VideoFrame>& frame); | 188 void DeliverVideoFrame(const scoped_refptr<media::VideoFrame>& frame); |
190 | 189 |
191 private: | 190 private: |
192 friend class base::RefCountedThreadSafe<FrameDeliverer>; | 191 friend class base::RefCountedThreadSafe<FrameDeliverer>; |
193 virtual ~FrameDeliverer(); | 192 virtual ~FrameDeliverer(); |
194 | 193 |
195 void DeliverFrameOnIO(const scoped_refptr<media::VideoFrame>& frame); | 194 void DeliverFrameOnIO(const scoped_refptr<media::VideoFrame>& frame); |
196 | 195 |
197 scoped_refptr<base::MessageLoopProxy> io_message_loop_; | 196 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_; |
198 VideoCaptureDeliverFrameCB new_frame_callback_; | 197 VideoCaptureDeliverFrameCB new_frame_callback_; |
199 | 198 |
200 DISALLOW_COPY_AND_ASSIGN(FrameDeliverer); | 199 DISALLOW_COPY_AND_ASSIGN(FrameDeliverer); |
201 }; | 200 }; |
202 | 201 |
203 PepperMediaStreamVideoTrackHost::FrameDeliverer::FrameDeliverer( | 202 PepperMediaStreamVideoTrackHost::FrameDeliverer::FrameDeliverer( |
204 const scoped_refptr<base::MessageLoopProxy>& io_message_loop_proxy, | 203 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, |
205 const VideoCaptureDeliverFrameCB& new_frame_callback) | 204 const VideoCaptureDeliverFrameCB& new_frame_callback) |
206 : io_message_loop_(io_message_loop_proxy), | 205 : io_task_runner_(io_task_runner), new_frame_callback_(new_frame_callback) { |
207 new_frame_callback_(new_frame_callback) { | |
208 } | 206 } |
209 | 207 |
210 PepperMediaStreamVideoTrackHost::FrameDeliverer::~FrameDeliverer() { | 208 PepperMediaStreamVideoTrackHost::FrameDeliverer::~FrameDeliverer() { |
211 } | 209 } |
212 | 210 |
213 void PepperMediaStreamVideoTrackHost::FrameDeliverer::DeliverVideoFrame( | 211 void PepperMediaStreamVideoTrackHost::FrameDeliverer::DeliverVideoFrame( |
214 const scoped_refptr<media::VideoFrame>& frame) { | 212 const scoped_refptr<media::VideoFrame>& frame) { |
215 io_message_loop_->PostTask( | 213 io_task_runner_->PostTask( |
216 FROM_HERE, | 214 FROM_HERE, base::Bind(&FrameDeliverer::DeliverFrameOnIO, this, frame)); |
217 base::Bind(&FrameDeliverer::DeliverFrameOnIO, this, frame)); | |
218 } | 215 } |
219 | 216 |
220 void PepperMediaStreamVideoTrackHost::FrameDeliverer::DeliverFrameOnIO( | 217 void PepperMediaStreamVideoTrackHost::FrameDeliverer::DeliverFrameOnIO( |
221 const scoped_refptr<media::VideoFrame>& frame) { | 218 const scoped_refptr<media::VideoFrame>& frame) { |
222 DCHECK(io_message_loop_->BelongsToCurrentThread()); | 219 DCHECK(io_task_runner_->BelongsToCurrentThread()); |
223 // The time when this frame is generated is unknown so give a null value to | 220 // The time when this frame is generated is unknown so give a null value to |
224 // |estimated_capture_time|. | 221 // |estimated_capture_time|. |
225 new_frame_callback_.Run(frame, base::TimeTicks()); | 222 new_frame_callback_.Run(frame, base::TimeTicks()); |
226 } | 223 } |
227 | 224 |
228 PepperMediaStreamVideoTrackHost::PepperMediaStreamVideoTrackHost( | 225 PepperMediaStreamVideoTrackHost::PepperMediaStreamVideoTrackHost( |
229 RendererPpapiHost* host, | 226 RendererPpapiHost* host, |
230 PP_Instance instance, | 227 PP_Instance instance, |
231 PP_Resource resource, | 228 PP_Resource resource, |
232 const blink::WebMediaStreamTrack& track) | 229 const blink::WebMediaStreamTrack& track) |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
429 kDefaultOutputFrameRate, | 426 kDefaultOutputFrameRate, |
430 ToPixelFormat(plugin_frame_format_))); | 427 ToPixelFormat(plugin_frame_format_))); |
431 callback.Run(formats); | 428 callback.Run(formats); |
432 } | 429 } |
433 | 430 |
434 void PepperMediaStreamVideoTrackHost::StartSourceImpl( | 431 void PepperMediaStreamVideoTrackHost::StartSourceImpl( |
435 const media::VideoCaptureFormat& format, | 432 const media::VideoCaptureFormat& format, |
436 const blink::WebMediaConstraints& constraints, | 433 const blink::WebMediaConstraints& constraints, |
437 const VideoCaptureDeliverFrameCB& frame_callback) { | 434 const VideoCaptureDeliverFrameCB& frame_callback) { |
438 output_started_ = true; | 435 output_started_ = true; |
439 frame_deliverer_ = new FrameDeliverer(io_message_loop(), frame_callback); | 436 frame_deliverer_ = new FrameDeliverer(io_task_runner(), frame_callback); |
no sievers
2015/05/20 23:02:39
Ah I see now why you changed some of these from co
Sami
2015/05/21 11:39:49
Yeah, this also fits better but the main motivatio
| |
440 } | 437 } |
441 | 438 |
442 void PepperMediaStreamVideoTrackHost::StopSourceImpl() { | 439 void PepperMediaStreamVideoTrackHost::StopSourceImpl() { |
443 output_started_ = false; | 440 output_started_ = false; |
444 frame_deliverer_ = NULL; | 441 frame_deliverer_ = NULL; |
445 } | 442 } |
446 | 443 |
447 void PepperMediaStreamVideoTrackHost::DidConnectPendingHostToResource() { | 444 void PepperMediaStreamVideoTrackHost::DidConnectPendingHostToResource() { |
448 if (!connected_) { | 445 if (!connected_) { |
449 MediaStreamVideoSink::AddToVideoTrack( | 446 MediaStreamVideoSink::AddToVideoTrack( |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
530 } | 527 } |
531 | 528 |
532 void PepperMediaStreamVideoTrackHost::OnTrackStarted( | 529 void PepperMediaStreamVideoTrackHost::OnTrackStarted( |
533 MediaStreamSource* source, | 530 MediaStreamSource* source, |
534 MediaStreamRequestResult result, | 531 MediaStreamRequestResult result, |
535 const blink::WebString& result_name) { | 532 const blink::WebString& result_name) { |
536 DVLOG(3) << "OnTrackStarted result: " << result; | 533 DVLOG(3) << "OnTrackStarted result: " << result; |
537 } | 534 } |
538 | 535 |
539 } // namespace content | 536 } // namespace content |
OLD | NEW |