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

Side by Side Diff: webkit/media/video_renderer_impl.cc

Issue 8601004: Remove --enable-video-logging and WebVideoRenderer. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src
Patch Set: forgot gypi Created 9 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « webkit/media/video_renderer_impl.h ('k') | webkit/media/web_video_renderer.h » ('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 (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "webkit/media/video_renderer_impl.h" 5 #include "webkit/media/video_renderer_impl.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "media/base/video_frame.h" 8 #include "media/base/video_frame.h"
9 #include "media/base/yuv_convert.h" 9 #include "media/base/yuv_convert.h"
10 #include "third_party/skia/include/core/SkCanvas.h" 10 #include "third_party/skia/include/core/SkCanvas.h"
11 #include "third_party/skia/include/core/SkDevice.h" 11 #include "third_party/skia/include/core/SkDevice.h"
12 #include "webkit/media/webmediaplayer_proxy.h" 12 #include "webkit/media/webmediaplayer_proxy.h"
13 13
14 namespace webkit_media { 14 namespace webkit_media {
15 15
16 VideoRendererImpl::VideoRendererImpl(bool pts_logging) 16 VideoRendererImpl::VideoRendererImpl(
17 : last_converted_frame_(NULL), 17 const scoped_refptr<WebMediaPlayerProxy>& proxy)
18 pts_logging_(pts_logging) { 18 : proxy_(proxy),
19 last_converted_frame_(NULL) {
19 } 20 }
20 21
21 VideoRendererImpl::~VideoRendererImpl() {} 22 VideoRendererImpl::~VideoRendererImpl() {}
22 23
23 bool VideoRendererImpl::OnInitialize(media::VideoDecoder* decoder) { 24 bool VideoRendererImpl::OnInitialize(media::VideoDecoder* decoder) {
24 natural_size_ = decoder->natural_size(); 25 natural_size_ = decoder->natural_size();
25 bitmap_.setConfig(SkBitmap::kARGB_8888_Config, 26 bitmap_.setConfig(SkBitmap::kARGB_8888_Config,
26 natural_size_.width(), natural_size_.height()); 27 natural_size_.width(), natural_size_.height());
27 bitmap_.allocPixels(); 28 bitmap_.allocPixels();
28 bitmap_.eraseRGB(0x00, 0x00, 0x00); 29 bitmap_.eraseRGB(0x00, 0x00, 0x00);
29 bitmap_.setIsVolatile(true); 30 bitmap_.setIsVolatile(true);
30 return true; 31 return true;
31 } 32 }
32 33
33 void VideoRendererImpl::OnStop(const base::Closure& callback) { 34 void VideoRendererImpl::OnStop(const base::Closure& callback) {
34 if (!callback.is_null()) 35 if (!callback.is_null())
35 callback.Run(); 36 callback.Run();
36 } 37 }
37 38
38 void VideoRendererImpl::OnFrameAvailable() { 39 void VideoRendererImpl::OnFrameAvailable() {
39 proxy_->Repaint(); 40 proxy_->Repaint();
40 } 41 }
41 42
42 void VideoRendererImpl::SetWebMediaPlayerProxy(WebMediaPlayerProxy* proxy) {
43 proxy_ = proxy;
44 }
45
46 void VideoRendererImpl::SetRect(const gfx::Rect& rect) {}
47
48 // This method is always called on the renderer's thread. 43 // This method is always called on the renderer's thread.
49 void VideoRendererImpl::Paint(SkCanvas* canvas, const gfx::Rect& dest_rect) { 44 void VideoRendererImpl::Paint(SkCanvas* canvas, const gfx::Rect& dest_rect) {
50 scoped_refptr<media::VideoFrame> video_frame; 45 scoped_refptr<media::VideoFrame> video_frame;
51 GetCurrentFrame(&video_frame); 46 GetCurrentFrame(&video_frame);
52 if (!video_frame) { 47 if (!video_frame) {
53 SkPaint paint; 48 SkPaint paint;
54 paint.setColor(SK_ColorBLACK); 49 paint.setColor(SK_ColorBLACK);
55 canvas->drawRectCoords( 50 canvas->drawRectCoords(
56 static_cast<float>(dest_rect.x()), 51 static_cast<float>(dest_rect.x()),
57 static_cast<float>(dest_rect.y()), 52 static_cast<float>(dest_rect.y()),
58 static_cast<float>(dest_rect.right()), 53 static_cast<float>(dest_rect.right()),
59 static_cast<float>(dest_rect.bottom()), 54 static_cast<float>(dest_rect.bottom()),
60 paint); 55 paint);
61 } else { 56 } else {
62 if (CanFastPaint(canvas, dest_rect)) { 57 if (CanFastPaint(canvas, dest_rect)) {
63 FastPaint(video_frame, canvas, dest_rect); 58 FastPaint(video_frame, canvas, dest_rect);
64 } else { 59 } else {
65 SlowPaint(video_frame, canvas, dest_rect); 60 SlowPaint(video_frame, canvas, dest_rect);
66 } 61 }
67
68 // Presentation timestamp logging is primarily used to measure performance
69 // on low-end devices. When profiled on an Intel Atom N280 @ 1.66GHz this
70 // code had a ~63 microsecond perf hit when logging to a file (not stdout),
71 // which is neglible enough for measuring playback performance.
72 if (pts_logging_)
73 VLOG(1) << "pts=" << video_frame->GetTimestamp().InMicroseconds();
74 } 62 }
75 63
76 PutCurrentFrame(video_frame); 64 PutCurrentFrame(video_frame);
77 } 65 }
78 66
79 // CanFastPaint is a helper method to determine the conditions for fast 67 // CanFastPaint is a helper method to determine the conditions for fast
80 // painting. The conditions are: 68 // painting. The conditions are:
81 // 1. No skew in canvas matrix. 69 // 1. No skew in canvas matrix.
82 // 2. No flipping nor mirroring. 70 // 2. No flipping nor mirroring.
83 // 3. Canvas has pixel format ARGB8888. 71 // 3. Canvas has pixel format ARGB8888.
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 video_frame->stride(media::VideoFrame::kUPlane), 257 video_frame->stride(media::VideoFrame::kUPlane),
270 bitmap.rowBytes(), 258 bitmap.rowBytes(),
271 yuv_type, 259 yuv_type,
272 media::ROTATE_0, 260 media::ROTATE_0,
273 media::FILTER_BILINEAR); 261 media::FILTER_BILINEAR);
274 bitmap.unlockPixels(); 262 bitmap.unlockPixels();
275 } 263 }
276 } 264 }
277 265
278 } // namespace webkit_media 266 } // namespace webkit_media
OLDNEW
« no previous file with comments | « webkit/media/video_renderer_impl.h ('k') | webkit/media/web_video_renderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698