mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-02-20 21:53:59 +08:00
* it's something * backup * 16:10 * cleanup * this is fine * close * remove some junk * no heck * disos * real 10 * for some reason this is flipped * 20hz * no return * ae * tear * need curve laster * correct real gains * fix time * cleanup * why the scam * disable for now * 0.7 * hdr * that doesnt work * what * hugeoof * clean up * cleanup * fix regs * welp cant * is this corrent * it is sq * remove * back * stg10bit * back2ten * Revert "remove" This reverts commit 18712ab7e103c12621c929cd0f772ecb9b348247. * 20hz and swb * correct height * 10bit * ui hack for now * slight * perfect * blk64 * ccm * fix page faults * template * set 4x * is this fine * try * this seems to work * Revert "this seems to work" This reverts commit d3c9023d3f14bd9394fed2d6276dba777ed0e606. * needs to be static * close * 64 is optimal * 2 * take * not 1 * offset * whats going on * i have no idea * less resistence * box defs * no * reduce blur artifacts * simplify * fix * fake short is too much for bright * can be subzero * should not use lsvc * no wasted bit * cont no slow * no less than 10bit * it is based * wrong * right * quart * shift * raise noise floor * 4.5/4.7 * same ballpark * int is fine * shane owes me m4a4 * Revert "shane owes me m4a4" This reverts commit b4283fee18efebedae628a6cfd926ff1416dcfe5. * back * Revert "4.5/4.7" This reverts commit e38f96e90cb5370bd378f6b66def9e7e3ed0ce5d. * default * oof * clean up * simpilfy * from sensorinfo * no div * better name * not the wrong one * not anymore relevant * too * not call it debayer * cl headers * arg is 2nd * gone is is_bggr * define * no is hdr * rgb_tmp * p1 * clean up * 4 * cant for * fix somewhre else * const * ap * rects * just set staruc * nnew tmp * hmm --------- Co-authored-by: Comma Device <device@comma.ai>
92 lines
3.1 KiB
C++
92 lines
3.1 KiB
C++
#pragma once
|
|
|
|
#include <cassert>
|
|
#include <cstdint>
|
|
#include <map>
|
|
#include <utility>
|
|
#include <vector>
|
|
#include "media/cam_sensor.h"
|
|
#include "system/camerad/cameras/camera_common.h"
|
|
#include "system/camerad/sensors/ar0231_registers.h"
|
|
#include "system/camerad/sensors/ox03c10_registers.h"
|
|
#include "system/camerad/sensors/os04c10_registers.h"
|
|
|
|
#define ANALOG_GAIN_MAX_CNT 55
|
|
|
|
class SensorInfo {
|
|
public:
|
|
SensorInfo() = default;
|
|
virtual std::vector<i2c_random_wr_payload> getExposureRegisters(int exposure_time, int new_exp_g, bool dc_gain_enabled) const { return {}; }
|
|
virtual float getExposureScore(float desired_ev, int exp_t, int exp_g_idx, float exp_gain, int gain_idx) const {return 0; }
|
|
virtual int getSlaveAddress(int port) const { assert(0); }
|
|
virtual void processRegisters(CameraState *c, cereal::FrameData::Builder &framed) const {}
|
|
|
|
cereal::FrameData::ImageSensor image_sensor = cereal::FrameData::ImageSensor::UNKNOWN;
|
|
float pixel_size_mm;
|
|
uint32_t frame_width, frame_height;
|
|
uint32_t frame_stride;
|
|
uint32_t frame_offset = 0;
|
|
uint32_t extra_height = 0;
|
|
int registers_offset = -1;
|
|
int stats_offset = -1;
|
|
int hdr_offset = -1;
|
|
|
|
int exposure_time_min;
|
|
int exposure_time_max;
|
|
|
|
float dc_gain_factor;
|
|
int dc_gain_min_weight;
|
|
int dc_gain_max_weight;
|
|
float dc_gain_on_grey;
|
|
float dc_gain_off_grey;
|
|
|
|
float sensor_analog_gains[ANALOG_GAIN_MAX_CNT];
|
|
int analog_gain_min_idx;
|
|
int analog_gain_max_idx;
|
|
int analog_gain_rec_idx;
|
|
int analog_gain_cost_delta;
|
|
float analog_gain_cost_low;
|
|
float analog_gain_cost_high;
|
|
float target_grey_factor;
|
|
float min_ev;
|
|
float max_ev;
|
|
|
|
bool data_word;
|
|
uint32_t probe_reg_addr;
|
|
uint32_t probe_expected_data;
|
|
std::vector<i2c_random_wr_payload> start_reg_array;
|
|
std::vector<i2c_random_wr_payload> init_reg_array;
|
|
|
|
uint32_t mipi_format;
|
|
uint32_t mclk_frequency;
|
|
uint32_t frame_data_type;
|
|
};
|
|
|
|
class AR0231 : public SensorInfo {
|
|
public:
|
|
AR0231();
|
|
std::vector<i2c_random_wr_payload> getExposureRegisters(int exposure_time, int new_exp_g, bool dc_gain_enabled) const override;
|
|
float getExposureScore(float desired_ev, int exp_t, int exp_g_idx, float exp_gain, int gain_idx) const override;
|
|
int getSlaveAddress(int port) const override;
|
|
void processRegisters(CameraState *c, cereal::FrameData::Builder &framed) const override;
|
|
|
|
private:
|
|
mutable std::map<uint16_t, std::pair<int, int>> ar0231_register_lut;
|
|
};
|
|
|
|
class OX03C10 : public SensorInfo {
|
|
public:
|
|
OX03C10();
|
|
std::vector<i2c_random_wr_payload> getExposureRegisters(int exposure_time, int new_exp_g, bool dc_gain_enabled) const override;
|
|
float getExposureScore(float desired_ev, int exp_t, int exp_g_idx, float exp_gain, int gain_idx) const override;
|
|
int getSlaveAddress(int port) const override;
|
|
};
|
|
|
|
class OS04C10 : public SensorInfo {
|
|
public:
|
|
OS04C10();
|
|
std::vector<i2c_random_wr_payload> getExposureRegisters(int exposure_time, int new_exp_g, bool dc_gain_enabled) const override;
|
|
float getExposureScore(float desired_ev, int exp_t, int exp_g_idx, float exp_gain, int gain_idx) const override;
|
|
int getSlaveAddress(int port) const override;
|
|
};
|