summaryrefslogtreecommitdiffstats
path: root/media/tools/scaler_bench/scaler_bench.cc
diff options
context:
space:
mode:
Diffstat (limited to 'media/tools/scaler_bench/scaler_bench.cc')
-rw-r--r--media/tools/scaler_bench/scaler_bench.cc205
1 files changed, 0 insertions, 205 deletions
diff --git a/media/tools/scaler_bench/scaler_bench.cc b/media/tools/scaler_bench/scaler_bench.cc
deleted file mode 100644
index 876b5e7..0000000
--- a/media/tools/scaler_bench/scaler_bench.cc
+++ /dev/null
@@ -1,205 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This tool can be used to measure performace of video frame scaling
-// code. It times performance of the scaler with and without filtering.
-// It also measures performance of the Skia scaler for comparison.
-
-#include <time.h>
-#include <iostream>
-#include <vector>
-
-#include "base/command_line.h"
-#include "base/scoped_vector.h"
-#include "base/time.h"
-#include "skia/ext/platform_canvas.h"
-#include "media/base/yuv_convert.h"
-#include "media/base/video_frame.h"
-
-using std::vector;
-using base::TimeDelta;
-using media::VideoFrame;
-
-int source_width = 1280;
-int source_height = 720;
-int dest_width = 1600;
-int dest_height = 1000;
-int num_frames = 500;
-int num_buffers = 50;
-
-double BenchmarkSkia() {
- vector< scoped_refptr<VideoFrame> > source_frames;
- ScopedVector<SkBitmap> dest_frames;
- for (int i = 0; i < num_buffers; i++) {
- scoped_refptr<VideoFrame> source_frame;
- VideoFrame::CreateBlackFrame(source_width, source_height, &source_frame);
- source_frames.push_back(source_frame);
-
- SkBitmap *bitmap = new SkBitmap();
- bitmap->setConfig(SkBitmap::kARGB_8888_Config,
- dest_width, dest_height);
- bitmap->allocPixels();
- dest_frames.push_back(bitmap);
- }
-
- SkBitmap bitmap;
- bitmap.setConfig(SkBitmap::kARGB_8888_Config, source_width, source_height);
- bitmap.allocPixels();
-
- clock_t start = clock();
-
- for (int i = 0; i < num_frames; i++) {
- scoped_refptr<VideoFrame> source_frame = source_frames[i % num_buffers];
- SkBitmap* dest_bitmap = dest_frames[i % num_buffers];
-
- bitmap.lockPixels();
- media::ConvertYUVToRGB32(source_frame->data(VideoFrame::kYPlane),
- source_frame->data(VideoFrame::kUPlane),
- source_frame->data(VideoFrame::kVPlane),
- static_cast<uint8*>(bitmap.getPixels()),
- source_width,
- source_height,
- source_frame->stride(VideoFrame::kYPlane),
- source_frame->stride(VideoFrame::kUPlane),
- bitmap.rowBytes(),
- media::YV12);
- bitmap.unlockPixels();
-
- SkCanvas canvas(*dest_bitmap);
- SkRect rect;
- rect.set(0, 0, SkIntToScalar(dest_width),
- SkIntToScalar(dest_height));
- canvas.clipRect(rect);
- SkMatrix matrix;
- matrix.reset();
- matrix.preScale(SkIntToScalar(dest_width) /
- SkIntToScalar(source_width),
- SkIntToScalar(dest_height) /
- SkIntToScalar(source_height));
- SkPaint paint;
- paint.setFlags(SkPaint::kFilterBitmap_Flag);
- canvas.drawBitmapMatrix(bitmap, matrix, &paint);
- }
-
- clock_t end = clock();
- return static_cast<double>(end - start) * 1000.0 / num_frames /
- CLOCKS_PER_SEC;
-}
-
-double BenchmarkFilter(media::ScaleFilter filter) {
- vector< scoped_refptr<VideoFrame> > source_frames;
- vector< scoped_refptr<VideoFrame> > dest_frames;
-
- for (int i = 0; i < num_buffers; i++) {
- scoped_refptr<VideoFrame> source_frame;
- VideoFrame::CreateBlackFrame(source_width, source_height, &source_frame);
- source_frames.push_back(source_frame);
-
- scoped_refptr<VideoFrame> dest_frame;
- VideoFrame::CreateFrame(VideoFrame::RGB32,
- dest_width,
- dest_height,
- TimeDelta::FromSeconds(0),
- TimeDelta::FromSeconds(0),
- &dest_frame);
- dest_frames.push_back(dest_frame);
- }
-
- clock_t start = clock();
- for (int i = 0; i < num_frames; i++) {
- scoped_refptr<VideoFrame> source_frame = source_frames[i % num_buffers];
- scoped_refptr<VideoFrame> dest_frame = dest_frames[i % num_buffers];
-
- media::ScaleYUVToRGB32(source_frame->data(VideoFrame::kYPlane),
- source_frame->data(VideoFrame::kUPlane),
- source_frame->data(VideoFrame::kVPlane),
- dest_frame->data(0),
- source_width,
- source_height,
- dest_width,
- dest_height,
- source_frame->stride(VideoFrame::kYPlane),
- source_frame->stride(VideoFrame::kUPlane),
- dest_frame->stride(0),
- media::YV12,
- media::ROTATE_0,
- filter);
- }
- clock_t end = clock();
- return static_cast<double>(end - start) * 1000.0 / num_frames /
- CLOCKS_PER_SEC;
-}
-
-int main(int argc, const char** argv) {
- CommandLine::Init(argc, argv);
- const CommandLine* cmd_line = CommandLine::ForCurrentProcess();
-
- if (!cmd_line->GetLooseValues().empty()) {
- std::cerr << "Usage: " << argv[0] << " [OPTIONS]\n"
- << " --frames=N "
- << "Number of frames\n"
- << " --buffers=N "
- << "Number of buffers\n"
- << " --src-w=N "
- << "Width of the source image\n"
- << " --src-h=N "
- << "Height of the source image\n"
- << " --dest-w=N "
- << "Width of the destination image\n"
- << " --dest-h=N "
- << "Height of the destination image\n"
- << std::endl;
- return 1;
- }
-
- std::string source_width_param(cmd_line->GetSwitchValueASCII("src-w"));
- if (!source_width_param.empty() &&
- !StringToInt(source_width_param, &source_width)) {
- source_width = 0;
- }
-
- std::string source_height_param(cmd_line->GetSwitchValueASCII("src-h"));
- if (!source_height_param.empty() &&
- !StringToInt(source_height_param, &source_height)) {
- source_height = 0;
- }
-
- std::string dest_width_param(cmd_line->GetSwitchValueASCII("dst-w"));
- if (!dest_width_param.empty() &&
- !StringToInt(dest_width_param, &dest_width)) {
- dest_width = 0;
- }
-
- std::string dest_height_param(cmd_line->GetSwitchValueASCII("dst-h"));
- if (!dest_height_param.empty() &&
- !StringToInt(dest_height_param, &dest_height)) {
- dest_height = 0;
- }
-
- std::string frames_param(cmd_line->GetSwitchValueASCII("frames"));
- if (!frames_param.empty() &&
- !StringToInt(frames_param, &num_frames)) {
- num_frames = 0;
- }
-
- std::string buffers_param(cmd_line->GetSwitchValueASCII("buffers"));
- if (!buffers_param.empty() &&
- !StringToInt(buffers_param, &num_buffers)) {
- num_buffers = 0;
- }
-
- std::cout << "Source image size: " << source_width
- << "x" << source_height << std::endl;
- std::cout << "Destination image size: " << dest_width
- << "x" << dest_height << std::endl;
- std::cout << "Number of frames: " << num_frames << std::endl;
- std::cout << "Number of buffers: " << num_buffers << std::endl;
-
- std::cout << "Skia: " << BenchmarkSkia()
- << "ms/frame" << std::endl;
- std::cout << "No filtering: " << BenchmarkFilter(media::FILTER_NONE)
- << "ms/frame" << std::endl;
- std::cout << "Bilinear: " << BenchmarkFilter(media::FILTER_BILINEAR)
- << "ms/frame" << std::endl;
-}