From 251f7a934525e0c846c95cc729664e95928e8aa5 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sat, 21 Oct 2023 23:03:43 +0200 Subject: Support integer LUTs. --- src/transfer_function.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/transfer_function.h') diff --git a/src/transfer_function.h b/src/transfer_function.h index 033c3045..2340ebfd 100644 --- a/src/transfer_function.h +++ b/src/transfer_function.h @@ -62,6 +62,7 @@ public: /** @return A look-up table (of size 2^bit_depth) */ std::vector const& double_lut(double from, double to, int bit_depth, bool inverse) const; + std::vector const& int_lut(double from, double to, int bit_depth, bool inverse, int scale) const; virtual bool about_equal (std::shared_ptr other, double epsilon) const = 0; @@ -69,11 +70,15 @@ protected: virtual std::vector make_double_lut(double from, double to, int bit_depth, bool inverse) const = 0; private: + std::vector make_int_lut(double from, double to, int bit_depth, bool inverse, int scale) const; + std::vector const& double_lut_unlocked(double from, double to, int bit_depth, bool inverse) const; + struct LUTDescriptor { double from; double to; int bit_depth; bool inverse; + int scale; bool operator==(LUTDescriptor const& other) const; }; @@ -82,8 +87,9 @@ private: std::size_t operator()(LUTDescriptor const& desc) const; }; - mutable std::unordered_map, LUTDescriptorHasher> _luts; - /** mutex to protect _luts */ + mutable std::unordered_map, LUTDescriptorHasher> _double_luts; + mutable std::unordered_map, LUTDescriptorHasher> _int_luts; + /** mutex to protect _double_luts and _int_luts */ mutable boost::mutex _mutex; }; -- cgit v1.2.3