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

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

Issue 835653005: gpu: media: RenderingHelper: wait for the display & window to be ready (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move platform window creation off the rendering thread Created 5 years, 11 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
(...skipping 938 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 base::ShadowingAtExitManager at_exit_manager_; 949 base::ShadowingAtExitManager at_exit_manager_;
950 950
951 DISALLOW_COPY_AND_ASSIGN(VideoDecodeAcceleratorTest); 951 DISALLOW_COPY_AND_ASSIGN(VideoDecodeAcceleratorTest);
952 }; 952 };
953 953
954 VideoDecodeAcceleratorTest::VideoDecodeAcceleratorTest() 954 VideoDecodeAcceleratorTest::VideoDecodeAcceleratorTest()
955 : rendering_thread_("GLRenderingVDAClientThread") {} 955 : rendering_thread_("GLRenderingVDAClientThread") {}
956 956
957 void VideoDecodeAcceleratorTest::SetUp() { 957 void VideoDecodeAcceleratorTest::SetUp() {
958 ParseAndReadTestVideoData(g_test_video_data, &test_video_files_); 958 ParseAndReadTestVideoData(g_test_video_data, &test_video_files_);
959 959 rendering_thread_.Start();
960 // Initialize the rendering thread.
961 base::Thread::Options options;
962 options.message_loop_type = base::MessageLoop::TYPE_DEFAULT;
963 #if defined(OS_WIN) || defined(USE_OZONE)
964 // For windows the decoding thread initializes the media foundation decoder
965 // which uses COM. We need the thread to be a UI thread.
966 // On Ozone, the backend initializes the event system using a UI
967 // thread.
968 options.message_loop_type = base::MessageLoop::TYPE_UI;
969 #endif // OS_WIN || USE_OZONE
970
971 rendering_thread_.StartWithOptions(options);
972 rendering_loop_proxy_ = rendering_thread_.message_loop_proxy(); 960 rendering_loop_proxy_ = rendering_thread_.message_loop_proxy();
973 } 961 }
974 962
975 void VideoDecodeAcceleratorTest::TearDown() { 963 void VideoDecodeAcceleratorTest::TearDown() {
976 rendering_loop_proxy_->PostTask( 964 rendering_loop_proxy_->PostTask(
977 FROM_HERE, 965 FROM_HERE,
978 base::Bind(&STLDeleteElements<std::vector<TestVideoFile*> >, 966 base::Bind(&STLDeleteElements<std::vector<TestVideoFile*> >,
979 &test_video_files_)); 967 &test_video_files_));
980 968
981 base::WaitableEvent done(false, false); 969 base::WaitableEvent done(false, false);
982 rendering_loop_proxy_->PostTask( 970 rendering_loop_proxy_->PostTask(
983 FROM_HERE, 971 FROM_HERE,
984 base::Bind(&RenderingHelper::UnInitialize, 972 base::Bind(&RenderingHelper::UnInitialize,
985 base::Unretained(&rendering_helper_), 973 base::Unretained(&rendering_helper_),
986 &done)); 974 &done));
987 done.Wait(); 975 done.Wait();
988 976
989 rendering_thread_.Stop(); 977 rendering_thread_.Stop();
978 rendering_helper_.TearDown();
990 } 979 }
991 980
992 void VideoDecodeAcceleratorTest::ParseAndReadTestVideoData( 981 void VideoDecodeAcceleratorTest::ParseAndReadTestVideoData(
993 base::FilePath::StringType data, 982 base::FilePath::StringType data,
994 std::vector<TestVideoFile*>* test_video_files) { 983 std::vector<TestVideoFile*>* test_video_files) {
995 std::vector<base::FilePath::StringType> entries; 984 std::vector<base::FilePath::StringType> entries;
996 base::SplitString(data, ';', &entries); 985 base::SplitString(data, ';', &entries);
997 CHECK_GE(entries.size(), 1U) << data; 986 CHECK_GE(entries.size(), 1U) << data;
998 for (size_t index = 0; index < entries.size(); ++index) { 987 for (size_t index = 0; index < entries.size(); ++index) {
999 std::vector<base::FilePath::StringType> fields; 988 std::vector<base::FilePath::StringType> fields;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1047 1036
1048 if (video_file->min_fps_render != -1) 1037 if (video_file->min_fps_render != -1)
1049 video_file->min_fps_render /= num_concurrent_decoders; 1038 video_file->min_fps_render /= num_concurrent_decoders;
1050 if (video_file->min_fps_no_render != -1) 1039 if (video_file->min_fps_no_render != -1)
1051 video_file->min_fps_no_render /= num_concurrent_decoders; 1040 video_file->min_fps_no_render /= num_concurrent_decoders;
1052 } 1041 }
1053 } 1042 }
1054 1043
1055 void VideoDecodeAcceleratorTest::InitializeRenderingHelper( 1044 void VideoDecodeAcceleratorTest::InitializeRenderingHelper(
1056 const RenderingHelperParams& helper_params) { 1045 const RenderingHelperParams& helper_params) {
1046 rendering_helper_.Setup();
1047
1057 base::WaitableEvent done(false, false); 1048 base::WaitableEvent done(false, false);
1058 rendering_loop_proxy_->PostTask( 1049 rendering_loop_proxy_->PostTask(
1059 FROM_HERE, 1050 FROM_HERE,
1060 base::Bind(&RenderingHelper::Initialize, 1051 base::Bind(&RenderingHelper::Initialize,
1061 base::Unretained(&rendering_helper_), 1052 base::Unretained(&rendering_helper_),
1062 helper_params, 1053 helper_params,
1063 &done)); 1054 &done));
1064 done.Wait(); 1055 done.Wait();
1065 } 1056 }
1066 1057
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after
1541 continue; 1532 continue;
1542 } 1533 }
1543 if (it->first == "v" || it->first == "vmodule") 1534 if (it->first == "v" || it->first == "vmodule")
1544 continue; 1535 continue;
1545 if (it->first == "ozone-platform" || it->first == "ozone-use-surfaceless") 1536 if (it->first == "ozone-platform" || it->first == "ozone-use-surfaceless")
1546 continue; 1537 continue;
1547 LOG(FATAL) << "Unexpected switch: " << it->first << ":" << it->second; 1538 LOG(FATAL) << "Unexpected switch: " << it->first << ":" << it->second;
1548 } 1539 }
1549 1540
1550 base::ShadowingAtExitManager at_exit_manager; 1541 base::ShadowingAtExitManager at_exit_manager;
1542 #if defined(OS_WIN) || defined(USE_OZONE)
1543 // For windows the decoding thread initializes the media foundation decoder
1544 // which uses COM. We need the thread to be a UI thread.
1545 // On Ozone, the backend initializes the event system using a UI
1546 // thread.
1547 base::MessageLoopForUI main_loop;
1548 #else
1551 base::MessageLoop main_loop; 1549 base::MessageLoop main_loop;
1550 #endif // OS_WIN || USE_OZONE
1552 content::RenderingHelper::InitializeOneOff(); 1551 content::RenderingHelper::InitializeOneOff();
1553 1552
1554 return RUN_ALL_TESTS(); 1553 return RUN_ALL_TESTS();
1555 } 1554 }
OLDNEW
« content/common/gpu/media/rendering_helper.cc ('K') | « content/common/gpu/media/rendering_helper.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698