11bd4fe43Sopenharmony_ci/* 21bd4fe43Sopenharmony_ci * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED. 31bd4fe43Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 41bd4fe43Sopenharmony_ci * you may not use this file except in compliance with the License. 51bd4fe43Sopenharmony_ci * You may obtain a copy of the License at 61bd4fe43Sopenharmony_ci * 71bd4fe43Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 81bd4fe43Sopenharmony_ci * 91bd4fe43Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 101bd4fe43Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 111bd4fe43Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121bd4fe43Sopenharmony_ci * See the License for the specific language governing permissions and 131bd4fe43Sopenharmony_ci * limitations under the License. 141bd4fe43Sopenharmony_ci */ 151bd4fe43Sopenharmony_ci 161bd4fe43Sopenharmony_ci#ifndef HI_COMM_SNAP_H 171bd4fe43Sopenharmony_ci#define HI_COMM_SNAP_H 181bd4fe43Sopenharmony_ci 191bd4fe43Sopenharmony_ci#include "hi_common.h" 201bd4fe43Sopenharmony_ci#include "hi_comm_video.h" 211bd4fe43Sopenharmony_ci#include "hi_comm_isp.h" 221bd4fe43Sopenharmony_ci 231bd4fe43Sopenharmony_ci#ifdef __cplusplus 241bd4fe43Sopenharmony_ci#if __cplusplus 251bd4fe43Sopenharmony_ciextern "C" { 261bd4fe43Sopenharmony_ci#endif 271bd4fe43Sopenharmony_ci#endif /* __cplusplus */ 281bd4fe43Sopenharmony_ci 291bd4fe43Sopenharmony_citypedef enum hiSNAP_TYPE_E { 301bd4fe43Sopenharmony_ci SNAP_TYPE_NORMAL, /* ZSL and none-ZSL type */ 311bd4fe43Sopenharmony_ci SNAP_TYPE_PRO, /* Professional type support HDR, AEB, LongExposure */ 321bd4fe43Sopenharmony_ci SNAP_TYPE_BUTT 331bd4fe43Sopenharmony_ci} SNAP_TYPE_E; 341bd4fe43Sopenharmony_ci 351bd4fe43Sopenharmony_citypedef struct hiSNAP_PRO_MANUAL_PARAM_S { 361bd4fe43Sopenharmony_ci HI_U32 au32ManExpTime[PRO_MAX_FRAME_NUM]; /* RW; Range: [0x0, 0xFFFFFFFF];sensor exposure time (unit: us), 371bd4fe43Sopenharmony_ci it's related to the specific sensor */ 381bd4fe43Sopenharmony_ci HI_U32 au32ManSysgain[PRO_MAX_FRAME_NUM]; /* RW; Range: [0x400, 0xFFFFFFFF];system gain (unit: times, 391bd4fe43Sopenharmony_ci 10bit precision), it's related to the specific 401bd4fe43Sopenharmony_ci sensor and ISP Dgain range */ 411bd4fe43Sopenharmony_ci} SNAP_PRO_MANUAL_PARAM_S; 421bd4fe43Sopenharmony_ci 431bd4fe43Sopenharmony_citypedef struct hiSNAP_PRO_AUTO_PARAM_S { 441bd4fe43Sopenharmony_ci HI_U16 au16ProExpStep[PRO_MAX_FRAME_NUM]; /* RW; Range:[0x0, 0xFFFF];Professional exposure step 451bd4fe43Sopenharmony_ci (unit: times, 8bit precision) */ 461bd4fe43Sopenharmony_ci} SNAP_PRO_AUTO_PARAM_S; 471bd4fe43Sopenharmony_ci 481bd4fe43Sopenharmony_citypedef struct hiSNAP_PRO_PARAM_S { 491bd4fe43Sopenharmony_ci OPERATION_MODE_E enOperationMode; 501bd4fe43Sopenharmony_ci SNAP_PRO_AUTO_PARAM_S stAutoParam; 511bd4fe43Sopenharmony_ci SNAP_PRO_MANUAL_PARAM_S stManualParam; 521bd4fe43Sopenharmony_ci} SNAP_PRO_PARAM_S; 531bd4fe43Sopenharmony_ci 541bd4fe43Sopenharmony_citypedef struct hiSNAP_NORMAL_ATTR_S { 551bd4fe43Sopenharmony_ci HI_U32 u32FrameCnt; /* RW;Set capture frame counts */ 561bd4fe43Sopenharmony_ci HI_U32 u32RepeatSendTimes; /* [0, 3]; When FE-BE is offline, the first raw frame that is triggered should be sent 571bd4fe43Sopenharmony_ci repeatedly to the BE. */ 581bd4fe43Sopenharmony_ci 591bd4fe43Sopenharmony_ci /* ZSL struct */ 601bd4fe43Sopenharmony_ci HI_BOOL bZSL; /* RW;statical attrs */ 611bd4fe43Sopenharmony_ci HI_U32 u32FrameDepth; /* buffer depth: [1,8] */ 621bd4fe43Sopenharmony_ci HI_U32 u32RollbackMs; /* RW;Rollback time, unit(ms), invalid when bZSL is HI_FALSE */ 631bd4fe43Sopenharmony_ci HI_U32 u32Interval; /* RW;For continuous capture, select frame every u32Intercal frames */ 641bd4fe43Sopenharmony_ci} SNAP_NORMAL_ATTR_S; 651bd4fe43Sopenharmony_ci 661bd4fe43Sopenharmony_citypedef struct hiSNAP_PRO_ATTR_S { 671bd4fe43Sopenharmony_ci HI_U32 u32FrameCnt; /* [1, PRO_MAX_FRAME_NUM] */ 681bd4fe43Sopenharmony_ci HI_U32 u32RepeatSendTimes; /* [0, 3];When FE-BE is offline, the first raw frame that is triggered should be sent 691bd4fe43Sopenharmony_ci repeatedly to the BE. */ 701bd4fe43Sopenharmony_ci SNAP_PRO_PARAM_S stProParam; 711bd4fe43Sopenharmony_ci} SNAP_PRO_ATTR_S; 721bd4fe43Sopenharmony_ci 731bd4fe43Sopenharmony_citypedef struct hiSNAP_USER_ATTR_S { 741bd4fe43Sopenharmony_ci HI_U32 u32FrameDepth; 751bd4fe43Sopenharmony_ci} SNAP_USER_ATTR_S; 761bd4fe43Sopenharmony_ci 771bd4fe43Sopenharmony_citypedef struct hiSNAP_ATTR_S { 781bd4fe43Sopenharmony_ci SNAP_TYPE_E enSnapType; 791bd4fe43Sopenharmony_ci HI_BOOL bLoadCCM; /* HI_TRUE:use CCM of SnapIspInfo, HI_FALSE: Algorithm calculate */ 801bd4fe43Sopenharmony_ci union { 811bd4fe43Sopenharmony_ci SNAP_NORMAL_ATTR_S stNormalAttr; 821bd4fe43Sopenharmony_ci SNAP_PRO_ATTR_S stProAttr; 831bd4fe43Sopenharmony_ci }; 841bd4fe43Sopenharmony_ci} SNAP_ATTR_S; 851bd4fe43Sopenharmony_ci 861bd4fe43Sopenharmony_citypedef struct hiISP_PRO_BNR_PARAM_S { 871bd4fe43Sopenharmony_ci HI_BOOL bEnable; 881bd4fe43Sopenharmony_ci HI_U32 u32ParamNum; 891bd4fe43Sopenharmony_ci ISP_NR_AUTO_ATTR_S *pastNrAttr; 901bd4fe43Sopenharmony_ci} ISP_PRO_BNR_PARAM_S; 911bd4fe43Sopenharmony_ci 921bd4fe43Sopenharmony_citypedef struct hiISP_PRO_SHARPEN_PARAM_S { 931bd4fe43Sopenharmony_ci HI_BOOL bEnable; 941bd4fe43Sopenharmony_ci HI_U32 u32ParamNum; 951bd4fe43Sopenharmony_ci ISP_SHARPEN_AUTO_ATTR_S *pastShpAttr; 961bd4fe43Sopenharmony_ci} ISP_PRO_SHARPEN_PARAM_S; 971bd4fe43Sopenharmony_ci 981bd4fe43Sopenharmony_ci#ifdef __cplusplus 991bd4fe43Sopenharmony_ci#if __cplusplus 1001bd4fe43Sopenharmony_ci} 1011bd4fe43Sopenharmony_ci#endif 1021bd4fe43Sopenharmony_ci#endif /* __cplusplus */ 1031bd4fe43Sopenharmony_ci 1041bd4fe43Sopenharmony_ci#endif /* HI_COMM_SNAP_H */ 105