| 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" | 
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   65 } |   65 } | 
|   66  |   66  | 
|   67 void VideoLayerImpl::PushPropertiesTo(LayerImpl* layer) { |   67 void VideoLayerImpl::PushPropertiesTo(LayerImpl* layer) { | 
|   68   LayerImpl::PushPropertiesTo(layer); |   68   LayerImpl::PushPropertiesTo(layer); | 
|   69  |   69  | 
|   70   VideoLayerImpl* other = static_cast<VideoLayerImpl*>(layer); |   70   VideoLayerImpl* other = static_cast<VideoLayerImpl*>(layer); | 
|   71   other->SetProviderClientImpl(provider_client_impl_); |   71   other->SetProviderClientImpl(provider_client_impl_); | 
|   72 } |   72 } | 
|   73  |   73  | 
|   74 void VideoLayerImpl::DidBecomeActive() { |   74 void VideoLayerImpl::DidBecomeActive() { | 
|   75   provider_client_impl_->set_active_video_layer(this); |   75   provider_client_impl_->SetActiveVideoLayer(this); | 
|   76 } |   76 } | 
|   77  |   77  | 
|   78 bool VideoLayerImpl::WillDraw(DrawMode draw_mode, |   78 bool VideoLayerImpl::WillDraw(DrawMode draw_mode, | 
|   79                               ResourceProvider* resource_provider) { |   79                               ResourceProvider* resource_provider) { | 
|   80   if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE) |   80   if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE) | 
|   81     return false; |   81     return false; | 
|   82  |   82  | 
|   83   // Explicitly acquire and release the provider mutex so it can be held from |   83   // Explicitly acquire and release the provider mutex so it can be held from | 
|   84   // WillDraw to DidDraw. Since the compositor thread is in the middle of |   84   // WillDraw to DidDraw. Since the compositor thread is in the middle of | 
|   85   // drawing, the layer will not be destroyed before DidDraw is called. |   85   // drawing, the layer will not be destroyed before DidDraw is called. | 
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  125         external_resources.mailboxes[i], |  125         external_resources.mailboxes[i], | 
|  126         SingleReleaseCallbackImpl::Create( |  126         SingleReleaseCallbackImpl::Create( | 
|  127             external_resources.release_callbacks[i])); |  127             external_resources.release_callbacks[i])); | 
|  128     frame_resources_.push_back(resource_id); |  128     frame_resources_.push_back(resource_id); | 
|  129   } |  129   } | 
|  130  |  130  | 
|  131   return true; |  131   return true; | 
|  132 } |  132 } | 
|  133  |  133  | 
|  134 void VideoLayerImpl::AppendQuads(RenderPass* render_pass, |  134 void VideoLayerImpl::AppendQuads(RenderPass* render_pass, | 
|  135                                  const Occlusion& occlusion_in_content_space, |  | 
|  136                                  AppendQuadsData* append_quads_data) { |  135                                  AppendQuadsData* append_quads_data) { | 
|  137   DCHECK(frame_.get()); |  136   DCHECK(frame_.get()); | 
|  138  |  137  | 
|  139   gfx::Transform transform = draw_transform(); |  138   gfx::Transform transform = draw_transform(); | 
|  140   gfx::Size rotated_size = content_bounds(); |  139   gfx::Size rotated_size = content_bounds(); | 
|  141  |  140  | 
|  142   switch (video_rotation_) { |  141   switch (video_rotation_) { | 
|  143     case media::VIDEO_ROTATION_90: |  142     case media::VIDEO_ROTATION_90: | 
|  144       rotated_size = gfx::Size(rotated_size.height(), rotated_size.width()); |  143       rotated_size = gfx::Size(rotated_size.height(), rotated_size.width()); | 
|  145       transform.Rotate(90.0); |  144       transform.Rotate(90.0); | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
|  165  |  164  | 
|  166   AppendDebugBorderQuad( |  165   AppendDebugBorderQuad( | 
|  167       render_pass, rotated_size, shared_quad_state, append_quads_data); |  166       render_pass, rotated_size, shared_quad_state, append_quads_data); | 
|  168  |  167  | 
|  169   gfx::Rect quad_rect(rotated_size); |  168   gfx::Rect quad_rect(rotated_size); | 
|  170   gfx::Rect opaque_rect(contents_opaque() ? quad_rect : gfx::Rect()); |  169   gfx::Rect opaque_rect(contents_opaque() ? quad_rect : gfx::Rect()); | 
|  171   gfx::Rect visible_rect = frame_->visible_rect(); |  170   gfx::Rect visible_rect = frame_->visible_rect(); | 
|  172   gfx::Size coded_size = frame_->coded_size(); |  171   gfx::Size coded_size = frame_->coded_size(); | 
|  173  |  172  | 
|  174   Occlusion occlusion_in_video_space = |  173   Occlusion occlusion_in_video_space = | 
|  175       occlusion_in_content_space.GetOcclusionWithGivenDrawTransform(transform); |  174       draw_properties() | 
 |  175           .occlusion_in_content_space.GetOcclusionWithGivenDrawTransform( | 
 |  176               transform); | 
|  176   gfx::Rect visible_quad_rect = |  177   gfx::Rect visible_quad_rect = | 
|  177       occlusion_in_video_space.GetUnoccludedContentRect(quad_rect); |  178       occlusion_in_video_space.GetUnoccludedContentRect(quad_rect); | 
|  178   if (visible_quad_rect.IsEmpty()) |  179   if (visible_quad_rect.IsEmpty()) | 
|  179     return; |  180     return; | 
|  180  |  181  | 
|  181   // Pixels for macroblocked formats. |  182   // Pixels for macroblocked formats. | 
|  182   const float tex_width_scale = |  183   const float tex_width_scale = | 
|  183       static_cast<float>(visible_rect.width()) / coded_size.width(); |  184       static_cast<float>(visible_rect.width()) / coded_size.width(); | 
|  184   const float tex_height_scale = |  185   const float tex_height_scale = | 
|  185       static_cast<float>(visible_rect.height()) / coded_size.height(); |  186       static_cast<float>(visible_rect.height()) / coded_size.height(); | 
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  363 void VideoLayerImpl::SetProviderClientImpl( |  364 void VideoLayerImpl::SetProviderClientImpl( | 
|  364     scoped_refptr<VideoFrameProviderClientImpl> provider_client_impl) { |  365     scoped_refptr<VideoFrameProviderClientImpl> provider_client_impl) { | 
|  365   provider_client_impl_ = provider_client_impl; |  366   provider_client_impl_ = provider_client_impl; | 
|  366 } |  367 } | 
|  367  |  368  | 
|  368 const char* VideoLayerImpl::LayerTypeAsString() const { |  369 const char* VideoLayerImpl::LayerTypeAsString() const { | 
|  369   return "cc::VideoLayerImpl"; |  370   return "cc::VideoLayerImpl"; | 
|  370 } |  371 } | 
|  371  |  372  | 
|  372 }  // namespace cc |  373 }  // namespace cc | 
| OLD | NEW |