1/* 2 * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16#ifndef __HI_COMM_VB_H__ 17#define __HI_COMM_VB_H__ 18 19#include "hi_type.h" 20#include "hi_errno.h" 21#include "hi_debug.h" 22 23#ifdef __cplusplus 24#if __cplusplus 25extern "C" { 26#endif 27#endif 28 29#define VB_INVALID_POOLID 0xFFFFFFFF 30#define VB_INVALID_HANDLE 0xFFFFFFFF 31 32#define VB_MAX_COMM_POOLS 16 33#define VB_MAX_MOD_COMM_POOLS 16 34 35/* user ID for VB */ 36#define VB_MAX_USER VB_UID_BUTT 37 38typedef enum hiVB_UID_E { 39 VB_UID_VI = 0, 40 VB_UID_VO = 1, 41 VB_UID_VGS = 2, 42 VB_UID_VENC = 3, 43 VB_UID_VDEC = 4, 44 VB_UID_H265E = 5, 45 VB_UID_H264E = 6, 46 VB_UID_JPEGE = 7, 47 VB_UID_H264D = 8, 48 VB_UID_JPEGD = 9, 49 VB_UID_VPSS = 10, 50 VB_UID_DIS = 11, 51 VB_UID_USER = 12, 52 VB_UID_PCIV = 13, 53 VB_UID_AI = 14, 54 VB_UID_AENC = 15, 55 VB_UID_RC = 16, 56 VB_UID_VFMW = 17, 57 VB_UID_GDC = 18, 58 VB_UID_AVS = 19, 59 VB_UID_DPU_RECT = 20, 60 VB_UID_DPU_MATCH = 21, 61 VB_UID_MCF = 22, 62 VB_UID_BUTT = 23, 63} VB_UID_E; 64 65/* Generall common pool use this owner id, module common pool use VB_UID as owner id */ 66#define POOL_OWNER_COMMON (-1) 67 68/* Private pool use this owner id */ 69#define POOL_OWNER_PRIVATE (-2) 70 71typedef HI_U32 VB_POOL; 72typedef HI_U32 VB_BLK; 73 74#define RESERVE_MMZ_NAME "window" 75 76typedef enum hiVB_REMAP_MODE_E { 77 VB_REMAP_MODE_NONE = 0, /* no remap */ 78 VB_REMAP_MODE_NOCACHE = 1, /* no cache remap */ 79 VB_REMAP_MODE_CACHED = 2, /* cache remap, if you use this mode, you should flush cache by yourself */ 80 VB_REMAP_MODE_BUTT 81} VB_REMAP_MODE_E; 82 83typedef struct hiVB_POOL_CONFIG_S { 84 HI_U64 u64BlkSize; 85 HI_U32 u32BlkCnt; 86 VB_REMAP_MODE_E enRemapMode; 87 HI_CHAR acMmzName[MAX_MMZ_NAME_LEN]; 88} VB_POOL_CONFIG_S; 89 90typedef struct hiVB_CONFIG_S { 91 HI_U32 u32MaxPoolCnt; 92 VB_POOL_CONFIG_S astCommPool[VB_MAX_COMM_POOLS]; 93} VB_CONFIG_S; 94 95typedef struct hiVB_POOL_STATUS_S { 96 HI_U32 bIsCommPool; 97 HI_U32 u32BlkCnt; 98 HI_U32 u32FreeBlkCnt; 99} VB_POOL_STATUS_S; 100 101#define VB_SUPPLEMENT_JPEG_MASK 0x1 102#define VB_SUPPLEMENT_ISPINFO_MASK 0x2 103#define VB_SUPPLEMENT_MOTION_DATA_MASK 0x4 104#define VB_SUPPLEMENT_DNG_MASK 0x8 105 106typedef struct hiVB_SUPPLEMENT_CONFIG_S { 107 HI_U32 u32SupplementConfig; 108} VB_SUPPLEMENT_CONFIG_S; 109 110#define HI_ERR_VB_NULL_PTR HI_DEF_ERR(HI_ID_VB, EN_ERR_LEVEL_ERROR, EN_ERR_NULL_PTR) 111#define HI_ERR_VB_NOMEM HI_DEF_ERR(HI_ID_VB, EN_ERR_LEVEL_ERROR, EN_ERR_NOMEM) 112#define HI_ERR_VB_NOBUF HI_DEF_ERR(HI_ID_VB, EN_ERR_LEVEL_ERROR, EN_ERR_NOBUF) 113#define HI_ERR_VB_UNEXIST HI_DEF_ERR(HI_ID_VB, EN_ERR_LEVEL_ERROR, EN_ERR_UNEXIST) 114#define HI_ERR_VB_EXIST HI_DEF_ERR(HI_ID_VB, EN_ERR_LEVEL_ERROR, EN_ERR_EXIST) 115#define HI_ERR_VB_ILLEGAL_PARAM HI_DEF_ERR(HI_ID_VB, EN_ERR_LEVEL_ERROR, EN_ERR_ILLEGAL_PARAM) 116#define HI_ERR_VB_NOTREADY HI_DEF_ERR(HI_ID_VB, EN_ERR_LEVEL_ERROR, EN_ERR_SYS_NOTREADY) 117#define HI_ERR_VB_BUSY HI_DEF_ERR(HI_ID_VB, EN_ERR_LEVEL_ERROR, EN_ERR_BUSY) 118#define HI_ERR_VB_NOT_PERM HI_DEF_ERR(HI_ID_VB, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_PERM) 119#define HI_ERR_VB_SIZE_NOT_ENOUGH HI_DEF_ERR(HI_ID_VB, EN_ERR_LEVEL_ERROR, EN_ERR_SIZE_NOT_ENOUGH) 120 121#define HI_ERR_VB_2MPOOLS HI_DEF_ERR(HI_ID_VB, EN_ERR_LEVEL_ERROR, EN_ERR_BUTT + 1) 122 123#define HI_TRACE_VB(level, fmt, ...) \ 124 do { \ 125 HI_TRACE(level, HI_ID_VB, "[Func]:%s [Line]:%d [Info]:" fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__); \ 126 } while (0) 127 128#ifdef __cplusplus 129#if __cplusplus 130} 131#endif 132#endif /* __cplusplus */ 133 134#endif /* __HI_COMM_VB_H_ */ 135 136