286 lines
6.4 KiB
C
Executable File
286 lines
6.4 KiB
C
Executable File
/**
|
|
OSD operation module.
|
|
|
|
This module supports rendering images and masks on video frame.
|
|
|
|
@file videosprite.h
|
|
@ingroup mIAppVideosprite
|
|
|
|
Copyright Novatek Microelectronics Corp. 2018. All rights reserved.
|
|
*/
|
|
#ifndef _VIDEOSPRITE_H_
|
|
#define _VIDEOSPRITE_H_
|
|
|
|
#ifdef __KERNEL__
|
|
#include <kwrap/type.h>
|
|
#include "kflow_common/type_vdo.h"
|
|
#else
|
|
#include <stdio.h>
|
|
#include <sys/types.h>
|
|
#endif
|
|
|
|
#define VDS_USER_VERSION 20180823
|
|
#define OSG_MASK_TYPE_INCONTINUOUS 0x0F
|
|
|
|
typedef enum {
|
|
VDS_PHASE_NULL,
|
|
VDS_PHASE_IME_STAMP,
|
|
VDS_PHASE_IME_MASK,
|
|
VDS_PHASE_IME_MOSAIC,
|
|
VDS_PHASE_IME_EXT_STAMP,
|
|
VDS_PHASE_IME_EXT_MASK,
|
|
VDS_PHASE_COE_STAMP,
|
|
VDS_PHASE_COE_EXT_STAMP,
|
|
VDS_PHASE_COE_EXT_MASK,
|
|
VDS_PHASE_VO_STAMP,
|
|
VDS_PHASE_VO_MASK,
|
|
VDS_PHASE_MAX,
|
|
ENUM_DUMMY4WORD(VDS_PHASE)
|
|
} VDS_PHASE;
|
|
|
|
typedef enum {
|
|
VDS_USER_CMD_NULL,
|
|
VDS_USER_CMD_NULL1,
|
|
VDS_USER_CMD_NULL2,
|
|
VDS_USER_CMD_NULL3,
|
|
VDS_USER_CMD_START,
|
|
VDS_USER_CMD_STOP,
|
|
VDS_USER_CMD_GET_STAMP_BUF,
|
|
VDS_USER_CMD_SET_STAMP_BUF,
|
|
VDS_USER_CMD_GET_STAMP_IMG,
|
|
VDS_USER_CMD_SET_STAMP_IMG,
|
|
VDS_USER_CMD_GET_STAMP_ATTR,
|
|
VDS_USER_CMD_SET_STAMP_ATTR,
|
|
VDS_USER_CMD_GET_MASK_ATTR,
|
|
VDS_USER_CMD_SET_MASK_ATTR,
|
|
VDS_USER_CMD_GET_MOSAIC_ATTR,
|
|
VDS_USER_CMD_SET_MOSAIC_ATTR,
|
|
VDS_USER_CMD_CLOSE,
|
|
VDS_USER_CMD_RESET,
|
|
VDS_USER_CMD_ALLOCATE,
|
|
VDS_USER_CMD_SET_CFG_MAX,
|
|
VDS_USER_CMD_SET_PALETTE,
|
|
VDS_USER_CMD_SET_QP,
|
|
VDS_USER_CMD_SET_COLOR_INVERT,
|
|
VDS_USER_CMD_SET_ENCODER_BUILTIN_MASK,
|
|
VDS_USER_CMD_GET_PALETTE,
|
|
VDS_USER_CMD_OPEN,
|
|
VDS_USER_CMD_MAX,
|
|
ENUM_DUMMY4WORD(VDS_USER_CMD)
|
|
} VDS_USER_CMD;
|
|
|
|
typedef enum _VDS_BUF_TYPE {
|
|
VDS_BUF_TYPE_NULL,
|
|
VDS_BUF_TYPE_SINGE,
|
|
VDS_BUF_TYPE_PING_PONG,
|
|
VDS_BUF_TYPE_MAX,
|
|
ENUM_DUMMY4WORD(VDS_BUF_TYPE)
|
|
} VDS_BUF_TYPE;
|
|
|
|
typedef enum {
|
|
VDS_IMG_FMT_NULL,
|
|
VDS_IMG_FMT_PICTURE_RGB565,
|
|
VDS_IMG_FMT_PICTURE_ARGB1555,
|
|
VDS_IMG_FMT_PICTURE_ARGB4444,
|
|
VDS_IMG_FMT_PICTURE_ARGB8888,
|
|
VDS_IMG_FMT_PICTURE_PALETTE1,
|
|
VDS_IMG_FMT_PICTURE_PALETTE2,
|
|
VDS_IMG_FMT_PICTURE_PALETTE4,
|
|
VDS_IMG_FMT_MAX,
|
|
ENUM_DUMMY4WORD(VDS_IMG_FMT)
|
|
} VDS_IMG_FMT;
|
|
|
|
typedef enum _VDS_COPY_HW {
|
|
VDS_COPY_HW_NULL,
|
|
VDS_COPY_HW_CPU,
|
|
VDS_COPY_HW_DMA,
|
|
VDS_COPY_HW_MAX,
|
|
ENUM_DUMMY4WORD(VDS_COPY_HW)
|
|
} VDS_COPY_HW;
|
|
|
|
typedef enum _VDS_MASK_TYPE {
|
|
VDS_MASK_TYPE_NULL,
|
|
VDS_MASK_TYPE_SOLID,
|
|
VDS_MASK_TYPE_HOLLOW,
|
|
VDS_MASK_TYPE_INCONTINUOUS,
|
|
VDS_MASK_TYPE_MAX,
|
|
ENUM_DUMMY4WORD(VDS_MASK_TYPE)
|
|
} VDS_MASK_TYPE;
|
|
|
|
typedef struct _VDS_STAMP_BUF {
|
|
VDS_BUF_TYPE type;
|
|
UINT32 size;
|
|
UINT32 p_addr;
|
|
} VDS_STAMP_BUF;
|
|
|
|
typedef struct _VDS_STAMP_IMG {
|
|
VDS_IMG_FMT fmt;
|
|
UINT32 w;
|
|
UINT32 h;
|
|
UINT32 p_addr;
|
|
VDS_COPY_HW copy;
|
|
} VDS_STAMP_IMG;
|
|
|
|
typedef struct _VDS_STAMP_ATTR {
|
|
INT32 x;
|
|
INT32 y;
|
|
UINT32 alpha;
|
|
UINT32 colorkey_en;
|
|
UINT32 colorkey_val;
|
|
UINT32 qp_en;
|
|
UINT32 qp_fix;
|
|
UINT32 qp_val;
|
|
UINT8 qp_lpm_mode;
|
|
UINT8 qp_tnr_mode;
|
|
UINT8 qp_fro_mode;
|
|
UINT32 layer;
|
|
UINT32 region;
|
|
UINT8 gcac_enable;
|
|
UINT8 gcac_blk_width;
|
|
UINT8 gcac_blk_height;
|
|
UINT8 gcac_blk_num;
|
|
UINT8 gcac_org_color_level;
|
|
UINT8 gcac_inv_color_level;
|
|
UINT8 gcac_nor_diff_th;
|
|
UINT8 gcac_inv_diff_th;
|
|
UINT8 gcac_sta_only_mode;
|
|
UINT8 gcac_full_eval_mode;
|
|
UINT8 gcac_eval_lum_targ;
|
|
} VDS_STAMP_ATTR;
|
|
|
|
typedef struct _OSG_INCONTINUOUS_MASK {
|
|
UINT32 type;
|
|
UINT32 color;
|
|
UINT32 x;
|
|
UINT32 y;
|
|
UINT32 h_line_len;
|
|
UINT32 h_hole_len;
|
|
UINT32 v_line_len;
|
|
UINT32 v_hole_len;
|
|
UINT32 h_thickness;
|
|
UINT32 v_thickness;
|
|
} OSG_INCONTINUOUS_MASK;
|
|
|
|
typedef struct _VDS_MASK_ATTR {
|
|
VDS_MASK_TYPE type;
|
|
UINT32 color;
|
|
union{
|
|
struct{
|
|
UINT32 alpha;
|
|
UINT32 x[4];
|
|
UINT32 y[4];
|
|
}normal;
|
|
struct{
|
|
UINT32 x;
|
|
UINT32 y;
|
|
UINT32 h_line_len;
|
|
UINT32 h_hole_len;
|
|
UINT32 h_thickness;
|
|
UINT32 v_line_len;
|
|
UINT32 v_hole_len;
|
|
UINT32 v_thickness;
|
|
}incontinuous;
|
|
}data;
|
|
UINT32 thickness;
|
|
} VDS_MASK_ATTR;
|
|
|
|
typedef struct _VDS_MOSAIC_ATTR {
|
|
UINT32 x[4];
|
|
UINT32 y[4];
|
|
UINT32 mosaic_blk_w;
|
|
UINT32 mosaic_blk_h;
|
|
} VDS_MOSAIC_ATTR;
|
|
|
|
typedef struct _VDS_CFG_MAX {
|
|
unsigned int max_prc_path;
|
|
unsigned int max_enc_path;
|
|
unsigned int max_out_path;
|
|
unsigned int max_stamp_img;
|
|
unsigned int max_prc_stamp[2];
|
|
unsigned int max_prc_mask[2];
|
|
unsigned int max_enc_stamp[2];
|
|
unsigned int max_enc_mask[2];
|
|
unsigned int max_out_stamp[2];
|
|
unsigned int max_out_mask[2];
|
|
} VDS_CFG_MAX;
|
|
|
|
typedef struct _VDS_QP {
|
|
UINT8 lpm_mode;
|
|
UINT8 tnr_mode;
|
|
UINT8 fro_mode;
|
|
} VDS_QP;
|
|
|
|
typedef struct __VDS_QP {
|
|
UINT32 magic1;
|
|
UINT32 magic2;
|
|
VDS_QP data;
|
|
} _VDS_QP;
|
|
|
|
typedef struct _VDS_COLOR_INVERT {
|
|
UINT8 blk_num;
|
|
UINT8 org_color_level;
|
|
UINT8 inv_color_level;
|
|
UINT8 nor_diff_th;
|
|
UINT8 inv_diff_th;
|
|
UINT8 sta_only_mode;
|
|
UINT8 full_eval_mode;
|
|
UINT8 eval_lum_targ;
|
|
} VDS_COLOR_INVERT;
|
|
|
|
typedef struct __VDS_COLOR_INVERT {
|
|
UINT32 magic1;
|
|
UINT32 magic2;
|
|
VDS_COLOR_INVERT data;
|
|
} _VDS_COLOR_INVERT;
|
|
|
|
typedef struct _VDS_ENC_MASK {
|
|
VDS_MASK_TYPE type;
|
|
UINT32 color;
|
|
UINT32 alpha;
|
|
UINT32 x;
|
|
UINT32 y;
|
|
UINT32 w;
|
|
UINT32 h;
|
|
UINT32 thickness;
|
|
UINT32 layer;
|
|
UINT32 region;
|
|
} VDS_ENC_MASK;
|
|
|
|
typedef struct __VDS_ENC_MASK {
|
|
UINT32 magic1;
|
|
UINT32 magic2;
|
|
VDS_ENC_MASK data;
|
|
} _VDS_ENC_MASK;
|
|
|
|
typedef struct _VDS_PALETTE {
|
|
UINT32 size;
|
|
UINT32 p_addr;
|
|
} VDS_PALETTE;
|
|
|
|
typedef struct _VDS_USER_DATA {
|
|
UINT32 version;
|
|
VDS_USER_CMD cmd;
|
|
VDS_PHASE phase;
|
|
UINT32 rgn;
|
|
UINT32 vid;
|
|
union {
|
|
VDS_STAMP_BUF buf;
|
|
VDS_STAMP_IMG img;
|
|
VDS_STAMP_ATTR stamp;
|
|
VDS_MASK_ATTR mask;
|
|
VDS_MOSAIC_ATTR mosaic;
|
|
VDS_CFG_MAX cfg;
|
|
VDS_PALETTE palette;
|
|
VDS_QP qp;
|
|
VDS_COLOR_INVERT color_invert;
|
|
VDS_ENC_MASK enc_mask;
|
|
} data;
|
|
} VDS_USER_DATA;
|
|
|
|
#if defined(__FREERTOS)
|
|
extern int nvt_vds_init(void);
|
|
extern int nvt_vds_ioctl (int fd, unsigned int cmd, void *arg);
|
|
#endif
|
|
#endif //_VIDEOSPRITE_H_
|
|
|