pull/26948/head
ZwX1616 2 years ago
parent 9d093962ba
commit 6a5fec2d98
  1. 36
      system/camerad/cameras/camera_qcom2.cc

@ -1042,30 +1042,20 @@ void CameraState::handle_camera_event(void *evdat) {
} }
void CameraState::update_exposure_score(float desired_ev, int exp_t, int exp_g_idx, float exp_gain) { void CameraState::update_exposure_score(float desired_ev, int exp_t, int exp_g_idx, float exp_gain) {
float score = std::abs(desired_ev - (exp_t * exp_gain)) * 10; float score = 1e6;
if (camera_id == CAMERA_ID_AR0231) {
if (camera_num==1) { // Cost of ev diff
printf("diff ev score:%.1f \n", score); score = std::abs(desired_ev - (exp_t * exp_gain)) * 10;
} // Cost of absolute gain
// Going below recommended gain needs lower penalty to not overexpose
float m = exp_g_idx > analog_gain_rec_idx ? analog_gain_cost_high : analog_gain_cost_low; float m = exp_g_idx > analog_gain_rec_idx ? analog_gain_cost_high : analog_gain_cost_low;
score += std::abs(exp_g_idx - (int)analog_gain_rec_idx) * m;
float nt1 = std::abs(exp_g_idx - (int)analog_gain_rec_idx) * m; // Cost of changing gain
if (camera_num==1) { score += ((1 - analog_gain_cost_delta) + analog_gain_cost_delta * (exp_g_idx - analog_gain_min_idx) / (analog_gain_max_idx - analog_gain_min_idx)) * std::abs(exp_g_idx - gain_idx) * (score + 1.0) / 10.0;
printf("low gain score:%.1f \n", nt1); } else if (camera_id == CAMERA_ID_OX03C10) {
} score = std::abs(desired_ev - (exp_t * exp_gain)) * 10;
score += nt1; float m = exp_g_idx > analog_gain_rec_idx ? analog_gain_cost_high : analog_gain_cost_low;
score += std::abs(exp_g_idx - (int)analog_gain_rec_idx) * m;
// Small penalty on changing gain score += ((1 - analog_gain_cost_delta) + analog_gain_cost_delta * (exp_g_idx - analog_gain_min_idx) / (analog_gain_max_idx - analog_gain_min_idx)) * std::abs(exp_g_idx - gain_idx) * (score + 1.0) / 10.0;
float nt2 = ((1 - analog_gain_cost_delta) + analog_gain_cost_delta * (exp_g_idx - analog_gain_min_idx) / (analog_gain_max_idx - analog_gain_min_idx)) * std::abs(exp_g_idx - gain_idx) * (score + 1.0) / 10.0;
if (camera_num==1) {
printf("delta gain score:%.1f \n", nt2);
}
score += nt2;
if (camera_num==1) {
printf("gain: %.2f, expo: %d, score:%.1f \n", exp_gain, exp_t, score);
} }
if (score < best_ev_score) { if (score < best_ev_score) {

Loading…
Cancel
Save