camerad use std::thread (#19771)

pull/19773/head
Dean Lee 4 years ago committed by GitHub
parent 5333e64233
commit 1b3c93813d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 13
      selfdrive/camerad/cameras/camera_qcom.cc
  2. 15
      selfdrive/camerad/cameras/camera_qcom2.cc

@ -1557,9 +1557,7 @@ static FrameMetadata get_frame_metadata(CameraState *s, uint32_t frame_id) {
};
}
static void* ops_thread(void* arg) {
MultiCameraState *s = (MultiCameraState*)arg;
static void ops_thread(MultiCameraState *s) {
int rear_op_id_last = 0;
int front_op_id_last = 0;
@ -1584,8 +1582,6 @@ static void* ops_thread(void* arg) {
util::sleep_for(50);
}
return NULL;
}
static void update_lapmap(MultiCameraState *s, const CameraBuf *b, const int cnt) {
@ -1679,10 +1675,8 @@ void camera_process_frame(MultiCameraState *s, CameraState *c, int cnt) {
}
void cameras_run(MultiCameraState *s) {
pthread_t ops_thread_handle;
int err = pthread_create(&ops_thread_handle, NULL, ops_thread, s);
assert(err == 0);
std::vector<std::thread> threads;
threads.push_back(std::thread(ops_thread, s));
threads.push_back(start_process_thread(s, "processing", &s->rear, camera_process_frame));
threads.push_back(start_process_thread(s, "frontview", &s->front, camera_process_front));
@ -1778,9 +1772,6 @@ void cameras_run(MultiCameraState *s) {
LOG(" ************** STOPPING **************");
err = pthread_join(ops_thread_handle, NULL);
assert(err == 0);
for (auto &t : threads) t.join();
cameras_close(s);

@ -1070,8 +1070,7 @@ void camera_autoexposure(CameraState *s, float grey_frac) {
cam_exp[s->camera_num].store(tmp);
}
static void* ae_thread(void* arg) {
MultiCameraState *s = (MultiCameraState*)arg;
static void ae_thread(MultiCameraState *s) {
CameraState *c_handles[3] = {&s->wide, &s->rear, &s->front};
int op_id_last[3] = {0};
@ -1090,8 +1089,6 @@ static void* ae_thread(void* arg) {
util::sleep_for(50);
}
return NULL;
}
void camera_process_front(MultiCameraState *s, CameraState *c, int cnt) {
@ -1135,14 +1132,9 @@ void camera_process_frame(MultiCameraState *s, CameraState *c, int cnt) {
}
void cameras_run(MultiCameraState *s) {
int err;
// start threads
LOG("-- Starting threads");
pthread_t ae_thread_handle;
err = pthread_create(&ae_thread_handle, NULL,
ae_thread, s);
assert(err == 0);
std::vector<std::thread> threads;
threads.push_back(std::thread(ae_thread, s));
threads.push_back(start_process_thread(s, "processing", &s->rear, camera_process_frame));
threads.push_back(start_process_thread(s, "frontview", &s->front, camera_process_front));
threads.push_back(start_process_thread(s, "wideview", &s->wide, camera_process_frame));
@ -1193,9 +1185,6 @@ void cameras_run(MultiCameraState *s) {
LOG(" ************** STOPPING **************");
err = pthread_join(ae_thread_handle, NULL);
assert(err == 0);
for (auto &t : threads) t.join();
cameras_close(s);

Loading…
Cancel
Save