// unittest for set_exposure_target #include "ae_gray_test.h" #include #include #include #include "selfdrive/camerad/cameras/camera_common.h" void camera_autoexposure(CameraState *s, float grey_frac) {} int main() { // set up fake camerabuf CameraBuf cb = {}; VisionBuf vb = {}; uint8_t * fb_y = new uint8_t[W*H]; vb.y = fb_y; cb.cur_yuv_buf = &vb; cb.rgb_width = W; cb.rgb_height = H; printf("AE test patterns %dx%d\n", cb.rgb_width, cb.rgb_height); // mix of 5 tones uint8_t l[5] = {0, 24, 48, 96, 235}; // 235 is yuv max bool passed = true; float rtol = 0.05; // generate pattern and calculate EV int cnt = 0; for (int is_qcom2=0; is_qcom2<2; is_qcom2++) { for (int g=0; g rtol*evgt) { passed = false; } // report printf("%d/%d/%d/%d/%d/%d/%d: ev %f, gt %f, err %f\n", is_qcom2, g*10, h_0, h_1, h_2, h_3, h_4, ev, evgt, fabs(ev - evgt) / (evgt != 0 ? evgt : 0.00001f)); cnt++; } } } } } } assert(passed); delete[] fb_y; return 0; }