| OLD | NEW |
| 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 1509 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1520 LOG(INFO) << "Decoder " << i << " fps: " << client->frames_per_second(); | 1520 LOG(INFO) << "Decoder " << i << " fps: " << client->frames_per_second(); |
| 1521 if (!render_as_thumbnails) { | 1521 if (!render_as_thumbnails) { |
| 1522 int min_fps = suppress_rendering ? video_file->min_fps_no_render | 1522 int min_fps = suppress_rendering ? video_file->min_fps_no_render |
| 1523 : video_file->min_fps_render; | 1523 : video_file->min_fps_render; |
| 1524 if (min_fps > 0 && !test_reuse_delay) | 1524 if (min_fps > 0 && !test_reuse_delay) |
| 1525 EXPECT_GT(client->frames_per_second(), min_fps); | 1525 EXPECT_GT(client->frames_per_second(), min_fps); |
| 1526 } | 1526 } |
| 1527 } | 1527 } |
| 1528 | 1528 |
| 1529 if (render_as_thumbnails) { | 1529 if (render_as_thumbnails) { |
| 1530 std::vector<unsigned char> rgb; | 1530 std::vector<unsigned char> rgba; |
| 1531 bool alpha_solid; | 1531 bool alpha_solid; |
| 1532 base::WaitableEvent done(base::WaitableEvent::ResetPolicy::AUTOMATIC, | 1532 base::WaitableEvent done(base::WaitableEvent::ResetPolicy::AUTOMATIC, |
| 1533 base::WaitableEvent::InitialState::NOT_SIGNALED); | 1533 base::WaitableEvent::InitialState::NOT_SIGNALED); |
| 1534 g_env->GetRenderingTaskRunner()->PostTask( | 1534 g_env->GetRenderingTaskRunner()->PostTask( |
| 1535 FROM_HERE, base::Bind(&RenderingHelper::GetThumbnailsAsRGB, | 1535 FROM_HERE, base::Bind(&RenderingHelper::GetThumbnailsAsRGBA, |
| 1536 base::Unretained(&rendering_helper_), &rgb, | 1536 base::Unretained(&rendering_helper_), &rgba, |
| 1537 &alpha_solid, &done)); | 1537 &alpha_solid, &done)); |
| 1538 done.Wait(); | 1538 done.Wait(); |
| 1539 | 1539 |
| 1540 std::vector<std::string> golden_md5s; | 1540 std::vector<std::string> golden_md5s; |
| 1541 std::string md5_string = base::MD5String( | 1541 std::string md5_string = base::MD5String( |
| 1542 base::StringPiece(reinterpret_cast<char*>(&rgb[0]), rgb.size())); | 1542 base::StringPiece(reinterpret_cast<char*>(&rgba[0]), rgba.size())); |
| 1543 ReadGoldenThumbnailMD5s(test_video_files_[0].get(), &golden_md5s); | 1543 ReadGoldenThumbnailMD5s(test_video_files_[0].get(), &golden_md5s); |
| 1544 std::vector<std::string>::iterator match = | 1544 std::vector<std::string>::iterator match = |
| 1545 find(golden_md5s.begin(), golden_md5s.end(), md5_string); | 1545 find(golden_md5s.begin(), golden_md5s.end(), md5_string); |
| 1546 if (match == golden_md5s.end()) { | 1546 if (match == golden_md5s.end()) { |
| 1547 // Convert raw RGB into PNG for export. | 1547 // Convert raw RGBA into PNG for export. |
| 1548 std::vector<unsigned char> png; | 1548 std::vector<unsigned char> png; |
| 1549 gfx::PNGCodec::Encode(&rgb[0], | 1549 gfx::PNGCodec::Encode(&rgba[0], gfx::PNGCodec::FORMAT_RGBA, |
| 1550 gfx::PNGCodec::FORMAT_RGB, | |
| 1551 kThumbnailsPageSize, | 1550 kThumbnailsPageSize, |
| 1552 kThumbnailsPageSize.width() * 3, | 1551 kThumbnailsPageSize.width() * 4, true, |
| 1553 true, | 1552 std::vector<gfx::PNGCodec::Comment>(), &png); |
| 1554 std::vector<gfx::PNGCodec::Comment>(), | |
| 1555 &png); | |
| 1556 | 1553 |
| 1557 LOG(ERROR) << "Unknown thumbnails MD5: " << md5_string; | 1554 LOG(ERROR) << "Unknown thumbnails MD5: " << md5_string; |
| 1558 | 1555 |
| 1559 base::FilePath filepath(test_video_files_[0]->file_name); | 1556 base::FilePath filepath(test_video_files_[0]->file_name); |
| 1560 if (!g_thumbnail_output_dir.empty() && | 1557 if (!g_thumbnail_output_dir.empty() && |
| 1561 base::DirectoryExists(g_thumbnail_output_dir)) { | 1558 base::DirectoryExists(g_thumbnail_output_dir)) { |
| 1562 // Write bad thumbnails image to where --thumbnail_output_dir assigned. | 1559 // Write bad thumbnails image to where --thumbnail_output_dir assigned. |
| 1563 filepath = g_thumbnail_output_dir.Append(filepath.BaseName()); | 1560 filepath = g_thumbnail_output_dir.Append(filepath.BaseName()); |
| 1564 } else { | 1561 } else { |
| 1565 // Fallback to write to test data directory. | 1562 // Fallback to write to test data directory. |
| (...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1918 media::g_thumbnail_output_dir = base::FilePath(it->second.c_str()); | 1915 media::g_thumbnail_output_dir = base::FilePath(it->second.c_str()); |
| 1919 } | 1916 } |
| 1920 } | 1917 } |
| 1921 | 1918 |
| 1922 base::ShadowingAtExitManager at_exit_manager; | 1919 base::ShadowingAtExitManager at_exit_manager; |
| 1923 | 1920 |
| 1924 return base::LaunchUnitTestsSerially( | 1921 return base::LaunchUnitTestsSerially( |
| 1925 argc, argv, | 1922 argc, argv, |
| 1926 base::Bind(&media::VDATestSuite::Run, base::Unretained(&test_suite))); | 1923 base::Bind(&media::VDATestSuite::Run, base::Unretained(&test_suite))); |
| 1927 } | 1924 } |
| OLD | NEW |