kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Simplify calculation of shading upload parameters on gl124
rodzic
115bbf6a24
commit
e54f15bcc8
|
@ -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;
|
||||
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Ładowanie…
Reference in New Issue