diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-05-31 21:49:41 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-05-31 21:49:41 +0200 |
| commit | 46ef94502b3df6f4142c79e6926df34ca619f9dc (patch) | |
| tree | 1b7449bf4caaeaf3d0d834e68aa61c1305a99d16 /benchmark | |
| parent | da78a8adb2302b15f89d353fa6610385f0bf2a69 (diff) | |
Add very simple benchmark for rgb_to_xyz.
Diffstat (limited to 'benchmark')
| -rw-r--r-- | benchmark/rgb_to_xyz.cc | 69 | ||||
| -rw-r--r-- | benchmark/wscript | 42 |
2 files changed, 111 insertions, 0 deletions
diff --git a/benchmark/rgb_to_xyz.cc b/benchmark/rgb_to_xyz.cc new file mode 100644 index 00000000..7b4400ec --- /dev/null +++ b/benchmark/rgb_to_xyz.cc @@ -0,0 +1,69 @@ +/* + Copyright (C) 2020 Carl Hetherington <cth@carlh.net> + + This file is part of libdcp. + + libdcp is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + libdcp is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with libdcp. If not, see <http://www.gnu.org/licenses/>. + + In addition, as a special exception, the copyright holders give + permission to link the code of portions of this program with the + OpenSSL library under certain conditions as described in each + individual source file, and distribute linked combinations + including the two. + + You must obey the GNU General Public License in all respects + for all of the code used other than OpenSSL. If you modify + file(s) with this exception, you may extend this exception to your + version of the file(s), but you are not obligated to do so. If you + do not wish to do so, delete this exception statement from your + version. If you delete this exception statement from all source + files in the program, then also delete it here. +*/ + +#include "openjpeg_image.h" +#include "rgb_xyz.h" +#include "colour_conversion.h" +#include <boost/scoped_array.hpp> +#include <stdint.h> + +using boost::scoped_array; +using boost::shared_ptr; + +int const trials = 256; + +int +main () +{ + srand (1); + + dcp::Size size(1998, 1080); + + scoped_array<uint8_t> rgb (new uint8_t[size.width * size.height * 6]); + for (int y = 0; y < size.height; ++y) { + uint16_t* p = reinterpret_cast<uint16_t*> (rgb.get() + y * size.width * 6); + for (int x = 0; x < size.width; ++x) { + for (int c = 0; c < 3; ++c) { + *p = (rand() & 0xfff) << 4; + ++p; + } + } + } + + shared_ptr<dcp::OpenJPEGImage> xyz; + for (int i = 0; i < trials; ++i) { + xyz = dcp::rgb_to_xyz (rgb.get(), size, size.width * 6, dcp::ColourConversion::srgb_to_xyz()); + } +} + + diff --git a/benchmark/wscript b/benchmark/wscript new file mode 100644 index 00000000..3e748972 --- /dev/null +++ b/benchmark/wscript @@ -0,0 +1,42 @@ +# +# Copyright (C) 2020 Carl Hetherington <cth@carlh.net> +# +# This file is part of libdcp. +# +# libdcp is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# libdcp is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with libdcp. If not, see <http://www.gnu.org/licenses/>. +# +# In addition, as a special exception, the copyright holders give +# permission to link the code of portions of this program with the +# OpenSSL library under certain conditions as described in each +# individual source file, and distribute linked combinations +# including the two. +# +# You must obey the GNU General Public License in all respects +# for all of the code used other than OpenSSL. If you modify +# file(s) with this exception, you may extend this exception to your +# version of the file(s), but you are not obligated to do so. If you +# do not wish to do so, delete this exception statement from your +# version. If you delete this exception statement from all source +# files in the program, then also delete it here. +# + +def build(bld): + for p in ['rgb_to_xyz']: + obj = bld(features='cxx cxxprogram') + obj.name = p + obj.uselib = 'BOOST_FILESYSTEM' + obj.cppflags = ['-g', '-O2'] + obj.use = 'libdcp%s' % bld.env.API_VERSION + obj.source = "%s.cc" % p + obj.target = p |
