| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "cc/layers/video_frame_provider_client_impl.h" | 9 #include "cc/layers/video_frame_provider_client_impl.h" |
| 10 #include "cc/output/context_provider.h" | 10 #include "cc/output/context_provider.h" |
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 | 371 |
| 372 const YUVVideoDrawQuad* yuv_draw_quad = | 372 const YUVVideoDrawQuad* yuv_draw_quad = |
| 373 static_cast<const YUVVideoDrawQuad*>(draw_quad); | 373 static_cast<const YUVVideoDrawQuad*>(draw_quad); |
| 374 EXPECT_EQ(yuv_draw_quad->uv_tex_size.height(), | 374 EXPECT_EQ(yuv_draw_quad->uv_tex_size.height(), |
| 375 (yuv_draw_quad->ya_tex_size.height() + 1) / 2); | 375 (yuv_draw_quad->ya_tex_size.height() + 1) / 2); |
| 376 EXPECT_EQ(yuv_draw_quad->uv_tex_size.width(), | 376 EXPECT_EQ(yuv_draw_quad->uv_tex_size.width(), |
| 377 (yuv_draw_quad->ya_tex_size.width() + 1) / 2); | 377 (yuv_draw_quad->ya_tex_size.width() + 1) / 2); |
| 378 EXPECT_TRUE(yuv_draw_quad->require_overlay); | 378 EXPECT_TRUE(yuv_draw_quad->require_overlay); |
| 379 } | 379 } |
| 380 | 380 |
| 381 TEST(VideoLayerImplTest, NativeARGBFrameGeneratesStreamVideoQuad) { | |
| 382 gfx::Size layer_size(1000, 1000); | |
| 383 gfx::Size viewport_size(1000, 1000); | |
| 384 | |
| 385 LayerTestCommon::LayerImplTest impl; | |
| 386 DebugSetImplThreadAndMainThreadBlocked(impl.task_runner_provider()); | |
| 387 | |
| 388 gpu::MailboxHolder mailbox_holders[media::VideoFrame::kMaxPlanes]; | |
| 389 mailbox_holders[0].texture_target = GL_TEXTURE_EXTERNAL_OES; | |
| 390 mailbox_holders[0].mailbox.name[0] = 1; | |
| 391 | |
| 392 gfx::Size resource_size = gfx::Size(10, 10); | |
| 393 scoped_refptr<media::VideoFrame> video_frame = | |
| 394 media::VideoFrame::WrapNativeTextures( | |
| 395 media::PIXEL_FORMAT_ARGB, mailbox_holders, base::Bind(EmptyCallback), | |
| 396 resource_size, gfx::Rect(10, 10), resource_size, base::TimeDelta()); | |
| 397 ASSERT_TRUE(video_frame); | |
| 398 video_frame->metadata()->SetBoolean(media::VideoFrameMetadata::ALLOW_OVERLAY, | |
| 399 true); | |
| 400 FakeVideoFrameProvider provider; | |
| 401 provider.set_frame(video_frame); | |
| 402 | |
| 403 VideoLayerImpl* video_layer_impl = | |
| 404 impl.AddChildToRoot<VideoLayerImpl>(&provider, media::VIDEO_ROTATION_0); | |
| 405 video_layer_impl->SetBounds(layer_size); | |
| 406 video_layer_impl->SetDrawsContent(true); | |
| 407 impl.host_impl()->active_tree()->BuildLayerListAndPropertyTreesForTesting(); | |
| 408 | |
| 409 gfx::Rect occluded; | |
| 410 impl.AppendQuadsWithOcclusion(video_layer_impl, occluded); | |
| 411 | |
| 412 EXPECT_EQ(1u, impl.quad_list().size()); | |
| 413 const DrawQuad* draw_quad = impl.quad_list().ElementAt(0); | |
| 414 ASSERT_EQ(DrawQuad::STREAM_VIDEO_CONTENT, draw_quad->material); | |
| 415 | |
| 416 const StreamVideoDrawQuad* video_draw_quad = | |
| 417 StreamVideoDrawQuad::MaterialCast(draw_quad); | |
| 418 EXPECT_EQ(video_draw_quad->resource_size_in_pixels(), resource_size); | |
| 419 } | |
| 420 | |
| 421 TEST(VideoLayerImplTest, NativeARGBFrameGeneratesTextureQuad) { | 381 TEST(VideoLayerImplTest, NativeARGBFrameGeneratesTextureQuad) { |
| 422 gfx::Size layer_size(1000, 1000); | 382 gfx::Size layer_size(1000, 1000); |
| 423 gfx::Size viewport_size(1000, 1000); | 383 gfx::Size viewport_size(1000, 1000); |
| 424 | 384 |
| 425 LayerTestCommon::LayerImplTest impl; | 385 LayerTestCommon::LayerImplTest impl; |
| 426 DebugSetImplThreadAndMainThreadBlocked(impl.task_runner_provider()); | 386 DebugSetImplThreadAndMainThreadBlocked(impl.task_runner_provider()); |
| 427 | 387 |
| 428 gpu::MailboxHolder mailbox_holders[media::VideoFrame::kMaxPlanes]; | 388 gpu::MailboxHolder mailbox_holders[media::VideoFrame::kMaxPlanes]; |
| 429 mailbox_holders[0].texture_target = GL_TEXTURE_2D; | 389 mailbox_holders[0].texture_target = GL_TEXTURE_2D; |
| 430 mailbox_holders[0].mailbox.name[0] = 1; | 390 mailbox_holders[0].mailbox.name[0] = 1; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 453 const DrawQuad* draw_quad = impl.quad_list().ElementAt(0); | 413 const DrawQuad* draw_quad = impl.quad_list().ElementAt(0); |
| 454 ASSERT_EQ(DrawQuad::TEXTURE_CONTENT, draw_quad->material); | 414 ASSERT_EQ(DrawQuad::TEXTURE_CONTENT, draw_quad->material); |
| 455 | 415 |
| 456 const TextureDrawQuad* texture_draw_quad = | 416 const TextureDrawQuad* texture_draw_quad = |
| 457 TextureDrawQuad::MaterialCast(draw_quad); | 417 TextureDrawQuad::MaterialCast(draw_quad); |
| 458 EXPECT_EQ(texture_draw_quad->resource_size_in_pixels(), resource_size); | 418 EXPECT_EQ(texture_draw_quad->resource_size_in_pixels(), resource_size); |
| 459 } | 419 } |
| 460 | 420 |
| 461 } // namespace | 421 } // namespace |
| 462 } // namespace cc | 422 } // namespace cc |
| OLD | NEW |