📄 hi_video.h
字号:
#ifndef __HI_VIDEO_H__#define __HI_VIDEO_H__#define M 0x100000#define K 0x400#define _USE_INTtypedef struct tag_RECT_t{ unsigned long x; unsigned long y; unsigned long w; unsigned long h;}RECT_t, *PRECT_t;typedef RECT_t VIDEO_RECT_t;typedef struct{ unsigned char v; unsigned char u; unsigned char y; unsigned char a;}COLOR_AYUV_t;typedef struct{ unsigned char b; unsigned char g; unsigned char r; unsigned char 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; /* 输入视频数据格式 */ unsigned long ulWidth; /* 输入视频宽度 */ unsigned long ulHeight; /* 输入视频高度 */ /* ** 如果采用RGB或者PackageYUV数据格式,则只有pulMemBase[0]有效 ** 如果采用Semi-Planar YUV数据格式,则只有pulMemBase[0~1]有效, ** 分别表示视频Y, C分量存放地址 ** 如果采用Planar YUV数据格式,则pulMemBase[0~2]均有效, ** 分别表示视频Y, U, V分量存放地址 */ unsigned long ulMemBase[3]; /* A/B/C分量地址 */ unsigned long 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; /* 输入方式 */ unsigned char bMemInSystem; /* 是否使用系统自动管理的帧内存 */ unsigned long ulMemBufferCount; /* 内存帧个数。如果为1,则表示使用固定帧内存 */ /* ** 如果 bMemInSystem=true, 则InputVideoMem->pul(X)MemBase为系统分配的内存起始地址(R), ** 不需要用户指定 ** 如果 bMemInSystem=true, 则InputVideoMem->pul(X)MemBase为用户指定的内存起始地址(W) ** (X)可以表示A/B/C */ VIDEO_MEM_t * pInputVideoMem; void* 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; unsigned char bMemInSystem; /* 是否使用系统自动管理的帧内存 */ unsigned long ulMemBufferCount; /* 内存帧个数。如果为1,则表示使用固定帧内存 */ VIDEO_MEM_t * pProcessOutVideoMem; void* 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{ unsigned char Luma_H; /* 亮度信号的最高门限值 */ unsigned char Luma_L; /* 亮度信号的最低门限值 */ unsigned char Chroma_H; /* 色度信号的最高门限值 */ unsigned char 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; unsigned long 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; unsigned char bMemInSystem; /* 是否使用系统自动管理的帧内存 */ unsigned long 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; void* pOutParam;}VIDEO_OUT_CFG_t;#define MAX_HANDLE 256typedef unsigned long VIDEO_HANDLE;/* 0: video_handle not exist */typedef enum{ VIDEO_STEP_INPUT, VIDEO_STEP_PROCESS, VIDEO_STEP_OUTPUT}VIDEO_STEP_t;typedef unsigned char(*VIDEO_CALLBACK)(void*);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#endif /* __HI_VIDEO_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -