linuxOS_AP05/external/rockit/mpi/sdk/include/rk_comm_avs.h
2025-06-02 13:59:07 +08:00

178 lines
7.1 KiB
C

/*
* Copyright 2020 Rockchip Electronics Co. LTD
*
* 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 INCLUDE_RT_MPI_RK_COMMON_AVS_H_
#define INCLUDE_RT_MPI_RK_COMMON_AVS_H_
#include "rk_type.h"
#include "rk_common.h"
#include "rk_errno.h"
#include "rk_comm_video.h"
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif /* End of #ifdef __cplusplus */
#define AVS_MAX_GRP_NUM 32
#define AVS_PIPE_NUM 6
#define AVS_MAX_CHN_NUM 2
#define AVS_SPLIT_NUM 2
#define AVS_SPLIT_PIPE_NUM 6
#define AVS_CUBE_MAP_SURFACE_NUM 6
#define AVS_MAX_IN_WIDTH 8192
#define AVS_MAX_IN_HEIGHT 8192
#define AVS_MIN_IN_WIDTH 1280
#define AVS_MIN_IN_HEIGHT 720
#define AVS_MAX_OUT_WIDTH 10000
#define AVS_MAX_OUT_HEIGHT 10000
#define AVS_MIN_OUT_WIDTH 256
#define AVS_MIN_OUT_HEIGHT 256
#define MAX_AVS_FILE_PATH_LEN 256
typedef enum rkAVS_LUT_ACCURAY_E {
AVS_LUT_ACCURACY_HIGH = 0, /* LUT high accuracy. */
AVS_LUT_ACCURACY_LOW = 1, /* LUT low accuracy. */
AVS_LUT_ACCURACY_BUTT
} AVS_LUT_ACCURAY_E;
typedef struct rkAVS_LUT_S {
AVS_LUT_ACCURAY_E enAccuracy;
RK_CHAR aFilePath[MAX_AVS_FILE_PATH_LEN];
} AVS_LUT_S;
typedef enum rkAVS_PROJECTION_MODE_E {
AVS_PROJECTION_EQUIRECTANGULAR = 0, /* Equirectangular mode. */
AVS_PROJECTION_RECTILINEAR = 1, /* Rectilinear mode. */
AVS_PROJECTION_CYLINDRICAL = 2, /* Cylindrical mode. */
AVS_PROJECTION_CUBE_MAP = 3, /* Cube map mode. */
AVS_PROJECTION_BUTT
} AVS_PROJECTION_MODE_E;
typedef enum rkAVS_GAIN_MODE_E {
AVS_GAIN_MODE_MANUAL = 0,
AVS_GAIN_MODE_AUTO = 1,
AVS_GAIN_MODE_BUTT
} AVS_GAIN_MODE_E;
typedef enum rkAVS_MODE_E {
AVS_MODE_BLEND = 0, /* according to LUT stitching, blend at the splicing point */
AVS_MODE_NOBLEND_VER = 1, /* place input images vertically together, no blend at the stitching point. */
AVS_MODE_NOBLEND_HOR = 2, /* place input images horizontally together, no blend at the stitching point */
/* Only 4 image stitching is supported,
* two rows are placed, two rows are placed together,
* no blend at the stitching point. */
AVS_MODE_NOBLEND_QR = 3,
AVS_MODE_BUTT
} AVS_MODE_E;
typedef struct rkAVS_GAIN_ATTR_S {
AVS_GAIN_MODE_E enMode;
RK_S32 s32Coef[AVS_PIPE_NUM];
} AVS_GAIN_ATTR_S;
typedef struct rkAVS_ROTATION_S {
RK_S32 s32Yaw;
RK_S32 s32Pitch;
RK_S32 s32Roll;
} AVS_ROTATION_S;
typedef struct rkAVS_FOV_S {
RK_U32 u32FOVX;
RK_U32 u32FOVY;
} AVS_FOV_S;
typedef struct rkAVS_SPLIT_ATTR_S {
RK_U32 u32PipeNum;
AVS_PIPE AVSPipe[AVS_SPLIT_PIPE_NUM];
} AVS_SPLIT_ATTR_S;
typedef struct rkAVS_CUBE_MAP_ATTR_S {
RK_BOOL bBgColor;
RK_U32 u32BgColor;
RK_U32 u32SurfaceLength;
POINT_S stStartPoint[AVS_CUBE_MAP_SURFACE_NUM]; /* RW; Start point of each surface. */
} AVS_CUBE_MAP_ATTR_S;
typedef struct rkAVS_OUTPUT_ATTR_S {
AVS_PROJECTION_MODE_E enPrjMode; /* RW; Projection mode. */
POINT_S stCenter; /* Center point. */
AVS_FOV_S stFOV; /* Output FOV. */
AVS_ROTATION_S stORIRotation; /* Output original rotation. */
AVS_ROTATION_S stRotation; /* Output rotation. */
AVS_SPLIT_ATTR_S stSplitAttr[AVS_SPLIT_NUM]; /* Split attribute for 7 or 8 inputs stitching. */
AVS_CUBE_MAP_ATTR_S stCubeMapAttr; /* Cube map attribute. */
} AVS_OUTPUT_ATTR_S;
typedef struct rkAVS_GRP_ATTR_S {
AVS_MODE_E enMode; /* Group work mode */
RK_U32 u32PipeNum; /* RW; Pipe number. */
RK_BOOL bSyncPipe; /* RW; Whether sync pipe image. */
AVS_LUT_S stLUT; /* Look up table. */
AVS_GAIN_ATTR_S stGainAttr; /* Gain attribute. */
RK_U64 u64BBoxPhyAddr[AVS_PIPE_NUM]; /* Physical address of bounding box data. */
AVS_OUTPUT_ATTR_S stOutAttr; /* Output attribute. */
FRAME_RATE_CTRL_S stFrameRate; /* Frame rate control info. */
} AVS_GRP_ATTR_S;
typedef struct rkAVS_CHN_ATTR_S {
RK_U32 u32Width; /* RW; Width of target image. */
RK_U32 u32Height; /* RW; Height of target image. */
COMPRESS_MODE_E enCompressMode; /* RW; Compression mode of the output. */
DYNAMIC_RANGE_E enDynamicRange; /* RW; Dynamic range. */
RK_U32 u32Depth; /* RW; Chn user list depth. */
FRAME_RATE_CTRL_S stFrameRate; /* Frame rate control info. */
} AVS_CHN_ATTR_S;
typedef struct rkAVS_MOD_PARAM_S {
RK_U32 u32WorkingSetSize; /* RW; AVS work */
} AVS_MOD_PARAM_S;
#define RK_AVS_OK RK_SUCCESS
#define RK_ERR_AVS_NULL_PTR RK_DEF_ERR(RK_ID_AVS, RK_ERR_LEVEL_ERROR, RK_ERR_NULL_PTR)
#define RK_ERR_AVS_NOTREADY RK_DEF_ERR(RK_ID_AVS, RK_ERR_LEVEL_ERROR, RK_ERR_NOTREADY)
#define RK_ERR_AVS_INVALID_DEVID RK_DEF_ERR(RK_ID_AVS, RK_ERR_LEVEL_ERROR, RK_ERR_INVALID_DEVID)
#define RK_ERR_AVS_INVALID_CHNID RK_DEF_ERR(RK_ID_AVS, RK_ERR_LEVEL_ERROR, RK_ERR_INVALID_CHNID)
#define RK_ERR_AVS_INVALID_PIPEID RK_DEF_ERR(RK_ID_AVS, RK_ERR_LEVEL_ERROR, RK_ERR_INVALID_PIPEID)
#define RK_ERR_AVS_EXIST RK_DEF_ERR(RK_ID_AVS, RK_ERR_LEVEL_ERROR, RK_ERR_EXIST)
#define RK_ERR_AVS_UNEXIST RK_DEF_ERR(RK_ID_AVS, RK_ERR_LEVEL_ERROR, RK_ERR_UNEXIST)
#define RK_ERR_AVS_NOT_SUPPORT RK_DEF_ERR(RK_ID_AVS, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_SUPPORT)
#define RK_ERR_AVS_NOT_PERM RK_DEF_ERR(RK_ID_AVS, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_PERM)
#define RK_ERR_AVS_NOMEM RK_DEF_ERR(RK_ID_AVS, RK_ERR_LEVEL_ERROR, RK_ERR_NOMEM)
#define RK_ERR_AVS_NOBUF RK_DEF_ERR(RK_ID_AVS, RK_ERR_LEVEL_ERROR, RK_ERR_NOBUF)
#define RK_ERR_AVS_ILLEGAL_PARAM RK_DEF_ERR(RK_ID_AVS, RK_ERR_LEVEL_ERROR, RK_ERR_ILLEGAL_PARAM)
#define RK_ERR_AVS_BUF_EMPTY RK_DEF_ERR(RK_ID_AVS, RK_ERR_LEVEL_ERROR, RK_ERR_BUF_EMPTY)
#define RK_ERR_AVS_BUF_FULL RK_DEF_ERR(RK_ID_AVS, RK_ERR_LEVEL_ERROR, RK_ERR_BUF_FULL)
#define RK_ERR_AVS_BUSY RK_DEF_ERR(RK_ID_AVS, RK_ERR_LEVEL_ERROR, RK_ERR_BUSY)
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* End of #ifdef __cplusplus */
#endif /* INCLUDE_RT_MPI_RK_COMMON_AVS_H_ */