/* * Copyright (c) 2019 Rockchip Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ #ifndef _FAKE_CAM_HW_ISP20_H_ #define _FAKE_CAM_HW_ISP20_H_ #include "CamHwIsp20.h" namespace RkCam { #define START_TAG 0xFF00 #define FORMAT_TAG 0xFF01 #define NORMAL_RAW_TAG 0xFF02 #define HDR_S_RAW_TAG 0xFF03 #define HDR_M_RAW_TAG 0xFF04 #define HDR_L_RAW_TAG 0xFF05 #define STATS_TAG 0xFF06 #define ISP_REG_FMT_TAG 0xFF07 #define ISP_REG_TAG 0xFF08 #define ISPP_REG_FMT_TAG 0xFF09 #define ISPP_REG_TAG 0xFF0A #define PLATFORM_TAG 0xFF0B #define END_TAG 0x00FF #define TAG_BYTE_LEN (2) #define BLOCK_BYTE_LEN (4) struct _block_header { unsigned short block_id; unsigned int block_length; }__attribute__ ((packed)); struct _st_addrinfo { uint32_t fd; uint32_t haddr; uint32_t laddr; uint32_t size; }__attribute__ ((packed)); struct _raw_format { uint16_t tag; uint32_t size; uint16_t vesrion; char sensor[32]; char scene[32]; uint32_t frame_id; uint16_t width; uint16_t height; uint8_t bit_width; uint8_t bayer_fmt; uint8_t hdr_mode; uint8_t buf_type; uint16_t line_length; uint16_t acive_line_length; uint8_t byte_order; }__attribute__ ((packed)); struct _frame_info { uint16_t tag; uint32_t size; uint16_t vesrion; uint32_t frame_id; float normal_exp; float normal_gain; uint32_t normal_exp_reg; uint32_t normal_gain_reg; float hdr_exp_l; float hdr_gain_l; uint32_t hdr_exp_l_reg; uint32_t hdr_gain_l_reg; float hdr_exp_m; float hdr_gain_m; uint32_t hdr_gain_m_reg; uint32_t hdr_exp_m_reg; float hdr_exp_s; float hdr_gain_s; uint32_t hdr_exp_s_reg; uint32_t hdr_gain_s_reg; float awg_rgain; float awg_bgain; }__attribute__ ((packed)); class FakeCamHwIsp20 : public CamHwIsp20 { public: explicit FakeCamHwIsp20(); virtual ~FakeCamHwIsp20(); virtual XCamReturn init(const char* sns_ent_name); virtual XCamReturn prepare(uint32_t width, uint32_t height, int mode, int t_delay, int g_delay); virtual XCamReturn enqueueRawBuffer(void *rawdata, bool sync); virtual XCamReturn enqueueRawFile(const char *path); virtual XCamReturn registRawdataCb(void (*callback)(void *)); virtual XCamReturn rawdataPrepare(rk_aiq_raw_prop_t prop); private: XCamReturn init_mipi_devices(rk_sensor_full_info_t *s_info); void parse_rk_rawdata(void *rawdata, struct rk_aiq_vbuf *vbuf); void parse_rk_rawfile(FILE *fp, struct rk_aiq_vbuf *vbuf); struct _st_addrinfo _st_addr[3]; struct _raw_format _rawfmt; struct _frame_info _finfo; enum v4l2_memory _rx_memory_type; enum v4l2_memory _tx_memory_type; rk_aiq_rawbuf_type_t _rawbuf_type; }; }; #endif