123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- /**********************************************************************************
- *
- * Copyright (c) 2019-2020 Beijing AXera Technology Co., Ltd. All Rights Reserved.
- *
- * This source file is the property of Beijing AXera Technology Co., Ltd. and
- * may not be copied or distributed in any isomorphic form without the prior
- * written consent of Beijing AXera Technology Co., Ltd.
- *
- **********************************************************************************/
- #ifndef _AX_VO_H_
- #define _AX_VO_H_
- #include "ax_global_type.h"
- #include "ax_sys_api.h"
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- #define AX_VO_WIDTH_MAX 4096
- #define AX_VO_HEIGHT_MAX 4096
- #define AX_VO_DEV_MAX 4
- #define AX_VO_LAYER_MAX 7
- #define AX_VO_BIND_LAYER_MAX 2
- #define AX_VO_CHN_MAX 16
- #define AX_GRAPHIC_LAYER_MAX 2
- #define AX_ID_VO_PUB_SMOD 0x8A
- #define AX_ERR_VO_INVALID_DEVID AX_DEF_ERR(AX_ID_VO, AX_ID_VO_PUB_SMOD, AX_ERR_INVALID_DEVID)
- #define AX_ERR_VO_INVALID_CHNID AX_DEF_ERR(AX_ID_VO, AX_ID_VO_PUB_SMOD, AX_ERR_INVALID_CHNID)
- #define AX_ERR_VO_ILLEGAL_PARAM AX_DEF_ERR(AX_ID_VO, AX_ID_VO_PUB_SMOD, AX_ERR_ILLEGAL_PARAM)
- #define AX_ERR_VO_NULL_PTR AX_DEF_ERR(AX_ID_VO, AX_ID_VO_PUB_SMOD, AX_ERR_NULL_PTR)
- #define AX_ERR_VO_NOT_PERM AX_DEF_ERR(AX_ID_VO, AX_ID_VO_PUB_SMOD, AX_ERR_NOT_PERM)
- #define AX_ERR_VO_NODEV AX_DEF_ERR(AX_ID_VO, AX_ID_VO_PUB_SMOD, AX_ERR_UNEXIST)
- #define AX_ERR_VO_NOMEM AX_DEF_ERR(AX_ID_VO, AX_ID_VO_PUB_SMOD, AX_ERR_NOMEM)
- #define AX_ERR_VO_DEV_OP_FAIL AX_DEF_ERR(AX_ID_VO, AX_ID_VO_PUB_SMOD, 0x80)
- #define AX_ERR_VO_LAYER_OP_FAIL AX_DEF_ERR(AX_ID_VO, AX_ID_VO_PUB_SMOD, 0x81)
- #define AX_ERR_VO_CHN_OP_FAIL AX_DEF_ERR(AX_ID_VO, AX_ID_VO_PUB_SMOD, 0x82)
- #define AX_ERR_VO_INVALID_LAYERID AX_DEF_ERR(AX_ID_VO, AX_ID_VO_PUB_SMOD, 0x83)
- #define AX_ERR_VO_OPEN_FILE_FAIL AX_DEF_ERR(AX_ID_VO, AX_ID_VO_PUB_SMOD, 0x84)
- typedef AX_U32 VO_DEV;
- typedef AX_U32 VO_LAYER;
- typedef AX_U32 GRAPHIC_LAYER;
- typedef AX_U32 VO_CHN;
- typedef AX_U32 VO_WBC;
- typedef enum {
- VO_INTF_VIRT = 0,
- VO_INTF_DPI,
- VO_INTF_DSI0,
- VO_INTF_DSI1,
- VO_INTF_2DSI,
- VO_INTF_BT656,
- VO_INTF_BT1120,
- VO_INTF_BUTT
- } VO_INTF_TYPE_E;
- typedef enum {
- VO_OUTPUT_USER = 1,
- VO_OUTPUT_480P60,
- VO_OUTPUT_576P50,
- VO_OUTPUT_720P24,
- VO_OUTPUT_720P25,
- VO_OUTPUT_720P30,
- VO_OUTPUT_720P50,
- VO_OUTPUT_720P60,
- VO_OUTPUT_800P60,
- VO_OUTPUT_1080P24,
- VO_OUTPUT_1080P25,
- VO_OUTPUT_1080P30,
- VO_OUTPUT_1080P50,
- VO_OUTPUT_1080P60,
- VO_OUTPUT_3840x2160_24,
- VO_OUTPUT_3840x2160_25,
- VO_OUTPUT_3840x2160_30,
- VO_OUTPUT_3840x2160_50,
- VO_OUTPUT_3840x2160_60,
- VO_OUTPUT_4096x2160_24,
- VO_OUTPUT_4096x2160_25,
- VO_OUTPUT_4096x2160_30,
- VO_OUTPUT_4096x2160_50,
- VO_OUTPUT_4096x2160_60,
- VO_OUTPUT_BUTT,
- } VO_INTF_SYNC_E;
- typedef struct axVO_RESO_S {
- AX_U32 u32Width;
- AX_U32 u32Height;
- AX_U32 u32RefreshRate;
- } VO_RESO_S;
- typedef struct axVO_SIZE_S {
- AX_U32 u32Width;
- AX_U32 u32Height;
- } VO_SIZE_S;
- typedef struct axVO_RECT_S {
- AX_U32 u32X;
- AX_U32 u32Y;
- AX_U32 u32Width;
- AX_U32 u32Height;
- } VO_RECT_S;
- typedef struct axVO_PUB_ATTR_S {
- VO_INTF_TYPE_E enIntfType;
- VO_INTF_SYNC_E enIntfSync;
- VO_RESO_S stReso;
- } VO_PUB_ATTR_S;
- typedef enum {
- VO_LAYER_SYNC_NORMAL,
- VO_LAYER_SYNC_SHUTTLE,
- VO_LAYER_SYNC_GROUPING,
- VO_LAYER_SYNC_PRIMARY,
- VO_LAYER_SYNC_BUTT,
- } VO_LAYER_SYNC_E;
- typedef enum {
- VO_LAYER_OUT_BUF_POOL,
- VO_LAYER_OUT_BUF_INPLACE,
- VO_LAYER_OUT_BUF_BUTT,
- } VO_LAYER_BUF_E;
- typedef enum {
- VO_LAYER_OUT_TO_FIFO = 1,
- VO_LAYER_OUT_TO_LINK = 2,
- } VO_LAYER_DISPATCH_MODE_E;
- typedef struct axVO_VIDEO_LAYER_ATTR_S {
- VO_RECT_S stDispRect; /* RW; Display resolution */
- VO_SIZE_S stImageSize; /* RW; Canvas size of the video layer */
- AX_IMG_FORMAT_E enPixFmt;
- VO_LAYER_SYNC_E enLayerSync;
- AX_U32 u32PrimaryChnId;
- AX_U32 u32FrameRate;
- AX_U32 u32FifoDepth;
- AX_U32 u32ChnNr;
- AX_U32 u32BkClr;
- VO_LAYER_BUF_E enLayerBuf;
- AX_U32 u32InplaceChnId;
- AX_POOL u32PoolId;
- VO_LAYER_DISPATCH_MODE_E enDispatchMode;
- AX_U64 u64KeepChnPrevFrameBitmap;
- } VO_VIDEO_LAYER_ATTR_S;
- typedef struct axVO_CHN_ATTR_S {
- VO_RECT_S stRect;
- AX_U32 u32FifoDepth;
- } VO_CHN_ATTR_S;
- /* Device Relative Settings */
- AX_S32 AX_VO_Init(AX_VOID);
- AX_S32 AX_VO_Deinit(AX_VOID);
- AX_S32 AX_VO_SetPubAttr(VO_DEV VoDev, const VO_PUB_ATTR_S *pstPubAttr);
- AX_S32 AX_VO_GetPubAttr(VO_DEV VoDev, VO_PUB_ATTR_S *pstPubAttr);
- AX_S32 AX_VO_Enable(VO_DEV VoDev);
- AX_S32 AX_VO_Disable(VO_DEV VoDev);
- /* Video Relative Settings */
- AX_S32 AX_VO_SetVideoLayerAttr(VO_LAYER VoLayer, const VO_VIDEO_LAYER_ATTR_S *pstLayerAttr);
- AX_S32 AX_VO_GetVideoLayerAttr(VO_LAYER VoLayer, VO_VIDEO_LAYER_ATTR_S *pstLayerAttr);
- AX_S32 AX_VO_EnableVideoLayer(VO_LAYER VoLayer);
- AX_S32 AX_VO_DisableVideoLayer(VO_LAYER VoLayer);
- AX_S32 AX_VO_BindVideoLayer(VO_LAYER VoLayer, VO_DEV VoDev);
- AX_S32 AX_VO_UnBindVideoLayer(VO_LAYER VoLayer, VO_DEV VoDev);
- AX_S32 AX_VO_BindGraphicLayer(GRAPHIC_LAYER GraphicLayer, VO_DEV VoDev);
- AX_S32 AX_VO_UnBindGraphicLayer(GRAPHIC_LAYER GraphicLayer, VO_DEV VoDev);
- /* This interface obtains the FD corresponding to the layer for the select operation. Closing operation is not allowed */
- AX_S32 AX_VO_GetLayerFd(VO_LAYER VoLayer, AX_S32 *s32Fd);
- AX_S32 AX_VO_GetLayerFrame(VO_LAYER VoLayer, AX_VIDEO_FRAME_S *pstVoFrame, AX_S32 s32MS);
- AX_S32 AX_VO_ReleaseLayerFrame(VO_LAYER VoLayer, const AX_VIDEO_FRAME_S *pstVoFrame);
- /* Channel Relative Operations */
- AX_S32 AX_VO_EnableChn(VO_LAYER VoLayer, VO_CHN VoChn);
- AX_S32 AX_VO_DisableChn(VO_LAYER VoLayer, VO_CHN VoChn);
- AX_S32 AX_VO_SetChnAttr(VO_LAYER VoLayer, VO_CHN VoChn, const VO_CHN_ATTR_S *pstChnAttr);
- AX_S32 AX_VO_GetChnAttr(VO_LAYER VoLayer, VO_CHN VoChn, VO_CHN_ATTR_S *pstChnAttr);
- AX_S32 AX_VO_SendFrame(VO_LAYER VoLayer, VO_CHN VoChn, AX_VIDEO_FRAME_S *pstVoFrame, AX_S32 s32MS);
- #ifdef __cplusplus
- }
- #endif
- #endif /* _AX_VO_H_ */
|