sdk-hwV1.3/lichee/linux-4.9/include/uapi/media/rt-media/uapi_rt_media.h

1216 lines
33 KiB
C
Raw Normal View History

2024-05-07 10:09:20 +00:00
/** @file
* Copyright (C) 2022 Allwinner, Inc.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef _UAPI_RT_MEDIA_H_
#define _UAPI_RT_MEDIA_H_
//#include <stdio.h>
//#include <sys/types.h>
#define SENSOR_0_SIGN 0xAA66AA66
#define SENSOR_1_SIGN 0xBB66BB66
#define SENSOR_2_SIGN 0xCC66CC66
#if 1//config 0
#define CSI_SENSOR_0_VIPP_0 0
#define CSI_SENSOR_0_VIPP_1 4
#define CSI_SENSOR_0_VIPP_2 8
#define CSI_SENSOR_0_VIPP_3 12
#define CSI_SENSOR_1_VIPP_0 1
#define CSI_SENSOR_1_VIPP_1 5
#define CSI_SENSOR_1_VIPP_2 9
#define CSI_SENSOR_1_VIPP_3 13
#define CSI_SENSOR_2_VIPP_0 2
#define CSI_SENSOR_2_VIPP_1 6
#define CSI_SENSOR_2_VIPP_2 10
#define CSI_SENSOR_2_VIPP_3 14
#else//config 1
#define CSI_SENSOR_0_VIPP_0 0
#define CSI_SENSOR_0_VIPP_1 4
#define CSI_SENSOR_0_VIPP_2 8
#define CSI_SENSOR_0_VIPP_3 12
#define CSI_SENSOR_1_VIPP_0 2
#define CSI_SENSOR_1_VIPP_1 6
#define CSI_SENSOR_1_VIPP_2 10
#define CSI_SENSOR_1_VIPP_3 14
#define CSI_SENSOR_2_VIPP_0 1
#define CSI_SENSOR_2_VIPP_1 5
#define CSI_SENSOR_2_VIPP_2 9
#define CSI_SENSOR_2_VIPP_3 13
#endif
#define LBC_2X_COM_RATIO_EVEN 600
#define LBC_2X_COM_RATIO_ODD 450
#define LBC_2_5X_COM_RATIO_EVEN 440
#define LBC_2_5X_COM_RATIO_ODD 380
#define LBC_BIT_DEPTH 8
#define LBC_EXT_SIZE (2 * 1024)
#define NEI_TEST_CODE 0
#define RT_AE_FACE_MAX_NUM 8
#define RT_AE_FACE_WIN_WEIGHT_LENGTH 16
#define RT_AE_FACE_POS_WEIGHT_LENGTH 64
enum RT_MEDIA_IOCTL_CMD {
IOCTL_UNKOWN = 0x100,
IOCTL_CONFIG, //+1
IOCTL_START, //+2
IOCTL_PAUSE, //+3
IOCTL_DESTROY, //+4
IOCTL_GET_VBV_BUFFER_INFO, //+5
IOCTL_GET_STREAM_HEADER_SIZE, //+6
IOCTL_GET_STREAM_HEADER_DATA, //+7
IOCTL_GET_STREAM_DATA, //+8
IOCTL_RETURN_STREAM_DATA, //+9
IOCTL_CATCH_JPEG_START,
IOCTL_CATCH_JPEG_GET_DATA,
IOCTL_CATCH_JPEG_STOP,
IOCTL_SET_OSD,
//IOCTL_GET_BIN_IMAGE_DATA,
//IOCTL_GET_MV_INFO_DATA,
IOCTL_CONFIG_YUV_BUF_INFO,
IOCTL_REQUEST_YUV_FRAME,
IOCTL_RETURN_YUV_FRAME,
IOCTL_GET_ISP_LV,
IOCTL_GET_ISP_HIST,
IOCTL_GET_ISP_EXP_GAIN, //+20
IOCTL_GET_ISP_AE_METERING_MODE,
IOCTL_SET_IR_PARAM,
IOCTL_SET_VERTICAL_FLIP,
IOCTL_SET_HORIZONTAL_FLIP,
IOCTL_SET_ISP_ATTR_CFG,
IOCTL_GET_ISP_ATTR_CFG,
IOCTL_SET_ISP_ORL,
IOCTL_SET_ISP_AE_MODE,
IOCTL_SET_FORCE_KEYFRAME,
IOCTL_RESET_ENCODER_TYPE,
IOCTL_REQUEST_ENC_YUV_FRAME, //+30
IOCTL_SUBMIT_ENC_YUV_FRAME,
IOCTL_SET_POWER_LINE_FREQ,
IOCTL_SET_QP_RANGE,
IOCTL_SET_BITRATE,
IOCTL_SET_VBR_PARAM,
IOCTL_GET_SUM_MB_INFO,
IOCTL_SET_ENC_MOTION_SEARCH_PARAM,
IOCTL_GET_ENC_MOTION_SEARCH_RESULT,
IOCTL_SET_VENC_SUPER_FRAME_PARAM,
IOCTL_SET_FPS, //+40
IOCTL_SET_SHARP,
IOCTL_GET_CSI_STATUS,
IOCTL_SET_ROI,
IOCTL_SET_GDC,
IOCTL_SET_ROTATE,
IOCTL_SET_REC_REF_LBC_MODE,
IOCTL_SET_WEAK_TEXT_TH,
IOCTL_SET_REGION_D3D_PARAM,
IOCTL_GET_REGION_D3D_RESULT, //+50
IOCTL_SET_CHROMA_QP_OFFSET,
IOCTL_SET_H264_CONSTRAINT_FLAG,
IOCTL_SET_VE2ISP_D2D_LIMIT,
IOCTL_SET_EN_SMALL_SEARCH_RANGE,
IOCTL_SET_FORCE_CONF_WIN,
IOCTL_SET_ROT_VE2ISP,
IOCTL_SET_INSERT_DATA,
IOCTL_GET_INSERT_DATA_BUF_STATUS,
IOCTL_SET_GRAY,
IOCTL_SET_WB_YUV, //+60
IOCTL_GET_WB_YUV,
IOCTL_SET_2DNR,
IOCTL_SET_3DNR,
IOCTL_SET_CYCLIC_INTRA_REFRESH,
IOCTL_SET_P_FRAME_INTRA,
IOCTL_RESET_IN_OUT_BUFFER,
IOCTL_DROP_FRAME, ///< notify rt_media to drop <n> video frames
IOCTL_SET_CAMERA_MOVE_STATUS,
IOCTL_SET_CROP,
IOCTL_SET_VENC_TARTGET_BITS_CLIP_PARAM,
IOCTL_SET_JPEG_QUALITY,
IOCTL_SET_FIX_QP,
IOCTL_SET_MB_RC_MOVE_STATUS,
IOCTL_SET_H264_VIDEO_TIMING,
IOCTL_SET_H265_VIDEO_TIMING,
IOCTL_GET_TDM_BUF,
IOCTL_RETURN_TDM_BUF,
IOCTL_GET_TDM_DATA,
IOCTL_SET_BRIGHTNESS,
IOCTL_SET_CONTRAST,
IOCTL_SET_SATURATION,
IOCTL_SET_HUE,
IOCTL_SET_SHARPNESS,
IOCTL_SET_SENSOR_EXP,
IOCTL_SET_SENSOR_GAIN,
IOCTL_GET_SENSOR_NAME,
IOCTL_GET_SENSOR_RESOLUTION,
IOCTL_GET_TUNNING_CTL_DATA,
IOCTL_SET_ENC_AND_DEC_CASE,
IOCTL_GET_SENSOR_RESERVE_ADDR,
IOCTL_GET_ISP_REG,
};
typedef struct KERNEL_VBV_BUFFER_INFO{
int share_fd;
int size;
} KERNEL_VBV_BUFFER_INFO;
typedef enum {
RT_VENC_CODEC_H264 = 0,
RT_VENC_CODEC_JPEG = 1,
RT_VENC_CODEC_H265 = 2,
} RT_VENC_CODEC_TYPE;
// dynamic config
typedef struct video_stream_s{
int id;
uint64_t pts;
unsigned int flag;
unsigned int size0;
unsigned int size1;
unsigned int size2;
unsigned int offset0;
unsigned int offset1;
unsigned int offset2;
int keyframe_flag;
struct timeval tv;
unsigned char *data0;
unsigned char *data1;
unsigned char *data2;
} video_stream_s;
typedef video_stream_s STREAM_DATA_INFO;
typedef struct catch_jpeg_config {
int channel_id;
int width;
int height;
int qp;
int rotate_angle;
} catch_jpeg_config;
typedef struct catch_jpeg_buf_info {
unsigned int buf_size; // set the max_size, return valid_size
unsigned char *buf;
} catch_jpeg_buf_info;
/* overlay related */
#define MAX_OVERLAY_ITEM_SIZE (64)
typedef enum OVERLAY_ARGB_TYPE {
OVERLAY_ARGB_MIN = -1,
OVERLAY_ARGB8888 = 0,
OVERLAY_ARGB4444 = 1,
OVERLAY_ARGB1555 = 2,
OVERLAY_ARGB_MAX = 3,
} OVERLAY_ARGB_TYPE; ///< same to VENC_OVERLAY_ARGB_TYPE
typedef enum RT_VENC_OVERLAY_TYPE {
RT_NORMAL_OVERLAY = 0, //normal overlay
RT_COVER_OSD = 1, //use the setting yuv to cover region
RT_LUMA_REVERSE_OVERLAY = 2, //normal overlay and luma reverse
} RT_VENC_OVERLAY_TYPE; ///< same to VENC_OVERLAY_TYPE
typedef struct VencCoverYuvS {
unsigned char use_cover_yuv_flag; //1:use the cover yuv; 0:transform the argb data to yuv ,then cover
unsigned char cover_y; //the value of cover y
unsigned char cover_u; //the value of cover u
unsigned char cover_v; //the value of cover v
} VencCoverYuvS; ///< same to VencOverlayCoverYuvS
typedef struct OverlayItemInfo_t {
unsigned short start_x;
unsigned short start_y;
unsigned int widht; // must 16_align: 'width%16 == 0'
unsigned int height; // must 16_align: 'height%16 == 0'
VencCoverYuvS cover_yuv; //when use RT_COVER_OSD should set the cover yuv
RT_VENC_OVERLAY_TYPE osd_type; //reference definition of VENC_OVERLAY_TYPE
unsigned char *data_buf; //the vir addr of overlay block
unsigned int data_size; //the size of bitmap
} OverlayItemInfo;
typedef struct VideoInputOSD_t {
unsigned char osd_num; //num of overlay region
OVERLAY_ARGB_TYPE argb_type;//reference definition of VENC_OVERLAY_ARGB_TYPE
OverlayItemInfo item_info[MAX_OVERLAY_ITEM_SIZE];
//* for v5v200 and newer ic
unsigned int invert_mode;
unsigned int invert_threshold;
//* end
} VideoInputOSD;
//typedef struct VideoGetBinImageBufInfo {
// unsigned int max_size;
// unsigned char *buf;
//} VideoGetBinImageBufInfo;
//typedef struct VideoGetMvInfoBufInfo {
// unsigned int max_size;
// unsigned char *buf;
//} VideoGetMvInfoBufInfo;
#ifdef CONFIG_FRAMEDONE_TWO_BUFFER
#define CONFIG_YUV_BUF_NUM (2)
#else
#define CONFIG_YUV_BUF_NUM (3)
#endif
typedef struct config_yuv_buf_info {
unsigned char *phy_addr[CONFIG_YUV_BUF_NUM];
int buf_size;
int buf_num;
} config_yuv_buf_info;
typedef struct rt_yuv_info {
int bset;
int fd;
unsigned char *phy_addr;
} rt_yuv_info;
#define VIDEO_INPUT_CHANNEL_NUM (16)
typedef enum {
AW_Video_H264ProfileBaseline = 66, /**< Baseline profile */
AW_Video_H264ProfileMain = 77, /**< Main profile */
AW_Video_H264ProfileHigh = 100, /**< High profile */
} AW_Video_H264PROFILETYPE; ///< same to #VENC_H264PROFILETYPE
/**
* H264 level types
*/
typedef enum {
AW_Video_H264Level1 = 10, /**< Level 1 */
AW_Video_H264Level11 = 11, /**< Level 1.1 */
AW_Video_H264Level12 = 12, /**< Level 1.2 */
AW_Video_H264Level13 = 13, /**< Level 1.3 */
AW_Video_H264Level2 = 20, /**< Level 2 */
AW_Video_H264Level21 = 21, /**< Level 2.1 */
AW_Video_H264Level22 = 22, /**< Level 2.2 */
AW_Video_H264Level3 = 30, /**< Level 3 */
AW_Video_H264Level31 = 31, /**< Level 3.1 */
AW_Video_H264Level32 = 32, /**< Level 3.2 */
AW_Video_H264Level4 = 40, /**< Level 4 */
AW_Video_H264Level41 = 41, /**< Level 4.1 */
AW_Video_H264Level42 = 42, /**< Level 4.2 */
AW_Video_H264Level5 = 50, /**< Level 5 */
AW_Video_H264Level51 = 51, /**< Level 5.1 */
AW_Video_H264Level52 = 52, /**< Level 5.2 */
AW_Video_H264LevelDefault = 0
} AW_Video_H264LEVELTYPE; ///< same to #VENC_H264LEVELTYPE
typedef enum {
AW_Video_H265ProfileMain = 1,
AW_Video_H265ProfileMain10 = 2,
AW_Video_H265ProfileMainStill = 3
} AW_VideoH265PROFILETYPE; ///< same to #VENC_H265PROFILETYPE
typedef enum {
AW_Video_H265Level1 = 30, /**< Level 1 */
AW_Video_H265Level2 = 60, /**< Level 2 */
AW_Video_H265Level21 = 63, /**< Level 2.1 */
AW_Video_H265Level3 = 90, /**< Level 3 */
AW_Video_H265Level31 = 93, /**< Level 3.1 */
AW_Video_H265Level41 = 123, /**< Level 4.1 */
AW_Video_H265Level5 = 150, /**< Level 5 */
AW_Video_H265Level51 = 153, /**< Level 5.1 */
AW_Video_H265Level52 = 156, /**< Level 5.2 */
AW_Video_H265Level6 = 180, /**< Level 6 */
AW_Video_H265Level61 = 183, /**< Level 6.1 */
AW_Video_H265Level62 = 186, /**< Level 6.2 */
AW_Video_H265LevelDefault = 0
} AW_Video_H265LEVELTYPE; ///< same to #VENC_H265LEVELTYPE
typedef struct video_qp_range {
int i_min_qp;//[1 ~ 51], I帧qp最小值默认值: 35
int i_max_qp;//[1 ~ 51], I帧qp最大值默认值: 51
int p_min_qp;//[1 ~ 51], P帧qp最小值默认值: 35
int p_max_qp;//[1 ~ 51], P帧qp最大值默认值: 51
int i_init_qp;
int enable_mb_qp_limit;
} video_qp_range;
typedef struct RTVencFixQP {
int bEnable;
int nIQp;
int nPQp;
} RTVencFixQP;
typedef enum VIDEO_OUTPUT_MODE{
OUTPUT_MODE_STREAM = 0, // yuv图像经过编码器输出码流数据
OUTPUT_MODE_YUV = 1, // 直接调用接口获取yuv数据
OUTPUT_MODE_ENCODE_FILE_YUV = 2, // 调试用不启用isp应用层传递yuv给编码器进行编码
OUTPUT_MODE_ENCODE_OUTSIDE_YUV = 3,//从外部非yuv file获取yuv进行编码
} VIDEO_OUTPUT_MODE;
typedef enum rt_pixelformat_type {
RT_PIXEL_YUV420SP, //nv12
RT_PIXEL_YVU420SP, //nv21
RT_PIXEL_YUV420P,
RT_PIXEL_YVU420P,
RT_PIXEL_YUV422SP,
RT_PIXEL_YVU422SP,
RT_PIXEL_YUV422P,
RT_PIXEL_YVU422P,
RT_PIXEL_YUYV422,
RT_PIXEL_UYVY422,
RT_PIXEL_YVYU422,
RT_PIXEL_VYUY422,
RT_PIXEL_LBC_25X,
RT_PIXEL_LBC_2X,
RT_PIXEL_NUM
} rt_pixelformat_type;
typedef rt_pixelformat_type RT_PIXELFORMAT_TYPE;
typedef enum rt_outputformat_type {
RT_OUTPUT_SAME_AS_INPUT,
RT_OUTPUT_420,
RT_OUTPUT_444,
RT_OUTPUT_422,
RT_OUPUT_NUM
} rt_outputformat_type;
typedef rt_outputformat_type RT_OUTPUTFORMAT_TYPE;
typedef struct {
int en_motion_search;
int dis_default_para;
int hor_region_num;
int ver_region_num;
int large_mv_th;
float large_mv_ratio_th; // include intra and large mv
float non_zero_mv_ratio_th; // include intra, large mv and samll mv
float large_sad_ratio_th;
} RTVencMotionSearchParam; ///< same to VencMotionSearchParam
typedef struct RTVencBitRateRange {
int bitRateMax; //unit: kbps
int bitRateMin; //unit: kbps
} RTVencBitRateRange;
typedef enum RT_VENC_VIDEO_FORMAT {
RT_COMPONENT = 0,
RT_PAL = 1,
RT_NTSC = 2,
RT_SECAM = 3,
RT_MAC = 4,
RT_DEFAULT = 5,
} RT_VENC_VIDEO_FORMAT; /**< same to VENC_VIDEO_FORMAT [vencoder.h] */
typedef enum RT_VENC_COLOR_SPACE {
RT_RESERVED0 = 0,
RT_VENC_BT709 = 1, // include BT709-5, BT1361, IEC61966-2-1 IEC61966-2-4
RT_RESERVED1 = 2,
RT_RESERVED2 = 3,
RT_VENC_BT470 = 4, // include BT470-6_SystemM,
RT_VENC_BT601 = 5, // include BT470-6_SystemB, BT601-6_625, BT1358_625, BT1700_625
RT_VENC_SMPTE_170M = 6, // include SMPTE_170M, BT601-6_525, BT1358_525, BT1700_NTSC
RT_VENC_SMPTE_240M = 7, // include SMPTE_240M
RT_VENC_YCC = 8, // include GENERIC_FILM
RT_VENC_BT2020 = 9, // include BT2020
RT_VENC_ST_428 = 10, // include SMPTE_428-1
} RT_VENC_COLOR_SPACE; ///< same to VENC_COLOR_SPACE [vencoder.h]
typedef struct RTVencH264VideoSignal {
RT_VENC_VIDEO_FORMAT video_format;
unsigned char full_range_flag;
RT_VENC_COLOR_SPACE src_colour_primaries;
RT_VENC_COLOR_SPACE dst_colour_primaries;
} RTVencVideoSignal; ///< same to VencJpegVideoSignal [vencoder.h]
typedef struct RTVencRect {
int nLeft;
int nTop;
int nWidth;
int nHeight;
} RTVencRect; ///< same to VencRect
typedef struct RTVencROIConfig {
int bEnable;
int index;
int nQPoffset;
unsigned char roi_abs_flag;
RTVencRect sRect;
} RTVencROIConfig; ///< same to VencROIConfig
typedef enum {
RTVENC_ISP_SCALER_0 = 0, //not scaler
RTVENC_ISP_SCALER_EIGHTH = 1, //scaler 1/8 write back
RTVENC_ISP_SCALER_HALF = 2, //scaler 1/2 write back
RTVENC_ISP_SCALER_QUARTER = 3, //scaler 1/4 write back
} RTeVencEncppScalerRatio;
typedef struct {
unsigned int bEnableWbYuv;
unsigned int nWbBufferNum;
unsigned int bEnableCrop;
RTVencRect sWbYuvcrop;
RTeVencEncppScalerRatio scalerRatio;
} RTsWbYuvParam;
typedef struct {
unsigned int nThumbSize;
unsigned char *pThumbBuf;
unsigned int bWriteToFile;
unsigned int nEncodeCnt;
} RTVencThumbInfo;
typedef struct {
int enable_crop;
RTVencRect s_crop_rect;
} RTCropInfo;
typedef enum {
RTVENC_PRODUCT_STATIC_IPC = 0,
RTVENC_PRODUCT_MOVING_IPC = 1,
RTVENC_PRODUCT_DOORBELL = 2,
RTVENC_PRODUCT_CDR = 3,
RTVENC_PRODUCT_SDV = 4,
RTVENC_PRODUCT_PROJECTION = 5,
RTVENC_PRODUCT_UAV = 6, // Unmanned Aerial Vehicle
RTVENC_PRODUCT_NUM,
} RTeVencProductMode; ///< same to eVencProductMode
#define MAX_ROI_AREA 8
typedef struct {
unsigned int uMaxBitRate; //* kbps
unsigned int nMovingTh; //range[1,31], 1:all frames are moving,
// 31:have no moving frame, default: 20
int nQuality; //range[1,50], 1:worst quality, 10: common quality, 50:best quality
int nIFrmBitsCoef; //range[1, 20], 1:worst quality, 20:best quality
int nPFrmBitsCoef; //range[1, 50], 1:worst quality, 50:best quality
} RTVencVbrParam;
typedef struct rt_media_config_s {
int channelId; // 码流通道, channel ID. equivalent to vipp number, scope[0,15].
int encodeType; //编码类型:0)h264 1)mjpeg 2)h265
int width; // resolution width
int height;// resolution height
int dst_width; ///< operate venc. encode output size.
int dst_height;
int fps; ///< operate isp. fps:1~30
int dst_fps; ///< operate isp. fps:1~30
int bitrate; ///< operate venc. h264 bitrate (kbps)
int gop; ///< operate venc. h264 I帧间隔如果sdk有自动降帧逻辑要保证I帧间隔不变。
int vbr; ///< operate venc. VBR=1, CBR=0
RTVencVbrParam vbr_param;
int profile; //AW_Video_H264PROFILETYPE or AW_VideoH265PROFILETYPE
int level; //AW_Video_H264LEVELTYPE or AW_Video_H265LEVELTYPE
int drop_frame_num; //丢弃的图像帧数如drop_frame_num = 5, 则前5帧图像丢弃掉从第6帧开始编码
video_qp_range qp_range;
VIDEO_OUTPUT_MODE output_mode;
//int enable_bin_image; // 0: disable, 1: enable
//int bin_image_moving_th;//range[1,31], 1:all frames are moving,
// 31:have no moving frame, default: 20
//int enable_mv_info; // 0: disable, 1: enable
//* about isp
int enable_wdr; ///< config isp: set wdr, [0,1]
RT_PIXELFORMAT_TYPE pixelformat;//* just set it to: RT_PIXELFORMAT_UNKNOWN
RT_OUTPUTFORMAT_TYPE outputformat;
//RTVencMotionSearchParam motion_search_param;// should setup the param if use motion search by encoder
int enable_overlay;
int jpg_quality;
int bonline_channel;
int share_buf_num;
int jpg_mode;//0: jpg 1: mjpg
RTVencBitRateRange bit_rate_range;
RTVencVideoSignal venc_video_signal;
RTeVencProductMode product_mode;
//RTVencROIConfig sRoiConfig[MAX_ROI_AREA];
int demo_start;
int enable_sharp; ///< operate venc. only config venc to enable sharp.
int en_16_align_fill_data;
int vin_buf_num;
int breduce_refrecmem;//Can reduce memory usage and optimize memory efficiency. default set enable
RTCropInfo s_crop_info;
RTsWbYuvParam s_wbyuv_param;
int vbv_buf_size; //all bitstream buf size.
int vbv_thresh_size; //one bitstream max size.
int enable_ve_isp_linkage;
int skip_sharp_param_frame_num;
int ve_encpp_sharp_atten_coef_per; //decrease encpp sharpness percent [0, 100]. 100 means no decrease
int enable_aiisp;
unsigned int tdm_rxbuf_cnt;
} rt_media_config_s;
typedef rt_media_config_s VideoInputConfig;
typedef struct {
int pix_x_bgn;
int pix_x_end;
int pix_y_bgn;
int pix_y_end;
int total_num;
int intra_num;
int large_mv_num;
int small_mv_num;
int zero_mv_num;
int large_sad_num;
int is_motion;
} RTVencMotionSearchRegion; ///< same to VencMotionSearchRegion
typedef struct {
int total_region_num;
int motion_region_num;
RTVencMotionSearchRegion *region;
} RTVencMotionSearchResult; ///< same to VencMotionSearchResult
//#define ISP_REG_TBL_LENGTH 33
//typedef struct RTsEncppSharpParamStatic {
// unsigned char ss_shp_ratio;
// unsigned char ls_shp_ratio;
// unsigned short ss_dir_ratio;
// unsigned short ls_dir_ratio;
// unsigned short ss_crc_stren;
// unsigned char ss_crc_min;
// unsigned short wht_sat_ratio;
// unsigned short blk_sat_ratio;
// unsigned char wht_slp_bt;
// unsigned char blk_slp_bt;
//
// unsigned short sharp_ss_value[ISP_REG_TBL_LENGTH];
// unsigned short sharp_ls_value[ISP_REG_TBL_LENGTH];
// unsigned short sharp_hsv[46];
//} RTsEncppSharpParamStatic;
//
//typedef struct RTsEncppSharpParamDynamic {
// unsigned short ss_ns_lw;
// unsigned short ss_ns_hi;
// unsigned short ls_ns_lw;
// unsigned short ls_ns_hi;
// unsigned char ss_lw_cor;
// unsigned char ss_hi_cor;
// unsigned char ls_lw_cor;
// unsigned char ls_hi_cor;
// unsigned short ss_blk_stren;
// unsigned short ss_wht_stren;
// unsigned short ls_blk_stren;
// unsigned short ls_wht_stren;
// unsigned char ss_avg_smth;
// unsigned char ss_dir_smth;
// unsigned char dir_smth[4];
// unsigned char hfr_smth_ratio;
// unsigned short hfr_hf_wht_stren;
// unsigned short hfr_hf_blk_stren;
// unsigned short hfr_mf_wht_stren;
// unsigned short hfr_mf_blk_stren;
// unsigned char hfr_hf_cor_ratio;
// unsigned char hfr_mf_cor_ratio;
// unsigned short hfr_hf_mix_ratio;
// unsigned short hfr_mf_mix_ratio;
// unsigned char hfr_hf_mix_min_ratio;
// unsigned char hfr_mf_mix_min_ratio;
// unsigned short hfr_hf_wht_clp;
// unsigned short hfr_hf_blk_clp;
// unsigned short hfr_mf_wht_clp;
// unsigned short hfr_mf_blk_clp;
// unsigned short wht_clp_para;
// unsigned short blk_clp_para;
// unsigned char wht_clp_slp;
// unsigned char blk_clp_slp;
// unsigned char max_clp_ratio;
//
// unsigned short sharp_edge_lum[ISP_REG_TBL_LENGTH];
//} RTsEncppSharpParamDynamic;
//
//typedef struct RTsEncppSharpParam {
// RTsEncppSharpParamDynamic *pDynamicParam;
// RTsEncppSharpParamStatic *pStaticParam;
//} RTsEncppSharpParam;
//
//typedef struct RTsEncppSharp {
// int bsharp;
// RTsEncppSharpParam sEncppSharpParam;
//} RTsEncppSharp;
typedef struct {
unsigned int sum_mad;
unsigned int sum_qp;
unsigned long long sum_sse;
unsigned int avg_sse;
} RTVencMBSumInfo;
typedef enum RTVENC_SUPERFRAME_MODE {
RT_VENC_SUPERFRAME_NONE,
RT_VENC_SUPERFRAME_DISCARD,
RT_VENC_SUPERFRAME_REENCODE,
} RTVENC_SUPERFRAME_MODE; ///< same to VENC_SUPERFRAME_MODE
typedef struct RTVencSuperFrameConfig {
RTVENC_SUPERFRAME_MODE eSuperFrameMode;
unsigned int nMaxIFrameBits;
unsigned int nMaxPFrameBits;
int nMaxRencodeTimes;
float nMaxP2IFrameBitsRatio;
} RTVencSuperFrameConfig; ///< same to VencSuperFrameConfig
typedef enum RT_POWER_LINE_FREQUENCY{
RT_FREQUENCY_DISABLED = 0,
RT_FREQUENCY_50HZ = 1,
RT_FREQUENCY_60HZ = 2,
RT_FREQUENCY_AUTO = 3,
} RT_POWER_LINE_FREQUENCY;
typedef enum RT_AE_METERING_MODE{
RT_AE_METERING_MODE_AVERAGE = 0,
RT_AE_METERING_MODE_CENTER = 1,
RT_AE_METERING_MODE_SPOT = 2,
RT_AE_METERING_MODE_MATRIX = 3,
} RT_AE_METERING_MODE;
typedef enum {
/*isp_ctrl*/
RT_ISP_CTRL_MODULE_EN = 0,
RT_ISP_CTRL_DIGITAL_GAIN,
RT_ISP_CTRL_PLTMWDR_STR,
RT_ISP_CTRL_DN_STR,
RT_ISP_CTRL_3DN_STR,
RT_ISP_CTRL_HIGH_LIGHT,
RT_ISP_CTRL_BACK_LIGHT,
RT_ISP_CTRL_WB_MGAIN,
RT_ISP_CTRL_AGAIN_DGAIN,
RT_ISP_CTRL_COLOR_EFFECT,
RT_ISP_CTRL_AE_ROI,
RT_ISP_CTRL_AF_METERING,
RT_ISP_CTRL_COLOR_TEMP,
RT_ISP_CTRL_EV_IDX,
RT_ISP_CTRL_MAX_EV_IDX,
RT_ISP_CTRL_PLTM_HARDWARE_STR,
RT_ISP_CTRL_ISO_LUM_IDX,
RT_ISP_CTRL_COLOR_SPACE,
RT_ISP_CTRL_VENC2ISP_PARAM,
RT_ISP_CTRL_NPU_NR_PARAM,
RT_ISP_CTRL_TOTAL_GAIN,
RT_ISP_CTRL_AE_EV_LV,
RT_ISP_CTRL_AE_EV_LV_ADJ,
RT_ISP_CTRL_AE_WEIGHT_LUM,
RT_ISP_CTRL_AE_LOCK,
RT_ISP_CTRL_AE_FACE_CFG,
RT_ISP_CTRL_MIPI_SWITCH,
RT_ISP_CTRL_AE_TABLE,
RT_ISP_CTRL_AE_STATS,
RT_ISP_CTRL_IR_STATUS,
RT_ISP_CTRL_IR_AWB_GAIN,
RT_ISP_CTRL_READ_BIN_PARAM,
RT_ISP_CTRL_AE_ROI_TARGET,
RT_ISP_CTRL_AI_ISP,
} RT_ISP_CTRL_CFG_IDS; ///< ref to hw_isp_ctrl_cfg_ids
typedef enum {
/*tunning_ctrl*/
RT_ISP_CTRL_GET_SENSOR_CFG = 0,
RT_ISP_CTRL_RPBUF_INIT,
RT_ISP_CTRL_RPBUF_RELEASE,
RT_ISP_CTRL_GET_ISP_PARAM,
RT_ISP_CTRL_SET_ISP_PARAM,
RT_ISP_CTRL_GET_LOG,
RT_ISP_CTRL_GET_3A_STAT,
} RT_TUNNING_CTRL_IDS; //ref to hw_tunning_ctrl_ids
typedef struct {
int grey; // 0 彩色模式 1 黑白模式
int ir_on;
int ir_flash_on;
} RTIrParam;
typedef struct {
int exp_val;
int exp_mid_val;
int exp_short_val;
int gain_val;
int gain_mid_val;
int gain_short_val;
int r_gain;
int b_gain;
} RTIspExpGain;
typedef struct {
unsigned int min_exp;//us
unsigned int max_exp;
unsigned int min_gain;
unsigned int max_gain;
unsigned int min_iris;
unsigned int max_iris;
} RTIspAeTable; ///< ref to struct ae_table
typedef struct {
RTIspAeTable ae_tbl[10];
int length;
int ev_step;
int shutter_shift;
} RTIspAeTableInfo; ///< ref to struct ae_table_info
typedef struct {
int awb_rgain_ir;
int awb_bgain_ir;
} RTIspIrAwbGain; ///< same to struct isp_ir_awb_gain
typedef struct {
int x1;
int y1;
int x2;
int y2;
} RTIspH3aCoorWin; ///< same to struct isp_h3a_coor_win
typedef struct {
unsigned short enable;
unsigned short force_ae_target;
RTIspH3aCoorWin coor;
} RTIspAeRoiAttr; ///< same to tstruct isp_ae_roi_attr
typedef struct {
unsigned char is_overflow;
unsigned short moving_level_table[484];
} RTEncMovingLevelInfo; ///< same to struct enc_MovingLevelInfo
typedef struct {
RTIspH3aCoorWin face_ae_coor[RT_AE_FACE_MAX_NUM];
unsigned char enable;
unsigned char vaild_face_cnt;
short face_ae_tolerance;
short face_ae_speed;
short face_ae_target;
short face_ae_delay_cnt;
unsigned short face_up_percent;
unsigned short face_down_percent;
unsigned short ae_face_block_num_thrd;
unsigned short ae_face_block_weight;
unsigned short ae_over_face_max_exp_control;
unsigned short ae_face_win_weight[RT_AE_FACE_WIN_WEIGHT_LENGTH];
int ae_face_pos_weight[RT_AE_FACE_POS_WEIGHT_LENGTH];
} RTFaceAeCfg;
typedef enum {
RT_MIPI_SWITCH_A = 0,
RT_MIPI_SWITCH_B = 1,
RT_MIPI_SWITCH_MAX,
} RTMipiSwitchChoiceType;
typedef enum {
RT_MIPI_GET_SWITCH = 0,
RT_MIPI_SET_SWITCH = 1,
RT_MIPI_CTRL_MAX,
} RTMipiSwitchCtrlType;
typedef struct {
RTMipiSwitchCtrlType switch_ctrl;
unsigned int mipi_switch_status;
unsigned int comp_ratio;
unsigned int exp_comp;
unsigned int gain_comp;
unsigned int drop_frame_num;
unsigned long long time_stamp;
} RTSensorMipiSwitchEntity;
typedef struct {
unsigned char enable_3d_filter;
unsigned char adjust_pix_level_enable; // adjustment of coef pix level enable
unsigned char smooth_filter_enable; //* 3x3 smooth filter enable
unsigned char max_pix_diff_th; //* range[0~31]: maximum threshold of pixel difference
unsigned char max_mad_th; //* range[0~63]: maximum threshold of mad
unsigned char max_mv_th; //* range[0~63]: maximum threshold of motion vector
unsigned char min_coef; //* range[0~16]: minimum weight of 3d filter
unsigned char max_coef; //* range[0~16]: maximum weight of 3d filter,
} RTs3DfilterParam;
typedef struct {
unsigned char enable_2d_filter;
unsigned char filter_strength_uv; //* range[0~255], 0 means close 2d filter, advice: 32
unsigned char filter_strength_y; //* range[0~255], 0 means close 2d filter, advice: 32
unsigned char filter_th_uv; //* range[0~15], advice: 2
unsigned char filter_th_y; //* range[0~15], advice: 2
} RTs2DfilterParam;
typedef struct RTVencH264VideoTiming {
unsigned long num_units_in_tick;
unsigned long time_scale;
unsigned int fixed_frame_rate_flag;
} RTVencH264VideoTiming;
typedef struct RTVencH265TimingS {
//0:stream without timing info; 1:stream with timing info
unsigned char timing_info_present_flag;
unsigned int num_units_in_tick; //time_scale/frameRate
unsigned int time_scale; //1second is average divided by time_scale
unsigned int num_ticks_poc_diff_one; //num ticks of diff frame
} RTVencH265TimingS;
typedef struct {
int bEnable;
int nBlockNumber;
} RTVencCyclicIntraRefresh;
typedef struct {
int d2d_level; //[1,1024], 256 means 1X
int d3d_level; //[1,1024], 256 means 1X
RTEncMovingLevelInfo mMovingLevelInfo;
} RTEncVencVe2IspParam; ///< same to struct enc_VencVe2IspParam
typedef struct {
unsigned short cfg_id; ///< ref to RT_ISP_CTRL_CFG_IDS
unsigned short update_flag;
int ev_digital_gain;
int pltmwdr_level;
int denoise_level;
int tdf_level;
int ir_status;
int ae_ev_idx;
int ae_max_ev_idx;
int ae_lum_idx;
int ae_ev_lv;
int ae_ev_lv_adj;
int ae_lock;
int awb_color_temp;
int ae_weight_lum;
RTIspIrAwbGain awb_ir_gain;
RTIspAeTableInfo *ae_table;
char path[100];
RTIspAeRoiAttr ae_roi_area;
unsigned char ae_stat_avg[432];
RTEncVencVe2IspParam VencVe2IspParam;
unsigned char ai_isp_en;
unsigned char ai_isp_update;
RTFaceAeCfg ae_face_info;
RTSensorMipiSwitchEntity mipi_switch_info;
} RTIspCfgAttrData; ///< same to struct isp_cfg_attr_data
typedef struct {
RTIspCfgAttrData isp_attr_cfg;
} RTIspCtrlAttr;
typedef struct {
unsigned char isp_id;
unsigned short sensor_width;
unsigned short sensor_height;
unsigned short act_fps;
unsigned char wdr;
} RTTunningSensorCfg; //< same to struct tunning_sensor_cfg
typedef struct {
unsigned short cfg_id;
char path[100];
RTTunningSensorCfg sensor_cfg;
} RTTunningCtlData; // < same to tunning_ctl_data
typedef struct {
unsigned int width_max;
unsigned int height_max;
unsigned int width_min;
unsigned int height_min;
} RTSensorResolution;
#define MAX_ISP_ORL_NUM (16)
struct orl_win {
unsigned int left;
unsigned int top;
unsigned int width;
unsigned int height;
unsigned int rgb_orl;
};
typedef struct {
unsigned char on;
unsigned char orl_cnt;
unsigned int orl_width;
struct orl_win orl_win[MAX_ISP_ORL_NUM];
} RTIspOrl;
typedef enum RTeGdcPerspFunc {
RT_Gdc_Persp_Only,
RT_Gdc_Persp_LDC
} RTeGdcPerspFunc; ///< same to eGdcPerspFunc
typedef enum RTeGdcLensDistModel {
RT_Gdc_DistModel_WideAngle,
RT_Gdc_DistModel_FishEye
} RTeGdcLensDistModel; ///< same to eGdcLensDistModel
typedef enum RTeGdcMountType {
RT_Gdc_Mount_Top,
RT_Gdc_Mount_Wall,
RT_Gdc_Mount_Bottom
} RTeGdcMountType; ///< same to eGdcMountType
typedef enum RTeGdcWarpType {
RT_Gdc_Warp_LDC,
RT_Gdc_Warp_Pano180,
RT_Gdc_Warp_Pano360,
RT_Gdc_Warp_Normal,
RT_Gdc_Warp_Fish2Wide,
RT_Gdc_Warp_Perspective,
RT_Gdc_Warp_BirdsEye,
RT_Gdc_Warp_User
} RTeGdcWarpType; ///< same to eGdcWarpType
typedef struct {
unsigned char bGDC_en;
RTeGdcWarpType eWarpMode;
RTeGdcMountType eMountMode;
unsigned char bMirror;
unsigned int calib_widht;
unsigned int calib_height;
float fx;
float fy;
float cx;
float cy;
float fx_scale;
float fy_scale;
float cx_scale;
float cy_scale;
RTeGdcLensDistModel eLensDistModel;
float distCoef_wide_ra[3];
float distCoef_wide_ta[2];
float distCoef_fish_k[4];
int centerOffsetX;
int centerOffsetY;
int rotateAngle;
int radialDistortCoef;
int trapezoidDistortCoef;
int fanDistortCoef;
int pan;
int tilt;
int zoomH;
int zoomV;
int scale;
int innerRadius;
float roll;
float pitch;
float yaw;
RTeGdcPerspFunc perspFunc;
float perspectiveProjMat[9];
int birdsImg_width;
int birdsImg_height;
float mountHeight;
float roiDist_ahead;
float roiDist_left;
float roiDist_right;
float roiDist_bottom;
int peaking_en;
int peaking_clamp;
int peak_m;
int th_strong_edge;
int peak_weights_strength;
} RTsGdcParam; ///< same to sGdcParam
typedef enum RTeVeLbcMode {
RT_LBC_MODE_DISABLE = 0,
RT_LBC_MODE_1_5X = 1,
RT_LBC_MODE_2_0X = 2,
RT_LBC_MODE_2_5X = 3,
RT_LBC_MODE_NO_LOSSY = 4,
} RTeVeLbcMode; ///< same to eVeLbcMode
typedef struct {
int en_weak_text_th;
float weak_text_th;
} RTVenWeakTextTh;
typedef struct {
float weak_text_th;
} RTDynamicProcSettings;
typedef struct {
int pix_x_bgn;
int pix_x_end;
int pix_y_bgn;
int pix_y_end;
int total_num;
int zero_mv_num;
int is_possible_static;
int is_really_static;
float zero_mv_rate;
} RTVencRegionD3DRegion; ///< same to VencRegionD3DRegion
typedef struct sRTVencRegionD3DResult RTVencRegionD3DResult; ///< same to VencRegionD3DResult
struct sRTVencRegionD3DResult{
int total_region_num;
int static_region_num;
RTVencRegionD3DRegion *region;
RTVencRegionD3DResult **prev;
RTVencRegionD3DResult **next;
};
typedef struct {
int en_region_d3d;
int dis_default_para;
int result_num;
int hor_region_num;
int ver_region_num;
int hor_expand_num;
int ver_expand_num;
int lv_weak_th[9];
float zero_mv_rate_th[3];
unsigned char chroma_offset;
unsigned char static_coef[3]; //* fallow by zero_mv_rate
unsigned char motion_coef[4]; //* fallow by MoveStatus
} RTVencRegionD3DParam; ///< same to VencRegionD3DParam
typedef struct {
unsigned char reserve_zero : 2;
unsigned char constraint_5 : 1;
unsigned char constraint_4 : 1;
unsigned char constraint_3 : 1;
unsigned char constraint_2 : 1;
unsigned char constraint_1 : 1;
unsigned char constraint_0 : 1;
} RTVencH264ConstraintFlag; ///< same to VencH264ConstraintFlag
typedef struct {
int en_d2d_limit;
int d2d_level[6];
} RTVencVe2IspD2DLimit; ///< same to VencVe2IspD2DLimit
typedef struct {
unsigned int en_force_conf;
unsigned int left_offset;
unsigned int right_offset;
unsigned int top_offset;
unsigned int bottom_offset;
} RTVencForceConfWin; ///< same to VencForceConfWin
typedef struct {
int dis_default_d2d;
int d2d_min_lv_th;
int d2d_max_lv_th;
int d2d_min_lv_level;
int d2d_max_lv_level;
int dis_default_d3d;
int d3d_min_lv_th;
int d3d_max_lv_th;
int d3d_min_lv_level;
int d3d_max_lv_level;
} RTVencRotVe2Isp; ///< same to VencRotVe2Isp
typedef struct {
unsigned char *pBuffer;
unsigned int nBufLen;
unsigned int nDataLen;
unsigned int nType;
} RTVencSeiData; ///< same to VencSeiData
typedef struct {
unsigned int nSeiNum;
RTVencSeiData *pSeiData;
} RTVencSeiParam; ///< same to VencSeiParam
#define RT_MAX_INSERT_FRAME_LEN (196569)
typedef enum {
RT_BUF_IDLE,
RT_BUF_STANDBY,
RT_BUF_OCCUPY,
} RT_VENC_BUF_STATUS; ///< same to VENC_BUF_STATUS
typedef struct {
unsigned char *pBuffer;
unsigned int nBufLen;
unsigned int nDataLen;
unsigned int nFrameRate;
RT_VENC_BUF_STATUS eStatus;
} RTVencInsertData; ///< same to VencInsertData
// notify callback event to AWVideoInput_cxt, using netlink.
typedef enum {
RTCB_EVENT_VENC_DROP_FRAME = 0,
} RTCbEventType;
typedef struct {
RTCbEventType eEventType;
int nData1;
int nData2;
} RTCbEvent;
/**
generic netlink rt_media family definition.
*/
enum {
RT_MEDIA_CMD_UNSPEC = 0, /* Reserved */
RT_MEDIA_CMD_SEND, /* user->kernel, send some infos such as channelId */
RT_MEDIA_CMD_CB_EVENT, /* kernel->user, send rt_media callback event to AWVideoInput */
__RT_MEDIA_CMD_MAX,
};
#define RT_MEDIA_CMD_MAX (__RT_MEDIA_CMD_MAX - 1)
/**
rt_media family netlink attribute definition.
*/
enum {
RT_MEDIA_CMD_ATTR_UNSPEC = 0,
RT_MEDIA_CMD_ATTR_CHNID, //record channel id, type = int.
RT_MEDIA_CMD_ATTR_RTCBEVENT, //type = RTCbEvent
__RT_MEDIA_CMD_ATTR_MAX,
};
#define RT_MEDIA_CMD_ATTR_MAX (__RT_MEDIA_CMD_ATTR_MAX - 1)
typedef enum {
RT_VENC_CAMERA_ADAPTIVE_STATIC = 0,
RT_VENC_CAMERA_FORCE_STATIC = 1,
RT_VENC_CAMERA_FORCE_MOVING = 2,
RT_VENC_CAMERA_ADAPTIVE_MOVING_AND_STATIC = 3,
RT_VENC_CAMERA_STATUS_NUM
} RT_VENC_CAMERA_MOVE_STATUS;
typedef struct {
int dis_default_para;
int mode;
int en_gop_clip;
float gop_bit_ratio_th[3];
float coef_th[5][2];
} RT_VENC_TARGET_BITS_CLIP_PARAM; /* < same to VencTargetBitsClipParam > */
typedef struct {
int flag; //0: print; 1: save to file; others: reserve for future use
char *path; //path string
unsigned int len; //path string length
} VIN_ISP_REG_GET_CFG;
/**
NETLINK_GENERIC related info
RT_MEDIA_GENL_NAME: rt_media generic netlink family name, string_length + 1 <= GENL_NAMSIZ.
RT_MEDIA_GENL_VERSION: rt_media generic netlink family version
*/
#define RT_MEDIA_GENL_NAME "genl-rt_media"
#define RT_MEDIA_GENL_VERSION 0x1
#endif