summaryrefslogtreecommitdiffstats
path: root/media/tools/scaler_bench
diff options
context:
space:
mode:
authorhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-03 00:19:38 +0000
committerhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-03 00:19:38 +0000
commit047baea7ea26dde64cab0b0bb255a238ac0955c1 (patch)
treeac7af905189acc8af84abb33336efca7d7061a52 /media/tools/scaler_bench
parentb281162d602ce55ad45d8ff0e6604b8afece3c89 (diff)
downloadchromium_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.cc31
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: "