From cf87257fc3b7132eccf305f3eca9ee56c151d913 Mon Sep 17 00:00:00 2001 From: Nikita Kostovsky Date: Sun, 30 Nov 2025 01:19:33 +0100 Subject: don't waste memory --- src/image.cpp | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) (limited to 'src/image.cpp') diff --git a/src/image.cpp b/src/image.cpp index b2cd535..1dffcd9 100644 --- a/src/image.cpp +++ b/src/image.cpp @@ -197,17 +197,34 @@ void Image::rotate() rot_elapsed_ns += t.nsecsElapsed(); } -std::shared_ptr Image::sharedPixels() +// std::shared_ptr Image::sharedPixels() +// { +// t.start(); + +// static auto result = std::make_shared(); +// result->counters = counters; + +// std::transform(rotated_cw.cbegin(), rotated_cw.cend(), result->pixels.begin(), process_column); +// pix_elapsed_ns += t.nsecsElapsed(); + +// return result; +// } + +Pixels &Image::getPixels() { + if (pixels) + return *pixels; + t.start(); - static auto result = std::make_shared(); - result->counters = counters; + // overhead of this? + pixels = Pixels{}; + pixels->counters = counters; - std::transform(rotated_cw.cbegin(), rotated_cw.cend(), result->pixels.begin(), process_column); + std::transform(rotated_cw.cbegin(), rotated_cw.cend(), pixels->pixels.begin(), process_column); pix_elapsed_ns += t.nsecsElapsed(); - return result; + return *pixels; } void Image::copyFromData(const void *src, size_t size) @@ -246,6 +263,12 @@ void Image::copyFromData(const void *src, size_t size) } } +void Image::reset() +{ + counters = Counters{}; + pixels = std::nullopt; +} + void Image::copy(data_t &dst, const radxa_data_t &src) { for (size_t i = 0; i < img_height; ++i) { -- cgit v1.2.3-70-g09d2