Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Side by Side Diff: cc/layers/video_layer_impl.cc

Issue 2773103002: cc: Unify all sources of color space for YUVVideoDrawQuad (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/ipc/struct_traits_unittest.cc ('k') | cc/output/gl_renderer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « cc/ipc/struct_traits_unittest.cc ('k') | cc/output/gl_renderer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698