* backend/genesys.c: Some annotations about endianess of scanned data

* backend/genesys_gl646.c: Convert gamma tables to little endian
merge-requests/1/head
Pierre Willenbrock 2006-03-09 18:46:41 +00:00
rodzic 385fa20988
commit 50fc452e8b
3 zmienionych plików z 33 dodań i 11 usunięć

Wyświetl plik

@ -1,3 +1,9 @@
2006-03-09 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
* backend/genesys.c: Some annotations about endianess of scanned
data
* backend/genesys_gl646.c: Convert gamma tables to little endian
2006-03-06 Stéphane Voltz <stefdev@modulonet.fr>
* backend/genesys_gl646.c: power saving fixes

Wyświetl plik

@ -1238,7 +1238,15 @@ sanei_genesys_exposure_time (Genesys_Device * dev, Genesys_Register_Set * reg,
/* ? */
/* Sends a block of shading information to the scanner.
The data is placed at address 0x0000 for color mode, gray mode and
unconditionally for the following CCD chips: HP2300, HP2400 and HP5345
In the other cases (lineart, halftone on ccd chips not mentioned) the
addresses are 0x2a00 for dpihw==0, 0x5500 for dpihw==1 and 0xa800 for
dpihw==2. //Note: why this?
The data needs to be of size "size", and in little endian byte order.
*/
static SANE_Status
genesys_send_offset_and_shading (Genesys_Device * dev, u_int8_t * data,
int size)
@ -2112,7 +2120,9 @@ genesys_coarse_calibration (Genesys_Device * dev)
return status;
}
/* Averages image data.
average_data and calibration_data are little endian 16 bit words.
*/
static void
genesys_average_data (u_int8_t * average_data,
u_int8_t * calibration_data, u_int16_t lines,
@ -2683,7 +2693,7 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
{
SANE_Status status;
u_int16_t pixels_per_line;
u_int8_t *shading_data;
u_int8_t *shading_data;/*contains 16bit words in little endian*/
u_int8_t channels;
int x, j, o;
unsigned int i;

Wyświetl plik

@ -3095,7 +3095,7 @@ gl646_send_gamma_table (Genesys_Device * dev, SANE_Bool generic)
int size;
int address;
int status;
u_int16_t *gamma;
u_int8_t *gamma;
int i;
/* don't send anything if no specific gamma table defined */
@ -3131,7 +3131,7 @@ gl646_send_gamma_table (Genesys_Device * dev, SANE_Bool generic)
}
/* allocate temporary gamma tables: 16 bits words, 3 channels */
gamma = (u_int16_t *) malloc (size * 2 * 3);
gamma = (u_int8_t *) malloc (size * 2 * 3);
if (!gamma)
return SANE_STATUS_NO_MEM;
@ -3141,9 +3141,12 @@ gl646_send_gamma_table (Genesys_Device * dev, SANE_Bool generic)
/* fill with default values */
for (i = 0; i < size; i++)
{
gamma[i] = (u_int16_t) i;
gamma[i + size] = (u_int16_t) i;
gamma[i + size * 2] = (u_int16_t) i;
gamma[i * 2] = i & 0xff;
gamma[i * 2 + 1] = i >> 8;
gamma[i * 2 + size] = i & 0xff;
gamma[i * 2 + 1 + size] = i >> 8;
gamma[i * 2 + size * 2] = i & 0xff;
gamma[i * 2 + 1 + size * 2] = i >> 8;
}
}
else
@ -3151,9 +3154,12 @@ gl646_send_gamma_table (Genesys_Device * dev, SANE_Bool generic)
/* copy sensor specific's gamma tables */
for (i = 0; i < size; i++)
{
gamma[i] = dev->sensor.red_gamma_table[i];
gamma[i + size] = dev->sensor.green_gamma_table[i];
gamma[i + size * 2] = dev->sensor.blue_gamma_table[i];
gamma[i * 2] = dev->sensor.red_gamma_table[i] & 0xff;
gamma[i * 2 + 1] = dev->sensor.red_gamma_table[i] >> 8;
gamma[i * 2 + size] = dev->sensor.green_gamma_table[i] & 0xff;
gamma[i * 2 + 1 + size] = dev->sensor.green_gamma_table[i] >> 8;
gamma[i * 2 + size * 2] = dev->sensor.blue_gamma_table[i] & 0xff;
gamma[i * 2 + 1 + size * 2] = dev->sensor.blue_gamma_table[i] >> 8;
}
}