OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/media/webmediaplayer_ms.h" | 5 #include "content/renderer/media/webmediaplayer_ms.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <limits> | 8 #include <limits> |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
440 ->GetGLInterface(); | 440 ->GetGLInterface(); |
441 media::SkCanvasVideoRenderer::CopyVideoFrameSingleTextureToGLTexture( | 441 media::SkCanvasVideoRenderer::CopyVideoFrameSingleTextureToGLTexture( |
442 gl, video_frame.get(), texture, internal_format, type, premultiply_alpha, | 442 gl, video_frame.get(), texture, internal_format, type, premultiply_alpha, |
443 flip_y); | 443 flip_y); |
444 return true; | 444 return true; |
445 } | 445 } |
446 | 446 |
447 void WebMediaPlayerMS::OnFrameAvailable( | 447 void WebMediaPlayerMS::OnFrameAvailable( |
448 const scoped_refptr<media::VideoFrame>& frame) { | 448 const scoped_refptr<media::VideoFrame>& frame) { |
449 DVLOG(3) << __FUNCTION__; | 449 DVLOG(3) << __FUNCTION__; |
450 DCHECK(thread_checker_.CalledOnValidThread()); | 450 DCHECK(thread_checker_.CalledOnValidThread()); |
mcasas
2016/02/25 22:06:25
nit: DCHECK(I420 or YV12A) ?
emircan
2016/02/26 01:33:08
I don't think it is necessary. VideoResourceUpdate
| |
451 | 451 |
452 if (render_frame_suspended_) | 452 if (render_frame_suspended_) |
453 return; | 453 return; |
454 | 454 |
455 base::TimeTicks render_time; | 455 base::TimeTicks render_time; |
456 if (frame->metadata()->GetTimeTicks(media::VideoFrameMetadata::REFERENCE_TIME, | 456 if (frame->metadata()->GetTimeTicks(media::VideoFrameMetadata::REFERENCE_TIME, |
457 &render_time)) { | 457 &render_time)) { |
458 TRACE_EVENT1("webrtc", "WebMediaPlayerMS::OnFrameAvailable", | 458 TRACE_EVENT1("webrtc", "WebMediaPlayerMS::OnFrameAvailable", |
459 "Ideal Render Instant", render_time.ToInternalValue()); | 459 "Ideal Render Instant", render_time.ToInternalValue()); |
460 } else { | 460 } else { |
461 TRACE_EVENT0("webrtc", "WebMediaPlayerMS::OnFrameAvailable"); | 461 TRACE_EVENT0("webrtc", "WebMediaPlayerMS::OnFrameAvailable"); |
462 } | 462 } |
463 | 463 |
464 if (!received_first_frame_) { | 464 if (!received_first_frame_) { |
465 received_first_frame_ = true; | 465 received_first_frame_ = true; |
466 SetReadyState(WebMediaPlayer::ReadyStateHaveMetadata); | 466 SetReadyState(WebMediaPlayer::ReadyStateHaveMetadata); |
467 SetReadyState(WebMediaPlayer::ReadyStateHaveEnoughData); | 467 SetReadyState(WebMediaPlayer::ReadyStateHaveEnoughData); |
468 | 468 |
469 if (video_frame_provider_.get()) { | 469 if (video_frame_provider_.get()) { |
470 video_weblayer_.reset(new cc_blink::WebLayerImpl( | 470 video_weblayer_.reset(new cc_blink::WebLayerImpl( |
471 cc::VideoLayer::Create(cc_blink::WebLayerImpl::LayerSettings(), | 471 cc::VideoLayer::Create(cc_blink::WebLayerImpl::LayerSettings(), |
472 compositor_.get(), media::VIDEO_ROTATION_0))); | 472 compositor_.get(), media::VIDEO_ROTATION_0))); |
473 video_weblayer_->layer()->SetContentsOpaque(true); | 473 video_weblayer_->layer()->SetContentsOpaque(false); |
mcasas
2016/02/25 22:06:25
SetContentsOpaque(frame->format() != media::PIXEL_
emircan
2016/02/26 01:33:08
This value is set once. Since we started switching
| |
474 video_weblayer_->SetContentsOpaqueIsFixed(true); | 474 video_weblayer_->SetContentsOpaqueIsFixed(true); |
475 get_client()->setWebLayer(video_weblayer_.get()); | 475 get_client()->setWebLayer(video_weblayer_.get()); |
476 } | 476 } |
477 } | 477 } |
478 | 478 |
479 // As EnqueueFrame can potentially change |current_frame_|, we need to do | 479 // As EnqueueFrame can potentially change |current_frame_|, we need to do |
480 // the size change check before it. Otherwise, we are running the risk of not | 480 // the size change check before it. Otherwise, we are running the risk of not |
481 // detecting a size change event. | 481 // detecting a size change event. |
482 const bool size_changed = | 482 const bool size_changed = |
483 compositor_->GetCurrentSize() != frame->natural_size(); | 483 compositor_->GetCurrentSize() != frame->natural_size(); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
516 media::SkCanvasVideoRenderer* WebMediaPlayerMS::GetSkCanvasVideoRenderer() { | 516 media::SkCanvasVideoRenderer* WebMediaPlayerMS::GetSkCanvasVideoRenderer() { |
517 return &video_renderer_; | 517 return &video_renderer_; |
518 } | 518 } |
519 | 519 |
520 void WebMediaPlayerMS::ResetCanvasCache() { | 520 void WebMediaPlayerMS::ResetCanvasCache() { |
521 DCHECK(thread_checker_.CalledOnValidThread()); | 521 DCHECK(thread_checker_.CalledOnValidThread()); |
522 video_renderer_.ResetCache(); | 522 video_renderer_.ResetCache(); |
523 } | 523 } |
524 | 524 |
525 } // namespace content | 525 } // namespace content |
OLD | NEW |