kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Simplify interface of generate_gamma_buffer()
rodzic
d8ebd5a4d7
commit
188cf63627
|
@ -1857,10 +1857,7 @@ void CommandSetGl646::send_gamma_table(Genesys_Device* dev, const Genesys_Sensor
|
||||||
bits = 12;
|
bits = 12;
|
||||||
}
|
}
|
||||||
|
|
||||||
// allocate temporary gamma tables: 16 bits words, 3 channels */
|
auto gamma = generate_gamma_buffer(dev, sensor, bits, size-1, size);
|
||||||
std::vector<std::uint8_t> gamma(size * 2 * 3);
|
|
||||||
|
|
||||||
sanei_genesys_generate_gamma_buffer(dev, sensor, bits, size-1, size, gamma.data());
|
|
||||||
|
|
||||||
/* table address */
|
/* table address */
|
||||||
switch (dev->reg.find_reg(0x05).value >> 6)
|
switch (dev->reg.find_reg(0x05).value >> 6)
|
||||||
|
|
|
@ -1534,10 +1534,7 @@ void CommandSetGl841::send_gamma_table(Genesys_Device* dev, const Genesys_Sensor
|
||||||
|
|
||||||
size = 256;
|
size = 256;
|
||||||
|
|
||||||
// allocate temporary gamma tables: 16 bits words, 3 channels
|
auto gamma = generate_gamma_buffer(dev, sensor, 16, 65535, size);
|
||||||
std::vector<std::uint8_t> gamma(size * 2 * 3);
|
|
||||||
|
|
||||||
sanei_genesys_generate_gamma_buffer(dev, sensor, 16, 65535, size, gamma.data());
|
|
||||||
|
|
||||||
dev->interface->write_gamma(0x28, 0x0000, gamma.data(), size * 2 * 3);
|
dev->interface->write_gamma(0x28, 0x0000, gamma.data(), size * 2 * 3);
|
||||||
}
|
}
|
||||||
|
|
|
@ -654,16 +654,16 @@ std::vector<std::uint16_t> get_gamma_table(Genesys_Device* dev, const Genesys_Se
|
||||||
* @param bits number of bits used by gamma
|
* @param bits number of bits used by gamma
|
||||||
* @param max value for gamma
|
* @param max value for gamma
|
||||||
* @param size of the gamma table
|
* @param size of the gamma table
|
||||||
* @param gamma allocated gamma buffer to fill
|
|
||||||
*/
|
*/
|
||||||
void sanei_genesys_generate_gamma_buffer(Genesys_Device* dev,
|
std::vector<std::uint8_t> generate_gamma_buffer(Genesys_Device* dev,
|
||||||
const Genesys_Sensor& sensor,
|
const Genesys_Sensor& sensor,
|
||||||
int bits,
|
int bits, int max, int size)
|
||||||
int max,
|
|
||||||
int size,
|
|
||||||
std::uint8_t* gamma)
|
|
||||||
{
|
{
|
||||||
DBG_HELPER(dbg);
|
DBG_HELPER(dbg);
|
||||||
|
|
||||||
|
// the gamma tables are 16 bits words and contain 3 channels
|
||||||
|
std::vector<std::uint8_t> gamma(size * 2 * 3);
|
||||||
|
|
||||||
std::vector<std::uint16_t> rgamma = get_gamma_table(dev, sensor, GENESYS_RED);
|
std::vector<std::uint16_t> rgamma = get_gamma_table(dev, sensor, GENESYS_RED);
|
||||||
std::vector<std::uint16_t> ggamma = get_gamma_table(dev, sensor, GENESYS_GREEN);
|
std::vector<std::uint16_t> ggamma = get_gamma_table(dev, sensor, GENESYS_GREEN);
|
||||||
std::vector<std::uint16_t> bgamma = get_gamma_table(dev, sensor, GENESYS_BLUE);
|
std::vector<std::uint16_t> 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;
|
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;
|
size = 256 + 1;
|
||||||
|
|
||||||
// allocate temporary gamma tables: 16 bits words, 3 channels
|
auto gamma = generate_gamma_buffer(dev, sensor, 16, 65535, size);
|
||||||
std::vector<std::uint8_t> gamma(size * 2 * 3, 255);
|
|
||||||
|
|
||||||
sanei_genesys_generate_gamma_buffer(dev, sensor, 16, 65535, size, gamma.data());
|
|
||||||
|
|
||||||
// loop sending gamma tables NOTE: 0x01000000 not 0x10000000
|
// loop sending gamma tables NOTE: 0x01000000 not 0x10000000
|
||||||
for (i = 0; i < 3; i++) {
|
for (i = 0; i < 3; i++) {
|
||||||
|
|
|
@ -392,12 +392,9 @@ extern void sanei_genesys_load_lut(unsigned char* lut,
|
||||||
int out_min, int out_max,
|
int out_min, int out_max,
|
||||||
int slope, int offset);
|
int slope, int offset);
|
||||||
|
|
||||||
void sanei_genesys_generate_gamma_buffer(Genesys_Device* dev,
|
std::vector<std::uint8_t> generate_gamma_buffer(Genesys_Device* dev,
|
||||||
const Genesys_Sensor& sensor,
|
const Genesys_Sensor& sensor,
|
||||||
int bits,
|
int bits, int max, int size);
|
||||||
int max,
|
|
||||||
int size,
|
|
||||||
std::uint8_t* gamma);
|
|
||||||
|
|
||||||
unsigned session_adjust_output_pixels(unsigned output_pixels,
|
unsigned session_adjust_output_pixels(unsigned output_pixels,
|
||||||
const Genesys_Device& dev, const Genesys_Sensor& sensor,
|
const Genesys_Device& dev, const Genesys_Sensor& sensor,
|
||||||
|
|
Ładowanie…
Reference in New Issue