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

Side by Side Diff: content/renderer/pepper/pepper_media_stream_video_track_host.cc

Issue 1849003002: Add video frame refresh to MediaStream and VideoCapture stacks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed nick's PS3 comments (moving non-observer impl out of MSVideoSink interface). Created 4 years, 8 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
« no previous file with comments | « content/renderer/pepper/pepper_media_stream_video_track_host.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « content/renderer/pepper/pepper_media_stream_video_track_host.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698