| 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 <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 218 render_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
| 219 texture_quad->SetNew(shared_quad_state, quad_rect, opaque_rect, | 219 texture_quad->SetNew(shared_quad_state, quad_rect, opaque_rect, |
| 220 visible_quad_rect, software_resources_[0], | 220 visible_quad_rect, software_resources_[0], |
| 221 premultiplied_alpha, uv_top_left, uv_bottom_right, | 221 premultiplied_alpha, uv_top_left, uv_bottom_right, |
| 222 SK_ColorTRANSPARENT, opacity, flipped, | 222 SK_ColorTRANSPARENT, opacity, flipped, |
| 223 nearest_neighbor, false); | 223 nearest_neighbor, false); |
| 224 ValidateQuadResources(texture_quad); | 224 ValidateQuadResources(texture_quad); |
| 225 break; | 225 break; |
| 226 } | 226 } |
| 227 case VideoFrameExternalResources::YUV_RESOURCE: { | 227 case VideoFrameExternalResources::YUV_RESOURCE: { |
| 228 YUVVideoDrawQuad::ColorSpace color_space = YUVVideoDrawQuad::REC_601; | |
| 229 int videoframe_color_space; | |
| 230 if (frame_->metadata()->GetInteger(media::VideoFrameMetadata::COLOR_SPACE, | |
| 231 &videoframe_color_space)) { | |
| 232 if (videoframe_color_space == media::COLOR_SPACE_JPEG) { | |
| 233 color_space = YUVVideoDrawQuad::JPEG; | |
| 234 } else if (videoframe_color_space == media::COLOR_SPACE_HD_REC709) { | |
| 235 color_space = YUVVideoDrawQuad::REC_709; | |
| 236 } | |
| 237 } | |
| 238 | |
| 239 const gfx::Size ya_tex_size = coded_size; | 228 const gfx::Size ya_tex_size = coded_size; |
| 240 gfx::Size uv_tex_size = media::VideoFrame::PlaneSize( | 229 gfx::Size uv_tex_size = media::VideoFrame::PlaneSize( |
| 241 frame_->format(), media::VideoFrame::kUPlane, coded_size); | 230 frame_->format(), media::VideoFrame::kUPlane, coded_size); |
| 242 | 231 |
| 243 if (frame_->HasTextures()) { | 232 if (frame_->HasTextures()) { |
| 244 if (frame_->format() == media::PIXEL_FORMAT_NV12) { | 233 if (frame_->format() == media::PIXEL_FORMAT_NV12) { |
| 245 DCHECK_EQ(2u, frame_resources_.size()); | 234 DCHECK_EQ(2u, frame_resources_.size()); |
| 246 } else { | 235 } else { |
| 247 DCHECK_EQ(media::PIXEL_FORMAT_I420, frame_->format()); | 236 DCHECK_EQ(media::PIXEL_FORMAT_I420, frame_->format()); |
| 248 DCHECK_EQ(3u, | 237 DCHECK_EQ(3u, |
| (...skipping 24 matching lines...) Expand all Loading... |
| 273 visible_sample_rect.height() / uv_subsampling_factor_y); | 262 visible_sample_rect.height() / uv_subsampling_factor_y); |
| 274 | 263 |
| 275 YUVVideoDrawQuad* yuv_video_quad = | 264 YUVVideoDrawQuad* yuv_video_quad = |
| 276 render_pass->CreateAndAppendDrawQuad<YUVVideoDrawQuad>(); | 265 render_pass->CreateAndAppendDrawQuad<YUVVideoDrawQuad>(); |
| 277 yuv_video_quad->SetNew( | 266 yuv_video_quad->SetNew( |
| 278 shared_quad_state, quad_rect, opaque_rect, visible_quad_rect, | 267 shared_quad_state, quad_rect, opaque_rect, visible_quad_rect, |
| 279 ya_tex_coord_rect, uv_tex_coord_rect, ya_tex_size, uv_tex_size, | 268 ya_tex_coord_rect, uv_tex_coord_rect, ya_tex_size, uv_tex_size, |
| 280 frame_resources_[0].id, frame_resources_[1].id, | 269 frame_resources_[0].id, frame_resources_[1].id, |
| 281 frame_resources_.size() > 2 ? frame_resources_[2].id | 270 frame_resources_.size() > 2 ? frame_resources_[2].id |
| 282 : frame_resources_[1].id, | 271 : frame_resources_[1].id, |
| 283 frame_resources_.size() > 3 ? frame_resources_[3].id : 0, color_space, | 272 frame_resources_.size() > 3 ? frame_resources_[3].id : 0, |
| 284 frame_->ColorSpace(), frame_resource_offset_, | 273 frame_resource_offset_, frame_resource_multiplier_, |
| 285 frame_resource_multiplier_, frame_bits_per_channel_); | 274 frame_bits_per_channel_); |
| 286 ValidateQuadResources(yuv_video_quad); | 275 ValidateQuadResources(yuv_video_quad); |
| 287 break; | 276 break; |
| 288 } | 277 } |
| 289 case VideoFrameExternalResources::RGBA_RESOURCE: | 278 case VideoFrameExternalResources::RGBA_RESOURCE: |
| 290 case VideoFrameExternalResources::RGBA_PREMULTIPLIED_RESOURCE: | 279 case VideoFrameExternalResources::RGBA_PREMULTIPLIED_RESOURCE: |
| 291 case VideoFrameExternalResources::RGB_RESOURCE: { | 280 case VideoFrameExternalResources::RGB_RESOURCE: { |
| 292 DCHECK_EQ(frame_resources_.size(), 1u); | 281 DCHECK_EQ(frame_resources_.size(), 1u); |
| 293 if (frame_resources_.size() < 1u) | 282 if (frame_resources_.size() < 1u) |
| 294 break; | 283 break; |
| 295 bool premultiplied_alpha = | 284 bool premultiplied_alpha = |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 372 void VideoLayerImpl::SetNeedsRedraw() { | 361 void VideoLayerImpl::SetNeedsRedraw() { |
| 373 SetUpdateRect(gfx::UnionRects(update_rect(), gfx::Rect(bounds()))); | 362 SetUpdateRect(gfx::UnionRects(update_rect(), gfx::Rect(bounds()))); |
| 374 layer_tree_impl()->SetNeedsRedraw(); | 363 layer_tree_impl()->SetNeedsRedraw(); |
| 375 } | 364 } |
| 376 | 365 |
| 377 const char* VideoLayerImpl::LayerTypeAsString() const { | 366 const char* VideoLayerImpl::LayerTypeAsString() const { |
| 378 return "cc::VideoLayerImpl"; | 367 return "cc::VideoLayerImpl"; |
| 379 } | 368 } |
| 380 | 369 |
| 381 } // namespace cc | 370 } // namespace cc |
| OLD | NEW |