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

Side by Side Diff: cc/video_layer_impl.cc

Issue 12774006: cc: Chromify Layer and LayerImpl classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: MoreAndroidCompilings Created 7 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 | Annotate | Revision Log
« no previous file with comments | « cc/video_layer_impl.h ('k') | content/browser/android/content_view_core_impl.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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 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 "cc/video_layer_impl.h" 5 #include "cc/video_layer_impl.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "cc/io_surface_draw_quad.h" 8 #include "cc/io_surface_draw_quad.h"
9 #include "cc/layer_tree_impl.h" 9 #include "cc/layer_tree_impl.h"
10 #include "cc/math_util.h" 10 #include "cc/math_util.h"
11 #include "cc/quad_sink.h" 11 #include "cc/quad_sink.h"
12 #include "cc/renderer.h" 12 #include "cc/renderer.h"
13 #include "cc/resource_provider.h" 13 #include "cc/resource_provider.h"
14 #include "cc/stream_video_draw_quad.h" 14 #include "cc/stream_video_draw_quad.h"
15 #include "cc/texture_draw_quad.h" 15 #include "cc/texture_draw_quad.h"
16 #include "cc/video_frame_provider_client_impl.h" 16 #include "cc/video_frame_provider_client_impl.h"
17 #include "cc/yuv_video_draw_quad.h" 17 #include "cc/yuv_video_draw_quad.h"
18 #include "gpu/GLES2/gl2extchromium.h" 18 #include "gpu/GLES2/gl2extchromium.h"
19 #include "media/filters/skcanvas_video_renderer.h" 19 #include "media/filters/skcanvas_video_renderer.h"
20 #include "third_party/khronos/GLES2/gl2.h" 20 #include "third_party/khronos/GLES2/gl2.h"
21 #include "third_party/khronos/GLES2/gl2ext.h" 21 #include "third_party/khronos/GLES2/gl2ext.h"
22 22
23 #if defined(GOOGLE_TV) 23 #if defined(GOOGLE_TV)
24 #include "cc/solid_color_draw_quad.h" 24 #include "cc/solid_color_draw_quad.h"
25 #endif 25 #endif
26 26
27 namespace cc { 27 namespace cc {
28 28
29 // static 29 // static
30 scoped_ptr<VideoLayerImpl> VideoLayerImpl::create(LayerTreeImpl* treeImpl, int i d, VideoFrameProvider* provider) 30 scoped_ptr<VideoLayerImpl> VideoLayerImpl::Create(LayerTreeImpl* treeImpl, int i d, VideoFrameProvider* provider)
31 { 31 {
32 scoped_ptr<VideoLayerImpl> layer(new VideoLayerImpl(treeImpl, id)); 32 scoped_ptr<VideoLayerImpl> layer(new VideoLayerImpl(treeImpl, id));
33 layer->setProviderClientImpl(VideoFrameProviderClientImpl::Create(provider)) ; 33 layer->setProviderClientImpl(VideoFrameProviderClientImpl::Create(provider)) ;
34 DCHECK(treeImpl->proxy()->IsImplThread()); 34 DCHECK(treeImpl->proxy()->IsImplThread());
35 DCHECK(treeImpl->proxy()->IsMainThreadBlocked()); 35 DCHECK(treeImpl->proxy()->IsMainThreadBlocked());
36 return layer.Pass(); 36 return layer.Pass();
37 } 37 }
38 38
39 VideoLayerImpl::VideoLayerImpl(LayerTreeImpl* treeImpl, int id) 39 VideoLayerImpl::VideoLayerImpl(LayerTreeImpl* treeImpl, int id)
40 : LayerImpl(treeImpl, id) 40 : LayerImpl(treeImpl, id)
41 , m_frame(0) 41 , m_frame(0)
42 , m_format(GL_INVALID_VALUE) 42 , m_format(GL_INVALID_VALUE)
43 , m_convertYUV(false) 43 , m_convertYUV(false)
44 , m_externalTextureResource(0) 44 , m_externalTextureResource(0)
45 { 45 {
46 } 46 }
47 47
48 VideoLayerImpl::~VideoLayerImpl() 48 VideoLayerImpl::~VideoLayerImpl()
49 { 49 {
50 if (!m_providerClientImpl->Stopped()) { 50 if (!m_providerClientImpl->Stopped()) {
51 // In impl side painting, we may have a pending and active layer 51 // In impl side painting, we may have a pending and active layer
52 // associated with the video provider at the same time. Both have a ref 52 // associated with the video provider at the same time. Both have a ref
53 // on the VideoFrameProviderClientImpl, but we stop when the first 53 // on the VideoFrameProviderClientImpl, but we stop when the first
54 // LayerImpl (the one on the pending tree) is destroyed since we know 54 // LayerImpl (the one on the pending tree) is destroyed since we know
55 // the main thread is blocked for this commit. 55 // the main thread is blocked for this commit.
56 DCHECK(layerTreeImpl()->proxy()->IsImplThread()); 56 DCHECK(layer_tree_impl()->proxy()->IsImplThread());
57 DCHECK(layerTreeImpl()->proxy()->IsMainThreadBlocked()); 57 DCHECK(layer_tree_impl()->proxy()->IsMainThreadBlocked());
58 m_providerClientImpl->Stop(); 58 m_providerClientImpl->Stop();
59 } 59 }
60 freePlaneData(layerTreeImpl()->resource_provider()); 60 freePlaneData(layer_tree_impl()->resource_provider());
61 61
62 #ifndef NDEBUG 62 #ifndef NDEBUG
63 for (size_t i = 0; i < media::VideoFrame::kMaxPlanes; ++i) 63 for (size_t i = 0; i < media::VideoFrame::kMaxPlanes; ++i)
64 DCHECK(!m_framePlanes[i].resourceId); 64 DCHECK(!m_framePlanes[i].resourceId);
65 DCHECK(!m_externalTextureResource); 65 DCHECK(!m_externalTextureResource);
66 #endif 66 #endif
67 } 67 }
68 68
69 scoped_ptr<LayerImpl> VideoLayerImpl::createLayerImpl(LayerTreeImpl* treeImpl) 69 scoped_ptr<LayerImpl> VideoLayerImpl::CreateLayerImpl(LayerTreeImpl* treeImpl)
70 { 70 {
71 return scoped_ptr<LayerImpl>(new VideoLayerImpl(treeImpl, id())); 71 return scoped_ptr<LayerImpl>(new VideoLayerImpl(treeImpl, id()));
72 } 72 }
73 73
74 void VideoLayerImpl::pushPropertiesTo(LayerImpl* layer) 74 void VideoLayerImpl::PushPropertiesTo(LayerImpl* layer)
75 { 75 {
76 LayerImpl::pushPropertiesTo(layer); 76 LayerImpl::PushPropertiesTo(layer);
77 77
78 VideoLayerImpl* other = static_cast<VideoLayerImpl*>(layer); 78 VideoLayerImpl* other = static_cast<VideoLayerImpl*>(layer);
79 other->setProviderClientImpl(m_providerClientImpl); 79 other->setProviderClientImpl(m_providerClientImpl);
80 } 80 }
81 81
82 void VideoLayerImpl::didBecomeActive() 82 void VideoLayerImpl::DidBecomeActive()
83 { 83 {
84 m_providerClientImpl->set_active_video_layer(this); 84 m_providerClientImpl->set_active_video_layer(this);
85 } 85 }
86 86
87 // Convert media::VideoFrame::Format to OpenGL enum values. 87 // Convert media::VideoFrame::Format to OpenGL enum values.
88 static GLenum convertVFCFormatToGLenum(const media::VideoFrame& frame) 88 static GLenum convertVFCFormatToGLenum(const media::VideoFrame& frame)
89 { 89 {
90 switch (frame.format()) { 90 switch (frame.format()) {
91 case media::VideoFrame::YV12: 91 case media::VideoFrame::YV12:
92 case media::VideoFrame::YV16: 92 case media::VideoFrame::YV16:
(...skipping 18 matching lines...) Expand all
111 { 111 {
112 if (!m_frame) 112 if (!m_frame)
113 return 0; 113 return 0;
114 114
115 if (m_convertYUV) 115 if (m_convertYUV)
116 return 1; 116 return 1;
117 117
118 return media::VideoFrame::NumPlanes(m_frame->format()); 118 return media::VideoFrame::NumPlanes(m_frame->format());
119 } 119 }
120 120
121 void VideoLayerImpl::willDraw(ResourceProvider* resourceProvider) 121 void VideoLayerImpl::WillDraw(ResourceProvider* resourceProvider)
122 { 122 {
123 LayerImpl::willDraw(resourceProvider); 123 LayerImpl::WillDraw(resourceProvider);
124 124
125 125
126 // Explicitly acquire and release the provider mutex so it can be held from 126 // Explicitly acquire and release the provider mutex so it can be held from
127 // willDraw to didDraw. Since the compositor thread is in the middle of 127 // willDraw to didDraw. Since the compositor thread is in the middle of
128 // drawing, the layer will not be destroyed before didDraw is called. 128 // drawing, the layer will not be destroyed before didDraw is called.
129 // Therefore, the only thing that will prevent this lock from being released 129 // Therefore, the only thing that will prevent this lock from being released
130 // is the GPU process locking it. As the GPU process can't cause the 130 // is the GPU process locking it. As the GPU process can't cause the
131 // destruction of the provider (calling stopUsingProvider), holding this 131 // destruction of the provider (calling stopUsingProvider), holding this
132 // lock should not cause a deadlock. 132 // lock should not cause a deadlock.
133 m_frame = m_providerClientImpl->AcquireLockAndCurrentFrame(); 133 m_frame = m_providerClientImpl->AcquireLockAndCurrentFrame();
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 if (!copyPlaneData(resourceProvider)) { 185 if (!copyPlaneData(resourceProvider)) {
186 m_providerClientImpl->PutCurrentFrame(m_frame); 186 m_providerClientImpl->PutCurrentFrame(m_frame);
187 m_frame = 0; 187 m_frame = 0;
188 return; 188 return;
189 } 189 }
190 190
191 if (m_format == GL_TEXTURE_2D) 191 if (m_format == GL_TEXTURE_2D)
192 m_externalTextureResource = resourceProvider->CreateResourceFromExternal Texture(m_frame->texture_id()); 192 m_externalTextureResource = resourceProvider->CreateResourceFromExternal Texture(m_frame->texture_id());
193 } 193 }
194 194
195 void VideoLayerImpl::appendQuads(QuadSink& quadSink, AppendQuadsData& appendQuad sData) 195 void VideoLayerImpl::AppendQuads(QuadSink* quadSink, AppendQuadsData* appendQuad sData)
196 { 196 {
197 if (!m_frame) 197 if (!m_frame)
198 return; 198 return;
199 199
200 SharedQuadState* sharedQuadState = quadSink.useSharedQuadState(createSharedQ uadState()); 200 SharedQuadState* sharedQuadState = quadSink->useSharedQuadState(CreateShared QuadState());
201 appendDebugBorderQuad(quadSink, sharedQuadState, appendQuadsData); 201 AppendDebugBorderQuad(quadSink, sharedQuadState, appendQuadsData);
202 202
203 // FIXME: When we pass quads out of process, we need to double-buffer, or 203 // FIXME: When we pass quads out of process, we need to double-buffer, or
204 // otherwise synchonize use of all textures in the quad. 204 // otherwise synchonize use of all textures in the quad.
205 205
206 gfx::Rect quadRect(gfx::Point(), contentBounds()); 206 gfx::Rect quadRect(content_bounds());
207 gfx::Rect opaqueRect(contentsOpaque() ? quadRect : gfx::Rect()); 207 gfx::Rect opaqueRect(contents_opaque() ? quadRect : gfx::Rect());
208 gfx::Rect visibleRect = m_frame->visible_rect(); 208 gfx::Rect visibleRect = m_frame->visible_rect();
209 gfx::Size codedSize = m_frame->coded_size(); 209 gfx::Size codedSize = m_frame->coded_size();
210 210
211 // pixels for macroblocked formats. 211 // pixels for macroblocked formats.
212 const float texWidthScale = 212 const float texWidthScale =
213 static_cast<float>(visibleRect.width()) / codedSize.width(); 213 static_cast<float>(visibleRect.width()) / codedSize.width();
214 const float texHeightScale = 214 const float texHeightScale =
215 static_cast<float>(visibleRect.height()) / codedSize.height(); 215 static_cast<float>(visibleRect.height()) / codedSize.height();
216 216
217 #if defined(GOOGLE_TV) 217 #if defined(GOOGLE_TV)
218 // This block and other blocks wrapped around #if defined(GOOGLE_TV) is not 218 // This block and other blocks wrapped around #if defined(GOOGLE_TV) is not
219 // maintained by the general compositor team. Please contact the following 219 // maintained by the general compositor team. Please contact the following
220 // people instead: 220 // people instead:
221 // 221 //
222 // wonsik@chromium.org 222 // wonsik@chromium.org
223 // ycheo@chromium.org 223 // ycheo@chromium.org
224 224
225 if (m_frame->format() == media::VideoFrame::HOLE) { 225 if (m_frame->format() == media::VideoFrame::HOLE) {
226 scoped_ptr<SolidColorDrawQuad> solidColorDrawQuad = 226 scoped_ptr<SolidColorDrawQuad> solidColorDrawQuad =
227 SolidColorDrawQuad::Create(); 227 SolidColorDrawQuad::Create();
228 // Create a solid color quad with transparent black and force no 228 // Create a solid color quad with transparent black and force no
229 // blending. 229 // blending.
230 solidColorDrawQuad->SetAll( 230 solidColorDrawQuad->SetAll(
231 sharedQuadState, quadRect, quadRect, quadRect, false, 231 sharedQuadState, quadRect, quadRect, quadRect, false,
232 SK_ColorTRANSPARENT); 232 SK_ColorTRANSPARENT);
233 quadSink.append(solidColorDrawQuad.PassAs<DrawQuad>(), appendQuadsData); 233 quadSink->append(solidColorDrawQuad.PassAs<DrawQuad>(), appendQuadsData) ;
234 return; 234 return;
235 } 235 }
236 #endif 236 #endif
237 237
238 switch (m_format) { 238 switch (m_format) {
239 case GL_LUMINANCE: { 239 case GL_LUMINANCE: {
240 // YUV software decoder. 240 // YUV software decoder.
241 const FramePlane& yPlane = m_framePlanes[media::VideoFrame::kYPlane]; 241 const FramePlane& yPlane = m_framePlanes[media::VideoFrame::kYPlane];
242 const FramePlane& uPlane = m_framePlanes[media::VideoFrame::kUPlane]; 242 const FramePlane& uPlane = m_framePlanes[media::VideoFrame::kUPlane];
243 const FramePlane& vPlane = m_framePlanes[media::VideoFrame::kVPlane]; 243 const FramePlane& vPlane = m_framePlanes[media::VideoFrame::kVPlane];
244 gfx::SizeF texScale(texWidthScale, texHeightScale); 244 gfx::SizeF texScale(texWidthScale, texHeightScale);
245 scoped_ptr<YUVVideoDrawQuad> yuvVideoQuad = YUVVideoDrawQuad::Create(); 245 scoped_ptr<YUVVideoDrawQuad> yuvVideoQuad = YUVVideoDrawQuad::Create();
246 yuvVideoQuad->SetNew(sharedQuadState, quadRect, opaqueRect, texScale, yP lane, uPlane, vPlane); 246 yuvVideoQuad->SetNew(sharedQuadState, quadRect, opaqueRect, texScale, yP lane, uPlane, vPlane);
247 quadSink.append(yuvVideoQuad.PassAs<DrawQuad>(), appendQuadsData); 247 quadSink->append(yuvVideoQuad.PassAs<DrawQuad>(), appendQuadsData);
248 break; 248 break;
249 } 249 }
250 case GL_RGBA: { 250 case GL_RGBA: {
251 // RGBA software decoder. 251 // RGBA software decoder.
252 const FramePlane& plane = m_framePlanes[media::VideoFrame::kRGBPlane]; 252 const FramePlane& plane = m_framePlanes[media::VideoFrame::kRGBPlane];
253 bool premultipliedAlpha = true; 253 bool premultipliedAlpha = true;
254 gfx::PointF uvTopLeft(0.f, 0.f); 254 gfx::PointF uvTopLeft(0.f, 0.f);
255 gfx::PointF uvBottomRight(texWidthScale, texHeightScale); 255 gfx::PointF uvBottomRight(texWidthScale, texHeightScale);
256 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; 256 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
257 bool flipped = false; 257 bool flipped = false;
258 scoped_ptr<TextureDrawQuad> textureQuad = TextureDrawQuad::Create(); 258 scoped_ptr<TextureDrawQuad> textureQuad = TextureDrawQuad::Create();
259 textureQuad->SetNew(sharedQuadState, quadRect, opaqueRect, plane.resourc eId, premultipliedAlpha, uvTopLeft, uvBottomRight, opacity, flipped); 259 textureQuad->SetNew(sharedQuadState, quadRect, opaqueRect, plane.resourc eId, premultipliedAlpha, uvTopLeft, uvBottomRight, opacity, flipped);
260 quadSink.append(textureQuad.PassAs<DrawQuad>(), appendQuadsData); 260 quadSink->append(textureQuad.PassAs<DrawQuad>(), appendQuadsData);
261 break; 261 break;
262 } 262 }
263 case GL_TEXTURE_2D: { 263 case GL_TEXTURE_2D: {
264 // NativeTexture hardware decoder. 264 // NativeTexture hardware decoder.
265 bool premultipliedAlpha = true; 265 bool premultipliedAlpha = true;
266 gfx::PointF uvTopLeft(0.f, 0.f); 266 gfx::PointF uvTopLeft(0.f, 0.f);
267 gfx::PointF uvBottomRight(texWidthScale, texHeightScale); 267 gfx::PointF uvBottomRight(texWidthScale, texHeightScale);
268 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; 268 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
269 bool flipped = false; 269 bool flipped = false;
270 scoped_ptr<TextureDrawQuad> textureQuad = TextureDrawQuad::Create(); 270 scoped_ptr<TextureDrawQuad> textureQuad = TextureDrawQuad::Create();
271 textureQuad->SetNew(sharedQuadState, quadRect, opaqueRect, m_externalTex tureResource, premultipliedAlpha, uvTopLeft, uvBottomRight, opacity, flipped); 271 textureQuad->SetNew(sharedQuadState, quadRect, opaqueRect, m_externalTex tureResource, premultipliedAlpha, uvTopLeft, uvBottomRight, opacity, flipped);
272 quadSink.append(textureQuad.PassAs<DrawQuad>(), appendQuadsData); 272 quadSink->append(textureQuad.PassAs<DrawQuad>(), appendQuadsData);
273 break; 273 break;
274 } 274 }
275 case GL_TEXTURE_RECTANGLE_ARB: { 275 case GL_TEXTURE_RECTANGLE_ARB: {
276 gfx::Size visibleSize(visibleRect.width(), visibleRect.height()); 276 gfx::Size visibleSize(visibleRect.width(), visibleRect.height());
277 scoped_ptr<IOSurfaceDrawQuad> ioSurfaceQuad = IOSurfaceDrawQuad::Create( ); 277 scoped_ptr<IOSurfaceDrawQuad> ioSurfaceQuad = IOSurfaceDrawQuad::Create( );
278 ioSurfaceQuad->SetNew(sharedQuadState, quadRect, opaqueRect, visibleSize , m_frame->texture_id(), IOSurfaceDrawQuad::UNFLIPPED); 278 ioSurfaceQuad->SetNew(sharedQuadState, quadRect, opaqueRect, visibleSize , m_frame->texture_id(), IOSurfaceDrawQuad::UNFLIPPED);
279 quadSink.append(ioSurfaceQuad.PassAs<DrawQuad>(), appendQuadsData); 279 quadSink->append(ioSurfaceQuad.PassAs<DrawQuad>(), appendQuadsData);
280 break; 280 break;
281 } 281 }
282 case GL_TEXTURE_EXTERNAL_OES: { 282 case GL_TEXTURE_EXTERNAL_OES: {
283 // StreamTexture hardware decoder. 283 // StreamTexture hardware decoder.
284 gfx::Transform transform(m_providerClientImpl->stream_texture_matrix()); 284 gfx::Transform transform(m_providerClientImpl->stream_texture_matrix());
285 transform.Scale(texWidthScale, texHeightScale); 285 transform.Scale(texWidthScale, texHeightScale);
286 scoped_ptr<StreamVideoDrawQuad> streamVideoQuad = StreamVideoDrawQuad::C reate(); 286 scoped_ptr<StreamVideoDrawQuad> streamVideoQuad = StreamVideoDrawQuad::C reate();
287 streamVideoQuad->SetNew(sharedQuadState, quadRect, opaqueRect, m_frame-> texture_id(), transform); 287 streamVideoQuad->SetNew(sharedQuadState, quadRect, opaqueRect, m_frame-> texture_id(), transform);
288 quadSink.append(streamVideoQuad.PassAs<DrawQuad>(), appendQuadsData); 288 quadSink->append(streamVideoQuad.PassAs<DrawQuad>(), appendQuadsData);
289 break; 289 break;
290 } 290 }
291 default: 291 default:
292 NOTREACHED(); // Someone updated convertVFCFormatToGLenum above but upd ate this! 292 NOTREACHED(); // Someone updated convertVFCFormatToGLenum above but upd ate this!
293 break; 293 break;
294 } 294 }
295 } 295 }
296 296
297 void VideoLayerImpl::didDraw(ResourceProvider* resourceProvider) 297 void VideoLayerImpl::DidDraw(ResourceProvider* resourceProvider)
298 { 298 {
299 LayerImpl::didDraw(resourceProvider); 299 LayerImpl::DidDraw(resourceProvider);
300 300
301 if (!m_frame) 301 if (!m_frame)
302 return; 302 return;
303 303
304 if (m_format == GL_TEXTURE_2D) { 304 if (m_format == GL_TEXTURE_2D) {
305 DCHECK(m_externalTextureResource); 305 DCHECK(m_externalTextureResource);
306 // FIXME: the following assert will not be true when sending resources t o a 306 // FIXME: the following assert will not be true when sending resources t o a
307 // parent compositor. We will probably need to hold on to m_frame for 307 // parent compositor. We will probably need to hold on to m_frame for
308 // longer, and have several "current frames" in the pipeline. 308 // longer, and have several "current frames" in the pipeline.
309 DCHECK(!resourceProvider->InUseByConsumer(m_externalTextureResource)); 309 DCHECK(!resourceProvider->InUseByConsumer(m_externalTextureResource));
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 m_framePlanes[i].freeData(resourceProvider); 416 m_framePlanes[i].freeData(resourceProvider);
417 } 417 }
418 418
419 void VideoLayerImpl::freeUnusedPlaneData(ResourceProvider* resourceProvider) 419 void VideoLayerImpl::freeUnusedPlaneData(ResourceProvider* resourceProvider)
420 { 420 {
421 const size_t firstUnusedPlane = numPlanes(); 421 const size_t firstUnusedPlane = numPlanes();
422 for (size_t i = firstUnusedPlane; i < media::VideoFrame::kMaxPlanes; ++i) 422 for (size_t i = firstUnusedPlane; i < media::VideoFrame::kMaxPlanes; ++i)
423 m_framePlanes[i].freeData(resourceProvider); 423 m_framePlanes[i].freeData(resourceProvider);
424 } 424 }
425 425
426 void VideoLayerImpl::didLoseOutputSurface() 426 void VideoLayerImpl::DidLoseOutputSurface()
427 { 427 {
428 freePlaneData(layerTreeImpl()->resource_provider()); 428 freePlaneData(layer_tree_impl()->resource_provider());
429 } 429 }
430 430
431 void VideoLayerImpl::setNeedsRedraw() 431 void VideoLayerImpl::setNeedsRedraw()
432 { 432 {
433 layerTreeImpl()->SetNeedsRedraw(); 433 layer_tree_impl()->SetNeedsRedraw();
434 } 434 }
435 435
436 void VideoLayerImpl::setProviderClientImpl(scoped_refptr<VideoFrameProviderClien tImpl> providerClientImpl) 436 void VideoLayerImpl::setProviderClientImpl(scoped_refptr<VideoFrameProviderClien tImpl> providerClientImpl)
437 { 437 {
438 m_providerClientImpl = providerClientImpl; 438 m_providerClientImpl = providerClientImpl;
439 } 439 }
440 440
441 const char* VideoLayerImpl::layerTypeAsString() const 441 const char* VideoLayerImpl::LayerTypeAsString() const
442 { 442 {
443 return "VideoLayer"; 443 return "VideoLayer";
444 } 444 }
445 445
446 } // namespace cc 446 } // namespace cc
OLDNEW
« no previous file with comments | « cc/video_layer_impl.h ('k') | content/browser/android/content_view_core_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698