| 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 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 DCHECK_EQ(frame_resources_.size(), 0u); | 194 DCHECK_EQ(frame_resources_.size(), 0u); |
| 195 DCHECK_EQ(software_resources_.size(), 1u); | 195 DCHECK_EQ(software_resources_.size(), 1u); |
| 196 if (software_resources_.size() < 1u) | 196 if (software_resources_.size() < 1u) |
| 197 break; | 197 break; |
| 198 bool premultiplied_alpha = true; | 198 bool premultiplied_alpha = true; |
| 199 gfx::PointF uv_top_left(0.f, 0.f); | 199 gfx::PointF uv_top_left(0.f, 0.f); |
| 200 gfx::PointF uv_bottom_right(tex_width_scale, tex_height_scale); | 200 gfx::PointF uv_bottom_right(tex_width_scale, tex_height_scale); |
| 201 float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; | 201 float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; |
| 202 bool flipped = false; | 202 bool flipped = false; |
| 203 bool nearest_neighbor = false; | 203 bool nearest_neighbor = false; |
| 204 // TODO(danakj): crbug.com/455931 |
| 205 layer_tree_impl()->resource_provider()->ValidateResource( |
| 206 software_resources_[0]); |
| 204 TextureDrawQuad* texture_quad = | 207 TextureDrawQuad* texture_quad = |
| 205 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 208 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
| 206 texture_quad->SetNew(shared_quad_state, | 209 texture_quad->SetNew(shared_quad_state, |
| 207 quad_rect, | 210 quad_rect, |
| 208 opaque_rect, | 211 opaque_rect, |
| 209 visible_quad_rect, | 212 visible_quad_rect, |
| 210 software_resources_[0], | 213 software_resources_[0], |
| 211 premultiplied_alpha, | 214 premultiplied_alpha, |
| 212 uv_top_left, | 215 uv_top_left, |
| 213 uv_bottom_right, | 216 uv_bottom_right, |
| (...skipping 19 matching lines...) Expand all Loading... |
| 233 frame_->format(), media::VideoFrame::kUPlane, coded_size); | 236 frame_->format(), media::VideoFrame::kUPlane, coded_size); |
| 234 DCHECK(uv_tex_size == | 237 DCHECK(uv_tex_size == |
| 235 media::VideoFrame::PlaneSize( | 238 media::VideoFrame::PlaneSize( |
| 236 frame_->format(), media::VideoFrame::kVPlane, coded_size)); | 239 frame_->format(), media::VideoFrame::kVPlane, coded_size)); |
| 237 if (frame_resources_.size() > 3) { | 240 if (frame_resources_.size() > 3) { |
| 238 DCHECK(ya_tex_size == | 241 DCHECK(ya_tex_size == |
| 239 media::VideoFrame::PlaneSize( | 242 media::VideoFrame::PlaneSize( |
| 240 frame_->format(), media::VideoFrame::kAPlane, coded_size)); | 243 frame_->format(), media::VideoFrame::kAPlane, coded_size)); |
| 241 } | 244 } |
| 242 | 245 |
| 246 // TODO(danakj): crbug.com/455931 |
| 247 layer_tree_impl()->resource_provider()->ValidateResource( |
| 248 frame_resources_[0]); |
| 249 layer_tree_impl()->resource_provider()->ValidateResource( |
| 250 frame_resources_[1]); |
| 251 layer_tree_impl()->resource_provider()->ValidateResource( |
| 252 frame_resources_[2]); |
| 253 if (frame_resources_.size() > 3) { |
| 254 layer_tree_impl()->resource_provider()->ValidateResource( |
| 255 frame_resources_[3]); |
| 256 } |
| 243 gfx::RectF tex_coord_rect( | 257 gfx::RectF tex_coord_rect( |
| 244 tex_x_offset, tex_y_offset, tex_width_scale, tex_height_scale); | 258 tex_x_offset, tex_y_offset, tex_width_scale, tex_height_scale); |
| 245 YUVVideoDrawQuad* yuv_video_quad = | 259 YUVVideoDrawQuad* yuv_video_quad = |
| 246 render_pass->CreateAndAppendDrawQuad<YUVVideoDrawQuad>(); | 260 render_pass->CreateAndAppendDrawQuad<YUVVideoDrawQuad>(); |
| 247 yuv_video_quad->SetNew( | 261 yuv_video_quad->SetNew( |
| 248 shared_quad_state, quad_rect, opaque_rect, visible_quad_rect, | 262 shared_quad_state, quad_rect, opaque_rect, visible_quad_rect, |
| 249 tex_coord_rect, ya_tex_size, uv_tex_size, frame_resources_[0], | 263 tex_coord_rect, ya_tex_size, uv_tex_size, frame_resources_[0], |
| 250 frame_resources_[1], frame_resources_[2], | 264 frame_resources_[1], frame_resources_[2], |
| 251 frame_resources_.size() > 3 ? frame_resources_[3] : 0, color_space); | 265 frame_resources_.size() > 3 ? frame_resources_[3] : 0, color_space); |
| 252 break; | 266 break; |
| 253 } | 267 } |
| 254 case VideoFrameExternalResources::RGB_RESOURCE: { | 268 case VideoFrameExternalResources::RGB_RESOURCE: { |
| 255 DCHECK_EQ(frame_resources_.size(), 1u); | 269 DCHECK_EQ(frame_resources_.size(), 1u); |
| 256 if (frame_resources_.size() < 1u) | 270 if (frame_resources_.size() < 1u) |
| 257 break; | 271 break; |
| 258 bool premultiplied_alpha = true; | 272 bool premultiplied_alpha = true; |
| 259 gfx::PointF uv_top_left(0.f, 0.f); | 273 gfx::PointF uv_top_left(0.f, 0.f); |
| 260 gfx::PointF uv_bottom_right(tex_width_scale, tex_height_scale); | 274 gfx::PointF uv_bottom_right(tex_width_scale, tex_height_scale); |
| 261 float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; | 275 float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; |
| 262 bool flipped = false; | 276 bool flipped = false; |
| 263 bool nearest_neighbor = false; | 277 bool nearest_neighbor = false; |
| 278 // TODO(danakj): crbug.com/455931 |
| 279 layer_tree_impl()->resource_provider()->ValidateResource( |
| 280 frame_resources_[0]); |
| 264 TextureDrawQuad* texture_quad = | 281 TextureDrawQuad* texture_quad = |
| 265 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 282 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
| 266 texture_quad->SetNew(shared_quad_state, | 283 texture_quad->SetNew(shared_quad_state, |
| 267 quad_rect, | 284 quad_rect, |
| 268 opaque_rect, | 285 opaque_rect, |
| 269 visible_quad_rect, | 286 visible_quad_rect, |
| 270 frame_resources_[0], | 287 frame_resources_[0], |
| 271 premultiplied_alpha, | 288 premultiplied_alpha, |
| 272 uv_top_left, | 289 uv_top_left, |
| 273 uv_bottom_right, | 290 uv_bottom_right, |
| 274 SK_ColorTRANSPARENT, | 291 SK_ColorTRANSPARENT, |
| 275 opacity, | 292 opacity, |
| 276 flipped, | 293 flipped, |
| 277 nearest_neighbor); | 294 nearest_neighbor); |
| 278 break; | 295 break; |
| 279 } | 296 } |
| 280 case VideoFrameExternalResources::STREAM_TEXTURE_RESOURCE: { | 297 case VideoFrameExternalResources::STREAM_TEXTURE_RESOURCE: { |
| 281 DCHECK_EQ(frame_resources_.size(), 1u); | 298 DCHECK_EQ(frame_resources_.size(), 1u); |
| 282 if (frame_resources_.size() < 1u) | 299 if (frame_resources_.size() < 1u) |
| 283 break; | 300 break; |
| 301 // TODO(danakj): crbug.com/455931 |
| 302 layer_tree_impl()->resource_provider()->ValidateResource( |
| 303 frame_resources_[0]); |
| 284 gfx::Transform scale; | 304 gfx::Transform scale; |
| 285 scale.Scale(tex_width_scale, tex_height_scale); | 305 scale.Scale(tex_width_scale, tex_height_scale); |
| 286 StreamVideoDrawQuad* stream_video_quad = | 306 StreamVideoDrawQuad* stream_video_quad = |
| 287 render_pass->CreateAndAppendDrawQuad<StreamVideoDrawQuad>(); | 307 render_pass->CreateAndAppendDrawQuad<StreamVideoDrawQuad>(); |
| 288 stream_video_quad->SetNew( | 308 stream_video_quad->SetNew( |
| 289 shared_quad_state, quad_rect, opaque_rect, visible_quad_rect, | 309 shared_quad_state, quad_rect, opaque_rect, visible_quad_rect, |
| 290 frame_resources_[0], | 310 frame_resources_[0], |
| 291 scale * provider_client_impl_->StreamTextureMatrix()); | 311 scale * provider_client_impl_->StreamTextureMatrix()); |
| 292 break; | 312 break; |
| 293 } | 313 } |
| 294 case VideoFrameExternalResources::IO_SURFACE: { | 314 case VideoFrameExternalResources::IO_SURFACE: { |
| 295 DCHECK_EQ(frame_resources_.size(), 1u); | 315 DCHECK_EQ(frame_resources_.size(), 1u); |
| 296 if (frame_resources_.size() < 1u) | 316 if (frame_resources_.size() < 1u) |
| 297 break; | 317 break; |
| 318 // TODO(danakj): crbug.com/455931 |
| 319 layer_tree_impl()->resource_provider()->ValidateResource( |
| 320 frame_resources_[0]); |
| 298 IOSurfaceDrawQuad* io_surface_quad = | 321 IOSurfaceDrawQuad* io_surface_quad = |
| 299 render_pass->CreateAndAppendDrawQuad<IOSurfaceDrawQuad>(); | 322 render_pass->CreateAndAppendDrawQuad<IOSurfaceDrawQuad>(); |
| 300 io_surface_quad->SetNew(shared_quad_state, | 323 io_surface_quad->SetNew(shared_quad_state, |
| 301 quad_rect, | 324 quad_rect, |
| 302 opaque_rect, | 325 opaque_rect, |
| 303 visible_quad_rect, | 326 visible_quad_rect, |
| 304 visible_rect.size(), | 327 visible_rect.size(), |
| 305 frame_resources_[0], | 328 frame_resources_[0], |
| 306 IOSurfaceDrawQuad::UNFLIPPED); | 329 IOSurfaceDrawQuad::UNFLIPPED); |
| 307 break; | 330 break; |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 370 void VideoLayerImpl::SetNeedsRedraw() { | 393 void VideoLayerImpl::SetNeedsRedraw() { |
| 371 SetUpdateRect(gfx::UnionRects(update_rect(), gfx::Rect(bounds()))); | 394 SetUpdateRect(gfx::UnionRects(update_rect(), gfx::Rect(bounds()))); |
| 372 layer_tree_impl()->SetNeedsRedraw(); | 395 layer_tree_impl()->SetNeedsRedraw(); |
| 373 } | 396 } |
| 374 | 397 |
| 375 const char* VideoLayerImpl::LayerTypeAsString() const { | 398 const char* VideoLayerImpl::LayerTypeAsString() const { |
| 376 return "cc::VideoLayerImpl"; | 399 return "cc::VideoLayerImpl"; |
| 377 } | 400 } |
| 378 | 401 |
| 379 } // namespace cc | 402 } // namespace cc |
| OLD | NEW |