mirror of https://github.com/OpenIPC/firmware.git
145 lines
4.4 KiB
C
145 lines
4.4 KiB
C
/******************************************************************************
|
||
|
||
Copyright (C), 2015-2025, XM Tech. Co., Ltd.
|
||
|
||
******************************************************************************
|
||
File Name : xm_comm_region.h
|
||
Version : Initial Draft
|
||
Author : XM multimedia software group
|
||
Created : 2015/9/17
|
||
Description :
|
||
******************************************************************************/
|
||
|
||
|
||
#ifndef __XM_COMM_REGION_H__
|
||
#define __XM_COMM_REGION_H__
|
||
|
||
#include "xm_common.h"
|
||
#include "xm_comm_video.h"
|
||
#include "xm_errno.h"
|
||
#include "xm_defines.h"
|
||
|
||
|
||
#ifdef __cplusplus
|
||
#if __cplusplus
|
||
extern "C"{
|
||
#endif
|
||
#endif /* End of #ifdef __cplusplus */
|
||
|
||
|
||
|
||
|
||
|
||
typedef XM_U32 RGN_HANDLE;
|
||
|
||
/* type of video regions */
|
||
typedef enum xmRGN_TYPE_E
|
||
{
|
||
OVERLAY_RGN = 0, /* video overlay region */
|
||
COVER_RGN,
|
||
COVEREX_RGN,
|
||
OVERLAYEX_RGN,
|
||
RGN_BUTT
|
||
} RGN_TYPE_E;
|
||
|
||
typedef struct xmOVERLAY_COMM_ATTR_S
|
||
{
|
||
XM_U32 u32ColorMap;//3-0:背景调色盘索引 7-4:字符调色盘索引0, bit 11-8:字符调色盘索引1,
|
||
XM_U32 u32Effect; //BIt0-3 背景透明度,4-7淡入淡出,8-11闪烁,12-15水平放大,16-19垂直放大,20-23字符透明度
|
||
XM_U32 u32Format;//字符色彩模式,1 代表单色彩,2 代表双色彩,4 代表15色彩
|
||
RECT_S stRect;
|
||
}OVERLAY_ATTR_S;
|
||
|
||
typedef struct xmCOVER_COMM_ATTR_S
|
||
{
|
||
XM_U32 u32Color;
|
||
XM_U32 u32Effect; //0边框 1实心
|
||
RECT_S stRect;
|
||
}COVER_ATTR_S;
|
||
|
||
typedef union xmRGN_ATTR_U
|
||
{
|
||
OVERLAY_ATTR_S stOverlay;
|
||
COVER_ATTR_S stCover;
|
||
} RGN_ATTR_U;
|
||
|
||
typedef struct xmRGN_PALLET_S
|
||
{
|
||
XM_U32 pallet[16];
|
||
}RGN_PALLET_S;
|
||
|
||
/* attribute of a region */
|
||
typedef struct xmRGN_ATTR_S
|
||
{
|
||
XM_U32 u32Handle;
|
||
RGN_TYPE_E enType;
|
||
RGN_ATTR_U unAttr;
|
||
} RGN_ATTR_S;
|
||
|
||
|
||
#define RGN_MAX_BMP_UPD_NUM 16
|
||
|
||
typedef struct xmRGN_BMP_UPD_S
|
||
{
|
||
POINT_S stPoint;
|
||
BITMAP_S stBmp;
|
||
XM_U32 u32Stride;
|
||
} RGN_BMP_UPD_S;
|
||
|
||
typedef struct xmRGN_BMP_UPD_CFG_S
|
||
{
|
||
XM_U32 u32BmpCnt;
|
||
RGN_BMP_UPD_S astBmpUpd[RGN_MAX_BMP_UPD_NUM];
|
||
} RGN_BMP_UPD_CFG_S;
|
||
|
||
|
||
#define XM_TRACE_RGN(level, fmt...) XM_TRACE(level, XM_ID_RGN,##fmt)
|
||
/* invlalid device ID */
|
||
#define XM_ERR_RGN_INVALID_DEVID XM_DEF_ERR(XM_ID_RGN, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_DEVID)
|
||
/* invlalid channel ID */
|
||
#define XM_ERR_RGN_INVALID_CHNID XM_DEF_ERR(XM_ID_RGN, EN_ERR_LEVEL_ERROR, EN_ERR_INVALID_CHNID)
|
||
/* at lease one parameter is illagal ,eg, an illegal enumeration value */
|
||
#define XM_ERR_RGN_ILLEGAL_PARAM XM_DEF_ERR(XM_ID_RGN, EN_ERR_LEVEL_ERROR, EN_ERR_ILLEGAL_PARAM)
|
||
/* channel exists */
|
||
#define XM_ERR_RGN_EXIST XM_DEF_ERR(XM_ID_RGN, EN_ERR_LEVEL_ERROR, EN_ERR_EXIST)
|
||
/*UN exist*/
|
||
#define XM_ERR_RGN_UNEXIST XM_DEF_ERR(XM_ID_RGN, EN_ERR_LEVEL_ERROR, EN_ERR_UNEXIST)
|
||
/* using a NULL point */
|
||
#define XM_ERR_RGN_NULL_PTR XM_DEF_ERR(XM_ID_RGN, EN_ERR_LEVEL_ERROR, EN_ERR_NULL_PTR)
|
||
/* try to enable or initialize system,device or channel, before configing attribute */
|
||
#define XM_ERR_RGN_NOT_CONFIG XM_DEF_ERR(XM_ID_RGN, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_CONFIG)
|
||
/* operation is not supported by NOW */
|
||
#define XM_ERR_RGN_NOT_SUPPORT XM_DEF_ERR(XM_ID_RGN, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_SUPPORT)
|
||
/* operation is not permitted ,eg, try to change stati attribute */
|
||
#define XM_ERR_RGN_NOT_PERM XM_DEF_ERR(XM_ID_RGN, EN_ERR_LEVEL_ERROR, EN_ERR_NOT_PERM)
|
||
/* failure caused by malloc memory */
|
||
#define XM_ERR_RGN_NOMEM XM_DEF_ERR(XM_ID_RGN, EN_ERR_LEVEL_ERROR, EN_ERR_NOMEM)
|
||
/* failure caused by malloc buffer */
|
||
#define XM_ERR_RGN_NOBUF XM_DEF_ERR(XM_ID_RGN, EN_ERR_LEVEL_ERROR, EN_ERR_NOBUF)
|
||
/* no data in buffer */
|
||
#define XM_ERR_RGN_BUF_EMPTY XM_DEF_ERR(XM_ID_RGN, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_EMPTY)
|
||
/* no buffer for new data */
|
||
#define XM_ERR_RGN_BUF_FULL XM_DEF_ERR(XM_ID_RGN, EN_ERR_LEVEL_ERROR, EN_ERR_BUF_FULL)
|
||
/* bad address, eg. used for copy_from_user & copy_to_user */
|
||
#define XM_ERR_RGN_BADADDR XM_DEF_ERR(XM_ID_RGN, EN_ERR_LEVEL_ERROR, EN_ERR_BADADDR)
|
||
/* resource is busy, eg. destroy a venc chn without unregistering it */
|
||
#define XM_ERR_RGN_BUSY XM_DEF_ERR(XM_ID_RGN, EN_ERR_LEVEL_ERROR, EN_ERR_BUSY)
|
||
|
||
/* System is not ready,maybe not initialed or loaded.
|
||
* Returning the error code when opening a device file failed.
|
||
*/
|
||
#define XM_ERR_RGN_NOTREADY XM_DEF_ERR(XM_ID_RGN, EN_ERR_LEVEL_ERROR, EN_ERR_SYS_NOTREADY)
|
||
|
||
|
||
#ifdef __cplusplus
|
||
#if __cplusplus
|
||
}
|
||
#endif
|
||
#endif /* __cplusplus */
|
||
|
||
|
||
#endif /* __XM_COMM_REGION_H__ */
|
||
|
||
|
||
|