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

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

Issue 137023008: Add support for Tegra V4L2 VDA (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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
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
11 // to be written sequentially and wait for the decode client to see certain 11 // to be written sequentially and wait for the decode client to see certain
12 // state transitions. 12 // state transitions.
13 // - GLRenderingVDAClient is a VideoDecodeAccelerator::Client implementation 13 // - GLRenderingVDAClient is a VideoDecodeAccelerator::Client implementation
14 // - Finally actual TEST cases are at the bottom of this file, using the above 14 // - Finally actual TEST cases are at the bottom of this file, using the above
15 // infrastructure. 15 // infrastructure.
16 16
17 #include <dlfcn.h>
17 #include <fcntl.h> 18 #include <fcntl.h>
18 #include <sys/stat.h> 19 #include <sys/stat.h>
19 #include <sys/types.h> 20 #include <sys/types.h>
20 #include <algorithm> 21 #include <algorithm>
21 #include <deque> 22 #include <deque>
22 #include <map> 23 #include <map>
23 24
24 // Include gtest.h out of order because <X11/X.h> #define's Bool & None, which 25 // Include gtest.h out of order because <X11/X.h> #define's Bool & None, which
25 // gtest uses as struct names (inside a namespace). This means that 26 // gtest uses as struct names (inside a namespace). This means that
26 // #include'ing gtest after anything that pulls in X.h fails to compile. 27 // #include'ing gtest after anything that pulls in X.h fails to compile.
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 base::WeakPtr<VideoDecodeAccelerator::Client> weak_client = AsWeakPtr(); 550 base::WeakPtr<VideoDecodeAccelerator::Client> weak_client = AsWeakPtr();
550 if (throttling_client_) { 551 if (throttling_client_) {
551 client = throttling_client_.get(); 552 client = throttling_client_.get();
552 weak_client = throttling_client_->AsWeakPtr(); 553 weak_client = throttling_client_->AsWeakPtr();
553 } 554 }
554 #if defined(OS_WIN) 555 #if defined(OS_WIN)
555 decoder_.reset( 556 decoder_.reset(
556 new DXVAVideoDecodeAccelerator(base::Bind(&DoNothingReturnTrue))); 557 new DXVAVideoDecodeAccelerator(base::Bind(&DoNothingReturnTrue)));
557 #elif defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL) 558 #elif defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL)
558 559
559 scoped_ptr<V4L2Device> device = V4L2Device::Create(); 560 scoped_ptr<V4L2Device> device = V4L2Device::Create(
561 static_cast<EGLContext>(rendering_helper_->GetGLContext()));
560 if (!device.get()) { 562 if (!device.get()) {
561 NotifyError(media::VideoDecodeAccelerator::PLATFORM_FAILURE); 563 NotifyError(media::VideoDecodeAccelerator::PLATFORM_FAILURE);
562 return; 564 return;
563 } 565 }
564 decoder_.reset(new V4L2VideoDecodeAccelerator( 566 decoder_.reset(new V4L2VideoDecodeAccelerator(
565 static_cast<EGLDisplay>(rendering_helper_->GetGLDisplay()), 567 static_cast<EGLDisplay>(rendering_helper_->GetGLDisplay()),
566 weak_client, 568 weak_client,
567 base::Bind(&DoNothingReturnTrue), 569 base::Bind(&DoNothingReturnTrue),
568 device.Pass(), 570 device.Pass(),
569 base::MessageLoopProxy::current())); 571 base::MessageLoopProxy::current()));
(...skipping 965 matching lines...) Expand 10 before | Expand all | Expand 10 after
1535 CommandLine::Init(argc, argv); 1537 CommandLine::Init(argc, argv);
1536 1538
1537 // Needed to enable DVLOG through --vmodule. 1539 // Needed to enable DVLOG through --vmodule.
1538 logging::LoggingSettings settings; 1540 logging::LoggingSettings settings;
1539 settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG; 1541 settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
1540 CHECK(logging::InitLogging(settings)); 1542 CHECK(logging::InitLogging(settings));
1541 1543
1542 CommandLine* cmd_line = CommandLine::ForCurrentProcess(); 1544 CommandLine* cmd_line = CommandLine::ForCurrentProcess();
1543 DCHECK(cmd_line); 1545 DCHECK(cmd_line);
1544 1546
1547 #if defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL)
1548 dlopen("/usr/lib/libtegrav4l2.so", RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE);
1549 errno = 0;
sheu 2014/03/21 23:19:54 VaapiVideoDecodeAccelerator seems to get by withou
shivdasp 2014/03/24 06:01:27 It seems VaapiVDA is using some auto-gen mechanism
1550 #endif
1551
1545 CommandLine::SwitchMap switches = cmd_line->GetSwitches(); 1552 CommandLine::SwitchMap switches = cmd_line->GetSwitches();
1546 for (CommandLine::SwitchMap::const_iterator it = switches.begin(); 1553 for (CommandLine::SwitchMap::const_iterator it = switches.begin();
1547 it != switches.end(); ++it) { 1554 it != switches.end(); ++it) {
1548 if (it->first == "test_video_data") { 1555 if (it->first == "test_video_data") {
1549 content::g_test_video_data = it->second.c_str(); 1556 content::g_test_video_data = it->second.c_str();
1550 continue; 1557 continue;
1551 } 1558 }
1552 // TODO(wuchengli): remove frame_deliver_log after CrOS test get updated. 1559 // TODO(wuchengli): remove frame_deliver_log after CrOS test get updated.
1553 // See http://crosreview.com/175426. 1560 // See http://crosreview.com/175426.
1554 if (it->first == "frame_delivery_log" || it->first == "output_log") { 1561 if (it->first == "frame_delivery_log" || it->first == "output_log") {
(...skipping 13 matching lines...) Expand all
1568 } 1575 }
1569 if (it->first == "v" || it->first == "vmodule") 1576 if (it->first == "v" || it->first == "vmodule")
1570 continue; 1577 continue;
1571 LOG(FATAL) << "Unexpected switch: " << it->first << ":" << it->second; 1578 LOG(FATAL) << "Unexpected switch: " << it->first << ":" << it->second;
1572 } 1579 }
1573 1580
1574 base::ShadowingAtExitManager at_exit_manager; 1581 base::ShadowingAtExitManager at_exit_manager;
1575 1582
1576 return RUN_ALL_TESTS(); 1583 return RUN_ALL_TESTS();
1577 } 1584 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698