diff --git a/system/camerad/cameras/camera_common.cc b/system/camerad/cameras/camera_common.cc index 66fdbe266c73ad..300c9da382e8a2 100644 --- a/system/camerad/cameras/camera_common.cc +++ b/system/camerad/cameras/camera_common.cc @@ -92,16 +92,16 @@ kj::Array get_raw_frame_image(const CameraBuf *b) { return kj::mv(frame_image); } -float calculate_exposure_value(const CameraBuf *b, Rect ae_xywh, int x_skip, int y_skip) { - int lum_med; +float calculate_exposure_value(const CameraBuf *b, const Rect &ae_xywh, int x_skip, int y_skip) { uint32_t lum_binning[256] = {0}; const uint8_t *pix_ptr = b->cur_yuv_buf->y; + const int stride = b->out_img_width; const int bottom = ae_xywh.y + ae_xywh.h; const int right = ae_xywh.x + ae_xywh.w; unsigned int lum_total = 0; for (int y = ae_xywh.y; y < bottom; y += y_skip) { - const uint8_t *row_ptr = &pix_ptr[y * b->out_img_width]; + const uint8_t *row_ptr = &pix_ptr[y * stride]; for (int x = ae_xywh.x; x < right; x += x_skip) { uint8_t lum = row_ptr[x]; lum_binning[lum]++; @@ -111,6 +111,7 @@ float calculate_exposure_value(const CameraBuf *b, Rect ae_xywh, int x_skip, int // Find mean lumimance value unsigned int lum_cur = 0; + int lum_med; for (lum_med = 255; lum_med >= 0; lum_med--) { lum_cur += lum_binning[lum_med]; diff --git a/system/camerad/cameras/camera_common.h b/system/camerad/cameras/camera_common.h index 37689922f96f38..d24d4354f481a9 100644 --- a/system/camerad/cameras/camera_common.h +++ b/system/camerad/cameras/camera_common.h @@ -49,5 +49,5 @@ class CameraBuf { void camerad_thread(); kj::Array get_raw_frame_image(const CameraBuf *b); -float calculate_exposure_value(const CameraBuf *b, Rect ae_xywh, int x_skip, int y_skip); +float calculate_exposure_value(const CameraBuf *b, const Rect &ae_xywh, int x_skip, int y_skip); int open_v4l_by_name_and_index(const char name[], int index = 0, int flags = O_RDWR | O_NONBLOCK);