181 lines
7.5 KiB
C
Executable File
181 lines
7.5 KiB
C
Executable File
#ifndef _MOVIESTAMP_H
|
|
#define _MOVIESTAMP_H
|
|
#include "hd_debug.h"
|
|
|
|
#include "kwrap/error_no.h"
|
|
#include "GxVideoFile.h"
|
|
#include "hdal.h"
|
|
|
|
#define MOVIE_ISP_LOG DISABLE
|
|
|
|
#if (MOVIE_ISP_LOG == ENABLE)
|
|
#undef WATERLOGO_FUNCTION
|
|
#define WATERLOGO_FUNCTION DISABLE // Enable/Disable waterlogo function
|
|
#undef MOVIE_MULTISTAMP_FUNC
|
|
#define MOVIE_MULTISTAMP_FUNC DISABLE
|
|
#endif
|
|
|
|
// bit [0]
|
|
#define STAMP_ON 0x00000000
|
|
#define STAMP_OFF 0x00000001
|
|
#define STAMP_SWITCH_MASK 0x00000001
|
|
|
|
// bit [1]
|
|
#define STAMP_AUTO 0x00000000
|
|
#define STAMP_MANUAL 0x00000002
|
|
#define STAMP_OPERATION_MASK 0x00000002
|
|
|
|
// bit [3:2]
|
|
#define STAMP_DATE_TIME 0x00000000
|
|
#define STAMP_DATE_TIME_AMPM 0x00000004
|
|
#define STAMP_DATE 0x00000008
|
|
#define STAMP_TIME 0x0000000C
|
|
#define STAMP_DATE_TIME_MASK 0x0000000C
|
|
|
|
// bit [5:4]
|
|
#define STAMP_BOTTOM_LEFT 0x00000000
|
|
#define STAMP_BOTTOM_RIGHT 0x00000010
|
|
#define STAMP_TOP_LEFT 0x00000020
|
|
#define STAMP_TOP_RIGHT 0x00000030
|
|
#define STAMP_POSITION_MASK 0x00000030
|
|
|
|
// bit [7:6]
|
|
#define STAMP_YY_MM_DD 0x00000000
|
|
#define STAMP_DD_MM_YY 0x00000040
|
|
#define STAMP_MM_DD_YY 0x00000080
|
|
#define STAMP_DATE_FORMAT_MASK 0x000000C0
|
|
|
|
|
|
// bit [9]
|
|
#define STAMP_POS_NORMAL 0x00000000 // default
|
|
#define STAMP_POS_END 0x00000200
|
|
#define STAMP_POS_END_MASK 0x00000200
|
|
|
|
#define WATERLOGO_AUTO_POS 0xFFFFFFFF // auto position for water logo
|
|
|
|
#define cst_prom0 21
|
|
#define cst_prom1 79
|
|
#define cst_prom2 29
|
|
#define cst_prom3 43
|
|
#define RGB_GET_Y(r,g,b) (((INT32)g) + ((cst_prom1 * (((INT32)r)-((INT32)g))) >> 8) + ((cst_prom2 * (((INT32)b)-((INT32)g))) >> 8) )
|
|
#define RGB_GET_U(r,g,b) (128 + ((cst_prom3 * (((INT32)g)-((INT32)r))) >> 8) + ((((INT32)b)-((INT32)g)) >> 1) )
|
|
#define RGB_GET_V(r,g,b) (128 + ((cst_prom0 * (((INT32)g)-((INT32)b))) >> 8) + ((((INT32)r)-((INT32)g)) >> 1) )
|
|
|
|
#define icst_prom0 103
|
|
#define icst_prom1 88
|
|
#define icst_prom2 183
|
|
#define icst_prom3 198
|
|
#define YUV_GET_R(y,u,v) ( ((INT32)y) + ((INT32)(v)-128) + ((icst_prom0*((INT32)(v)-128))>>8) )
|
|
#define YUV_GET_G(y,u,v) ( ((INT32)y) - ((icst_prom1*((INT32)(u)-128))>>8) - ((icst_prom2*((INT32)(v)-128))>>8) )
|
|
#define YUV_GET_B(y,u,v) ( ((INT32)y) + ((INT32)(u)-128) + ((icst_prom3*((INT32)(u)-128))>>8) )
|
|
#define CLAMP_TO_BYTE(v) (((v) < 0)?0:((v>255)?255:(v)))
|
|
#define YUV_GET_RGB(y,u,v,r,g,b) \
|
|
{ \
|
|
r = YUV_GET_R(y,u,v); r = CLAMP_TO_BYTE(r); \
|
|
g = YUV_GET_G(y,u,v); g = CLAMP_TO_BYTE(g); \
|
|
b = YUV_GET_B(y,u,v); b = CLAMP_TO_BYTE(b); \
|
|
}
|
|
|
|
#define STAMP_HEIGHT_MAX 64
|
|
|
|
#define MULTISTAMP_WIDTH_MAX (1920)
|
|
|
|
#if MOVIE_ISP_LOG
|
|
#define MOVIE_STAMP_CHK_TIME 50 // 50ms check once
|
|
#else
|
|
#define MOVIE_STAMP_CHK_TIME 1000//50 // 50ms check once
|
|
#endif
|
|
|
|
typedef struct {
|
|
UINT32 uiX; ///< the X offset
|
|
UINT32 uiY; ///< the Y offset
|
|
} STAMP_POS;
|
|
|
|
typedef struct {
|
|
UINT8 ucY; ///< the Y value
|
|
UINT8 ucU; ///< the U value
|
|
UINT8 ucV; ///< the V value
|
|
UINT8 rev; ///< reserved
|
|
} STAMP_COLOR, *PSTAMP_COLOR;
|
|
|
|
typedef struct {
|
|
UINT32 uiOffset; ///< offset in database.
|
|
UINT16 uiWidth; ///< icon width.
|
|
UINT16 uiHeight; ///< icon height.
|
|
} ICON_HEADER, *PICON_HEADER;
|
|
|
|
typedef struct {
|
|
ICON_HEADER const *pIconHeader; ///< point tp icon header
|
|
UINT8 const *pIconData; ///< point to icon data
|
|
UINT16 uiNumOfIcon; ///< how many icon in this icon data base
|
|
UINT8 uiBitPerPixel; ///< bit perpixel of this icon DB, it can be 1, 2 or 4 bits per pixel
|
|
UINT8 uiDrawStrOffset; ///< Data base first item offset
|
|
} ICON_DB, *PICON_DB;
|
|
|
|
typedef struct {
|
|
char *pi8Str; ///< The string of date.
|
|
ICON_DB const *pDataBase; ///< The font database for date.
|
|
UINT32 ui32FontWidth; ///< The max width of font
|
|
UINT32 ui32FontHeight; ///< The max height of font
|
|
UINT32 ui32DstHeight; ///< The destination height of font
|
|
STAMP_COLOR Color[3]; ///< The stamp color (0: background, 1: frame, 2: foreground)
|
|
} STAMP_INFO, *PSTAMP_INFO;
|
|
|
|
typedef struct {
|
|
UINT32 uiYAddr; ///< Stamp buffer Y address
|
|
UINT32 uiUAddr; ///< Stamp buffer U address
|
|
UINT32 uiVAddr; ///< Stamp buffer V address
|
|
UINT32 uiYLineOffset; ///< Stamp buffer Y line offset
|
|
UINT32 uiUVLineOffset; ///< Stamp buffer UV line offset
|
|
UINT32 uiFormat; ///< Stamp YUV format
|
|
} STAMP_BUFFER, *PSTAMP_BUFFER;
|
|
|
|
typedef struct {
|
|
UINT32 uiXPos; ///< WaterLogo x position
|
|
UINT32 uiYPos; ///< WaterLogo y position
|
|
UINT32 uiWidth; ///< WaterLogo width
|
|
UINT32 uiHeight; ///< WaterLogo height
|
|
UINT32 uiWaterLogoAddr; ///< WaterLogo buffer address
|
|
} WATERLOGO_BUFFER, *PWATERLOGO_BUFFER;
|
|
typedef struct {
|
|
UINT32 pool_va;
|
|
UINT32 pool_pa;
|
|
} STAMP_ADDR_INFO;
|
|
|
|
extern const WATERLOGO_BUFFER g_WaterLogo_1440;
|
|
extern const WATERLOGO_BUFFER g_WaterLogo_640;
|
|
extern const WATERLOGO_BUFFER g_WaterLogo_Thumb;
|
|
|
|
|
|
// Date stamp for movie
|
|
extern void MovieStamp_Enable(void);
|
|
extern void MovieStamp_Disable(void);
|
|
extern void MovieStamp_Setup(UINT32 uiVidEncId, UINT32 uiFlag, UINT32 uiImageWidth, UINT32 uiImageHeight, WATERLOGO_BUFFER *pWaterLogoBuf);
|
|
extern void MovieStamp_SetColor(UINT32 uiVidEncId, PSTAMP_COLOR pStampColorBg, PSTAMP_COLOR pStampColorFr, PSTAMP_COLOR pStampColorFg);
|
|
extern void MovieStamp_UpdateData(void);
|
|
extern UINT32 MovieStamp_TriggerUpdateChk(void);
|
|
extern void MovieStamp_SetBuffer(UINT32 uiVidEncId, UINT32 uiAddr, UINT32 uiSize, UINT32 Width, UINT32 Height);
|
|
extern UINT32 MovieStamp_CalcBufSize(UINT32 Width, UINT32 Height,WATERLOGO_BUFFER *pWaterLogoBuf);
|
|
extern UINT32 MovieStamp_GetBufAddr(UINT32 uiVidEncId, UINT32 blk_size);
|
|
extern void MovieStamp_DestroyBuff(void);
|
|
extern ER MovieStamp_VsConfig(UINT32 uiVidEncId, UINT32 uiOSDWidth, UINT32 uiOSDHeight,WATERLOGO_BUFFER *pWaterLogoBuf);
|
|
extern INT32 MovieStamp_VsUpdateOsd(HD_PATH_ID path_id, UINT32 enable, UINT32 layer, UINT32 region, UINT32 uiX, UINT32 uiY, UINT32 uiOSDWidth, UINT32 uiOSDHeight, void *picture);
|
|
extern void MovieStamp_VsClose(void);
|
|
extern void MovieStamp_VsStop(UINT32 uiVEncOutPortId, UINT32 StampPath);
|
|
extern void MovieStamp_VsAllocFontBuf(UINT32 uiVidEncId, UINT32 width, UINT32 height);
|
|
extern void MovieStamp_VsSwapOsd(UINT32 uiVidEncId, UINT32 StampPath, UINT32 VsHDPathId);
|
|
extern void MovieStamp_VsFontConfig(UINT32 uiVidEncId);
|
|
extern BOOL MovieStamp_IsEnable(void);
|
|
extern UINT32 MovieStamp_OsgQueryBufSize(UINT32 Width, UINT32 Height);
|
|
extern void MovieStamp_DestroyMultiStampBuff(void);
|
|
extern void MovieStamp_DrawMultiStamp(UINT32 uiVidEncId, UINT32 CntId, UPOINT *Pos, char *pStr, UINT32 bInitStart);
|
|
extern ER MovieStamp_VsAllocWaterLogoOsgBuf(UINT32 uiVEncOutPortId, UINT32 WaterLogoWidth, UINT32 WaterLogoHeight);
|
|
extern UINT32 MovieStamp_GetRawEncVirtualPort(UINT32 RecId);
|
|
extern UINT32 MovieStamp_IsRawEncVirPort(UINT32 PortId);
|
|
extern void MovieStamp_DestroyMultiWaterLogoBuff(void);
|
|
extern void MovieStamp_DrawMultiWaterLogo(UINT32 uiVEncOutPortId, UINT32 CntId, WATERLOGO_BUFFER *sWaterLogo, UINT32 bInitStart);
|
|
extern int MovieStamp_GetMultiWaterLogoSource(UINT32 CntId,WATERLOGO_BUFFER *waterSrc);
|
|
|
|
extern void UI_GfxInitLite(void);
|
|
#endif
|