diff options
author | Michalis Spyrou <michalis.spyrou@arm.com> | 2018-01-10 14:08:50 +0000 |
---|---|---|
committer | Anthony Barbier <anthony.barbier@arm.com> | 2018-11-02 16:43:10 +0000 |
commit | 2b5f0f2574551f59970bb9d710bafad2bc4bbd4a (patch) | |
tree | fd586f56b1285f0d6c52ecefc174eba0a9c8f157 /examples/neon_scale.cpp | |
parent | 571b18a1fca4a5ed4dd24a38cb619f4de43ba3ed (diff) | |
download | ComputeLibrary-2b5f0f2574551f59970bb9d710bafad2bc4bbd4a.tar.gz |
COMPMID-782 Port examples to the new format
Change-Id: Ib178a97c080ff650094d02ee49e2a0aa22376dd0
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/115717
Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
Tested-by: Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'examples/neon_scale.cpp')
-rw-r--r-- | examples/neon_scale.cpp | 91 |
1 files changed, 52 insertions, 39 deletions
diff --git a/examples/neon_scale.cpp b/examples/neon_scale.cpp index 3911f5b3ef..bec277da43 100644 --- a/examples/neon_scale.cpp +++ b/examples/neon_scale.cpp @@ -29,55 +29,68 @@ using namespace arm_compute; using namespace utils; -void main_neon_scale(int argc, char **argv) +class NEONScaleExample : public Example { - PPMLoader ppm; - Image src, dst; - - if(argc < 2) - { - // Print help - std::cout << "Usage: ./build/neon_scale[input_image.ppm]\n\n"; - std::cout << "No input_image provided, creating a dummy 640x480 image\n"; - // Create an empty grayscale 640x480 image - src.allocator()->init(TensorInfo(640, 480, Format::U8)); - } - else +public: + void do_setup(int argc, char **argv) override { - ppm.open(argv[1]); - ppm.init_image(src, Format::U8); - } + PPMLoader ppm; - constexpr int scale_factor = 2; + if(argc < 2) + { + // Print help + std::cout << "Usage: ./build/neon_scale[input_image.ppm]\n\n"; + std::cout << "No input_image provided, creating a dummy 640x480 image\n"; + // Create an empty grayscale 640x480 image + src.allocator()->init(TensorInfo(640, 480, Format::U8)); + } + else + { + ppm.open(argv[1]); + ppm.init_image(src, Format::U8); + } - TensorInfo dst_tensor_info(src.info()->dimension(0) / scale_factor, src.info()->dimension(1) / scale_factor, Format::U8); + constexpr int scale_factor = 2; - // Configure the destination image - dst.allocator()->init(dst_tensor_info); + TensorInfo dst_tensor_info(src.info()->dimension(0) / scale_factor, src.info()->dimension(1) / scale_factor, + Format::U8); - // Create and initialize a Scale function object: - NEScale scale; - scale.configure(&src, &dst, InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED); + // Configure the destination image + dst.allocator()->init(dst_tensor_info); - // Allocate all the images - src.allocator()->allocate(); - dst.allocator()->allocate(); - // Fill the input image with the content of the PPM image if a filename was provided: - if(ppm.is_open()) - { - ppm.fill_image(src); - } + // Configure Scale function object: + scale.configure(&src, &dst, InterpolationPolicy::NEAREST_NEIGHBOR, BorderMode::UNDEFINED); - // Run the scale operation: - scale.run(); + // Allocate all the images + src.allocator()->allocate(); + dst.allocator()->allocate(); - // Save the result to file: - if(ppm.is_open()) + // Fill the input image with the content of the PPM image if a filename was provided: + if(ppm.is_open()) + { + ppm.fill_image(src); + output_filename = std::string(argv[1]) + "_out.ppm"; + } + } + void do_run() override { - const std::string output_filename = std::string(argv[1]) + "_out.ppm"; - save_to_ppm(dst, output_filename); + // Run the scale operation: + scale.run(); } -} + void do_teardown() override + { + // Save the result to file: + if(!output_filename.empty()) + { + save_to_ppm(dst, output_filename); // save_to_ppm maps and unmaps the image to store as PPM + } + } + +private: + Image src{}, dst{}; + NEScale scale{}; + std::string output_filename{}; +}; /** Main program for convolution test * @@ -86,5 +99,5 @@ void main_neon_scale(int argc, char **argv) */ int main(int argc, char **argv) { - return utils::run_example(argc, argv, main_neon_scale); + return utils::run_example<NEONScaleExample>(argc, argv); } |