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

Side by Side Diff: content/common/gpu/media/video_decode_accelerator_unittest.cc

Issue 490233002: VaapiVideoAccelerator: make Vaapi accelerator work with ozone (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase on ToT Created 6 years 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // The bulk of this file is support code; sorry about that. Here's an overview 5 // The bulk of this file is support code; sorry about that. Here's an overview
6 // to hopefully help readers of this code: 6 // to hopefully help readers of this code:
7 // - RenderingHelper is charged with interacting with X11/{EGL/GLES2,GLX/GL} or 7 // - RenderingHelper is charged with interacting with X11/{EGL/GLES2,GLX/GL} or
8 // Win/EGL. 8 // Win/EGL.
9 // - ClientState is an enum for the state of the decode client used by the test. 9 // - ClientState is an enum for the state of the decode client used by the test.
10 // - ClientStateNotification is a barrier abstraction that allows the test code 10 // - ClientStateNotification is a barrier abstraction that allows the test code
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 #include "ui/gfx/codec/png_codec.h" 53 #include "ui/gfx/codec/png_codec.h"
54 54
55 #if defined(OS_WIN) 55 #if defined(OS_WIN)
56 #include "content/common/gpu/media/dxva_video_decode_accelerator.h" 56 #include "content/common/gpu/media/dxva_video_decode_accelerator.h"
57 #elif defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL) 57 #elif defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL)
58 #include "content/common/gpu/media/v4l2_video_decode_accelerator.h" 58 #include "content/common/gpu/media/v4l2_video_decode_accelerator.h"
59 #include "content/common/gpu/media/v4l2_video_device.h" 59 #include "content/common/gpu/media/v4l2_video_device.h"
60 #elif defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY) 60 #elif defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
61 #include "content/common/gpu/media/vaapi_video_decode_accelerator.h" 61 #include "content/common/gpu/media/vaapi_video_decode_accelerator.h"
62 #include "content/common/gpu/media/vaapi_wrapper.h" 62 #include "content/common/gpu/media/vaapi_wrapper.h"
63 #if defined(USE_X11)
64 #include "ui/gl/gl_implementation.h"
65 #endif // USE_X11
66 #else 63 #else
67 #error The VideoAccelerator tests are not supported on this platform. 64 #error The VideoAccelerator tests are not supported on this platform.
68 #endif // OS_WIN 65 #endif // OS_WIN
69 66
70 using media::VideoDecodeAccelerator; 67 using media::VideoDecodeAccelerator;
71 68
72 namespace content { 69 namespace content {
73 namespace { 70 namespace {
74 71
75 // Values optionally filled in from flags; see main() below. 72 // Values optionally filled in from flags; see main() below.
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 new DXVAVideoDecodeAccelerator(base::Bind(&DoNothingReturnTrue))); 395 new DXVAVideoDecodeAccelerator(base::Bind(&DoNothingReturnTrue)));
399 #elif defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL) 396 #elif defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL)
400 397
401 scoped_ptr<V4L2Device> device = V4L2Device::Create(V4L2Device::kDecoder); 398 scoped_ptr<V4L2Device> device = V4L2Device::Create(V4L2Device::kDecoder);
402 if (!device.get()) { 399 if (!device.get()) {
403 NotifyError(media::VideoDecodeAccelerator::PLATFORM_FAILURE); 400 NotifyError(media::VideoDecodeAccelerator::PLATFORM_FAILURE);
404 return; 401 return;
405 } 402 }
406 decoder_.reset(new V4L2VideoDecodeAccelerator( 403 decoder_.reset(new V4L2VideoDecodeAccelerator(
407 static_cast<EGLDisplay>(rendering_helper_->GetGLDisplay()), 404 static_cast<EGLDisplay>(rendering_helper_->GetGLDisplay()),
408 static_cast<EGLContext>(rendering_helper_->GetGLContext()), 405 static_cast<EGLContext>(rendering_helper_->GetGLContextHandle()),
409 weak_client, 406 weak_client, base::Bind(&DoNothingReturnTrue), device.Pass(),
410 base::Bind(&DoNothingReturnTrue),
411 device.Pass(),
412 base::MessageLoopProxy::current())); 407 base::MessageLoopProxy::current()));
413 #elif defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY) 408 #elif defined(OS_CHROMEOS) && defined(ARCH_CPU_X86_FAMILY)
414 CHECK_EQ(gfx::kGLImplementationDesktopGL, gfx::GetGLImplementation()) 409 decoder_.reset(
415 << "Hardware video decode does not work with OSMesa"; 410 new VaapiVideoDecodeAccelerator(rendering_helper_->GetGLContext().get(),
416 decoder_.reset(new VaapiVideoDecodeAccelerator( 411 base::Bind(&DoNothingReturnTrue)));
417 static_cast<Display*>(rendering_helper_->GetGLDisplay()),
418 base::Bind(&DoNothingReturnTrue)));
419 #endif // OS_WIN 412 #endif // OS_WIN
420 CHECK(decoder_.get()); 413 CHECK(decoder_.get());
421 weak_decoder_factory_.reset( 414 weak_decoder_factory_.reset(
422 new base::WeakPtrFactory<VideoDecodeAccelerator>(decoder_.get())); 415 new base::WeakPtrFactory<VideoDecodeAccelerator>(decoder_.get()));
423 SetState(CS_DECODER_SET); 416 SetState(CS_DECODER_SET);
424 if (decoder_deleted()) 417 if (decoder_deleted())
425 return; 418 return;
426 419
427 CHECK(decoder_->Initialize(profile_, client)); 420 CHECK(decoder_->Initialize(profile_, client));
428 FinishInitialization(); 421 FinishInitialization();
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
866 859
867 VideoDecodeAcceleratorTest::VideoDecodeAcceleratorTest() 860 VideoDecodeAcceleratorTest::VideoDecodeAcceleratorTest()
868 : rendering_thread_("GLRenderingVDAClientThread") {} 861 : rendering_thread_("GLRenderingVDAClientThread") {}
869 862
870 void VideoDecodeAcceleratorTest::SetUp() { 863 void VideoDecodeAcceleratorTest::SetUp() {
871 ParseAndReadTestVideoData(g_test_video_data, &test_video_files_); 864 ParseAndReadTestVideoData(g_test_video_data, &test_video_files_);
872 865
873 // Initialize the rendering thread. 866 // Initialize the rendering thread.
874 base::Thread::Options options; 867 base::Thread::Options options;
875 options.message_loop_type = base::MessageLoop::TYPE_DEFAULT; 868 options.message_loop_type = base::MessageLoop::TYPE_DEFAULT;
876 #if defined(OS_WIN) 869 #if defined(OS_WIN) || defined(USE_OZONE)
877 // For windows the decoding thread initializes the media foundation decoder 870 // For windows the decoding thread initializes the media foundation decoder
878 // which uses COM. We need the thread to be a UI thread. 871 // which uses COM. We need the thread to be a UI thread.
872 // On Ozone, the backend initializes the event system using a UI
873 // thread.
879 options.message_loop_type = base::MessageLoop::TYPE_UI; 874 options.message_loop_type = base::MessageLoop::TYPE_UI;
880 #endif // OS_WIN 875 #endif // OS_WIN || USE_OZONE
881 876
882 rendering_thread_.StartWithOptions(options); 877 rendering_thread_.StartWithOptions(options);
883 rendering_loop_proxy_ = rendering_thread_.message_loop_proxy(); 878 rendering_loop_proxy_ = rendering_thread_.message_loop_proxy();
884 } 879 }
885 880
886 void VideoDecodeAcceleratorTest::TearDown() { 881 void VideoDecodeAcceleratorTest::TearDown() {
887 rendering_loop_proxy_->PostTask( 882 rendering_loop_proxy_->PostTask(
888 FROM_HERE, 883 FROM_HERE,
889 base::Bind(&STLDeleteElements<std::vector<TestVideoFile*> >, 884 base::Bind(&STLDeleteElements<std::vector<TestVideoFile*> >,
890 &test_video_files_)); 885 &test_video_files_));
(...skipping 540 matching lines...) Expand 10 before | Expand all | Expand 10 after
1431 CHECK(base::StringToInt(input, &content::g_rendering_warm_up)); 1426 CHECK(base::StringToInt(input, &content::g_rendering_warm_up));
1432 continue; 1427 continue;
1433 } 1428 }
1434 // TODO(owenlin): Remove this flag once it is not used in autotest. 1429 // TODO(owenlin): Remove this flag once it is not used in autotest.
1435 if (it->first == "disable_rendering") { 1430 if (it->first == "disable_rendering") {
1436 content::g_rendering_fps = 0; 1431 content::g_rendering_fps = 0;
1437 continue; 1432 continue;
1438 } 1433 }
1439 if (it->first == "v" || it->first == "vmodule") 1434 if (it->first == "v" || it->first == "vmodule")
1440 continue; 1435 continue;
1436 if (it->first == "ozone-platform" || it->first == "ozone-use-surfaceless")
1437 continue;
1441 LOG(FATAL) << "Unexpected switch: " << it->first << ":" << it->second; 1438 LOG(FATAL) << "Unexpected switch: " << it->first << ":" << it->second;
1442 } 1439 }
1443 1440
1444 base::ShadowingAtExitManager at_exit_manager; 1441 base::ShadowingAtExitManager at_exit_manager;
1445 content::RenderingHelper::InitializeOneOff(); 1442 content::RenderingHelper::InitializeOneOff();
1446 1443
1447 return RUN_ALL_TESTS(); 1444 return RUN_ALL_TESTS();
1448 } 1445 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698