genesys: Simplify calculation of shading upload parameters on gl124

fix-build-obselete-jpeg
Povilas Kanapickas 2020-03-21 00:03:24 +02:00
rodzic 115bbf6a24
commit e54f15bcc8
4 zmienionych plików z 227 dodań i 30 usunięć

Wyświetl plik

@ -1167,8 +1167,7 @@ void CommandSetGl124::send_shading_data(Genesys_Device* dev, const Genesys_Senso
std::uint8_t* data, int size) const
{
DBG_HELPER_ARGS(dbg, "writing %d bytes of shading data", size);
uint32_t addr, length, x, factor, segcnt, pixels, i;
uint16_t dpiset,dpihw;
std::uint32_t addr, length, segcnt, pixels, i;
uint8_t *ptr, *src;
/* logical size of a color as seen by generic code of the frontend */
@ -1181,12 +1180,6 @@ void CommandSetGl124::send_shading_data(Genesys_Device* dev, const Genesys_Senso
endpixel=segcnt;
}
/* compute deletion factor */
dpiset = dev->reg.get16(REG_DPISET);
dpihw = sensor.get_register_hwdpi(dpiset);
factor=dpihw/dpiset;
DBG( DBG_io2, "%s: factor=%d\n",__func__,factor);
/* turn pixel value into bytes 2x16 bits words */
strpixel*=2*2; /* 2 words of 2 bytes */
endpixel*=2*2;
@ -1196,7 +1189,7 @@ void CommandSetGl124::send_shading_data(Genesys_Device* dev, const Genesys_Senso
dev->interface->record_key_value("shading_start_pixel", std::to_string(strpixel));
dev->interface->record_key_value("shading_pixels", std::to_string(pixels));
dev->interface->record_key_value("shading_length", std::to_string(length));
dev->interface->record_key_value("shading_factor", std::to_string(factor));
dev->interface->record_key_value("shading_factor", std::to_string(sensor.shading_factor));
dev->interface->record_key_value("shading_segcnt", std::to_string(segcnt));
dev->interface->record_key_value("shading_segment_count",
std::to_string(dev->session.segment_count));
@ -1212,8 +1205,7 @@ void CommandSetGl124::send_shading_data(Genesys_Device* dev, const Genesys_Senso
ptr = buffer.data();
/* iterate on both sensor segment */
for(x=0;x<pixels;x+=4*factor)
{
for (unsigned x = 0; x < pixels; x += 4 * sensor.shading_factor) {
/* coefficient source */
src=data+x+strpixel+i*length;

Wyświetl plik

@ -129,6 +129,7 @@ std::ostream& operator<<(std::ostream& out, const Genesys_Sensor& sensor)
<< " logical_dpihw_override: " << sensor.logical_dpihw_override << '\n'
<< " dpiset_override: " << sensor.dpiset_override << '\n'
<< " ccd_size_divisor: " << sensor.ccd_size_divisor << '\n'
<< " shading_factor: " << sensor.shading_factor << '\n'
<< " pixel_count_ratio: " << sensor.pixel_count_ratio << '\n'
<< " black_pixels: " << sensor.black_pixels << '\n'
<< " dummy_pixel: " << sensor.dummy_pixel << '\n'

Wyświetl plik

@ -284,6 +284,9 @@ struct Genesys_Sensor {
// CCD may present itself as half or quarter-size CCD on certain resolutions
int ccd_size_divisor = 1;
// How many real pixels correspond to one shading pixel that is sent to the scanner
unsigned shading_factor = 1;
// This defines the ratio between logical pixel coordinates and the pixel coordinates sent to
// the scanner.
Ratio pixel_count_ratio = Ratio{1, 1};
@ -362,6 +365,7 @@ struct Genesys_Sensor {
resolutions == other.resolutions &&
method == other.method &&
ccd_size_divisor == other.ccd_size_divisor &&
shading_factor == other.shading_factor &&
pixel_count_ratio == other.pixel_count_ratio &&
black_pixels == other.black_pixels &&
dummy_pixel == other.dummy_pixel &&
@ -389,6 +393,7 @@ void serialize(Stream& str, Genesys_Sensor& x)
serialize(str, x.resolutions);
serialize(str, x.method);
serialize(str, x.ccd_size_divisor);
serialize(str, x.shading_factor);
serialize(str, x.pixel_count_ratio);
serialize(str, x.black_pixels);
serialize(str, x.dummy_pixel);

Wyświetl plik

@ -1958,12 +1958,13 @@ void genesys_init_sensor_tables()
int exposure_lperiod;
SensorExposure exposure;
Ratio pixel_count_ratio;
unsigned shading_factor;
std::vector<unsigned> segment_order;
GenesysRegisterSettingSet custom_regs;
};
CustomSensorSettings custom_settings[] = {
{ { 75, 100, 150 }, 4608, { 462, 609, 453 }, Ratio{1, 4}, std::vector<unsigned>{}, {
{ { 75 }, 4608, { 462, 609, 453 }, Ratio{1, 4}, 4, std::vector<unsigned>{}, {
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0c },
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
@ -1980,7 +1981,41 @@ void genesys_init_sensor_tables()
{ 0x98, 0x21 },
}
},
{ { 300 }, 4608, { 462, 609, 453 }, Ratio{1, 4}, std::vector<unsigned>{}, {
{ { 100 }, 4608, { 462, 609, 453 }, Ratio{1, 4}, 3, std::vector<unsigned>{}, {
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0c },
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
{ 0x56, 0x04 }, { 0x57, 0x04 }, { 0x58, 0x04 }, { 0x59, 0x04 },
{ 0x5a, 0x1a }, { 0x5b, 0x00 }, { 0x5c, 0xc0 },
{ 0x61, 0x20 },
{ 0x70, 0x06 }, { 0x71, 0x08 }, { 0x72, 0x08 }, { 0x73, 0x0a },
{ 0x74, 0x00 }, { 0x75, 0x00 }, { 0x76, 0x1e },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x9f },
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x55 },
{ 0x88, 0x00 }, { 0x89, 0x65 },
{ 0x93, 0x00 }, { 0x94, 0x0a }, { 0x95, 0x18 },
{ 0x96, 0x00 }, { 0x97, 0x9a },
{ 0x98, 0x21 },
}
},
{ { 150 }, 4608, { 462, 609, 453 }, Ratio{1, 4}, 2, std::vector<unsigned>{}, {
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0c },
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
{ 0x56, 0x04 }, { 0x57, 0x04 }, { 0x58, 0x04 }, { 0x59, 0x04 },
{ 0x5a, 0x1a }, { 0x5b, 0x00 }, { 0x5c, 0xc0 },
{ 0x61, 0x20 },
{ 0x70, 0x06 }, { 0x71, 0x08 }, { 0x72, 0x08 }, { 0x73, 0x0a },
{ 0x74, 0x00 }, { 0x75, 0x00 }, { 0x76, 0x1e },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x9f },
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x55 },
{ 0x88, 0x00 }, { 0x89, 0x65 },
{ 0x93, 0x00 }, { 0x94, 0x0a }, { 0x95, 0x18 },
{ 0x96, 0x00 }, { 0x97, 0x9a },
{ 0x98, 0x21 },
}
},
{ { 300 }, 4608, { 462, 609, 453 }, Ratio{1, 4}, 1, std::vector<unsigned>{}, {
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x0c },
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
@ -1997,7 +2032,7 @@ void genesys_init_sensor_tables()
{ 0x98, 0x21 },
}
},
{ { 600 }, 5360, { 823, 1117, 805 }, Ratio{1, 4}, std::vector<unsigned>{}, {
{ { 600 }, 5360, { 823, 1117, 805 }, Ratio{1, 4}, 1, std::vector<unsigned>{}, {
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x0a },
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
@ -2014,7 +2049,7 @@ void genesys_init_sensor_tables()
{ 0x98, 0x21 },
},
},
{ { 1200 }, 10528, { 6071, 6670, 6042 }, Ratio{1, 4}, { 0, 1 }, {
{ { 1200 }, 10528, { 6071, 6670, 6042 }, Ratio{1, 4}, 1, { 0, 1 }, {
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 },{ 0x20, 0x08 },
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
@ -2031,7 +2066,7 @@ void genesys_init_sensor_tables()
{ 0x98, 0x22 },
}
},
{ { 2400 }, 20864, { 7451, 8661, 7405 }, Ratio{1, 4}, { 0, 2, 1, 3 }, {
{ { 2400 }, 20864, { 7451, 8661, 7405 }, Ratio{1, 4}, 1, { 0, 2, 1, 3 }, {
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x06 },
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
@ -2055,6 +2090,7 @@ void genesys_init_sensor_tables()
sensor.exposure_lperiod = setting.exposure_lperiod;
sensor.exposure = setting.exposure;
sensor.pixel_count_ratio = setting.pixel_count_ratio;
sensor.shading_factor = setting.shading_factor;
sensor.segment_order = setting.segment_order;
sensor.custom_regs = setting.custom_regs;
s_sensors->push_back(sensor);
@ -2081,13 +2117,13 @@ void genesys_init_sensor_tables()
int exposure_lperiod;
SensorExposure exposure;
Ratio pixel_count_ratio;
unsigned shading_factor;
std::vector<unsigned> segment_order;
GenesysRegisterSettingSet custom_regs;
};
CustomSensorSettings custom_settings[] = {
{ { 75, 100, 150, 300 },
4608, { 1244, 1294, 1144 }, Ratio{1, 4}, std::vector<unsigned>{}, {
{ { 75 }, 4608, { 1244, 1294, 1144 }, Ratio{1, 4}, 4, std::vector<unsigned>{}, {
{ 0x16, 0x15 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x02 },
{ 0x52, 0x04 }, { 0x53, 0x06 }, { 0x54, 0x00 }, { 0x55, 0x02 },
@ -2104,7 +2140,58 @@ void genesys_init_sensor_tables()
{ 0x98, 0x21 },
},
},
{ { 600 }, 5360, { 2394, 2444, 2144 }, Ratio{1, 4}, std::vector<unsigned>{}, {
{ { 100 }, 4608, { 1244, 1294, 1144 }, Ratio{1, 4}, 3, std::vector<unsigned>{}, {
{ 0x16, 0x15 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x02 },
{ 0x52, 0x04 }, { 0x53, 0x06 }, { 0x54, 0x00 }, { 0x55, 0x02 },
{ 0x56, 0x04 }, { 0x57, 0x04 }, { 0x58, 0x04 }, { 0x59, 0x04 },
{ 0x5a, 0x3a }, { 0x5b, 0x00 }, { 0x5c, 0x00 },
{ 0x61, 0x20 },
{ 0x70, 0x00 }, { 0x71, 0x1f }, { 0x72, 0x08 }, { 0x73, 0x0a },
{ 0x74, 0x00 }, { 0x75, 0x00 }, { 0x76, 0x0f },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x55 },
{ 0x88, 0x00 }, { 0x89, 0x5e },
{ 0x93, 0x00 }, { 0x94, 0x09 }, { 0x95, 0xf8 },
{ 0x96, 0x00 }, { 0x97, 0x70 },
{ 0x98, 0x21 },
},
},
{ { 150 }, 4608, { 1244, 1294, 1144 }, Ratio{1, 4}, 2, std::vector<unsigned>{}, {
{ 0x16, 0x15 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x02 },
{ 0x52, 0x04 }, { 0x53, 0x06 }, { 0x54, 0x00 }, { 0x55, 0x02 },
{ 0x56, 0x04 }, { 0x57, 0x04 }, { 0x58, 0x04 }, { 0x59, 0x04 },
{ 0x5a, 0x3a }, { 0x5b, 0x00 }, { 0x5c, 0x00 },
{ 0x61, 0x20 },
{ 0x70, 0x00 }, { 0x71, 0x1f }, { 0x72, 0x08 }, { 0x73, 0x0a },
{ 0x74, 0x00 }, { 0x75, 0x00 }, { 0x76, 0x0f },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x55 },
{ 0x88, 0x00 }, { 0x89, 0x5e },
{ 0x93, 0x00 }, { 0x94, 0x09 }, { 0x95, 0xf8 },
{ 0x96, 0x00 }, { 0x97, 0x70 },
{ 0x98, 0x21 },
},
},
{ { 300 }, 4608, { 1244, 1294, 1144 }, Ratio{1, 4}, 1, std::vector<unsigned>{}, {
{ 0x16, 0x15 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x02 },
{ 0x52, 0x04 }, { 0x53, 0x06 }, { 0x54, 0x00 }, { 0x55, 0x02 },
{ 0x56, 0x04 }, { 0x57, 0x04 }, { 0x58, 0x04 }, { 0x59, 0x04 },
{ 0x5a, 0x3a }, { 0x5b, 0x00 }, { 0x5c, 0x00 },
{ 0x61, 0x20 },
{ 0x70, 0x00 }, { 0x71, 0x1f }, { 0x72, 0x08 }, { 0x73, 0x0a },
{ 0x74, 0x00 }, { 0x75, 0x00 }, { 0x76, 0x0f },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x55 },
{ 0x88, 0x00 }, { 0x89, 0x5e },
{ 0x93, 0x00 }, { 0x94, 0x09 }, { 0x95, 0xf8 },
{ 0x96, 0x00 }, { 0x97, 0x70 },
{ 0x98, 0x21 },
},
},
{ { 600 }, 5360, { 2394, 2444, 2144 }, Ratio{1, 4}, 1, std::vector<unsigned>{}, {
{ 0x16, 0x11 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x02 },
{ 0x52, 0x04 }, { 0x53, 0x06 }, { 0x54, 0x00 }, { 0x55, 0x02 },
@ -2121,7 +2208,7 @@ void genesys_init_sensor_tables()
{ 0x98, 0x21 },
},
},
{ { 1200 }, 10528, { 4694, 4644, 4094 }, Ratio{1, 2}, std::vector<unsigned>{}, {
{ { 1200 }, 10528, { 4694, 4644, 4094 }, Ratio{1, 2}, 1, std::vector<unsigned>{}, {
{ 0x16, 0x15 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x02 },
{ 0x52, 0x04 }, { 0x53, 0x06 }, { 0x54, 0x00 }, { 0x55, 0x02 },
@ -2138,7 +2225,7 @@ void genesys_init_sensor_tables()
{ 0x98, 0x21 },
},
},
{ { 2400 }, 20864, { 8944, 8144, 7994 }, Ratio{1, 1}, std::vector<unsigned>{}, {
{ { 2400 }, 20864, { 8944, 8144, 7994 }, Ratio{1, 1}, 1, std::vector<unsigned>{}, {
{ 0x16, 0x11 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x02 },
{ 0x52, 0x04 }, { 0x53, 0x06 }, { 0x54, 0x00 }, { 0x55, 0x02 },
@ -2162,6 +2249,7 @@ void genesys_init_sensor_tables()
sensor.exposure_lperiod = setting.exposure_lperiod;
sensor.exposure = setting.exposure;
sensor.pixel_count_ratio = setting.pixel_count_ratio;
sensor.shading_factor = setting.shading_factor;
sensor.segment_order = setting.segment_order;
sensor.custom_regs = setting.custom_regs;
s_sensors->push_back(sensor);
@ -2188,12 +2276,13 @@ void genesys_init_sensor_tables()
int exposure_lperiod;
SensorExposure exposure;
Ratio pixel_count_ratio;
unsigned shading_factor;
std::vector<unsigned> segment_order;
GenesysRegisterSettingSet custom_regs;
};
CustomSensorSettings custom_settings[] = {
{ { 75, 100, 150, 300 }, 2768, { 388, 574, 393 }, Ratio{1, 4}, std::vector<unsigned>{}, {
{ { 75 }, 2768, { 388, 574, 393 }, Ratio{1, 4}, 4, std::vector<unsigned>{}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0c },
@ -2211,7 +2300,61 @@ void genesys_init_sensor_tables()
{ 0x98, 0x21 },
}
},
{ { 600 }, 5360, { 388, 574, 393 }, Ratio{1, 4}, std::vector<unsigned>{}, {
{ { 100 }, 2768, { 388, 574, 393 }, Ratio{1, 4}, 3, std::vector<unsigned>{}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0c },
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
{ 0x56, 0x04 }, { 0x57, 0x04 }, { 0x58, 0x04 }, { 0x59, 0x04 },
{ 0x5a, 0x1a }, { 0x5b, 0x00 }, { 0x5c, 0xc0 },
{ 0x61, 0x20 },
// { 0x70, 0x00 }, // FIXME: check if default value is different
{ 0x74, 0x00 }, { 0x75, 0x00 }, { 0x76, 0x1e },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x9f },
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x55 },
{ 0x88, 0x00 }, { 0x89, 0x65 },
{ 0x93, 0x00 }, { 0x94, 0x0a }, { 0x95, 0x18 },
{ 0x96, 0x00 }, { 0x97, 0x9a },
{ 0x98, 0x21 },
}
},
{ { 150 }, 2768, { 388, 574, 393 }, Ratio{1, 4}, 2, std::vector<unsigned>{}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0c },
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
{ 0x56, 0x04 }, { 0x57, 0x04 }, { 0x58, 0x04 }, { 0x59, 0x04 },
{ 0x5a, 0x1a }, { 0x5b, 0x00 }, { 0x5c, 0xc0 },
{ 0x61, 0x20 },
// { 0x70, 0x00 }, // FIXME: check if default value is different
{ 0x74, 0x00 }, { 0x75, 0x00 }, { 0x76, 0x1e },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x9f },
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x55 },
{ 0x88, 0x00 }, { 0x89, 0x65 },
{ 0x93, 0x00 }, { 0x94, 0x0a }, { 0x95, 0x18 },
{ 0x96, 0x00 }, { 0x97, 0x9a },
{ 0x98, 0x21 },
}
},
{ { 300 }, 2768, { 388, 574, 393 }, Ratio{1, 4}, 1, std::vector<unsigned>{}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0c },
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
{ 0x56, 0x04 }, { 0x57, 0x04 }, { 0x58, 0x04 }, { 0x59, 0x04 },
{ 0x5a, 0x1a }, { 0x5b, 0x00 }, { 0x5c, 0xc0 },
{ 0x61, 0x20 },
// { 0x70, 0x00 }, // FIXME: check if default value is different
{ 0x74, 0x00 }, { 0x75, 0x00 }, { 0x76, 0x1e },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x9f },
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x55 },
{ 0x88, 0x00 }, { 0x89, 0x65 },
{ 0x93, 0x00 }, { 0x94, 0x0a }, { 0x95, 0x18 },
{ 0x96, 0x00 }, { 0x97, 0x9a },
{ 0x98, 0x21 },
}
},
{ { 600 }, 5360, { 388, 574, 393 }, Ratio{1, 4}, 1, std::vector<unsigned>{}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0a },
@ -2229,7 +2372,7 @@ void genesys_init_sensor_tables()
{ 0x98, 0x21 },
}
},
{ { 1200 }, 10528, { 388, 574, 393 }, Ratio{1, 4}, {0, 1}, {
{ { 1200 }, 10528, { 388, 574, 393 }, Ratio{1, 4}, 1, {0, 1}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x08 },
@ -2247,7 +2390,7 @@ void genesys_init_sensor_tables()
{ 0x98, 0x22 },
},
},
{ { 2400 }, 20864, { 6839, 8401, 6859 }, Ratio{1, 4}, {0, 2, 1, 3}, {
{ { 2400 }, 20864, { 6839, 8401, 6859 }, Ratio{1, 4}, 1, {0, 2, 1, 3}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x06 },
@ -2272,6 +2415,7 @@ void genesys_init_sensor_tables()
sensor.exposure_lperiod = setting.exposure_lperiod;
sensor.exposure = setting.exposure;
sensor.pixel_count_ratio = setting.pixel_count_ratio;
sensor.shading_factor = setting.shading_factor;
sensor.segment_order = setting.segment_order;
sensor.custom_regs = setting.custom_regs;
s_sensors->push_back(sensor);
@ -2298,13 +2442,13 @@ void genesys_init_sensor_tables()
int exposure_lperiod;
SensorExposure exposure;
Ratio pixel_count_ratio;
unsigned shading_factor;
std::vector<unsigned> segment_order;
GenesysRegisterSettingSet custom_regs;
};
CustomSensorSettings custom_settings[] = {
{ { 75, 100, 150, 300 },
2768, { 388, 574, 393 }, Ratio{1, 4}, std::vector<unsigned>{}, {
{ { 75 }, 2768, { 388, 574, 393 }, Ratio{1, 4}, 4, std::vector<unsigned>{}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0c },
@ -2322,7 +2466,61 @@ void genesys_init_sensor_tables()
{ 0x98, 0x21 },
}
},
{ { 600 }, 5360, { 388, 574, 393 }, Ratio{1, 4}, std::vector<unsigned>{}, {
{ { 100 }, 2768, { 388, 574, 393 }, Ratio{1, 4}, 3, std::vector<unsigned>{}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0c },
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
{ 0x56, 0x04 }, { 0x57, 0x04 }, { 0x58, 0x04 }, { 0x59, 0x04 },
{ 0x5a, 0x1a }, { 0x5b, 0x00 }, { 0x5c, 0xc0 },
{ 0x61, 0x20 },
// { 0x70, 0x00 }, // FIXME: check if default value is different
{ 0x74, 0x00 }, { 0x75, 0x00 }, { 0x76, 0x0f },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x9f },
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x55 },
{ 0x88, 0x00 }, { 0x89, 0x65 },
{ 0x93, 0x00 }, { 0x94, 0x0a }, { 0x95, 0x18 },
{ 0x96, 0x00 }, { 0x97, 0x9a },
{ 0x98, 0x21 },
}
},
{ { 150 }, 2768, { 388, 574, 393 }, Ratio{1, 4}, 2, std::vector<unsigned>{}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0c },
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
{ 0x56, 0x04 }, { 0x57, 0x04 }, { 0x58, 0x04 }, { 0x59, 0x04 },
{ 0x5a, 0x1a }, { 0x5b, 0x00 }, { 0x5c, 0xc0 },
{ 0x61, 0x20 },
// { 0x70, 0x00 }, // FIXME: check if default value is different
{ 0x74, 0x00 }, { 0x75, 0x00 }, { 0x76, 0x0f },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x9f },
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x55 },
{ 0x88, 0x00 }, { 0x89, 0x65 },
{ 0x93, 0x00 }, { 0x94, 0x0a }, { 0x95, 0x18 },
{ 0x96, 0x00 }, { 0x97, 0x9a },
{ 0x98, 0x21 },
}
},
{ { 300 }, 2768, { 388, 574, 393 }, Ratio{1, 4}, 1, std::vector<unsigned>{}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0c },
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
{ 0x56, 0x04 }, { 0x57, 0x04 }, { 0x58, 0x04 }, { 0x59, 0x04 },
{ 0x5a, 0x1a }, { 0x5b, 0x00 }, { 0x5c, 0xc0 },
{ 0x61, 0x20 },
// { 0x70, 0x00 }, // FIXME: check if default value is different
{ 0x74, 0x00 }, { 0x75, 0x00 }, { 0x76, 0x0f },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x9f },
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x55 },
{ 0x88, 0x00 }, { 0x89, 0x65 },
{ 0x93, 0x00 }, { 0x94, 0x0a }, { 0x95, 0x18 },
{ 0x96, 0x00 }, { 0x97, 0x9a },
{ 0x98, 0x21 },
}
},
{ { 600 }, 5360, { 388, 574, 393 }, Ratio{1, 4}, 1, std::vector<unsigned>{}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0a },
@ -2340,7 +2538,7 @@ void genesys_init_sensor_tables()
{ 0x98, 0x21 },
}
},
{ { 1200 }, 10528, { 388, 574, 393 }, Ratio{1, 4}, {0, 1}, {
{ { 1200 }, 10528, { 388, 574, 393 }, Ratio{1, 4}, 1, {0, 1}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x08 },
@ -2358,7 +2556,7 @@ void genesys_init_sensor_tables()
{ 0x98, 0x22 },
}
},
{ { 2400 }, 20864, { 6839, 8401, 6859 },Ratio{1, 4}, {0, 2, 1, 3}, {
{ { 2400 }, 20864, { 6839, 8401, 6859 }, Ratio{1, 4}, 1, {0, 2, 1, 3}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x06 },
@ -2383,6 +2581,7 @@ void genesys_init_sensor_tables()
sensor.exposure_lperiod = setting.exposure_lperiod;
sensor.exposure = setting.exposure;
sensor.pixel_count_ratio = setting.pixel_count_ratio;
sensor.shading_factor = setting.shading_factor;
sensor.segment_order = setting.segment_order;
sensor.custom_regs = setting.custom_regs;
s_sensors->push_back(sensor);