⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hi_video.h

📁 华为 HI3510 BOOTLOADER HIBOOT 源码包
💻 H
字号:
/******************************************************************************  Copyright (C), 2005, Hisilicon Tech. Co., Ltd. ******************************************************************************  File Name     : hi_video.h  Version       : Initial Draft  Author        : Hisilicon multimedia software group  Created       : 2005/5/21  Last Modified :  Description   : video api definitions  Function List : too many ...:P  History       :  1.Date        : 2005/5/21    Author      : Z42136    Modification: Created file  2.Date        : 2005/7/4    Author      : Z42136    Modification: 将videodefs.h和videoDev.h集成到video.h中;  3.Date        : 2005/8/9    Author      : Z42136    Modification: 将video_api合并到hi_video.h中;******************************************************************************/#ifndef __HI_VIDEO_H__#define __HI_VIDEO_H__/* Includes ----------------------------------------------------------------- *//* external  Macros ----------------------------------------------------------- *//* external  Constants -------------------------------------------------------- *//* external  Types ------------------------------------------------------------ */#define M	0x100000#define K	0x400#define _USE_INTtypedef struct tag_RECT_t{	U32 x;	U32	y;	U32	w;	U32 h;}RECT_t, *PRECT_t;typedef RECT_t VIDEO_RECT_t;typedef struct{	U8 v;	U8 u;	U8 y;	U8 a;}COLOR_AYUV_t;typedef struct{	U8 b;	U8 g;	U8 r;	U8 a;}COLOR_ARGB_t;typedef enum{	VIDEO_ENCODING_MODE_PAL=0,	VIDEO_ENCODING_MODE_NTSC,	VIDEO_ENCODING_MODE_SUPPORT}VIDEO_ENCODING_MODE_t;typedef enum{	VIDEO_INPUT_MODE_BT656=0,				/* ITU-R BT.656 YUV4:2:2视频标准 */	VIDEO_INPUT_MODE_BT601,				/* ITU-R BT.601 YUV4:2:2视频标准 */	VIDEO_INPUT_MODE_DIGITAL_CAMERA,	/* VGA,QVGA等摄像头的直接数据传输,										   数据可以是Bayer的RGB数据或者YCbCr数据 */	VIDEO_INPUT_MODE_RAW_DATA			/* CVBS的数字数据或者其他数字数据,不作任何处理 */}VIDEO_INPUT_MODE_t;typedef enum{	VIDEO_OUTPUT_MODE_BT656=0,			/* ITU-R BT.656 YUV4:2:2视频标准输出 */	VIDEO_OUTPUT_MODE_BT601,			/* ITU-R BT.601 YUV4:2:2视频标准输出 */	VIDEO_OUTPUT_MODE_LCD,				/* TFT LCD 输出 */	VIDEO_OUTPUT_MODE_RAW_DATA,			/* CVBS的数字数据或者其他数字数据,不作任何处理 */	VIDEO_OUTPUT_MODE_SUPPORT}VIDEO_OUTPUT_MODE_t;typedef enum{	VIDEO_CONTROL_MODE_SLAVER=0,	VIDEO_CONTROL_MODE_MASTER}VIDEO_CONTROL_MODE_t;typedef enum{	PIXEL_FORMAT_RGB_1BPP=0,	PIXEL_FORMAT_RGB_2BPP,	PIXEL_FORMAT_RGB_4BPP,	PIXEL_FORMAT_RGB_8BPP,	PIXEL_FORMAT_RGB_444,	PIXEL_FORMAT_RGB_4444,	PIXEL_FORMAT_RGB_555,	PIXEL_FORMAT_RGB_565,	PIXEL_FORMAT_RGB_1555,	/*  9 reserved */	PIXEL_FORMAT_RGB_888=0xA,	PIXEL_FORMAT_RGB_8888,	PIXEL_FORMAT_RGB_PLANAR_888,	/* ??? */	PIXEL_FORMAT_RGB_BAYER,			/* ??? */	PIXEL_FORMAT_YUV_A422,	PIXEL_FORMAT_YUV_A444,	PIXEL_FORMAT_YUV_PLANAR_422,	PIXEL_FORMAT_YUV_PLANAR_420,	PIXEL_FORMAT_YUV_PLANAR_444,	PIXEL_FORMAT_YUV_SEMIPLANAR_422,	PIXEL_FORMAT_YUV_SEMIPLANAR_420,	PIXEL_FORMAT_YUV_SEMIPLANAR_444,	PIXEL_FORMAT_UYVY_PACKAGE_422,	PIXEL_FORMAT_YCbCr_PLANAR,	PIXEL_FORMAT_SUPPORT,	/* for VOU1.0 Main Layer */	PIXEL_FORMAT_YUV_0 = 0,  //yuv422 cosited, no up scaling	PIXEL_FORMAT_YUV_1, 	 //yuv422 interspersed, no up scaling	PIXEL_FORMAT_YUV_2,  	//yuv422 cosited, 1:2 output	PIXEL_FORMAT_YUV_3,  	//yuv422 interspersed, 1:2 output	PIXEL_FORMAT_YUV_4,  	//yuv420 cosited, no up scaling	PIXEL_FORMAT_YUV_5,  	//yuv420 interspersed, no up scaling	PIXEL_FORMAT_YUV_6,  	//yuv420 cosited, 1:2 output	PIXEL_FORMAT_YUV_7,  	//yuv420 interspersed, 1:2 output	PIXEL_FORMAT_YUV_8,  	//yuv444,yuv->rgb	PIXEL_FORMAT_YUV_9,  	//yuv444, 1:2 output, yuv->rgb	PIXEL_FORMAT_YUV_10,	PIXEL_FORMAT_YUV_11,	PIXEL_FORMAT_YUV_12,	PIXEL_FORMAT_YUV_13,	PIXEL_FORMAT_YUV_14,	PIXEL_FORMAT_YUV_15,	/* for HC */	PIXEL_FORMAT_2COLOR = 0,	PIXEL_FORMAT_4COLOR,	PIXEL_FORMAT_3COLOR,	PIXEL_FORMAT_RESERVED,	/* not for user */	PIXEL_FORMAT_YUV422 = 0,	PIXEL_FORMAT_YUV444,	PIXEL_FORMAT_RGB555,	PIXEL_FORMAT_RGB888,	}PIXEL_FORMAT_t;typedef struct{	PIXEL_FORMAT_t  PixelFormat;	/* 输入视频数据格式 */	U32		ulWidth;				/* 输入视频宽度 */	U32		ulHeight;				/* 输入视频高度 */	/* 	** 如果采用RGB或者PackageYUV数据格式,则只有pulMemBase[0]有效	** 如果采用Semi-Planar YUV数据格式,则只有pulMemBase[0~1]有效,	**     分别表示视频Y, C分量存放地址	** 如果采用Planar YUV数据格式,则pulMemBase[0~2]均有效,	**     分别表示视频Y, U, V分量存放地址	*/	U32 ulMemBase[3];		/* A/B/C分量地址 */	U32	ulStride[3];			/* A/B/C分量的行距 */}VIDEO_MEM_t;/* video input -----------------------------------------------------------*/typedef struct{	VIDEO_INPUT_MODE_t		InputMode;	/* 视频输入模式 */	VIDEO_ENCODING_MODE_t	InputNorm;	/* 视频输入制式 */	//VIDEO_RECT_t					CapRect;	/* 视频捕获范围 */}VIDEO_VIU_PARAM_t;typedef enum{	VIDEO_INPUT_FROM_VIU=0,	/* 从VIU输入 */	VIDEO_INPUT_FROM_OSD,	/* 从OSD输入 */	VIDEO_INPUT_FROM_ZSP,	/* ZSP解码后输入 */	VIDEO_INPUT_FROM_USER,	/* 用户自定义输入 */	VIDEO_INPUT_FROM_SUPPORT}VIDEO_INPUT_FROM_t;typedef struct{	VIDEO_INPUT_FROM_t InputFrom;	/* 输入方式 */	BOOL bMemInSystem;				/* 是否使用系统自动管理的帧内存 */	U32  ulMemBufferCount;		/* 内存帧个数。如果为1,则表示使用固定帧内存 */	/* 	** 如果 bMemInSystem=true, 则InputVideoMem->pul(X)MemBase为系统分配的内存起始地址(R),	** 不需要用户指定	** 如果 bMemInSystem=true, 则InputVideoMem->pul(X)MemBase为用户指定的内存起始地址(W)	** (X)可以表示A/B/C	*/	VIDEO_MEM_t * pInputVideoMem;	PVOID pInParam;}VIDEO_IN_CFG_t;/* video process ---------------------------------------------------------*/#if 0typedef struct{	VIDEO_RECT_t	ZoomTo;	VIDEO_FILTER_t	Filter;}VIDEO_PROCESS_PARAM_t;#endif#if 0/* VIDEO Process Code */typedef enum{	VIDEO_PROCESS_ZOOM,	VIDEO_PROCESS_FILTER,	VIDEO_PROCESS_CSC}VIDEO_PROCESS_t;#endiftypedef enum{	VIDEO_FILTER_NONE=0,	VIDEO_FILTER_DEFAULT,	/* 抗抖动,闪烁 */	/* Anti-flicker filter in order to remove flicker effects which can	** occur inside an OSD when a color difference between pixels	** in top line and pixels in its surrounding bottom lines is too big.	*/	VIDEO_FILTER_ANTI_FLICKER,	/* 抗混淆 */	/* Anti-flutter filter in order to remove flutter effects which can	** occur if the same OSD bitmap is displayed in both fields within	** the same frame.	*/	VIDEO_FILTER_ANTI_FLUTTER,	/* 抗锯齿 */	VIDEO_FILTER_ANTI_ALIASING,	/* 用户自定义滤波效果 */	VIDEO_FILTER_USER			/* not support */}VIDEO_FILTER_t;typedef struct{	VIDEO_FILTER_t		filter;	/* 视频输入模式 */}VIDEO_DSU_PARAM_t;typedef enum{	VIDEO_PROCESS_UNIT_DSU=0,	/* 输出到VOU */	VIDEO_PROCESS_UNIT_USER,	/* 输出到ZSP */	VIDEO_PROCESS_UNIT_SUPPORT}VIDEO_PROCESS_UNIT_t;typedef struct{	VIDEO_PROCESS_UNIT_t	ProcessUnit;	BOOL bMemInSystem;		/* 是否使用系统自动管理的帧内存 */	U32  ulMemBufferCount;	/* 内存帧个数。如果为1,则表示使用固定帧内存 */	VIDEO_MEM_t * pProcessOutVideoMem;	PVOID pProcessParam;}VIDEO_PROCESS_CFG_t;/* WMV9协议profile */typedef enum{	VIDEO_PROFILE_ADVANCED=0,	VIDEO_PROFILE_MAIN,	VIDEO_PROFILE_SIMPLE}VIDEO_PROFILE_t;typedef enum{	COLORSPACE_NONE=0,	COLORSPACE_STANDARD,	/* 标准色彩配置 */	COLORSPACE_SOFTNESS,	/* 柔和色彩配置 */	COLORSPACE_VIVID,		/* 鲜艳色彩配置 */	COLORSPACE_USER			/* 用户自定义色彩配置, 暂不支持 */}VIDEO_COLORSPACE_t;typedef COLOR_ARGB_t GAMMA_TABLE_t[256];/* video out ---------------------------------------------------------------*//* TV输出剪裁 */typedef struct{	U8	Luma_H;		/* 亮度信号的最高门限值 */	U8	Luma_L;		/* 亮度信号的最低门限值 */	U8	Chroma_H;	/* 色度信号的最高门限值 */	U8	Chroma_L;	/* 色度信号的最低门限值 */}TV_CLIP_t;typedef enum{	VIDEO_VOU_LAYER_MAIN=0,	VIDEO_VOU_LAYER_OVER1,	VIDEO_VOU_LAYER_OVER2,	VIDEO_VOU_LAYER_HC}VIDEO_VOU_LAYER_t;typedef enum{	PRIORITY_0=0,		/* the lowerest priority, botton layer */	PRIORITY_1,	PRIORITY_2,	PRIORITY_3		/* the highest priority, top layer */}VOU_SHOW_PRIORITY_t;typedef struct{	VIDEO_OUTPUT_MODE_t  	OutputMode;	VIDEO_ENCODING_MODE_t	OutputNorm;	TV_CLIP_t				TVOutClip;	VIDEO_VOU_LAYER_t		VouLayer;	VIDEO_RECT_t			LayerRect;	U32						LayerAlpha;	/* for overlay: 0--100 */	VOU_SHOW_PRIORITY_t		LayerPriority;}VIDEO_VOU_PARAM_t;typedef enum{	VIDEO_OUTPUT_TO_VOU=0,	/* 输出到VOU */	VIDEO_OUTPUT_TO_ZSP,	/* 输出到ZSP */	VIDEO_OUTPUT_TO_USER,	/* 用户自定义输出 */	VIDEO_OUTPUT_TO_SUPPORT}VIDEO_OUTPUT_TO_t;typedef struct{	/* 输出方式: VOU, ZSP, 自定义等 */	VIDEO_OUTPUT_TO_t OutputTo;	BOOL bMemInSystem;				/* 是否使用系统自动管理的帧内存 */	U32  ulMemBufferCount;			/* 内存帧个数。如果为1,则表示使用固定帧内存 */	/* 	** 如果 bMemInSystem == TRUE 或者 OutputTo == VIDEO_OUTPUT_TO_VOU ,	** 则不需要申请pOutputVideoMem,直接使用sourceHandle的Mem.	**	** 如果 bMemInSystem=true, 则InputVideoMem->pul(X)MemBase为系统分配的内存起始地址(R),	** 不需要用户指定	** 如果 bMemInSystem=true, 则InputVideoMem->pul(X)MemBase为用户指定的内存起始地址(W)	** (X)可以表示A/B/C	*/	VIDEO_MEM_t * pOutputVideoMem;	PVOID pOutParam;}VIDEO_OUT_CFG_t;#define MAX_HANDLE	256typedef U32 VIDEO_HANDLE;/* 0: video_handle not exist */typedef enum{	VIDEO_STEP_INPUT,	VIDEO_STEP_PROCESS,	VIDEO_STEP_OUTPUT}VIDEO_STEP_t;typedef BOOL(*VIDEO_CALLBACK)(PVOID);typedef struct {	VIDEO_CALLBACK pCBStart;	VIDEO_CALLBACK pCBDoneCheck;	VIDEO_CALLBACK pCBDoneNotify;	VIDEO_CALLBACK pCBReset;}VIDEO_OPS_t;#define VIDEO_MODE_CCIR656           0#define VIDEO_MODE_CCIR601           1#define VIDEO_MODE_LCD               2#define VIDEO_NORM_PAL				0#define VIDEO_NORM_NTSC				1#define VIDEO_NORM_SUPPORT     	 	2#define VIDEO_MODE_SECAM			2#define VIDEO_MODE_AUTO				3#define VIDEO_MODE_MASTER            1#define VIDEO_MODE_SLAVER            0/* export functions -----------------------------------------------------*/extern BOOL VIDEO_Init(IN U32 pulVideoMemBase, IN U32 ulVideoMemSize);extern BOOL VIDEO_Enable(void);extern BOOL VIDEO_Disable(void);extern BOOL VIDEO_VIUDisable(void);extern BOOL VIDEO_VIUEnable(void);extern BOOL VIDEO_VOUDisable(void);extern BOOL VIDEO_VOUEnable(void);extern BOOL VIDEO_DisableStep(IN VIDEO_HANDLE StepVideoHandle);extern BOOL VIDEO_EnableStep(IN VIDEO_HANDLE StepVideoHandle);/* input functions */extern VIDEO_HANDLE VIDEO_AddInput(	IN VIDEO_IN_CFG_t * pVideoInCfg,	IN VIDEO_OPS_t * pInputVideoOps);extern BOOL VIDEO_SetInput(	IN VIDEO_HANDLE InputHandle,	IN VIDEO_IN_CFG_t * pVideoInCfg,	IN VIDEO_OPS_t * pInputVideoOps);extern BOOL  VIDEO_DeleteInput(VIDEO_HANDLE InputHandle);/* process functions */extern VIDEO_HANDLE VIDEO_AddProcess(	IN VIDEO_HANDLE SourceHandle,	IN VIDEO_PROCESS_CFG_t * pVideoProcessCfg,	IN VIDEO_OPS_t * pProcessVideoOps);extern BOOL VIDEO_SetProcess(	IN VIDEO_HANDLE ProcessHandle,	IN VIDEO_HANDLE SourceHandle,	IN VIDEO_PROCESS_CFG_t * pVideoProcessCfg,	IN VIDEO_OPS_t * pProcessVideoOps);extern BOOL VIDEO_DeleteProcess(VIDEO_HANDLE ProcessHandle);/* output functions */extern VIDEO_HANDLE VIDEO_AddOutput(	IN VIDEO_HANDLE SourceHandle,	IN VIDEO_OUT_CFG_t * pVideoOutCfg,	IN VIDEO_OPS_t * pOutputVideoOps);extern BOOL VIDEO_SetOutput(	IN VIDEO_HANDLE OutputHandle,	IN VIDEO_HANDLE SourceHandle,	IN VIDEO_OUT_CFG_t * pVideoOutCfg,	IN VIDEO_OPS_t * pOutputVideoOps);extern BOOL VIDEO_DeleteOutput(IN VIDEO_HANDLE OutputHandle);/* video session functions */extern BOOL VIDEO_StartSession(IN VIDEO_HANDLE InputHandle);extern BOOL VIDEO_StopSession(IN VIDEO_HANDLE InputHandle);extern BOOL VIDEO_GetDefaultStride(IN PIXEL_FORMAT_t PixelFormat, IN U32 ulWidth, OUT U32 ulStrde[]);extern BOOL VIDEO_GetDefaultOps(OUT VIDEO_OPS_t * pVideoOps, IN VIDEO_STEP_t VideoStep);extern BOOL VIDEO_GetVideoMem(IN VIDEO_HANDLE Handle, OUT VIDEO_MEM_t * pVideoMem);extern BOOL VIDEO_GetSourceVideoMem(IN VIDEO_HANDLE Handle, OUT VIDEO_MEM_t * pVideoMem);extern BOOL VIDEO_GetBuffer(IN VIDEO_HANDLE Handle, OUT VIDEO_MEM_t * pVideoMem, IN U32 ulBufferPtr);extern void VIDEO_TextOut(IN VIDEO_MEM_t * pVideoMem, IN U32 ulXStart, IN U32 ulYStart, IN PCHAR pString);/* TDE 加速函数 */#define CPY_STRIDE	0x80extern void VIDEO_wmemcpy(IN U32* pDest, IN const U32* pSrc, IN U32 ulCount);#endif /* __HI_VIDEO_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -