nt9856x/code/hdal/drivers/k_flow/include/videosprite/videosprite_internal.h
2023-03-28 15:07:53 +08:00

96 lines
2.5 KiB
C
Executable File

/**
Image operation module.
This module supports rendering osds and masks on video frame.
@file videosprite.h
@ingroup mIAppVideosprite
Copyright Novatek Microelectronics Corp. 2018. All rights reserved.
*/
#ifndef _VIDEO_SPRITE_INTERNAL_H_
#define _VIDEO_SPRITE_INTERNAL_H_
#include <kwrap/type.h>
#include "kflow_common/type_vdo.h"
typedef enum {
VDS_QS_NULL,
VDS_QS_IME_STAMP,
VDS_QS_IME_MASK,
VDS_QS_IME_EXT_STAMP,
VDS_QS_IME_EXT_MASK,
VDS_QS_ENC_EXT_STAMP,
VDS_QS_ENC_EXT_MASK,
VDS_QS_ENC_COE_STAMP,
VDS_QS_ENC_JPG_STAMP,
VDS_QS_VO_STAMP,
VDS_QS_VO_MASK,
ENUM_DUMMY4WORD(VDS_QUERY_STAGE)
} VDS_QUERY_STAGE;
typedef enum _VDS_INTERNAL_MASK_TYPE {
VDS_INTERNAL_MASK_TYPE_NULL,
VDS_INTERNAL_MASK_TYPE_SOLID,
VDS_INTERNAL_MASK_TYPE_HOLLOW,
VDS_INTERNAL_MASK_TYPE_INCONTINUOUS,
VDS_INTERNAL_MASK_TYPE_MAX,
ENUM_DUMMY4WORD(VDS_INTERNAL_MASK_TYPE)
} VDS_INTERNAL_MASK_TYPE;
typedef struct {
UINT32 en;
VDO_PXLFMT fmt;
UPOINT pos;
USIZE size;
UINT32 addr;
UINT32 alpha;
} VDS_INTERNAL_EXT_STAMP;
typedef struct {
UINT32 en;
VDS_INTERNAL_MASK_TYPE type;
UINT32 color;
union{
struct{
UPOINT pos[4];
UINT32 alpha;
}normal;
struct{
UPOINT pos;
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_INTERNAL_EXT_MASK;
extern int vds_max_coe_stamp;
extern int vds_max_ime_stamp;
extern int vds_max_ime_mask;
extern int nvt_vds_init(void);
extern void nvt_vds_exit(void);
extern int nvt_vds_ioctl (int fd, unsigned int cmd, void *arg);
extern int vds_init(void);
extern int vds_uninit(void);
extern void* vds_lock_context(VDS_QUERY_STAGE stage, UINT32 id, UINT32 *ime_flag);
extern int vds_unlock_context(VDS_QUERY_STAGE stage, UINT32 id, UINT32 ime_flag);
extern int vds_info_show(void *m, void *v);
extern int vds_cmd_show(void *m, void *v);
extern void vds_cmd_write(char *cmd_line, int size);
extern void vds_save_write(int phase, int pid, int vid, char *directory);
extern UINT32* vds_get_ime_palette(int vid);
extern UINT32* vds_get_coe_palette(int vid);
extern UINT32* vds_get_vo_palette(int vid);
extern void vds_save_latency(VDS_QUERY_STAGE stage, UINT32 id, UINT32 lock, UINT64 time);
extern void vds_latency_show(void *m, void *v, int clear);
#endif //_VIDEO_SPRITE_INTERNAL_H_