diff --git a/selfdrive/camerad/cameras/camera_common.cc b/selfdrive/camerad/cameras/camera_common.cc index 43a82171ec..8712c0cffe 100644 --- a/selfdrive/camerad/cameras/camera_common.cc +++ b/selfdrive/camerad/cameras/camera_common.cc @@ -243,9 +243,7 @@ void fill_frame_image(cereal::FrameData::Builder &framed, uint8_t *dat, int w, i } } -void create_thumbnail(MultiCameraState *s, CameraState *c, uint8_t *bgr_ptr) { - const CameraBuf *b = &c->buf; - +static void create_thumbnail(MultiCameraState *s, const CameraBuf *b) { uint8_t* thumbnail_buffer = NULL; unsigned long thumbnail_len = 0; @@ -273,6 +271,7 @@ void create_thumbnail(MultiCameraState *s, CameraState *c, uint8_t *bgr_ptr) { #endif JSAMPROW row_pointer[1]; + const uint8_t *bgr_ptr = (const uint8_t *)b->cur_rgb_buf->addr; for (int ii = 0; ii < b->rgb_height/4; ii+=1) { for (int j = 0; j < b->rgb_width*3; j+=12) { for (int k = 0; k < 3; k++) { @@ -355,6 +354,10 @@ void *processing_thread(MultiCameraState *cameras, const char *tname, callback(cameras, cs, cnt); + if (cs == &(cameras->rear) && cnt % 100 == 3) { + // this takes 10ms??? + create_thumbnail(cameras, &(cs->buf)); + } cs->buf.release(); } return NULL; diff --git a/selfdrive/camerad/cameras/camera_common.h b/selfdrive/camerad/cameras/camera_common.h index d464df4275..aeabbfb126 100644 --- a/selfdrive/camerad/cameras/camera_common.h +++ b/selfdrive/camerad/cameras/camera_common.h @@ -139,7 +139,6 @@ typedef void (*process_thread_cb)(MultiCameraState *s, CameraState *c, int cnt); void fill_frame_data(cereal::FrameData::Builder &framed, const FrameMetadata &frame_data, uint32_t cnt); void fill_frame_image(cereal::FrameData::Builder &framed, uint8_t *dat, int w, int h, int stride); -void create_thumbnail(MultiCameraState *s, CameraState *c, uint8_t *bgr_ptr); void set_exposure_target(CameraState *c, const uint8_t *pix_ptr, int x_start, int x_end, int x_skip, int y_start, int y_end, int y_skip); std::thread start_process_thread(MultiCameraState *cameras, const char *tname, CameraState *cs, process_thread_cb callback); diff --git a/selfdrive/camerad/cameras/camera_frame_stream.cc b/selfdrive/camerad/cameras/camera_frame_stream.cc index 13422e6bb7..2bd5fc40dd 100644 --- a/selfdrive/camerad/cameras/camera_frame_stream.cc +++ b/selfdrive/camerad/cameras/camera_frame_stream.cc @@ -111,10 +111,7 @@ void cameras_close(MultiCameraState *s) { // called by processing_thread void camera_process_rear(MultiCameraState *s, CameraState *c, int cnt) { - if (cnt % 100 == 3) { - const CameraBuf *b = &c->buf; - create_thumbnail(s, c, (uint8_t*)b->cur_rgb_buf->addr); - } + // empty } void cameras_run(MultiCameraState *s) { diff --git a/selfdrive/camerad/cameras/camera_qcom.cc b/selfdrive/camerad/cameras/camera_qcom.cc index 52b16b7ea8..6b31041818 100644 --- a/selfdrive/camerad/cameras/camera_qcom.cc +++ b/selfdrive/camerad/cameras/camera_qcom.cc @@ -1674,10 +1674,6 @@ void camera_process_frame(MultiCameraState *s, CameraState *c, int cnt) { framed.setTransform(b->yuv_transform.v); s->pm->send("frame", msg); - if (cnt % 100 == 3) { - create_thumbnail(s, c, (uint8_t *)b->cur_rgb_buf->addr); - } - if (cnt % 3 == 0) { const int x = 290, y = 322, width = 560, height = 314; const int skip = 1; diff --git a/selfdrive/camerad/cameras/camera_qcom2.cc b/selfdrive/camerad/cameras/camera_qcom2.cc index 7ae777eb39..a22c1cca08 100644 --- a/selfdrive/camerad/cameras/camera_qcom2.cc +++ b/selfdrive/camerad/cameras/camera_qcom2.cc @@ -1115,11 +1115,6 @@ void camera_process_frame(MultiCameraState *s, CameraState *c, int cnt) { } s->pm->send(c == &s->rear ? "frame" : "wideFrame", msg); - if (c == &s->rear && cnt % 100 == 3) { - // this takes 10ms??? - create_thumbnail(s, c, (uint8_t*)b->cur_rgb_buf->addr); - } - if (cnt % 3 == 0) { int exposure_x; int exposure_y;