| 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::is_connected()) |
| 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 |