kopia lustrzana https://gitlab.com/sane-project/backends
backend/avision: i1120: add option AV_GAMMA_UINT16
Kodak i1120 has a different gamma table format that looks like a uint16/double array. Implement it and add an option for it. Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>merge-requests/244/head
rodzic
d8bf392424
commit
e54c9602e9
|
@ -5282,11 +5282,24 @@ send_gamma (Avision_Scanner* s)
|
||||||
v2 = 0;
|
v2 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (k = 0; k < gamma_values; ++ k, ++ i) {
|
if (s->hw->hw->feature_type & AV_GAMMA_UINT16) {
|
||||||
gamma_data [i] = (uint8_t)
|
/* Use some pointer-cast magic to use gamma_data as uint16 array
|
||||||
(((v1 * (gamma_values - k)) + (v2 * k) ) / (double) gamma_values);
|
and write as big-endian since values get swapped */
|
||||||
}
|
((uint16_t *)gamma_data) [i++] = (uint16_t)v1<<8;
|
||||||
|
} else {
|
||||||
|
/* interpolate gamma_values to gamma_data */
|
||||||
|
for (k = 0; k < gamma_values; ++ k, ++ i) {
|
||||||
|
gamma_data [i] = (uint8_t)
|
||||||
|
(((v1 * (gamma_values - k)) + (v2 * k) ) / (double) gamma_values);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* with AV_GAMMA_UINT16 only every second value is filled, so double i */
|
||||||
|
if (s->hw->hw->feature_type & AV_GAMMA_UINT16)
|
||||||
|
i *= 2;
|
||||||
|
|
||||||
/* fill the gamma table - (e.g.) if 11bit (old protocol) table */
|
/* fill the gamma table - (e.g.) if 11bit (old protocol) table */
|
||||||
{
|
{
|
||||||
size_t t_i = i-1;
|
size_t t_i = i-1;
|
||||||
|
|
|
@ -222,6 +222,9 @@ typedef struct Avision_HWEntry {
|
||||||
/* Kodak i1120 needs gamma = 1.0 to give decent results */
|
/* Kodak i1120 needs gamma = 1.0 to give decent results */
|
||||||
#define AV_GAMMA_10 ((uint64_t)1<<41)
|
#define AV_GAMMA_10 ((uint64_t)1<<41)
|
||||||
|
|
||||||
|
/* Kodak i1120 has a different gamma table format (like a uint16/double array) */
|
||||||
|
#define AV_GAMMA_UINT16 ((uint64_t)1<<42)
|
||||||
|
|
||||||
/* maybe more ...*/
|
/* maybe more ...*/
|
||||||
uint64_t feature_type;
|
uint64_t feature_type;
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue