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
|
std::uint8_t* data, int size) const
|
||||||
{
|
{
|
||||||
DBG_HELPER_ARGS(dbg, "writing %d bytes of shading data", size);
|
DBG_HELPER_ARGS(dbg, "writing %d bytes of shading data", size);
|
||||||
uint32_t addr, length, x, factor, segcnt, pixels, i;
|
std::uint32_t addr, length, segcnt, pixels, i;
|
||||||
uint16_t dpiset,dpihw;
|
|
||||||
uint8_t *ptr, *src;
|
uint8_t *ptr, *src;
|
||||||
|
|
||||||
/* logical size of a color as seen by generic code of the frontend */
|
/* 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;
|
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 */
|
/* turn pixel value into bytes 2x16 bits words */
|
||||||
strpixel*=2*2; /* 2 words of 2 bytes */
|
strpixel*=2*2; /* 2 words of 2 bytes */
|
||||||
endpixel*=2*2;
|
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_start_pixel", std::to_string(strpixel));
|
||||||
dev->interface->record_key_value("shading_pixels", std::to_string(pixels));
|
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_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_segcnt", std::to_string(segcnt));
|
||||||
dev->interface->record_key_value("shading_segment_count",
|
dev->interface->record_key_value("shading_segment_count",
|
||||||
std::to_string(dev->session.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();
|
ptr = buffer.data();
|
||||||
|
|
||||||
/* iterate on both sensor segment */
|
/* 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 */
|
/* coefficient source */
|
||||||
src=data+x+strpixel+i*length;
|
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'
|
<< " logical_dpihw_override: " << sensor.logical_dpihw_override << '\n'
|
||||||
<< " dpiset_override: " << sensor.dpiset_override << '\n'
|
<< " dpiset_override: " << sensor.dpiset_override << '\n'
|
||||||
<< " ccd_size_divisor: " << sensor.ccd_size_divisor << '\n'
|
<< " ccd_size_divisor: " << sensor.ccd_size_divisor << '\n'
|
||||||
|
<< " shading_factor: " << sensor.shading_factor << '\n'
|
||||||
<< " pixel_count_ratio: " << sensor.pixel_count_ratio << '\n'
|
<< " pixel_count_ratio: " << sensor.pixel_count_ratio << '\n'
|
||||||
<< " black_pixels: " << sensor.black_pixels << '\n'
|
<< " black_pixels: " << sensor.black_pixels << '\n'
|
||||||
<< " dummy_pixel: " << sensor.dummy_pixel << '\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
|
// CCD may present itself as half or quarter-size CCD on certain resolutions
|
||||||
int ccd_size_divisor = 1;
|
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
|
// This defines the ratio between logical pixel coordinates and the pixel coordinates sent to
|
||||||
// the scanner.
|
// the scanner.
|
||||||
Ratio pixel_count_ratio = Ratio{1, 1};
|
Ratio pixel_count_ratio = Ratio{1, 1};
|
||||||
|
@ -362,6 +365,7 @@ struct Genesys_Sensor {
|
||||||
resolutions == other.resolutions &&
|
resolutions == other.resolutions &&
|
||||||
method == other.method &&
|
method == other.method &&
|
||||||
ccd_size_divisor == other.ccd_size_divisor &&
|
ccd_size_divisor == other.ccd_size_divisor &&
|
||||||
|
shading_factor == other.shading_factor &&
|
||||||
pixel_count_ratio == other.pixel_count_ratio &&
|
pixel_count_ratio == other.pixel_count_ratio &&
|
||||||
black_pixels == other.black_pixels &&
|
black_pixels == other.black_pixels &&
|
||||||
dummy_pixel == other.dummy_pixel &&
|
dummy_pixel == other.dummy_pixel &&
|
||||||
|
@ -389,6 +393,7 @@ void serialize(Stream& str, Genesys_Sensor& x)
|
||||||
serialize(str, x.resolutions);
|
serialize(str, x.resolutions);
|
||||||
serialize(str, x.method);
|
serialize(str, x.method);
|
||||||
serialize(str, x.ccd_size_divisor);
|
serialize(str, x.ccd_size_divisor);
|
||||||
|
serialize(str, x.shading_factor);
|
||||||
serialize(str, x.pixel_count_ratio);
|
serialize(str, x.pixel_count_ratio);
|
||||||
serialize(str, x.black_pixels);
|
serialize(str, x.black_pixels);
|
||||||
serialize(str, x.dummy_pixel);
|
serialize(str, x.dummy_pixel);
|
||||||
|
|
|
@ -1958,12 +1958,13 @@ void genesys_init_sensor_tables()
|
||||||
int exposure_lperiod;
|
int exposure_lperiod;
|
||||||
SensorExposure exposure;
|
SensorExposure exposure;
|
||||||
Ratio pixel_count_ratio;
|
Ratio pixel_count_ratio;
|
||||||
|
unsigned shading_factor;
|
||||||
std::vector<unsigned> segment_order;
|
std::vector<unsigned> segment_order;
|
||||||
GenesysRegisterSettingSet custom_regs;
|
GenesysRegisterSettingSet custom_regs;
|
||||||
};
|
};
|
||||||
|
|
||||||
CustomSensorSettings custom_settings[] = {
|
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 },
|
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
||||||
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0c },
|
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0c },
|
||||||
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
|
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
|
||||||
|
@ -1980,7 +1981,41 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x98, 0x21 },
|
{ 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 },
|
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
||||||
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x0c },
|
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x0c },
|
||||||
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
|
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
|
||||||
|
@ -1997,7 +2032,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x98, 0x21 },
|
{ 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 },
|
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
||||||
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x0a },
|
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x0a },
|
||||||
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
|
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
|
||||||
|
@ -2014,7 +2049,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x98, 0x21 },
|
{ 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 },
|
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
||||||
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 },{ 0x20, 0x08 },
|
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 },{ 0x20, 0x08 },
|
||||||
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
|
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
|
||||||
|
@ -2031,7 +2066,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x98, 0x22 },
|
{ 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 },
|
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
||||||
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x06 },
|
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x06 },
|
||||||
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 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_lperiod = setting.exposure_lperiod;
|
||||||
sensor.exposure = setting.exposure;
|
sensor.exposure = setting.exposure;
|
||||||
sensor.pixel_count_ratio = setting.pixel_count_ratio;
|
sensor.pixel_count_ratio = setting.pixel_count_ratio;
|
||||||
|
sensor.shading_factor = setting.shading_factor;
|
||||||
sensor.segment_order = setting.segment_order;
|
sensor.segment_order = setting.segment_order;
|
||||||
sensor.custom_regs = setting.custom_regs;
|
sensor.custom_regs = setting.custom_regs;
|
||||||
s_sensors->push_back(sensor);
|
s_sensors->push_back(sensor);
|
||||||
|
@ -2081,13 +2117,13 @@ void genesys_init_sensor_tables()
|
||||||
int exposure_lperiod;
|
int exposure_lperiod;
|
||||||
SensorExposure exposure;
|
SensorExposure exposure;
|
||||||
Ratio pixel_count_ratio;
|
Ratio pixel_count_ratio;
|
||||||
|
unsigned shading_factor;
|
||||||
std::vector<unsigned> segment_order;
|
std::vector<unsigned> segment_order;
|
||||||
GenesysRegisterSettingSet custom_regs;
|
GenesysRegisterSettingSet custom_regs;
|
||||||
};
|
};
|
||||||
|
|
||||||
CustomSensorSettings custom_settings[] = {
|
CustomSensorSettings custom_settings[] = {
|
||||||
{ { 75, 100, 150, 300 },
|
{ { 75 }, 4608, { 1244, 1294, 1144 }, Ratio{1, 4}, 4, std::vector<unsigned>{}, {
|
||||||
4608, { 1244, 1294, 1144 }, Ratio{1, 4}, std::vector<unsigned>{}, {
|
|
||||||
{ 0x16, 0x15 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
{ 0x16, 0x15 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
||||||
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x02 },
|
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x02 },
|
||||||
{ 0x52, 0x04 }, { 0x53, 0x06 }, { 0x54, 0x00 }, { 0x55, 0x02 },
|
{ 0x52, 0x04 }, { 0x53, 0x06 }, { 0x54, 0x00 }, { 0x55, 0x02 },
|
||||||
|
@ -2104,7 +2140,58 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x98, 0x21 },
|
{ 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 },
|
{ 0x16, 0x11 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
||||||
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x02 },
|
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x02 },
|
||||||
{ 0x52, 0x04 }, { 0x53, 0x06 }, { 0x54, 0x00 }, { 0x55, 0x02 },
|
{ 0x52, 0x04 }, { 0x53, 0x06 }, { 0x54, 0x00 }, { 0x55, 0x02 },
|
||||||
|
@ -2121,7 +2208,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x98, 0x21 },
|
{ 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 },
|
{ 0x16, 0x15 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
||||||
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x02 },
|
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x02 },
|
||||||
{ 0x52, 0x04 }, { 0x53, 0x06 }, { 0x54, 0x00 }, { 0x55, 0x02 },
|
{ 0x52, 0x04 }, { 0x53, 0x06 }, { 0x54, 0x00 }, { 0x55, 0x02 },
|
||||||
|
@ -2138,7 +2225,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x98, 0x21 },
|
{ 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 },
|
{ 0x16, 0x11 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
||||||
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x02 },
|
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x00 }, { 0x20, 0x02 },
|
||||||
{ 0x52, 0x04 }, { 0x53, 0x06 }, { 0x54, 0x00 }, { 0x55, 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_lperiod = setting.exposure_lperiod;
|
||||||
sensor.exposure = setting.exposure;
|
sensor.exposure = setting.exposure;
|
||||||
sensor.pixel_count_ratio = setting.pixel_count_ratio;
|
sensor.pixel_count_ratio = setting.pixel_count_ratio;
|
||||||
|
sensor.shading_factor = setting.shading_factor;
|
||||||
sensor.segment_order = setting.segment_order;
|
sensor.segment_order = setting.segment_order;
|
||||||
sensor.custom_regs = setting.custom_regs;
|
sensor.custom_regs = setting.custom_regs;
|
||||||
s_sensors->push_back(sensor);
|
s_sensors->push_back(sensor);
|
||||||
|
@ -2188,12 +2276,13 @@ void genesys_init_sensor_tables()
|
||||||
int exposure_lperiod;
|
int exposure_lperiod;
|
||||||
SensorExposure exposure;
|
SensorExposure exposure;
|
||||||
Ratio pixel_count_ratio;
|
Ratio pixel_count_ratio;
|
||||||
|
unsigned shading_factor;
|
||||||
std::vector<unsigned> segment_order;
|
std::vector<unsigned> segment_order;
|
||||||
GenesysRegisterSettingSet custom_regs;
|
GenesysRegisterSettingSet custom_regs;
|
||||||
};
|
};
|
||||||
|
|
||||||
CustomSensorSettings custom_settings[] = {
|
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, 0x00 }, // FIXME: check if default value is different
|
||||||
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
||||||
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0c },
|
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0c },
|
||||||
|
@ -2211,7 +2300,61 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x98, 0x21 },
|
{ 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, 0x00 }, // FIXME: check if default value is different
|
||||||
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
||||||
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0a },
|
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0a },
|
||||||
|
@ -2229,7 +2372,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x98, 0x21 },
|
{ 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, 0x00 }, // FIXME: check if default value is different
|
||||||
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
||||||
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x08 },
|
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x08 },
|
||||||
|
@ -2247,7 +2390,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x98, 0x22 },
|
{ 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, 0x00 }, // FIXME: check if default value is different
|
||||||
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
||||||
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x06 },
|
{ 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_lperiod = setting.exposure_lperiod;
|
||||||
sensor.exposure = setting.exposure;
|
sensor.exposure = setting.exposure;
|
||||||
sensor.pixel_count_ratio = setting.pixel_count_ratio;
|
sensor.pixel_count_ratio = setting.pixel_count_ratio;
|
||||||
|
sensor.shading_factor = setting.shading_factor;
|
||||||
sensor.segment_order = setting.segment_order;
|
sensor.segment_order = setting.segment_order;
|
||||||
sensor.custom_regs = setting.custom_regs;
|
sensor.custom_regs = setting.custom_regs;
|
||||||
s_sensors->push_back(sensor);
|
s_sensors->push_back(sensor);
|
||||||
|
@ -2298,13 +2442,13 @@ void genesys_init_sensor_tables()
|
||||||
int exposure_lperiod;
|
int exposure_lperiod;
|
||||||
SensorExposure exposure;
|
SensorExposure exposure;
|
||||||
Ratio pixel_count_ratio;
|
Ratio pixel_count_ratio;
|
||||||
|
unsigned shading_factor;
|
||||||
std::vector<unsigned> segment_order;
|
std::vector<unsigned> segment_order;
|
||||||
GenesysRegisterSettingSet custom_regs;
|
GenesysRegisterSettingSet custom_regs;
|
||||||
};
|
};
|
||||||
|
|
||||||
CustomSensorSettings custom_settings[] = {
|
CustomSensorSettings custom_settings[] = {
|
||||||
{ { 75, 100, 150, 300 },
|
{ { 75 }, 2768, { 388, 574, 393 }, Ratio{1, 4}, 4, std::vector<unsigned>{}, {
|
||||||
2768, { 388, 574, 393 }, Ratio{1, 4}, std::vector<unsigned>{}, {
|
|
||||||
// { 0x16, 0x00 }, // FIXME: check if default value is different
|
// { 0x16, 0x00 }, // FIXME: check if default value is different
|
||||||
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
||||||
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0c },
|
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0c },
|
||||||
|
@ -2322,7 +2466,61 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x98, 0x21 },
|
{ 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, 0x00 }, // FIXME: check if default value is different
|
||||||
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
||||||
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0a },
|
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x0a },
|
||||||
|
@ -2340,7 +2538,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x98, 0x21 },
|
{ 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, 0x00 }, // FIXME: check if default value is different
|
||||||
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
||||||
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x08 },
|
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x08 },
|
||||||
|
@ -2358,7 +2556,7 @@ void genesys_init_sensor_tables()
|
||||||
{ 0x98, 0x22 },
|
{ 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, 0x00 }, // FIXME: check if default value is different
|
||||||
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
|
||||||
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x06 },
|
{ 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_lperiod = setting.exposure_lperiod;
|
||||||
sensor.exposure = setting.exposure;
|
sensor.exposure = setting.exposure;
|
||||||
sensor.pixel_count_ratio = setting.pixel_count_ratio;
|
sensor.pixel_count_ratio = setting.pixel_count_ratio;
|
||||||
|
sensor.shading_factor = setting.shading_factor;
|
||||||
sensor.segment_order = setting.segment_order;
|
sensor.segment_order = setting.segment_order;
|
||||||
sensor.custom_regs = setting.custom_regs;
|
sensor.custom_regs = setting.custom_regs;
|
||||||
s_sensors->push_back(sensor);
|
s_sensors->push_back(sensor);
|
||||||
|
|
Ładowanie…
Reference in New Issue