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

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

Issue 2758413002: cc/paint: Remove PaintCanvas::peekPixels. (Closed)
Patch Set: update Created 3 years, 9 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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_compositor.h" 5 #include "content/renderer/media/webmediaplayer_ms_compositor.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <string> 8 #include <string>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 30 matching lines...) Expand all
41 if (frame->HasTextures()) { 41 if (frame->HasTextures()) {
42 DCHECK(frame->format() == media::PIXEL_FORMAT_ARGB || 42 DCHECK(frame->format() == media::PIXEL_FORMAT_ARGB ||
43 frame->format() == media::PIXEL_FORMAT_XRGB || 43 frame->format() == media::PIXEL_FORMAT_XRGB ||
44 frame->format() == media::PIXEL_FORMAT_I420 || 44 frame->format() == media::PIXEL_FORMAT_I420 ||
45 frame->format() == media::PIXEL_FORMAT_UYVY || 45 frame->format() == media::PIXEL_FORMAT_UYVY ||
46 frame->format() == media::PIXEL_FORMAT_NV12); 46 frame->format() == media::PIXEL_FORMAT_NV12);
47 new_frame = media::VideoFrame::CreateFrame( 47 new_frame = media::VideoFrame::CreateFrame(
48 media::PIXEL_FORMAT_I420, frame->coded_size(), frame->visible_rect(), 48 media::PIXEL_FORMAT_I420, frame->coded_size(), frame->visible_rect(),
49 frame->natural_size(), frame->timestamp()); 49 frame->natural_size(), frame->timestamp());
50 50
51 sk_sp<cc::PaintSurface> surface = cc::PaintSurface::MakeRasterN32Premul(
52 frame->visible_rect().width(), frame->visible_rect().height());
53
54 ui::ContextProviderCommandBuffer* const provider = 51 ui::ContextProviderCommandBuffer* const provider =
55 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); 52 RenderThreadImpl::current()->SharedMainThreadContextProvider().get();
56 if (surface && provider) { 53 if (!provider) {
57 DCHECK(provider->ContextGL());
58 video_renderer->Copy(
59 frame.get(), surface->getCanvas(),
60 media::Context3D(provider->ContextGL(), provider->GrContext()));
61 } else {
62 // Return a black frame (yuv = {0, 0x80, 0x80}). 54 // Return a black frame (yuv = {0, 0x80, 0x80}).
63 return media::VideoFrame::CreateColorFrame( 55 return media::VideoFrame::CreateColorFrame(
64 frame->visible_rect().size(), 0u, 0x80, 0x80, frame->timestamp()); 56 frame->visible_rect().size(), 0u, 0x80, 0x80, frame->timestamp());
65 } 57 }
66 58
59 SkBitmap bitmap;
60 bitmap.allocPixels(SkImageInfo::MakeN32Premul(
61 frame->visible_rect().width(), frame->visible_rect().height()));
62 cc::SkiaPaintCanvas paint_canvas(bitmap);
63
64 DCHECK(provider->ContextGL());
65 video_renderer->Copy(
66 frame.get(), &paint_canvas,
67 media::Context3D(provider->ContextGL(), provider->GrContext()));
68
67 SkPixmap pixmap; 69 SkPixmap pixmap;
68 const bool result = surface->getCanvas()->peekPixels(&pixmap); 70 const bool result = bitmap.peekPixels(&pixmap);
69 DCHECK(result) << "Error trying to access PaintSurface's pixels"; 71 DCHECK(result) << "Error trying to access SkBitmap's pixels";
70 72
71 const uint32 source_pixel_format = 73 const uint32 source_pixel_format =
72 (kN32_SkColorType == kRGBA_8888_SkColorType) ? libyuv::FOURCC_ABGR 74 (kN32_SkColorType == kRGBA_8888_SkColorType) ? libyuv::FOURCC_ABGR
73 : libyuv::FOURCC_ARGB; 75 : libyuv::FOURCC_ARGB;
74 libyuv::ConvertToI420( 76 libyuv::ConvertToI420(
75 static_cast<const uint8*>(pixmap.addr(0, 0)), 77 static_cast<const uint8*>(pixmap.addr(0, 0)),
76 pixmap.getSafeSize64(), 78 pixmap.getSafeSize64(),
77 new_frame->visible_data(media::VideoFrame::kYPlane), 79 new_frame->visible_data(media::VideoFrame::kYPlane),
78 new_frame->stride(media::VideoFrame::kYPlane), 80 new_frame->stride(media::VideoFrame::kYPlane),
79 new_frame->visible_data(media::VideoFrame::kUPlane), 81 new_frame->visible_data(media::VideoFrame::kUPlane),
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 } 453 }
452 454
453 if (!rendering_frame_buffer_) { 455 if (!rendering_frame_buffer_) {
454 rendering_frame_buffer_.reset(new media::VideoRendererAlgorithm( 456 rendering_frame_buffer_.reset(new media::VideoRendererAlgorithm(
455 base::Bind(&WebMediaPlayerMSCompositor::MapTimestampsToRenderTimeTicks, 457 base::Bind(&WebMediaPlayerMSCompositor::MapTimestampsToRenderTimeTicks,
456 base::Unretained(this)))); 458 base::Unretained(this))));
457 } 459 }
458 } 460 }
459 461
460 } // namespace content 462 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698