diff options
author | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-03 00:19:38 +0000 |
---|---|---|
committer | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-03 00:19:38 +0000 |
commit | 047baea7ea26dde64cab0b0bb255a238ac0955c1 (patch) | |
tree | ac7af905189acc8af84abb33336efca7d7061a52 /media/tools/scaler_bench | |
parent | b281162d602ce55ad45d8ff0e6604b8afece3c89 (diff) | |
download | chromium_src-047baea7ea26dde64cab0b0bb255a238ac0955c1.zip chromium_src-047baea7ea26dde64cab0b0bb255a238ac0955c1.tar.gz chromium_src-047baea7ea26dde64cab0b0bb255a238ac0955c1.tar.bz2 |
Resubmit "RGB to YUV conversion using SSE2""
Introduce SSE2 patch again.
BUG=None
TEST=None
Review URL: http://codereview.chromium.org/6334029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73552 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/tools/scaler_bench')
-rw-r--r-- | media/tools/scaler_bench/scaler_bench.cc | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/media/tools/scaler_bench/scaler_bench.cc b/media/tools/scaler_bench/scaler_bench.cc index 3457d7c..f9be6c6 100644 --- a/media/tools/scaler_bench/scaler_bench.cc +++ b/media/tools/scaler_bench/scaler_bench.cc @@ -11,6 +11,7 @@ #include "base/command_line.h" #include "base/scoped_vector.h" +#include "base/scoped_ptr.h" #include "base/string_number_conversions.h" #include "base/time.h" #include "media/base/video_frame.h" @@ -86,6 +87,34 @@ double BenchmarkSkia() { return static_cast<double>((end - start).InMilliseconds()) / num_frames; } +double BenchmarkRGBToYUV() { + int rgb_stride = source_width * 4; + scoped_array<uint8> rgb_frame(new uint8[rgb_stride * source_height]); + + int y_stride = source_width; + int uv_stride = source_width / 2; + scoped_array<uint8> y_plane(new uint8[y_stride * source_height]); + scoped_array<uint8> u_plane(new uint8[uv_stride * source_height / 2]); + scoped_array<uint8> v_plane(new uint8[uv_stride * source_height / 2]); + + TimeTicks start = TimeTicks::HighResNow(); + + for (int i = 0; i < num_frames; ++i) { + media::ConvertRGB32ToYUV(rgb_frame.get(), + y_plane.get(), + u_plane.get(), + v_plane.get(), + source_width, + source_height, + rgb_stride, + y_stride, + uv_stride); + } + + TimeTicks end = TimeTicks::HighResNow(); + return static_cast<double>((end - start).InMilliseconds()) / num_frames; +} + double BenchmarkFilter(media::ScaleFilter filter) { std::vector<scoped_refptr<VideoFrame> > source_frames; std::vector<scoped_refptr<VideoFrame> > dest_frames; @@ -198,6 +227,8 @@ int main(int argc, const char** argv) { std::cout << "Skia: " << BenchmarkSkia() << "ms/frame" << std::endl; + std::cout << "RGB To YUV: " << BenchmarkRGBToYUV() + << "ms/frame" << std::endl; std::cout << "No filtering: " << BenchmarkFilter(media::FILTER_NONE) << "ms/frame" << std::endl; std::cout << "Bilinear Vertical: " |