From 188cf636271fe02a1555a59925af13b34e3a409f Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Fri, 28 Jan 2022 22:19:06 +0200 Subject: [PATCH] genesys: Simplify interface of generate_gamma_buffer() --- backend/genesys/gl646.cpp | 5 +---- backend/genesys/gl841.cpp | 5 +---- backend/genesys/low.cpp | 18 ++++++++---------- backend/genesys/low.h | 9 +++------ 4 files changed, 13 insertions(+), 24 deletions(-) diff --git a/backend/genesys/gl646.cpp b/backend/genesys/gl646.cpp index f523b33b1..4777fe2b7 100644 --- a/backend/genesys/gl646.cpp +++ b/backend/genesys/gl646.cpp @@ -1857,10 +1857,7 @@ void CommandSetGl646::send_gamma_table(Genesys_Device* dev, const Genesys_Sensor bits = 12; } - // allocate temporary gamma tables: 16 bits words, 3 channels */ - std::vector gamma(size * 2 * 3); - - sanei_genesys_generate_gamma_buffer(dev, sensor, bits, size-1, size, gamma.data()); + auto gamma = generate_gamma_buffer(dev, sensor, bits, size-1, size); /* table address */ switch (dev->reg.find_reg(0x05).value >> 6) diff --git a/backend/genesys/gl841.cpp b/backend/genesys/gl841.cpp index 00bd63c00..6ea4025c5 100644 --- a/backend/genesys/gl841.cpp +++ b/backend/genesys/gl841.cpp @@ -1534,10 +1534,7 @@ void CommandSetGl841::send_gamma_table(Genesys_Device* dev, const Genesys_Sensor size = 256; - // allocate temporary gamma tables: 16 bits words, 3 channels - std::vector gamma(size * 2 * 3); - - sanei_genesys_generate_gamma_buffer(dev, sensor, 16, 65535, size, gamma.data()); + auto gamma = generate_gamma_buffer(dev, sensor, 16, 65535, size); dev->interface->write_gamma(0x28, 0x0000, gamma.data(), size * 2 * 3); } diff --git a/backend/genesys/low.cpp b/backend/genesys/low.cpp index 7794b5103..66845897e 100644 --- a/backend/genesys/low.cpp +++ b/backend/genesys/low.cpp @@ -654,16 +654,16 @@ std::vector get_gamma_table(Genesys_Device* dev, const Genesys_Se * @param bits number of bits used by gamma * @param max value for gamma * @param size of the gamma table - * @param gamma allocated gamma buffer to fill */ -void sanei_genesys_generate_gamma_buffer(Genesys_Device* dev, +std::vector generate_gamma_buffer(Genesys_Device* dev, const Genesys_Sensor& sensor, - int bits, - int max, - int size, - std::uint8_t* gamma) + int bits, int max, int size) { DBG_HELPER(dbg); + + // the gamma tables are 16 bits words and contain 3 channels + std::vector gamma(size * 2 * 3); + std::vector rgamma = get_gamma_table(dev, sensor, GENESYS_RED); std::vector ggamma = get_gamma_table(dev, sensor, GENESYS_GREEN); std::vector bgamma = get_gamma_table(dev, sensor, GENESYS_BLUE); @@ -713,6 +713,7 @@ void sanei_genesys_generate_gamma_buffer(Genesys_Device* dev, gamma[i * 2 + size * 4 + 1] = (value >> 8) & 0xff; } } + return gamma; } @@ -730,10 +731,7 @@ void sanei_genesys_send_gamma_table(Genesys_Device* dev, const Genesys_Sensor& s size = 256 + 1; - // allocate temporary gamma tables: 16 bits words, 3 channels - std::vector gamma(size * 2 * 3, 255); - - sanei_genesys_generate_gamma_buffer(dev, sensor, 16, 65535, size, gamma.data()); + auto gamma = generate_gamma_buffer(dev, sensor, 16, 65535, size); // loop sending gamma tables NOTE: 0x01000000 not 0x10000000 for (i = 0; i < 3; i++) { diff --git a/backend/genesys/low.h b/backend/genesys/low.h index ab7d37176..85901a870 100644 --- a/backend/genesys/low.h +++ b/backend/genesys/low.h @@ -392,12 +392,9 @@ extern void sanei_genesys_load_lut(unsigned char* lut, int out_min, int out_max, int slope, int offset); -void sanei_genesys_generate_gamma_buffer(Genesys_Device* dev, - const Genesys_Sensor& sensor, - int bits, - int max, - int size, - std::uint8_t* gamma); +std::vector generate_gamma_buffer(Genesys_Device* dev, + const Genesys_Sensor& sensor, + int bits, int max, int size); unsigned session_adjust_output_pixels(unsigned output_pixels, const Genesys_Device& dev, const Genesys_Sensor& sensor,