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) { |
340 ResourceProvider* resource_provider = | |
341 layer_tree_impl()->resource_provider(); | |
339 for (size_t i = 0; i < software_resources_.size(); ++i) | 342 for (size_t i = 0; i < software_resources_.size(); ++i) |
340 software_release_callback_.Run(0, false); | 343 software_release_callback_.Run( |
344 0, false, resource_provider->blocking_main_thread_task_runner()); | |
danakj
2014/09/03 16:09:36
same here use layer_tree_impl to access the task r
Sami
2014/09/03 17:59:12
Done.
| |
341 | 345 |
342 software_resources_.clear(); | 346 software_resources_.clear(); |
343 software_release_callback_.Reset(); | 347 software_release_callback_.Reset(); |
344 } else { | 348 } else { |
345 for (size_t i = 0; i < frame_resources_.size(); ++i) | 349 for (size_t i = 0; i < frame_resources_.size(); ++i) |
346 resource_provider->DeleteResource(frame_resources_[i]); | 350 resource_provider->DeleteResource(frame_resources_[i]); |
347 frame_resources_.clear(); | 351 frame_resources_.clear(); |
348 } | 352 } |
349 | 353 |
350 provider_client_impl_->PutCurrentFrame(frame_); | 354 provider_client_impl_->PutCurrentFrame(frame_); |
(...skipping 14 matching lines...) Expand all Loading... | |
365 void VideoLayerImpl::SetProviderClientImpl( | 369 void VideoLayerImpl::SetProviderClientImpl( |
366 scoped_refptr<VideoFrameProviderClientImpl> provider_client_impl) { | 370 scoped_refptr<VideoFrameProviderClientImpl> provider_client_impl) { |
367 provider_client_impl_ = provider_client_impl; | 371 provider_client_impl_ = provider_client_impl; |
368 } | 372 } |
369 | 373 |
370 const char* VideoLayerImpl::LayerTypeAsString() const { | 374 const char* VideoLayerImpl::LayerTypeAsString() const { |
371 return "cc::VideoLayerImpl"; | 375 return "cc::VideoLayerImpl"; |
372 } | 376 } |
373 | 377 |
374 } // namespace cc | 378 } // namespace cc |
OLD | NEW |