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

Side by Side Diff: media/blink/webmediaplayer_impl.cc

Issue 1154153003: Relanding 1143663007: VideoFrame: Separate Pixel Format from Storage Type. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added NV12 support in CrOS Created 5 years, 6 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 | « media/blink/video_frame_compositor.cc ('k') | media/cast/test/end2end_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "media/blink/webmediaplayer_impl.h" 5 #include "media/blink/webmediaplayer_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <limits> 9 #include <limits>
10 10
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 unsigned char alpha, 503 unsigned char alpha,
504 SkXfermode::Mode mode) { 504 SkXfermode::Mode mode) {
505 DCHECK(main_task_runner_->BelongsToCurrentThread()); 505 DCHECK(main_task_runner_->BelongsToCurrentThread());
506 TRACE_EVENT0("media", "WebMediaPlayerImpl:paint"); 506 TRACE_EVENT0("media", "WebMediaPlayerImpl:paint");
507 507
508 // TODO(scherkus): Clarify paint() API contract to better understand when and 508 // TODO(scherkus): Clarify paint() API contract to better understand when and
509 // why it's being called. For example, today paint() is called when: 509 // why it's being called. For example, today paint() is called when:
510 // - We haven't reached HAVE_CURRENT_DATA and need to paint black 510 // - We haven't reached HAVE_CURRENT_DATA and need to paint black
511 // - We're painting to a canvas 511 // - We're painting to a canvas
512 // See http://crbug.com/341225 http://crbug.com/342621 for details. 512 // See http://crbug.com/341225 http://crbug.com/342621 for details.
513 scoped_refptr<VideoFrame> video_frame = 513 scoped_refptr<VideoFrame> video_frame = GetCurrentFrameFromCompositor();
514 GetCurrentFrameFromCompositor();
515 514
516 gfx::Rect gfx_rect(rect); 515 gfx::Rect gfx_rect(rect);
517 Context3D context_3d; 516 Context3D context_3d;
518 if (video_frame.get() && 517 if (video_frame.get() &&
519 video_frame->format() == VideoFrame::NATIVE_TEXTURE) { 518 video_frame->storage_type() == VideoFrame::STORAGE_TEXTURE) {
520 if (!context_3d_cb_.is_null()) { 519 if (!context_3d_cb_.is_null())
521 context_3d = context_3d_cb_.Run(); 520 context_3d = context_3d_cb_.Run();
522 }
523 // GPU Process crashed. 521 // GPU Process crashed.
524 if (!context_3d.gl) 522 if (!context_3d.gl)
525 return; 523 return;
526 } 524 }
527 skcanvas_video_renderer_.Paint(video_frame, canvas, gfx_rect, alpha, mode, 525 skcanvas_video_renderer_.Paint(video_frame, canvas, gfx_rect, alpha, mode,
528 pipeline_metadata_.video_rotation, context_3d); 526 pipeline_metadata_.video_rotation, context_3d);
529 } 527 }
530 528
531 bool WebMediaPlayerImpl::hasSingleSecurityOrigin() const { 529 bool WebMediaPlayerImpl::hasSingleSecurityOrigin() const {
532 if (data_source_) 530 if (data_source_)
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 585
588 bool WebMediaPlayerImpl::copyVideoTextureToPlatformTexture( 586 bool WebMediaPlayerImpl::copyVideoTextureToPlatformTexture(
589 blink::WebGraphicsContext3D* web_graphics_context, 587 blink::WebGraphicsContext3D* web_graphics_context,
590 unsigned int texture, 588 unsigned int texture,
591 unsigned int internal_format, 589 unsigned int internal_format,
592 unsigned int type, 590 unsigned int type,
593 bool premultiply_alpha, 591 bool premultiply_alpha,
594 bool flip_y) { 592 bool flip_y) {
595 TRACE_EVENT0("media", "WebMediaPlayerImpl:copyVideoTextureToPlatformTexture"); 593 TRACE_EVENT0("media", "WebMediaPlayerImpl:copyVideoTextureToPlatformTexture");
596 594
597 scoped_refptr<VideoFrame> video_frame = 595 scoped_refptr<VideoFrame> video_frame = GetCurrentFrameFromCompositor();
598 GetCurrentFrameFromCompositor();
599 596
600 if (!video_frame.get() || 597 if (!video_frame.get() ||
601 video_frame->format() != VideoFrame::NATIVE_TEXTURE) { 598 video_frame->storage_type() != VideoFrame::STORAGE_TEXTURE) {
602 return false; 599 return false;
603 } 600 }
604 601
605 // TODO(dshwang): need more elegant way to convert WebGraphicsContext3D to 602 // TODO(dshwang): need more elegant way to convert WebGraphicsContext3D to
606 // GLES2Interface. 603 // GLES2Interface.
607 gpu::gles2::GLES2Interface* gl = 604 gpu::gles2::GLES2Interface* gl =
608 static_cast<gpu_blink::WebGraphicsContext3DImpl*>(web_graphics_context) 605 static_cast<gpu_blink::WebGraphicsContext3DImpl*>(web_graphics_context)
609 ->GetGLInterface(); 606 ->GetGLInterface();
610 SkCanvasVideoRenderer::CopyVideoFrameTextureToGLTexture( 607 SkCanvasVideoRenderer::CopyVideoFrameTextureToGLTexture(
611 gl, video_frame.get(), texture, internal_format, type, premultiply_alpha, 608 gl, video_frame.get(), texture, internal_format, type, premultiply_alpha,
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after
1011 1008
1012 // pause() may be called after playback has ended and the HTMLMediaElement 1009 // pause() may be called after playback has ended and the HTMLMediaElement
1013 // requires that currentTime() == duration() after ending. We want to ensure 1010 // requires that currentTime() == duration() after ending. We want to ensure
1014 // |paused_time_| matches currentTime() in this case or a future seek() may 1011 // |paused_time_| matches currentTime() in this case or a future seek() may
1015 // incorrectly discard what it thinks is a seek to the existing time. 1012 // incorrectly discard what it thinks is a seek to the existing time.
1016 paused_time_ = 1013 paused_time_ =
1017 ended_ ? pipeline_.GetMediaDuration() : pipeline_.GetMediaTime(); 1014 ended_ ? pipeline_.GetMediaDuration() : pipeline_.GetMediaTime();
1018 } 1015 }
1019 1016
1020 } // namespace media 1017 } // namespace media
OLDNEW
« no previous file with comments | « media/blink/video_frame_compositor.cc ('k') | media/cast/test/end2end_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698