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