OLD | NEW |
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/layers/video_layer_impl.h" | 5 #include "cc/layers/video_layer_impl.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "cc/layers/video_frame_provider_client_impl.h" | 9 #include "cc/layers/video_frame_provider_client_impl.h" |
10 #include "cc/quads/io_surface_draw_quad.h" | 10 #include "cc/quads/io_surface_draw_quad.h" |
11 #include "cc/quads/stream_video_draw_quad.h" | 11 #include "cc/quads/stream_video_draw_quad.h" |
12 #include "cc/quads/texture_draw_quad.h" | 12 #include "cc/quads/texture_draw_quad.h" |
13 #include "cc/quads/yuv_video_draw_quad.h" | 13 #include "cc/quads/yuv_video_draw_quad.h" |
14 #include "cc/resources/resource_provider.h" | 14 #include "cc/resources/resource_provider.h" |
15 #include "cc/resources/single_release_callback.h" | 15 #include "cc/resources/single_release_callback_impl.h" |
16 #include "cc/trees/layer_tree_impl.h" | 16 #include "cc/trees/layer_tree_impl.h" |
17 #include "cc/trees/occlusion_tracker.h" | 17 #include "cc/trees/occlusion_tracker.h" |
18 #include "cc/trees/proxy.h" | 18 #include "cc/trees/proxy.h" |
19 #include "media/base/video_frame.h" | 19 #include "media/base/video_frame.h" |
20 | 20 |
21 #if defined(VIDEO_HOLE) | 21 #if defined(VIDEO_HOLE) |
22 #include "cc/quads/solid_color_draw_quad.h" | 22 #include "cc/quads/solid_color_draw_quad.h" |
23 #endif // defined(VIDEO_HOLE) | 23 #endif // defined(VIDEO_HOLE) |
24 | 24 |
25 namespace cc { | 25 namespace cc { |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 software_release_callback_ = | 115 software_release_callback_ = |
116 external_resources.software_release_callback; | 116 external_resources.software_release_callback; |
117 return true; | 117 return true; |
118 } | 118 } |
119 | 119 |
120 DCHECK_EQ(external_resources.mailboxes.size(), | 120 DCHECK_EQ(external_resources.mailboxes.size(), |
121 external_resources.release_callbacks.size()); | 121 external_resources.release_callbacks.size()); |
122 for (size_t i = 0; i < external_resources.mailboxes.size(); ++i) { | 122 for (size_t i = 0; i < external_resources.mailboxes.size(); ++i) { |
123 unsigned resource_id = resource_provider->CreateResourceFromTextureMailbox( | 123 unsigned resource_id = resource_provider->CreateResourceFromTextureMailbox( |
124 external_resources.mailboxes[i], | 124 external_resources.mailboxes[i], |
125 SingleReleaseCallback::Create(external_resources.release_callbacks[i])); | 125 SingleReleaseCallbackImpl::Create( |
| 126 external_resources.release_callbacks[i])); |
126 frame_resources_.push_back(resource_id); | 127 frame_resources_.push_back(resource_id); |
127 } | 128 } |
128 | 129 |
129 return true; | 130 return true; |
130 } | 131 } |
131 | 132 |
132 void VideoLayerImpl::AppendQuads( | 133 void VideoLayerImpl::AppendQuads( |
133 RenderPass* render_pass, | 134 RenderPass* render_pass, |
134 const OcclusionTracker<LayerImpl>& occlusion_tracker, | 135 const OcclusionTracker<LayerImpl>& occlusion_tracker, |
135 AppendQuadsData* append_quads_data) { | 136 AppendQuadsData* append_quads_data) { |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
329 } | 330 } |
330 } | 331 } |
331 | 332 |
332 void VideoLayerImpl::DidDraw(ResourceProvider* resource_provider) { | 333 void VideoLayerImpl::DidDraw(ResourceProvider* resource_provider) { |
333 LayerImpl::DidDraw(resource_provider); | 334 LayerImpl::DidDraw(resource_provider); |
334 | 335 |
335 DCHECK(frame_.get()); | 336 DCHECK(frame_.get()); |
336 | 337 |
337 if (frame_resource_type_ == | 338 if (frame_resource_type_ == |
338 VideoFrameExternalResources::SOFTWARE_RESOURCE) { | 339 VideoFrameExternalResources::SOFTWARE_RESOURCE) { |
339 for (size_t i = 0; i < software_resources_.size(); ++i) | 340 for (size_t i = 0; i < software_resources_.size(); ++i) { |
340 software_release_callback_.Run(0, false); | 341 software_release_callback_.Run( |
| 342 0, false, layer_tree_impl()->BlockingMainThreadTaskRunner()); |
| 343 } |
341 | 344 |
342 software_resources_.clear(); | 345 software_resources_.clear(); |
343 software_release_callback_.Reset(); | 346 software_release_callback_.Reset(); |
344 } else { | 347 } else { |
345 for (size_t i = 0; i < frame_resources_.size(); ++i) | 348 for (size_t i = 0; i < frame_resources_.size(); ++i) |
346 resource_provider->DeleteResource(frame_resources_[i]); | 349 resource_provider->DeleteResource(frame_resources_[i]); |
347 frame_resources_.clear(); | 350 frame_resources_.clear(); |
348 } | 351 } |
349 | 352 |
350 provider_client_impl_->PutCurrentFrame(frame_); | 353 provider_client_impl_->PutCurrentFrame(frame_); |
(...skipping 14 matching lines...) Expand all Loading... |
365 void VideoLayerImpl::SetProviderClientImpl( | 368 void VideoLayerImpl::SetProviderClientImpl( |
366 scoped_refptr<VideoFrameProviderClientImpl> provider_client_impl) { | 369 scoped_refptr<VideoFrameProviderClientImpl> provider_client_impl) { |
367 provider_client_impl_ = provider_client_impl; | 370 provider_client_impl_ = provider_client_impl; |
368 } | 371 } |
369 | 372 |
370 const char* VideoLayerImpl::LayerTypeAsString() const { | 373 const char* VideoLayerImpl::LayerTypeAsString() const { |
371 return "cc::VideoLayerImpl"; | 374 return "cc::VideoLayerImpl"; |
372 } | 375 } |
373 | 376 |
374 } // namespace cc | 377 } // namespace cc |
OLD | NEW |