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

Side by Side Diff: content/renderer/media/webmediaplayer_ms.cc

Issue 2767063002: 16-bit video upload to float: intermediate R16_EXT and copy to float. (Closed)
Patch Set: Created 3 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
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 "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 585 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 return false; 596 return false;
597 context_3d = media::Context3D(provider->ContextGL(), provider->GrContext()); 597 context_3d = media::Context3D(provider->ContextGL(), provider->GrContext());
598 DCHECK(context_3d.gl); 598 DCHECK(context_3d.gl);
599 return video_renderer_.CopyVideoFrameTexturesToGLTexture( 599 return video_renderer_.CopyVideoFrameTexturesToGLTexture(
600 context_3d, gl, video_frame.get(), texture, premultiply_alpha, flip_y); 600 context_3d, gl, video_frame.get(), texture, premultiply_alpha, flip_y);
601 } 601 }
602 602
603 bool WebMediaPlayerMS::texImageImpl(TexImageFunctionID functionID, 603 bool WebMediaPlayerMS::texImageImpl(TexImageFunctionID functionID,
604 unsigned target, 604 unsigned target,
605 gpu::gles2::GLES2Interface* gl, 605 gpu::gles2::GLES2Interface* gl,
606 unsigned int texture,
606 int level, 607 int level,
607 int internalformat, 608 int internalformat,
608 unsigned format, 609 unsigned format,
609 unsigned type, 610 unsigned type,
610 int xoffset, 611 int xoffset,
611 int yoffset, 612 int yoffset,
612 int zoffset, 613 int zoffset,
613 bool flip_y, 614 bool flip_y,
614 bool premultiply_alpha) { 615 bool premultiply_alpha) {
615 TRACE_EVENT0("media", "WebMediaPlayerMS:texImageImpl"); 616 TRACE_EVENT0("media", "WebMediaPlayerMS:texImageImpl");
616 DCHECK(thread_checker_.CalledOnValidThread()); 617 DCHECK(thread_checker_.CalledOnValidThread());
617 618
618 const scoped_refptr<media::VideoFrame> video_frame = 619 const scoped_refptr<media::VideoFrame> video_frame =
619 compositor_->GetCurrentFrameWithoutUpdatingStatistics(); 620 compositor_->GetCurrentFrameWithoutUpdatingStatistics();
620 if (!video_frame || !video_frame->IsMappable() || 621 if (!video_frame || !video_frame->IsMappable() ||
621 video_frame->HasTextures() || 622 video_frame->HasTextures() ||
622 video_frame->format() != media::PIXEL_FORMAT_Y16) { 623 video_frame->format() != media::PIXEL_FORMAT_Y16) {
623 return false; 624 return false;
624 } 625 }
625 626
626 if (functionID == TexImage2D) { 627 if (functionID == TexImage2D) {
628 auto* provider =
629 RenderThreadImpl::current()->SharedMainThreadContextProvider().get();
630 // GPU Process crashed.
631 if (!provider)
632 return false;
627 return media::SkCanvasVideoRenderer::TexImage2D( 633 return media::SkCanvasVideoRenderer::TexImage2D(
628 target, gl, video_frame.get(), level, internalformat, format, type, 634 target, texture, gl, provider->ContextCapabilities(), video_frame.get(),
629 flip_y, premultiply_alpha); 635 level, internalformat, format, type, flip_y, premultiply_alpha);
630 } else if (functionID == TexSubImage2D) { 636 } else if (functionID == TexSubImage2D) {
631 return media::SkCanvasVideoRenderer::TexSubImage2D( 637 return media::SkCanvasVideoRenderer::TexSubImage2D(
632 target, gl, video_frame.get(), level, format, type, xoffset, yoffset, 638 target, gl, video_frame.get(), level, format, type, xoffset, yoffset,
633 flip_y, premultiply_alpha); 639 flip_y, premultiply_alpha);
634 } 640 }
635 return false; 641 return false;
636 } 642 }
637 643
638 void WebMediaPlayerMS::OnFirstFrameReceived(media::VideoRotation video_rotation, 644 void WebMediaPlayerMS::OnFirstFrameReceived(media::VideoRotation video_rotation,
639 bool is_opaque) { 645 bool is_opaque) {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
702 void WebMediaPlayerMS::ResetCanvasCache() { 708 void WebMediaPlayerMS::ResetCanvasCache() {
703 DCHECK(thread_checker_.CalledOnValidThread()); 709 DCHECK(thread_checker_.CalledOnValidThread());
704 video_renderer_.ResetCache(); 710 video_renderer_.ResetCache();
705 } 711 }
706 712
707 void WebMediaPlayerMS::TriggerResize() { 713 void WebMediaPlayerMS::TriggerResize() {
708 get_client()->sizeChanged(); 714 get_client()->sizeChanged();
709 } 715 }
710 716
711 } // namespace content 717 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698