From 360b38fb7b8749beff13c2f6cd7cc89770990573 Mon Sep 17 00:00:00 2001 From: ZwX1616 Date: Fri, 5 Apr 2024 15:24:41 -0700 Subject: [PATCH] from sensorinfo --- system/camerad/cameras/camera_common.cc | 9 +++++---- system/camerad/cameras/real_debayer.cl | 1 - system/camerad/sensors/ar0231.cc | 1 + system/camerad/sensors/os04c10.cc | 4 +++- system/camerad/sensors/ox03c10.cc | 1 + system/camerad/sensors/sensor.h | 2 ++ 6 files changed, 12 insertions(+), 6 deletions(-) diff --git a/system/camerad/cameras/camera_common.cc b/system/camerad/cameras/camera_common.cc index 6324852938..dee7e13ffe 100644 --- a/system/camerad/cameras/camera_common.cc +++ b/system/camerad/cameras/camera_common.cc @@ -27,13 +27,14 @@ public: "-cl-fast-relaxed-math -cl-denorms-are-zero " "-DFRAME_WIDTH=%d -DFRAME_HEIGHT=%d -DFRAME_STRIDE=%d -DFRAME_OFFSET=%d " "-DRGB_WIDTH=%d -DRGB_HEIGHT=%d -DYUV_STRIDE=%d -DUV_OFFSET=%d " - "-DIS_OX=%d -DIS_OS=%d -DIS_10BIT -DIS_HDR -DIS_BGGR=%d -DCAM_NUM=%d%s", + "-DIS_OX=%d -DIS_OS=%d -DIS_10BIT=%d -DIS_HDR=%d -DHDR_OFFSET=%d -DIS_BGGR=%d -DVIGNETTING=%d ", ci->frame_width, ci->frame_height, ci->frame_stride * 2, ci->frame_offset, b->rgb_width, b->rgb_height, buf_width, uv_offset, ci->image_sensor == cereal::FrameData::ImageSensor::OX03C10, ci->image_sensor == cereal::FrameData::ImageSensor::OS04C10, - ci->image_sensor == cereal::FrameData::ImageSensor::OS04C10, - s->camera_num, s->camera_num==1 ? " -DVIGNETTING" : ""); + ci->mipi_format == CAM_FORMAT_MIPI_RAW_10, + ci->hdr_offset > 0, ci->hdr_offset / 2, ci->bggr, + s->camera_num == 1); const char *cl_file = "cameras/real_debayer.cl"; cl_program prg_debayer = cl_program_from_file(context, device_id, cl_file, args); krnl_ = CL_CHECK_ERR(clCreateKernel(prg_debayer, "debayer10", &err)); @@ -78,7 +79,7 @@ void CameraBuf::init(cl_device_id device_id, cl_context context, CameraState *s, LOGD("allocated %d CL buffers", frame_buf_count); rgb_width = ci->frame_width; - rgb_height = 1520;//ci->frame_height; + rgb_height = ci->hdr_offset > 0 ? (ci->frame_height - ci->hdr_offset) / 2 : ci->frame_height; int nv12_width = VENUS_Y_STRIDE(COLOR_FMT_NV12, rgb_width); int nv12_height = VENUS_Y_SCANLINES(COLOR_FMT_NV12, rgb_height); diff --git a/system/camerad/cameras/real_debayer.cl b/system/camerad/cameras/real_debayer.cl index 0f2b4119b9..e5290d24e8 100644 --- a/system/camerad/cameras/real_debayer.cl +++ b/system/camerad/cameras/real_debayer.cl @@ -1,6 +1,5 @@ #define UV_WIDTH RGB_WIDTH / 2 #define UV_HEIGHT RGB_HEIGHT / 2 -#define HDR_OFFSET 68 #define RGB_TO_Y(r, g, b) ((((mul24(b, 13) + mul24(g, 65) + mul24(r, 33)) + 64) >> 7) + 16) #define RGB_TO_U(r, g, b) ((mul24(b, 56) - mul24(g, 37) - mul24(r, 19) + 0x8080) >> 8) diff --git a/system/camerad/sensors/ar0231.cc b/system/camerad/sensors/ar0231.cc index 3c257624aa..65f4ec8f1c 100644 --- a/system/camerad/sensors/ar0231.cc +++ b/system/camerad/sensors/ar0231.cc @@ -83,6 +83,7 @@ float ar0231_parse_temp_sensor(uint16_t calib1, uint16_t calib2, uint16_t data_r AR0231::AR0231() { image_sensor = cereal::FrameData::ImageSensor::AR0231; + bggr = false; data_word = true; frame_width = 1928; frame_height = 1208; diff --git a/system/camerad/sensors/os04c10.cc b/system/camerad/sensors/os04c10.cc index a0527f7932..105df6962f 100644 --- a/system/camerad/sensors/os04c10.cc +++ b/system/camerad/sensors/os04c10.cc @@ -25,10 +25,12 @@ const int os04c10_driver_ae_xywh[] = {44, 180, 2600, 1340}; OS04C10::OS04C10() { image_sensor = cereal::FrameData::ImageSensor::OS04C10; + bggr = true; data_word = false; + hdr_offset = 64 * 2 + 8; // stagger frame_width = 2688; - frame_height = 1520 * 2 + 136; // stagger 64*2 + 8 + frame_height = 1520 * 2 + hdr_offset; frame_stride = (frame_width * 10 / 8); // no alignment extra_height = 0; diff --git a/system/camerad/sensors/ox03c10.cc b/system/camerad/sensors/ox03c10.cc index 83e3ecb60a..3be5cc34aa 100644 --- a/system/camerad/sensors/ox03c10.cc +++ b/system/camerad/sensors/ox03c10.cc @@ -27,6 +27,7 @@ const uint32_t VS_TIME_MAX_OX03C10 = 34; // vs < 35 OX03C10::OX03C10() { image_sensor = cereal::FrameData::ImageSensor::OX03C10; + bggr = false; data_word = false; frame_width = 1928; frame_height = 1208; diff --git a/system/camerad/sensors/sensor.h b/system/camerad/sensors/sensor.h index 2d20f4086f..248ec45cb4 100644 --- a/system/camerad/sensors/sensor.h +++ b/system/camerad/sensors/sensor.h @@ -28,6 +28,8 @@ public: uint32_t extra_height = 0; int registers_offset = -1; int stats_offset = -1; + int hdr_offset = -1; + bool bggr; int exposure_time_min; int exposure_time_max;