summaryrefslogtreecommitdiff
path: root/src/image.cpp
diff options
context:
space:
mode:
authorNikita Kostovsky <nikita@kostovsky.me>2025-11-30 01:19:33 +0100
committerNikita Kostovsky <nikita@kostovsky.me>2025-11-30 01:19:33 +0100
commitcf87257fc3b7132eccf305f3eca9ee56c151d913 (patch)
tree29ed0aed55050b27a2e589322a488ea29041ba30 /src/image.cpp
parent81fd05d07b51e9cbb25de2d8bdbd4a51ead36994 (diff)
don't waste memory
Diffstat (limited to 'src/image.cpp')
-rw-r--r--src/image.cpp33
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) {