You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
3.3 KiB
99 lines
3.3 KiB
/*
|
|
* Copyright (c) 2024 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 _RK_AIBNR_MANAGER_H_
|
|
#define _RK_AIBNR_MANAGER_H_
|
|
|
|
#include "hwi_c/aiq_CamHwBase.h"
|
|
#include "rk-aiisp-config.h"
|
|
#include "c_base/aiq_mutex.h"
|
|
|
|
RKAIQ_BEGIN_DECLARE
|
|
|
|
#define AIBNR_IIR_BUF_CNT 3
|
|
#define AIBNR_GAIN_BUF_CNT 4
|
|
#define AIBNR_AIPRE_BUF_CNT 3
|
|
#define AIBNR_VPSL_BUF_CNT 3
|
|
#define AIBNR_AIISP_BUF_CNT 3
|
|
#define AIBNR_ISP_BUF_MAX AIBNR_GAIN_BUF_CNT
|
|
#define AIBNR_AIISP_MODE BOTHEVENT_TO_AIQ
|
|
|
|
#if RKAIQ_HAVE_AIBNR
|
|
|
|
typedef struct ispbuf_addr_s {
|
|
char *iir_addr;
|
|
char *gain_addr;
|
|
char *aipre_addr;
|
|
char *vpsl_addr;
|
|
char *aiisp_addr;
|
|
} ispbuf_addr_t;
|
|
|
|
typedef struct AibnrModelBuf_s {
|
|
bool valid;
|
|
char model_file[AIBNR_ISO_STEP_MAX][AIBNR_MODEL_PATH_LEN];
|
|
char *model_buf[AIBNR_ISO_STEP_MAX];
|
|
} AibnrModelBuf_t;
|
|
|
|
typedef struct AibnrManager_s AibnrManager_t;
|
|
typedef struct AibnrManager_s {
|
|
bool is_enable;
|
|
bool is_bypass;
|
|
bool is_start;
|
|
bool is_param_update;
|
|
bool is_parambuf_prepare;
|
|
int dump_raw_num;
|
|
uint32_t model_max_runcnt;
|
|
uint32_t isp_acq_width;
|
|
uint32_t isp_acq_height;
|
|
rk_aiq_isp_aibnr_params_t last_aibnr_params;
|
|
struct rkaiisp_param_info param_info;
|
|
struct rkaiisp_ispbuf_info ispbuf_info;
|
|
struct rkisp_aiisp_st isp_out;
|
|
struct rkisp_aiisp_st isp_in;
|
|
struct rkisp_aiisp_cfg mAibnrCfg;
|
|
AibnrModelBuf_t mAibnrModelBuf;
|
|
RkAiqAibnrModelInfo_t mAibnrModelInfo;
|
|
CamCalibDbV2Context_t* pCalibDbV2;
|
|
AiqCamHwBase_t* pCamHw;
|
|
|
|
ispbuf_addr_t ispbuf_addr[AIBNR_ISP_BUF_MAX];
|
|
bool aiisp_idx_pool[AIBNR_AIISP_BUF_CNT];
|
|
AiqMutex_t idx_pool_mutex;
|
|
AiqMutex_t iq_param_mutex;
|
|
AiqMutex_t model_buf_mutex;
|
|
|
|
} AibnrManager_t;
|
|
|
|
XCamReturn AibnrManager_init(AibnrManager_t* pAibnrManager);
|
|
XCamReturn AibnrManager_setCalib(AibnrManager_t* pAibnrManager, CamCalibDbV2Context_t* pCalibDbV2);
|
|
XCamReturn AibnrManager_deinit(AibnrManager_t* pAibnrManager);
|
|
XCamReturn AibnrManager_prepare(AibnrManager_t* pAibnrManager, AiqCamHwBase_t* pCamHw, CamCalibDbV2Context_t* pCalibDbV2,
|
|
uint32_t isp_acq_width, uint32_t isp_acq_height);
|
|
XCamReturn AibnrManager_start(AibnrManager_t* pAibnrManager);
|
|
XCamReturn AibnrManager_stop(AibnrManager_t* pAibnrManager);
|
|
XCamReturn AibnrManager_updateParams(AibnrManager_t* pAibnrManager, rk_aiq_isp_aibnr_params_t *aibnr_params, uint32_t frame_id);
|
|
XCamReturn AibnrManager_hdlEvent(AibnrManager_t* pAibnrManager, AiqHwAinnEvt_t *event);
|
|
XCamReturn AibnrManager_setCalib(AibnrManager_t* pAibnrManager, CamCalibDbV2Context_t* pCalibDbV2);
|
|
bool AibnrManager_isNeedRknn(AibnrManager_t* pAibnrManager);
|
|
int AibnrManager_dumpRaw(AibnrManager_t* pAibnrManager, int dump_raw_num);
|
|
|
|
#endif
|
|
|
|
RKAIQ_END_DECLARE
|
|
|
|
#endif
|