375 lines
12 KiB
C
375 lines
12 KiB
C
/*
|
|
* Copyright (C) Cvitek Co., Ltd. 2019-2020. All rights reserved.
|
|
*
|
|
* File Name: include/cvi_defines.h
|
|
* Description:
|
|
* The common definitions per chip capability.
|
|
*/
|
|
/****************************************************************************** */
|
|
|
|
#ifndef __U_CVI_DEFINES_H__
|
|
#define __U_CVI_DEFINES_H__
|
|
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#endif /* __cplusplus */
|
|
|
|
#include "linux/cvi_base.h"
|
|
|
|
#define CVI_CHIP_NAME "CV181X"
|
|
|
|
#ifndef __CV181X__
|
|
#define __CV181X__
|
|
#endif
|
|
|
|
#define CVI_CHIP_TEST 0x0
|
|
|
|
#define CVIU01 0x1
|
|
#define CVIU02 0x2
|
|
|
|
#define CVI_COLDBOOT 0x1
|
|
#define CVI_WDTBOOT 0x2
|
|
#define CVI_SUSPENDBOOT 0x3
|
|
#define CVI_WARMBOOT 0x4
|
|
|
|
#define IS_CHIP_CV183X(x) (((x) == E_CHIPID_CV1829) || ((x) == E_CHIPID_CV1832) \
|
|
|| ((x) == E_CHIPID_CV1835) || ((x) == E_CHIPID_CV1838))
|
|
#define IS_CHIP_CV182X(x) (((x) == E_CHIPID_CV1820) || ((x) == E_CHIPID_CV1821) \
|
|
|| ((x) == E_CHIPID_CV1822) || ((x) == E_CHIPID_CV1823) \
|
|
|| ((x) == E_CHIPID_CV1825) || ((x) == E_CHIPID_CV1826))
|
|
|
|
#define IS_CHIP_CV181X(x) (((x) == E_CHIPID_CV1820A) || ((x) == E_CHIPID_CV1821A) \
|
|
|| ((x) == E_CHIPID_CV1822A) || ((x) == E_CHIPID_CV1823A) \
|
|
|| ((x) == E_CHIPID_CV1825A) || ((x) == E_CHIPID_CV1826A) \
|
|
|| ((x) == E_CHIPID_CV1810C) || ((x) == E_CHIPID_CV1811C) \
|
|
|| ((x) == E_CHIPID_CV1812C) || ((x) == E_CHIPID_CV1811H) \
|
|
|| ((x) == E_CHIPID_CV1812H) || ((x) == E_CHIPID_CV1813H))
|
|
|
|
#define IS_CHIP_CV180X(x) (((x) == E_CHIPID_CV1800B) || ((x) == E_CHIPID_CV1801B) \
|
|
|| ((x) == E_CHIPID_CV1800C) || ((x) == E_CHIPID_CV1801C))
|
|
|
|
#define IS_CHIP_PKG_TYPE_QFN(x) (((x) == E_CHIPID_CV1820A) || ((x) == E_CHIPID_CV1821A) \
|
|
|| ((x) == E_CHIPID_CV1822A) || ((x) == E_CHIPID_CV1810C) \
|
|
|| ((x) == E_CHIPID_CV1811C) || ((x) == E_CHIPID_CV1812C))
|
|
|
|
#define MMF_VER_PRIX "_MMF_V"
|
|
|
|
#define ALIGN_NUM 4
|
|
|
|
#define LUMA_PHY_ALIGN 16
|
|
|
|
#define DEFAULT_ALIGN 64
|
|
#define MAX_ALIGN 1024
|
|
#define SEG_CMP_LENGTH 256
|
|
|
|
/* For VENC */
|
|
#define VENC_MAX_NAME_LEN 16
|
|
#define VENC_MAX_CHN_NUM 16
|
|
#define VEDU_IP_NUM 1
|
|
#define H264E_MAX_WIDTH 4096
|
|
#define H264E_MAX_HEIGHT 4096
|
|
#define H264E_MIN_WIDTH 114
|
|
#define H264E_MIN_HEIGHT 114
|
|
#define H265E_MAX_WIDTH 4096
|
|
#define H265E_MAX_HEIGHT 4096
|
|
#define H265E_MIN_WIDTH 114
|
|
#define H265E_MIN_HEIGHT 114
|
|
#define JPEGE_MAX_WIDTH 8192
|
|
#define JPEGE_MAX_HEIGHT 8192
|
|
#define JPEGE_MIN_WIDTH 32
|
|
#define JPEGE_MIN_HEIGHT 32
|
|
#define JPGE_MAX_NUM 1
|
|
#define VENC_MAX_ROI_NUM 8
|
|
#define H264E_MIN_HW_INDEX 0
|
|
#define H264E_MAX_HW_INDEX 11
|
|
#define H264E_MIN_VW_INDEX 0
|
|
#define H264E_MAX_VW_INDEX 3
|
|
#define VENC_QP_HISGRM_NUM 52
|
|
#define MAX_TILE_NUM 1
|
|
#define H265E_ADAPTIVE_FRAME_TYPE 4
|
|
#define H265E_ADAPTIVE_QP_TYPE 5
|
|
|
|
#define VENC_MIN_INPUT_FRAME_RATE 1
|
|
#define VENC_MAX_INPUT_FRAME_RATE 240
|
|
|
|
#define VENC_MAX_RECEIVE_SOURCE 4
|
|
|
|
#define VENC_PIC_RECEIVE_SOURCE0 0
|
|
#define VENC_PIC_RECEIVE_SOURCE1 1
|
|
#define VENC_PIC_RECEIVE_SOURCE2 2
|
|
#define VENC_PIC_RECEIVE_SOURCE3 3
|
|
|
|
#define VENC_ALIGN_W 32
|
|
#define VENC_ALIGN_H 16
|
|
|
|
/* For RC */
|
|
#define RC_TEXTURE_THR_SIZE 16
|
|
#define MIN_BITRATE 2
|
|
#define MAX_BITRATE (100*1024)
|
|
|
|
/* For VDEC */
|
|
#define VDEC_MAX_CHN_NUM 64
|
|
#define VDH_MAX_CHN_NUM 0
|
|
#define VEDU_CHN_START VDH_MAX_CHN_NUM
|
|
#define VEDU_H264D_ERRRATE 10
|
|
#define VEDU_H264D_FULLERR 100
|
|
|
|
#define H264D_ALIGN_W 64
|
|
#define H264D_ALIGN_H 64
|
|
#define H265D_ALIGN_W 64
|
|
#define H265D_ALIGN_H 64
|
|
#define JPEGD_ALIGN_W 64
|
|
#define JPEGD_ALIGN_H 16
|
|
#define JPEGD_RGB_ALIGN 16
|
|
|
|
#define H264D_ALIGN_FRM 0x1000
|
|
#define H265D_ALIGN_FRM 0x1000
|
|
#define JPEGD_ALIGN_FRM 0x1000
|
|
|
|
#define H264D_MAX_SPS 32
|
|
#define H264D_MIN_SPS 1
|
|
#define H264D_MAX_PPS 256
|
|
#define H264D_MIN_PPS 1
|
|
#define H264D_MAX_SLICE 300
|
|
#define H264D_MIN_SLICE 1
|
|
|
|
#define H265D_MAX_VPS 16
|
|
#define H265D_MIN_VPS 1
|
|
#define H265D_MAX_SPS 16
|
|
#define H265D_MIN_SPS 1
|
|
#define H265D_MAX_PPS 64
|
|
#define H265D_MIN_PPS 1
|
|
#define H265D_MAX_SLICE 200
|
|
#define H265D_MIN_SLICE 1
|
|
|
|
#define VEDU_H264D_MAX_WIDTH 2880
|
|
#define VEDU_H264D_MAX_HEIGHT 1920
|
|
#define VEDU_H264D_MIN_WIDTH 114
|
|
#define VEDU_H264D_MIN_HEIGHT 114
|
|
|
|
#define VEDU_H265D_MAX_WIDTH 2880
|
|
#define VEDU_H265D_MAX_HEIGHT 1920
|
|
#define VEDU_H265D_MIN_WIDTH 114
|
|
#define VEDU_H265D_MIN_HEIGHT 114
|
|
|
|
#define JPEGD_IP_NUM 1
|
|
#define JPEGD_MAX_WIDTH 2880
|
|
#define JPEGD_MAX_HEIGHT 1920
|
|
#define JPEGD_MIN_WIDTH 8
|
|
#define JPEGD_MIN_HEIGHT 8
|
|
|
|
/* For Region */
|
|
#define RGN_MIN_WIDTH 2
|
|
#define RGN_MIN_HEIGHT 2
|
|
|
|
#define RGN_COVER_MAX_WIDTH 2880
|
|
#define RGN_COVER_MAX_HEIGHT 4096
|
|
#define RGN_COVER_MIN_X 0
|
|
#define RGN_COVER_MIN_Y 0
|
|
#define RGN_COVER_MAX_X (RGN_COVER_MAX_WIDTH - RGN_MIN_WIDTH)
|
|
#define RGN_COVER_MAX_Y (RGN_COVER_MAX_HEIGHT - RGN_MIN_HEIGHT)
|
|
|
|
#define RGN_COVEREX_MAX_NUM 4
|
|
#define RGN_COVEREX_MAX_WIDTH 2880
|
|
#define RGN_COVEREX_MAX_HEIGHT 4096
|
|
#define RGN_COVEREX_MIN_X 0
|
|
#define RGN_COVEREX_MIN_Y 0
|
|
#define RGN_COVEREX_MAX_X (RGN_COVEREX_MAX_WIDTH - RGN_MIN_WIDTH)
|
|
#define RGN_COVEREX_MAX_Y (RGN_COVEREX_MAX_HEIGHT - RGN_MIN_HEIGHT)
|
|
|
|
#define RGN_OVERLAY_MAX_WIDTH 2880
|
|
#define RGN_OVERLAY_MAX_HEIGHT 4096
|
|
#define RGN_OVERLAY_MIN_X 0
|
|
#define RGN_OVERLAY_MIN_Y 0
|
|
#define RGN_OVERLAY_MAX_X (RGN_OVERLAY_MAX_WIDTH - RGN_MIN_WIDTH)
|
|
#define RGN_OVERLAY_MAX_Y (RGN_OVERLAY_MAX_HEIGHT - RGN_MIN_HEIGHT)
|
|
|
|
#define RGN_OVERLAYEX_MAX_WIDTH 2880
|
|
#define RGN_OVERLAYEX_MAX_HEIGHT 4096
|
|
#define RGN_OVERLAYEX_MIN_X 0
|
|
#define RGN_OVERLAYEX_MIN_Y 0
|
|
#define RGN_OVERLAYEX_MAX_X (RGN_OVERLAYEX_MAX_WIDTH - RGN_MIN_WIDTH)
|
|
#define RGN_OVERLAYEX_MAX_Y (RGN_OVERLAYEX_MAX_HEIGHT - RGN_MIN_HEIGHT)
|
|
|
|
#define RGN_MOSAIC_MAX_NUM 8
|
|
#define RGN_MOSAIC_X_ALIGN 4
|
|
#define RGN_MOSAIC_Y_ALIGN 2
|
|
#define RGN_MOSAIC_WIDTH_ALIGN 4
|
|
#define RGN_MOSAIC_HEIGHT_ALIGN 4
|
|
|
|
#define RGN_MOSAIC_MIN_WIDTH 8
|
|
#define RGN_MOSAIC_MIN_HEIGHT 8
|
|
#define RGN_MOSAIC_MAX_WIDTH 2880
|
|
#define RGN_MOSAIC_MAX_HEIGHT 4096
|
|
#define RGN_MOSAIC_MIN_X 0
|
|
#define RGN_MOSAIC_MIN_Y 0
|
|
#define RGN_MOSAIC_MAX_X (RGN_MOSAIC_MAX_WIDTH - RGN_MOSAIC_MIN_WIDTH)
|
|
#define RGN_MOSAIC_MAX_Y (RGN_MOSAIC_MAX_HEIGHT - RGN_MOSAIC_MIN_HEIGHT)
|
|
|
|
// vpss rgn define
|
|
#define RGN_MAX_LAYER_VPSS 2
|
|
#define RGN_ODEC_LAYER_VPSS 0
|
|
#define RGN_NORMAL_LAYER_VPSS 1
|
|
#define RGN_MAX_NUM_VPSS 8
|
|
#define RGN_EX_MAX_NUM_VPSS 16
|
|
#define RGN_EX_MAX_WIDTH 2880
|
|
|
|
// vo rgn define
|
|
#define RGN_MAX_NUM_VO 8
|
|
|
|
#define RGN_MAX_BUF_NUM 2
|
|
#define RGN_MAX_NUM 108
|
|
|
|
/*************************************/
|
|
#define VENC_MAX_SSE_NUM 8
|
|
#define CVI_MAX_SENSOR_NUM 2
|
|
|
|
/* For VI */
|
|
/* number of channel and device on video input unit of chip
|
|
* Note! VI_MAX_CHN_NUM is NOT equal to VI_MAX_DEV_NUM
|
|
* multiplied by VI_MAX_CHN_NUM, because all VI devices
|
|
* can't work at mode of 4 channels at the same time.
|
|
*/
|
|
#define VI_MAX_DEV_NUM 3
|
|
#define VI_MAX_PHY_PIPE_NUM 4
|
|
#define VI_MAX_VIR_PIPE_NUM 0
|
|
#define VI_MAX_PIPE_NUM (VI_MAX_PHY_PIPE_NUM + VI_MAX_VIR_PIPE_NUM)
|
|
#define VI_MAX_WDR_NUM 1
|
|
|
|
#define VI_MAX_VIR_CHN_NUM 2
|
|
#define VI_MAX_PHY_CHN_NUM 3
|
|
#define VI_MAX_EXT_CHN_NUM 2
|
|
#define VI_MAX_CHN_NUM (VI_MAX_PHY_CHN_NUM + VI_MAX_VIR_CHN_NUM)
|
|
#define VI_EXT_CHN_START VI_MAX_CHN_NUM
|
|
#define VI_MAX_EXTCHN_BIND_PER_CHN 1
|
|
|
|
#define VI_MAX_WDR_FRAME_NUM 2
|
|
#define VI_MAX_NODE_NUM 3
|
|
#define VIPROC_IP_NUM 1
|
|
#define VICAP_IP_NUM 1
|
|
|
|
#define VI_MAX_SPLIT_NODE_NUM 3
|
|
|
|
#define VI_DEV_MIN_WIDTH 120
|
|
#define VI_DEV_MIN_HEIGHT 120
|
|
#define VI_DEV_MAX_WIDTH 4608
|
|
#define VI_DEV_MAX_HEIGHT 4608
|
|
#define VI_FPN_MAX_WIDTH 4096
|
|
#define VI_FPN_MAX_HEIGHT VI_DEV_MAX_HEIGHT
|
|
|
|
#define VI_PIPE_OFFLINE_MIN_WIDTH 120
|
|
#define VI_PIPE_OFFLINE_MIN_HEIGHT 120
|
|
#define VI_PIPE_OFFLINE_MAX_WIDTH 4096
|
|
#define VI_PIPE_OFFLINE_MAX_HEIGHT 2160
|
|
|
|
#define VI_PIPE_ONLINE_MIN_WIDTH 120
|
|
#define VI_PIPE_ONLINE_MIN_HEIGHT 120
|
|
#define VI_PIPE_ONLINE_MAX_WIDTH 2688
|
|
#define VI_PIPE_ONLINE_MAX_HEIGHT 1944
|
|
|
|
#define VI_PIPE0_MAX_WIDTH 4096
|
|
#define VI_PIPE0_MAX_HEIGHT 2160
|
|
#define VI_PIPE1_MAX_WIDTH 4096
|
|
#define VI_PIPE1_MAX_HEIGHT 2160
|
|
#define VI_PIPE2_MAX_WIDTH 2688
|
|
#define VI_PIPE2_MAX_HEIGHT 1944
|
|
#define VI_PIPE3_MAX_WIDTH 2688
|
|
#define VI_PIPE3_MAX_HEIGHT 1944
|
|
|
|
#define VI_PIPE_WDR_FIRST_MAX_WIDTH VI_PIPE1_MAX_WIDTH
|
|
#define VI_PIPE_FUSION_MAX_WIDTH 2688
|
|
#define VI_PIPE_FUSION_MAX_HEIGHT 1944
|
|
|
|
#define VI_PHYCHN_OFFLINE_MIN_WIDTH 120
|
|
#define VI_PHYCHN_OFFLINE_MIN_HEIGHT 120
|
|
#define VI_PHYCHN_OFFLINE_MAX_WIDTH 4608
|
|
#define VI_PHYCHN_OFFLINE_MAX_HEIGHT 4608
|
|
|
|
#define VI_PHYCHN_ONLINE_MIN_WIDTH 120
|
|
#define VI_PHYCHN_ONLINE_MIN_HEIGHT 120
|
|
#define VI_PHYCHN_ONLINE_MAX_WIDTH 2048
|
|
#define VI_PHYCHN_ONLINE_MAX_HEIGHT 4608
|
|
|
|
#define VI_CMP_PARAM_SIZE 152
|
|
|
|
#define VI_PIXEL_FORMAT PIXEL_FORMAT_NV21
|
|
|
|
#define CVI_VI_VPSS_EXTRA_BUF 0
|
|
|
|
#define CVI_VI_CHN_0_BUF (2 + CVI_VI_VPSS_EXTRA_BUF)
|
|
#define CVI_VI_CHN_1_BUF (2 + CVI_VI_VPSS_EXTRA_BUF)
|
|
#define CVI_VI_CHN_2_BUF (2 + CVI_VI_VPSS_EXTRA_BUF)
|
|
#define CVI_VI_CHN_3_BUF (2 + CVI_VI_VPSS_EXTRA_BUF)
|
|
#define CVI_VI_BUF (CVI_VI_CHN_0_BUF + CVI_VI_CHN_1_BUF + CVI_VI_CHN_2_BUF + CVI_VI_CHN_3_BUF)
|
|
|
|
/* For VO */
|
|
#define VO_MIN_CHN_WIDTH 32 /* channel minimal width */
|
|
#define VO_MIN_CHN_HEIGHT 32 /* channel minimal height */
|
|
#define VO_MAX_DEV_NUM 1 /* max dev num */
|
|
#define VO_MAX_LAYER_NUM 1 /* max layer num */
|
|
#define VO_MAX_PRIORITY 1 /* max layer priority */
|
|
#define VO_MAX_CHN_NUM 1 /* max chn num */
|
|
#define VO_MAX_LAYER_IN_DEV 1 /* max layer num of each dev */
|
|
#define VO_MAX_GRAPHICS_LAYER_NUM 1
|
|
#define VO_MIN_TOLERATE 1 /* min play toleration 1ms */
|
|
#define VO_MAX_TOLERATE 100000 /* max play toleration 100s */
|
|
|
|
/* For AUDIO */
|
|
#define AI_DEV_MAX_NUM 1
|
|
#define AO_DEV_MIN_NUM 0
|
|
#define AO_DEV_MAX_NUM 2
|
|
#define AIO_MAX_NUM 2
|
|
#define AENC_MAX_CHN_NUM 3
|
|
#define ADEC_MAX_CHN_NUM 3
|
|
|
|
#define AI_MAX_CHN_NUM 2
|
|
#define AO_MAX_CHN_NUM 1
|
|
#define AO_SYSCHN_CHNID (AO_MAX_CHN_NUM - 1)
|
|
|
|
#define AIO_MAX_CHN_NUM ((AO_MAX_CHN_NUM > AI_MAX_CHN_NUM) ? AO_MAX_CHN_NUM:AI_MAX_CHN_NUM)
|
|
|
|
/* For VPSS */
|
|
#define VPSS_IP_NUM 2
|
|
#define VPSS_DEV_0 0
|
|
#define VPSS_DEV_1 1
|
|
#define VPSS_MAX_GRP_NUM 16
|
|
#define VPSS_ONLINE_NUM 3
|
|
#define VPSS_ONLINE_GRP_0 0
|
|
#define VPSS_ONLINE_GRP_1 1
|
|
#define VPSS_ONLINE_GRP_2 2
|
|
|
|
#ifdef __CV181X__
|
|
#define VPSS_MAX_PHY_CHN_NUM 4 /* sc_d, sc_v1, sc_v2, sc_v3 */
|
|
#else
|
|
#define VPSS_MAX_PHY_CHN_NUM 3 /* sc_d, sc_v1, sc_v2 */
|
|
#endif
|
|
#define VPSS_MAX_CHN_NUM (VPSS_MAX_PHY_CHN_NUM)
|
|
#define VPSS_MIN_IMAGE_WIDTH 32
|
|
#define VPSS_MAX_IMAGE_WIDTH 2880
|
|
#define VPSS_MAX_IMAGE_HEIGHT 4096
|
|
#define VPSS_MAX_ZOOMIN 32
|
|
#define VPSS_MAX_ZOOMOUT 32
|
|
|
|
/*For Gdc*/
|
|
#define LDC_ALIGN 64
|
|
#define LDC_MIN_IMAGE_WIDTH 640
|
|
#define LDC_MIN_IMAGE_HEIGHT 480
|
|
|
|
#define SPREAD_MIN_IMAGE_WIDTH 640
|
|
#define SPREAD_MIN_IMAGE_HEIGHT 480
|
|
|
|
/* For GDC */
|
|
#define GDC_IP_NUM 1
|
|
#define GDC_PROC_JOB_INFO_NUM (500)
|
|
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /* __U_CVI_DEFINES_H__ */
|
|
|