Chromium Code Reviews| 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 |