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 <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/base64.h" | 9 #include "base/base64.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 new_frame_callback_.Run(frame, base::TimeTicks()); | 222 new_frame_callback_.Run(frame, base::TimeTicks()); |
223 } | 223 } |
224 | 224 |
225 PepperMediaStreamVideoTrackHost::PepperMediaStreamVideoTrackHost( | 225 PepperMediaStreamVideoTrackHost::PepperMediaStreamVideoTrackHost( |
226 RendererPpapiHost* host, | 226 RendererPpapiHost* host, |
227 PP_Instance instance, | 227 PP_Instance instance, |
228 PP_Resource resource, | 228 PP_Resource resource, |
229 const blink::WebMediaStreamTrack& track) | 229 const blink::WebMediaStreamTrack& track) |
230 : PepperMediaStreamTrackHostBase(host, instance, resource), | 230 : PepperMediaStreamTrackHostBase(host, instance, resource), |
231 track_(track), | 231 track_(track), |
232 connected_(false), | |
233 number_of_buffers_(kDefaultNumberOfBuffers), | 232 number_of_buffers_(kDefaultNumberOfBuffers), |
234 source_frame_format_(PP_VIDEOFRAME_FORMAT_UNKNOWN), | 233 source_frame_format_(PP_VIDEOFRAME_FORMAT_UNKNOWN), |
235 plugin_frame_format_(PP_VIDEOFRAME_FORMAT_UNKNOWN), | 234 plugin_frame_format_(PP_VIDEOFRAME_FORMAT_UNKNOWN), |
236 frame_data_size_(0), | 235 frame_data_size_(0), |
237 type_(kRead), | 236 type_(kRead), |
238 output_started_(false), | 237 output_started_(false), |
239 weak_factory_(this) { | 238 weak_factory_(this) { |
240 DCHECK(!track_.isNull()); | 239 DCHECK(!track_.isNull()); |
241 } | 240 } |
242 | 241 |
243 PepperMediaStreamVideoTrackHost::PepperMediaStreamVideoTrackHost( | 242 PepperMediaStreamVideoTrackHost::PepperMediaStreamVideoTrackHost( |
244 RendererPpapiHost* host, | 243 RendererPpapiHost* host, |
245 PP_Instance instance, | 244 PP_Instance instance, |
246 PP_Resource resource) | 245 PP_Resource resource) |
247 : PepperMediaStreamTrackHostBase(host, instance, resource), | 246 : PepperMediaStreamTrackHostBase(host, instance, resource), |
248 connected_(false), | |
249 number_of_buffers_(kDefaultNumberOfBuffers), | 247 number_of_buffers_(kDefaultNumberOfBuffers), |
250 source_frame_format_(PP_VIDEOFRAME_FORMAT_UNKNOWN), | 248 source_frame_format_(PP_VIDEOFRAME_FORMAT_UNKNOWN), |
251 plugin_frame_format_(PP_VIDEOFRAME_FORMAT_UNKNOWN), | 249 plugin_frame_format_(PP_VIDEOFRAME_FORMAT_UNKNOWN), |
252 frame_data_size_(0), | 250 frame_data_size_(0), |
253 type_(kWrite), | 251 type_(kWrite), |
254 output_started_(false), | 252 output_started_(false), |
255 weak_factory_(this) { | 253 weak_factory_(this) { |
256 InitBlinkTrack(); | 254 InitBlinkTrack(); |
257 DCHECK(!track_.isNull()); | 255 DCHECK(!track_.isNull()); |
258 } | 256 } |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 buffer->data_size = frame_data_size_; | 298 buffer->data_size = frame_data_size_; |
301 } | 299 } |
302 | 300 |
303 // Make all the frames avaiable to the plugin. | 301 // Make all the frames avaiable to the plugin. |
304 std::vector<int32_t> indices = buffer_manager()->DequeueBuffers(); | 302 std::vector<int32_t> indices = buffer_manager()->DequeueBuffers(); |
305 SendEnqueueBuffersMessageToPlugin(indices); | 303 SendEnqueueBuffersMessageToPlugin(indices); |
306 } | 304 } |
307 } | 305 } |
308 | 306 |
309 void PepperMediaStreamVideoTrackHost::OnClose() { | 307 void PepperMediaStreamVideoTrackHost::OnClose() { |
310 if (connected_) { | 308 MediaStreamVideoSink::DisconnectFromTrack(); |
311 MediaStreamVideoSink::RemoveFromVideoTrack(this, track_); | 309 weak_factory_.InvalidateWeakPtrs(); |
312 weak_factory_.InvalidateWeakPtrs(); | |
313 connected_ = false; | |
314 } | |
315 } | 310 } |
316 | 311 |
317 int32_t PepperMediaStreamVideoTrackHost::OnHostMsgEnqueueBuffer( | 312 int32_t PepperMediaStreamVideoTrackHost::OnHostMsgEnqueueBuffer( |
318 ppapi::host::HostMessageContext* context, int32_t index) { | 313 ppapi::host::HostMessageContext* context, int32_t index) { |
319 if (type_ == kRead) { | 314 if (type_ == kRead) { |
320 return PepperMediaStreamTrackHostBase::OnHostMsgEnqueueBuffer(context, | 315 return PepperMediaStreamTrackHostBase::OnHostMsgEnqueueBuffer(context, |
321 index); | 316 index); |
322 } else { | 317 } else { |
323 return SendFrameToTrack(index); | 318 return SendFrameToTrack(index); |
324 } | 319 } |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
440 output_started_ = true; | 435 output_started_ = true; |
441 frame_deliverer_ = new FrameDeliverer(io_task_runner(), frame_callback); | 436 frame_deliverer_ = new FrameDeliverer(io_task_runner(), frame_callback); |
442 } | 437 } |
443 | 438 |
444 void PepperMediaStreamVideoTrackHost::StopSourceImpl() { | 439 void PepperMediaStreamVideoTrackHost::StopSourceImpl() { |
445 output_started_ = false; | 440 output_started_ = false; |
446 frame_deliverer_ = NULL; | 441 frame_deliverer_ = NULL; |
447 } | 442 } |
448 | 443 |
449 void PepperMediaStreamVideoTrackHost::DidConnectPendingHostToResource() { | 444 void PepperMediaStreamVideoTrackHost::DidConnectPendingHostToResource() { |
450 if (!connected_) { | 445 if (!MediaStreamVideoSink::connected_track().isNull()) |
451 MediaStreamVideoSink::AddToVideoTrack( | 446 return; |
452 this, | 447 MediaStreamVideoSink::ConnectToTrack( |
453 media::BindToCurrentLoop( | 448 track_, |
454 base::Bind( | 449 media::BindToCurrentLoop( |
455 &PepperMediaStreamVideoTrackHost::OnVideoFrame, | 450 base::Bind( |
456 weak_factory_.GetWeakPtr())), | 451 &PepperMediaStreamVideoTrackHost::OnVideoFrame, |
457 track_); | 452 weak_factory_.GetWeakPtr()))); |
458 connected_ = true; | |
459 } | |
460 } | 453 } |
461 | 454 |
462 int32_t PepperMediaStreamVideoTrackHost::OnResourceMessageReceived( | 455 int32_t PepperMediaStreamVideoTrackHost::OnResourceMessageReceived( |
463 const IPC::Message& msg, | 456 const IPC::Message& msg, |
464 HostMessageContext* context) { | 457 HostMessageContext* context) { |
465 PPAPI_BEGIN_MESSAGE_MAP(PepperMediaStreamVideoTrackHost, msg) | 458 PPAPI_BEGIN_MESSAGE_MAP(PepperMediaStreamVideoTrackHost, msg) |
466 PPAPI_DISPATCH_HOST_RESOURCE_CALL( | 459 PPAPI_DISPATCH_HOST_RESOURCE_CALL( |
467 PpapiHostMsg_MediaStreamVideoTrack_Configure, OnHostMsgConfigure) | 460 PpapiHostMsg_MediaStreamVideoTrack_Configure, OnHostMsgConfigure) |
468 PPAPI_END_MESSAGE_MAP() | 461 PPAPI_END_MESSAGE_MAP() |
469 return PepperMediaStreamTrackHostBase::OnResourceMessageReceived(msg, | 462 return PepperMediaStreamTrackHostBase::OnResourceMessageReceived(msg, |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
532 } | 525 } |
533 | 526 |
534 void PepperMediaStreamVideoTrackHost::OnTrackStarted( | 527 void PepperMediaStreamVideoTrackHost::OnTrackStarted( |
535 MediaStreamSource* source, | 528 MediaStreamSource* source, |
536 MediaStreamRequestResult result, | 529 MediaStreamRequestResult result, |
537 const blink::WebString& result_name) { | 530 const blink::WebString& result_name) { |
538 DVLOG(3) << "OnTrackStarted result: " << result; | 531 DVLOG(3) << "OnTrackStarted result: " << result; |
539 } | 532 } |
540 | 533 |
541 } // namespace content | 534 } // namespace content |
OLD | NEW |