| 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_impl.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.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 { |
| 26 | 26 |
| 27 // static | 27 // static |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 unsigned resource_id = resource_provider->CreateResourceFromTextureMailbox( | 122 unsigned resource_id = resource_provider->CreateResourceFromTextureMailbox( |
| 123 external_resources.mailboxes[i], | 123 external_resources.mailboxes[i], |
| 124 SingleReleaseCallbackImpl::Create( | 124 SingleReleaseCallbackImpl::Create( |
| 125 external_resources.release_callbacks[i])); | 125 external_resources.release_callbacks[i])); |
| 126 frame_resources_.push_back(resource_id); | 126 frame_resources_.push_back(resource_id); |
| 127 } | 127 } |
| 128 | 128 |
| 129 return true; | 129 return true; |
| 130 } | 130 } |
| 131 | 131 |
| 132 void VideoLayerImpl::AppendQuads( | 132 void VideoLayerImpl::AppendQuads(RenderPass* render_pass, |
| 133 RenderPass* render_pass, | 133 const Occlusion& occlusion_in_content_space, |
| 134 const OcclusionTracker<LayerImpl>& occlusion_tracker, | 134 AppendQuadsData* append_quads_data) { |
| 135 AppendQuadsData* append_quads_data) { | |
| 136 DCHECK(frame_.get()); | 135 DCHECK(frame_.get()); |
| 137 | 136 |
| 138 gfx::Transform transform = draw_transform(); | 137 gfx::Transform transform = draw_transform(); |
| 139 gfx::Size rotated_size = content_bounds(); | 138 gfx::Size rotated_size = content_bounds(); |
| 140 | 139 |
| 141 switch (video_rotation_) { | 140 switch (video_rotation_) { |
| 142 case media::VIDEO_ROTATION_90: | 141 case media::VIDEO_ROTATION_90: |
| 143 rotated_size = gfx::Size(rotated_size.height(), rotated_size.width()); | 142 rotated_size = gfx::Size(rotated_size.height(), rotated_size.width()); |
| 144 transform.Rotate(90.0); | 143 transform.Rotate(90.0); |
| 145 transform.Translate(0.0, -rotated_size.height()); | 144 transform.Translate(0.0, -rotated_size.height()); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 168 sorting_context_id()); | 167 sorting_context_id()); |
| 169 | 168 |
| 170 AppendDebugBorderQuad( | 169 AppendDebugBorderQuad( |
| 171 render_pass, rotated_size, shared_quad_state, append_quads_data); | 170 render_pass, rotated_size, shared_quad_state, append_quads_data); |
| 172 | 171 |
| 173 gfx::Rect quad_rect(rotated_size); | 172 gfx::Rect quad_rect(rotated_size); |
| 174 gfx::Rect opaque_rect(contents_opaque() ? quad_rect : gfx::Rect()); | 173 gfx::Rect opaque_rect(contents_opaque() ? quad_rect : gfx::Rect()); |
| 175 gfx::Rect visible_rect = frame_->visible_rect(); | 174 gfx::Rect visible_rect = frame_->visible_rect(); |
| 176 gfx::Size coded_size = frame_->coded_size(); | 175 gfx::Size coded_size = frame_->coded_size(); |
| 177 | 176 |
| 177 Occlusion occlusion_in_video_space = |
| 178 occlusion_in_content_space.GetOcclusionWithGivenDrawTransform(transform); |
| 178 gfx::Rect visible_quad_rect = | 179 gfx::Rect visible_quad_rect = |
| 179 occlusion_tracker.GetCurrentOcclusionForLayer(transform) | 180 occlusion_in_video_space.GetUnoccludedContentRect(quad_rect); |
| 180 .GetUnoccludedContentRect(quad_rect); | |
| 181 if (visible_quad_rect.IsEmpty()) | 181 if (visible_quad_rect.IsEmpty()) |
| 182 return; | 182 return; |
| 183 | 183 |
| 184 // Pixels for macroblocked formats. | 184 // Pixels for macroblocked formats. |
| 185 const float tex_width_scale = | 185 const float tex_width_scale = |
| 186 static_cast<float>(visible_rect.width()) / coded_size.width(); | 186 static_cast<float>(visible_rect.width()) / coded_size.width(); |
| 187 const float tex_height_scale = | 187 const float tex_height_scale = |
| 188 static_cast<float>(visible_rect.height()) / coded_size.height(); | 188 static_cast<float>(visible_rect.height()) / coded_size.height(); |
| 189 const float tex_x_offset = | 189 const float tex_x_offset = |
| 190 static_cast<float>(visible_rect.x()) / coded_size.width(); | 190 static_cast<float>(visible_rect.x()) / coded_size.width(); |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 368 void VideoLayerImpl::SetProviderClientImpl( | 368 void VideoLayerImpl::SetProviderClientImpl( |
| 369 scoped_refptr<VideoFrameProviderClientImpl> provider_client_impl) { | 369 scoped_refptr<VideoFrameProviderClientImpl> provider_client_impl) { |
| 370 provider_client_impl_ = provider_client_impl; | 370 provider_client_impl_ = provider_client_impl; |
| 371 } | 371 } |
| 372 | 372 |
| 373 const char* VideoLayerImpl::LayerTypeAsString() const { | 373 const char* VideoLayerImpl::LayerTypeAsString() const { |
| 374 return "cc::VideoLayerImpl"; | 374 return "cc::VideoLayerImpl"; |
| 375 } | 375 } |
| 376 | 376 |
| 377 } // namespace cc | 377 } // namespace cc |
| OLD | NEW |