From 8160cf3c1b2726709db58219c33d1616b4a8acb5 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Sat, 27 Nov 2021 21:58:21 -0800 Subject: [PATCH] camerad: remove camera frame stream (#23045) * camerad: remove camera frame stream * fix release files --- SConstruct | 3 +- release/files_common | 2 - selfdrive/camerad/SConscript | 17 ++-- .../camerad/cameras/camera_frame_stream.cc | 92 ------------------- .../camerad/cameras/camera_frame_stream.h | 30 ------ tools/sim/Dockerfile.sim | 2 +- 6 files changed, 9 insertions(+), 137 deletions(-) delete mode 100644 selfdrive/camerad/cameras/camera_frame_stream.cc delete mode 100644 selfdrive/camerad/cameras/camera_frame_stream.h diff --git a/SConstruct b/SConstruct index 30bb42546..a66290aab 100644 --- a/SConstruct +++ b/SConstruct @@ -60,7 +60,6 @@ if arch == "aarch64" and TICI: arch = "larch64" USE_WEBCAM = os.getenv("USE_WEBCAM") is not None -USE_FRAME_STREAM = os.getenv("USE_FRAME_STREAM") is not None lenv = { "PATH": os.environ['PATH'], @@ -352,7 +351,7 @@ if GetOption("clazy"): qt_env['ENV']['CLAZY_IGNORE_DIRS'] = qt_dirs[0] qt_env['ENV']['CLAZY_CHECKS'] = ','.join(checks) -Export('env', 'qt_env', 'arch', 'real_arch', 'SHARED', 'USE_WEBCAM', 'USE_FRAME_STREAM') +Export('env', 'qt_env', 'arch', 'real_arch', 'SHARED', 'USE_WEBCAM') SConscript(['selfdrive/common/SConscript']) Import('_common', '_gpucommon', '_gpu_libs') diff --git a/release/files_common b/release/files_common index 2ef34106c..527c87be6 100644 --- a/release/files_common +++ b/release/files_common @@ -368,8 +368,6 @@ selfdrive/camerad/snapshot/* selfdrive/camerad/include/* selfdrive/camerad/cameras/camera_common.h selfdrive/camerad/cameras/camera_common.cc -selfdrive/camerad/cameras/camera_frame_stream.cc -selfdrive/camerad/cameras/camera_frame_stream.h selfdrive/camerad/cameras/camera_qcom.cc selfdrive/camerad/cameras/camera_qcom.h selfdrive/camerad/cameras/camera_replay.cc diff --git a/selfdrive/camerad/SConscript b/selfdrive/camerad/SConscript index 5a2b73c61..85bc756bc 100644 --- a/selfdrive/camerad/SConscript +++ b/selfdrive/camerad/SConscript @@ -1,4 +1,4 @@ -Import('env', 'arch', 'cereal', 'messaging', 'common', 'gpucommon', 'visionipc', 'USE_WEBCAM', 'USE_FRAME_STREAM') +Import('env', 'arch', 'cereal', 'messaging', 'common', 'gpucommon', 'visionipc', 'USE_WEBCAM') libs = ['m', 'pthread', common, 'jpeg', 'OpenCL', 'yuv', cereal, messaging, 'zmq', 'capnp', 'kj', visionipc, gpucommon] @@ -18,15 +18,12 @@ else: env.Append(CFLAGS = '-DWEBCAM') env.Append(CPPPATH = ['/usr/include/opencv4', '/usr/local/include/opencv4']) else: - if USE_FRAME_STREAM: - cameras = ['cameras/camera_frame_stream.cc'] - else: - libs += ['avutil', 'avcodec', 'avformat', 'bz2', 'ssl', 'curl', 'crypto'] - # TODO: import replay_lib from root SConstruct - cameras = ['cameras/camera_replay.cc', - env.Object('camera-util', '#/selfdrive/ui/replay/util.cc'), - env.Object('camera-framereader', '#/selfdrive/ui/replay/framereader.cc'), - env.Object('camera-filereader', '#/selfdrive/ui/replay/filereader.cc')] + libs += ['avutil', 'avcodec', 'avformat', 'bz2', 'ssl', 'curl', 'crypto'] + # TODO: import replay_lib from root SConstruct + cameras = ['cameras/camera_replay.cc', + env.Object('camera-util', '#/selfdrive/ui/replay/util.cc'), + env.Object('camera-framereader', '#/selfdrive/ui/replay/framereader.cc'), + env.Object('camera-filereader', '#/selfdrive/ui/replay/filereader.cc')] if arch == "Darwin": del libs[libs.index('OpenCL')] diff --git a/selfdrive/camerad/cameras/camera_frame_stream.cc b/selfdrive/camerad/cameras/camera_frame_stream.cc deleted file mode 100644 index 8e6c69e36..000000000 --- a/selfdrive/camerad/cameras/camera_frame_stream.cc +++ /dev/null @@ -1,92 +0,0 @@ -#include "selfdrive/camerad/cameras/camera_frame_stream.h" - -#include -#include - -#include - -#include "cereal/messaging/messaging.h" -#include "selfdrive/common/util.h" - -#define FRAME_WIDTH 1164 -#define FRAME_HEIGHT 874 - -extern ExitHandler do_exit; - -namespace { - -// TODO: make this more generic -CameraInfo cameras_supported[CAMERA_ID_MAX] = { - [CAMERA_ID_IMX298] = { - .frame_width = FRAME_WIDTH, - .frame_height = FRAME_HEIGHT, - .frame_stride = FRAME_WIDTH*3, - .bayer = false, - .bayer_flip = false, - }, - [CAMERA_ID_OV8865] = { - .frame_width = 1632, - .frame_height = 1224, - .frame_stride = 2040, // seems right - .bayer = false, - .bayer_flip = 3, - .hdr = false - }, -}; - -void camera_init(VisionIpcServer * v, CameraState *s, int camera_id, unsigned int fps, cl_device_id device_id, cl_context ctx, VisionStreamType rgb_type, VisionStreamType yuv_type) { - assert(camera_id < std::size(cameras_supported)); - s->ci = cameras_supported[camera_id]; - assert(s->ci.frame_width != 0); - - s->camera_num = camera_id; - s->fps = fps; - s->buf.init(device_id, ctx, s, v, FRAME_BUF_COUNT, rgb_type, yuv_type); -} - -void run_frame_stream(CameraState &camera, const char* frame_pkt) { - SubMaster sm({frame_pkt}); - - size_t buf_idx = 0; - while (!do_exit) { - sm.update(1000); - if(sm.updated(frame_pkt)) { - auto msg = static_cast(sm[frame_pkt]); - auto frame = msg.get(frame_pkt).as(); - camera.buf.camera_bufs_metadata[buf_idx] = { - .frame_id = frame.get("frameId").as(), - .timestamp_eof = frame.get("timestampEof").as(), - .timestamp_sof = frame.get("timestampSof").as(), - }; - - cl_command_queue q = camera.buf.camera_bufs[buf_idx].copy_q; - cl_mem yuv_cl = camera.buf.camera_bufs[buf_idx].buf_cl; - - auto image = frame.get("image").as(); - clEnqueueWriteBuffer(q, yuv_cl, CL_TRUE, 0, image.size(), image.begin(), 0, NULL, NULL); - camera.buf.queue(buf_idx); - buf_idx = (buf_idx + 1) % FRAME_BUF_COUNT; - } - } -} - -} // namespace - -void cameras_init(VisionIpcServer *v, MultiCameraState *s, cl_device_id device_id, cl_context ctx) { - camera_init(v, &s->road_cam, CAMERA_ID_IMX298, 20, device_id, ctx, - VISION_STREAM_RGB_BACK, VISION_STREAM_YUV_BACK); - camera_init(v, &s->driver_cam, CAMERA_ID_OV8865, 10, device_id, ctx, - VISION_STREAM_RGB_FRONT, VISION_STREAM_YUV_FRONT); -} - -void cameras_open(MultiCameraState *s) {} -void cameras_close(MultiCameraState *s) {} -void camera_autoexposure(CameraState *s, float grey_frac) {} -void process_road_camera(MultiCameraState *s, CameraState *c, int cnt) {} - -void cameras_run(MultiCameraState *s) { - std::thread t = start_process_thread(s, &s->road_cam, process_road_camera); - set_thread_name("frame_streaming"); - run_frame_stream(s->road_cam, "roadCameraState"); - t.join(); -} diff --git a/selfdrive/camerad/cameras/camera_frame_stream.h b/selfdrive/camerad/cameras/camera_frame_stream.h deleted file mode 100644 index 0d4d8cfb4..000000000 --- a/selfdrive/camerad/cameras/camera_frame_stream.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once - -#define CL_USE_DEPRECATED_OPENCL_1_2_APIS -#ifdef __APPLE__ -#include -#else -#include -#endif - -#include "camera_common.h" - -#define FRAME_BUF_COUNT 16 - -typedef struct CameraState { - int camera_num; - CameraInfo ci; - - int fps; - float digital_gain; - - CameraBuf buf; -} CameraState; - -typedef struct MultiCameraState { - CameraState road_cam; - CameraState driver_cam; - - SubMaster *sm; - PubMaster *pm; -} MultiCameraState; diff --git a/tools/sim/Dockerfile.sim b/tools/sim/Dockerfile.sim index cff02565f..f6cf0d9b0 100644 --- a/tools/sim/Dockerfile.sim +++ b/tools/sim/Dockerfile.sim @@ -62,4 +62,4 @@ COPY ./selfdrive $HOME/openpilot/selfdrive COPY ./tools $HOME/openpilot/tools WORKDIR $HOME/openpilot -RUN USE_FRAME_STREAM=1 scons -j$(nproc) +RUN scons -j$(nproc)