/* * Copyright (C) 2019-2024 Amlogic, Inc. All rights reserved. * * All information contained herein is Amlogic confidential. * * This software is provided to you pursuant to Software License Agreement * (SLA) with Amlogic Inc ("Amlogic"). This software may be used * only in accordance with the terms of this agreement. * * Redistribution and use in source and binary forms, with or without * modification is strictly prohibited without prior written permission from * Amlogic. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef __IPC_CFG_API_H__ #define __IPC_CFG_API_H__ #include "ipc_cfg_define.h" #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif /* __cplusplus */ #define CFG_VIDEO_FLAG (1 << 0) #define CFG_AI_FLAG (1 << 1) #define CFG_AO_FLAG (1 << 2) /*----------------------------------------------------------------------------*/ typedef enum IPC_CFG_VI_OPTIONS { CFG_VI_OPTION_SNS_TYPE = 0, CFG_VI_OPTION_FPS_MODE, CFG_VI_OPTION_INPUT_LANE, CFG_VI_OPTION_BUS_ID, CFG_VI_OPTION_BUTT } IPC_CFG_VI_OPTIONS; typedef enum IPC_CFG_STREAM_OPTIONS { CFG_STREAM_OPTION_CHANNEL = 0, CFG_STREAM_OPTION_RESOLUTION, CFG_STREAM_OPTION_FORMAT, CFG_STREAM_OPTION_ENCODEC, CFG_STREAM_OPTION_DUMP, CFG_STREAM_OPTION_FRAMERATE, CFG_STREAM_OPTION_PROFILE, CFG_STREAM_OPTION_GOP, CFG_STREAM_OPTION_GOPMODE, CFG_STREAM_OPTION_RCMODE, CFG_STREAM_OPTION_BITRATE, CFG_STREAM_OPTION_MAX_BIT, CFG_STREAM_OPTION_MIN_BIT, CFG_STREAM_OPTION_IQP, CFG_STREAM_OPTION_PQP, CFG_STREAM_OPTION_BQP, CFG_STREAM_OPTION_QMAP, CFG_STREAM_OPTION_QUALITY, CFG_STREAM_OPTION_BUTT } IPC_CFG_STREAM_OPTIONS; typedef enum IPC_CFG_IMAGE_OPTIONS { CFG_IMAGE_OPTION_FLIP = 0, CFG_IMAGE_OPTION_MIRROR, CFG_IMAGE_OPTION_EXP_MODE, CFG_IMAGE_OPTION_ME_TIME, CFG_IMAGE_OPTION_ME_DGAIN, CFG_IMAGE_OPTION_WB_MODE, CFG_IMAGE_OPTION_MWB_RGAIN, CFG_IMAGE_OPTION_MWB_BGAIN, CFG_IMAGE_OPTION_3D_DENOISE, CFG_IMAGE_OPTION_BRIGHTNESS, CFG_IMAGE_OPTION_SATURATION, CFG_IMAGE_OPTION_CONTRAST, CFG_IMAGE_OPTION_SHARPEN, CFG_IMAGE_OPTION_HUE, CFG_IMAGE_OPTION_WDR, CFG_IMAGE_OPTION_LDC, CFG_IMAGE_OPTION_HLC, CFG_IMAGE_OPTION_HLCLEVEL, CFG_IMAGE_OPTION_FLICKER, CFG_IMAGE_OPTION_FULL_COLOR, CFG_IMAGE_OPTION_IRCUT, CFG_IMAGE_OPTION_D2N, CFG_IMAGE_OPTION_N2D, CFG_IMAGE_OPTION_BUTT } IPC_CFG_IMAGE_OPTIONS; typedef enum IPC_CFG_AI_OPTIONS { CFG_AI_OPTION_ENABLED = 0, CFG_AI_OPTION_ENCODEC, CFG_AI_OPTION_CHANNEL, CFG_AI_OPTION_SAMPLERATE, CFG_AI_OPTION_BITWIDTH, CFG_AI_OPTION_VOLUME, CFG_AI_OPTION_VQEENABLE, CFG_AI_OPTION_BUTT, } IPC_CFG_AI_OPTIONS; typedef enum IPC_CFG_AO_OPTIONS { CFG_AO_OPTION_ENABLED = 0, CFG_AO_OPTION_ENCODEC, CFG_AO_OPTION_CHANNEL, CFG_AO_OPTION_SAMPLERATE, CFG_AO_OPTION_BITWIDTH, CFG_AO_OPTION_VOLUME, CFG_AO_OPTION_BUTT, } IPC_CFG_AO_OPTIONS; typedef enum IPC_PARAM_ID { PARAM_VIDEO_ID = 0, PARAM_AI_ID, PARAM_AO_ID, PARAM_ID_BUTT } IPC_PARAM_ID; typedef enum IPC_PARAM_VIDEO_ID { PARAM_VIDEO_ID_ALL = 0, PARAM_VIDEO_ID_VI, PARAM_VIDEO_ID_STREAM, PARAM_VIDEO_ID_IMAGE, PARAM_VIDEO_ID_BUTT } IPC_PARAM_VIDEO_ID; /********************************************************************************* *Function : IPC_CFG_GetOptions * *Description: Obtain detailed information of parameters such as settable range * *Param : #[in] s32Chn Channel number (parameters with channel concept are valid) * #[in] enParamId Parameter ID (used to distinguish the obtained parameter categories) * #[in] s32SubId Parameter ID (some parameters have multiple sub types) Example:IPC_PARAM_VIDEO_ID * #[in/out] pOptions Parameter details obtained * *Return : =0 Success * =Other Failed *********************************************************************************/ int IPC_CFG_GetOptions(int s32Chn, IPC_PARAM_ID enParamId, int s32SubId, IPC_CFG_OPTIONS **pOptions); /********************************************************************************* *Function : IPC_CFG_GetParam * *Description: Get parameters * *Param : #[in] s32Chn Channel number (parameters with channel concept are valid) * #[in] enParamId Parameter ID (used to distinguish the obtained parameter categories) * #[in] s32SubId Parameter ID (some parameters have multiple sub types) Example:IPC_PARAM_VIDEO_ID * #[in/out] pConfig Obtained parameter (cannot be NULL) * *Return : =0 Success * =Other Failed *********************************************************************************/ int IPC_CFG_GetParam(int s32Chn, IPC_PARAM_ID enParamId, int s32SubId, void *pConfig); int IPC_CFG_CheckParam(int s32Chn, IPC_PARAM_ID enParamId, int s32SubId, void *pConfig); /********************************************************************************* *Function : IPC_CFG_SetParam * *Description: Set parameters * *Param : #[in] s32Chn Channel number (parameters with channel concept are valid) * #[in] enParamId Parameter ID (used to distinguish the obtained parameter categories) * #[in] s32SubId Parameter ID (some parameters have multiple sub types) Example:IPC_PARAM_VIDEO_ID * #[in] pConfig Set parameter (cannot be NULL) * *Return : =0 Success * =Other Failed *********************************************************************************/ int IPC_CFG_SetParam(int s32Chn, IPC_PARAM_ID enParamId, int s32SubId, void *pConfig); int IPC_CFG_GetParamItemInfo(int s32Chn, IPC_PARAM_ID enParamId, int s32SubId, int s32Option, unsigned int *psMin, unsigned int *psMax, unsigned int *psCur, unsigned int *psDef); int IPC_CFG_SetParamItemInfo(int s32Chn, IPC_PARAM_ID enParamId, int s32SubId, int s32Option, int s32Value); int IPC_CFG_Init(unsigned int uflag); void IPC_CFG_UnInit(unsigned int uflag); #ifdef __cplusplus #if __cplusplus } #endif #endif /* __cplusplus */ #endif /* __IPC_CFG_API_H__ */