diff options
| author | Nikita Kostovsky <nikita@kostovsky.me> | 2025-11-30 01:19:33 +0100 |
|---|---|---|
| committer | Nikita Kostovsky <nikita@kostovsky.me> | 2025-11-30 01:19:33 +0100 |
| commit | cf87257fc3b7132eccf305f3eca9ee56c151d913 (patch) | |
| tree | 29ed0aed55050b27a2e589322a488ea29041ba30 /src/image.cpp | |
| parent | 81fd05d07b51e9cbb25de2d8bdbd4a51ead36994 (diff) | |
don't waste memory
Diffstat (limited to 'src/image.cpp')
| -rw-r--r-- | src/image.cpp | 33 |
1 files changed, 28 insertions, 5 deletions
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<Pixels> Image::sharedPixels() +// std::shared_ptr<Pixels> Image::sharedPixels() +// { +// t.start(); + +// static auto result = std::make_shared<Pixels>(); +// 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<Pixels>(); - 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) { |
