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

📄 hi_comm_vi.h

📁 嵌入式linux系统下hi3510平台的osd开发源码
💻 H
字号:
/******************************************************************************Copyright (C), 2001-2011, Hisilicon Tech. Co., Ltd.******************************************************************************File Name     : hi_vi.hVersion       : Initial DraftAuthor        : Hisilicon multimedia software groupCreated       : 2005/12/27Last Modified :Description   : dvs hight level api .h fileFunction List :History       :1.Date        : 2005/12/27Author        : QuYaxinModification  : Created file******************************************************************************/#ifndef __HI_COMM_VI_H__#define __HI_COMM_VI_H__#include "hi_type.h"#include "hi_struct.h"#ifdef __cplusplus#if __cplusplusextern "C"{#endif#endif /* __cplusplus */#define VI_INVALID_CHN        (-1UL)#define VI_MAX_CHN_NUM        4#define HI_ERR_VI_INVALID_NORM          HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 2) #define HI_ERR_VI_INVALID_MODE          HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 3) #define HI_ERR_VI_INVALID_MASTER        HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 4) #define HI_ERR_VI_INVALID_VISIZE        HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 5) #define HI_ERR_VI_INVALID_FPS           HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 6) #define HI_ERR_VI_INVALID_PARA          HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 7) #define HI_ERR_VI_INVALID_CHNMASK       HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 8)#define HI_ERR_VI_INVALID_CHNID         HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 9)#define HI_ERR_VI_FAILED_SETNORM        HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 11) #define HI_ERR_VI_FAILED_SETMODE        HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 12) #define HI_ERR_VI_FAILED_SETMASTER      HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 13) #define HI_ERR_VI_FAILED_SETFPS         HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 14) #define HI_ERR_VI_FAILED_SETSIZE        HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 15)#define HI_ERR_VI_FAILED_SETCHNMASK     HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 16)#define HI_ERR_VI_FAILED_SETVBI         HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 17)#define HI_ERR_VI_FAILED_GETNORM        HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 21) #define HI_ERR_VI_FAILED_GETMODE        HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 22) #define HI_ERR_VI_FAILED_GETMASTER      HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 23) #define HI_ERR_VI_FAILED_GETFPS         HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 24)#define HI_ERR_VI_FAILED_GETSIZE        HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 25)#define HI_ERR_VI_FAILED_GETCHNMASK     HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 26)#define HI_ERR_VI_FAILED_GETVBI         HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 27)#if 0#define HI_ERR_VI_CHN_INVALID_SIZE      HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 100) #define HI_ERR_VI_CHN_FAILED_SETSIZE    HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 110)#define HI_ERR_VI_CHN_FAILED_GETSIZE    HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 120)#define HI_ERR_VI_FAILED_GET_MAX_CHN_NUM HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 121)#endif#define HI_ERR_VI_INVALID_OPTION HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 30)#define HI_ERR_VI_BUF_2SMALL     HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 31)#define HI_ERR_VI_BUF_NOMEM      HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 32)#define HI_ERR_VI_BUSY           HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 33)#define HI_ERR_VI_NEED_CONF      HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 34)#define HI_ERR_VI_NEED_SYNC      HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 35)#define HI_ERR_VI_INVALID_CAPSEL HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 36)#define HI_ERR_VI_NOT_OPEN       HI_DEF_ERR(HI_ID_VIO, HI_LOG_LEVEL_ERROR, 37)typedef enum hiVIDEO_SIZE_E{    VIDEO_SIZE_QCIF = 0,    VIDEO_SIZE_CIF,    VIDEO_SIZE_HD1,       VIDEO_SIZE_D1,    VIDEO_SIZE_2CIF,      VIDEO_SIZE_4CIF,      VIDEO_SIZE_QVGA,    VIDEO_SIZE_VGA,    VIDEO_SIZE_SXGA,    VIDEO_SIZE_BUTT} VIDEO_SIZE_E;#define IMG_QCIF_PAL_WIDTH      176#define IMG_QCIF_PAL_HEIGHT     144#define IMG_QCIF_PAL_STRIDE_Y   256#define IMG_QCIF_PAL_STRIDE_C   256#define IMG_CIF_PAL_WIDTH       352#define IMG_CIF_PAL_HEIGHT      288#define IMG_CIF_PAL_STRIDE_Y    512#define IMG_CIF_PAL_STRIDE_C    512#define IMG_HD1_PAL_WIDTH       720#define IMG_HD1_PAL_HEIGHT      288#define IMG_HD1_PAL_STRIDE_Y    1024#define IMG_HD1_PAL_STRIDE_C    1024#define IMG_D1_PAL_WIDTH        720#define IMG_D1_PAL_HEIGHT       576#define IMG_D1_PAL_STRIDE_Y     1024#define IMG_D1_PAL_STRIDE_C     1024#define IMG_2CIF_PAL_WIDTH      352  /* cif@50fps */#define IMG_2CIF_PAL_HEIGHT     288#define IMG_2CIF_PAL_STRIDE_Y   512#define IMG_2CIF_PAL_STRIDE_C   512#define IMG_4CIF_PAL_WIDTH      704#define IMG_4CIF_PAL_HEIGHT     576#define IMG_4CIF_PAL_STRIDE_Y   1024#define IMG_4CIF_PAL_STRIDE_C   1024#define IMG_QCIF_NTSC_WIDTH     176#define IMG_QCIF_NTSC_HEIGHT    120#define IMG_QCIF_NTSC_STRIDE_Y  256#define IMG_QCIF_NTSC_STRIDE_C  256#define IMG_CIF_NTSC_WIDTH      352#define IMG_CIF_NTSC_HEIGHT     240#define IMG_CIF_NTSC_STRIDE_Y   512#define IMG_CIF_NTSC_STRIDE_C   512#define IMG_HD1_NTSC_WIDTH      720#define IMG_HD1_NTSC_HEIGHT     240#define IMG_HD1_NTSC_STRIDE_Y   1024#define IMG_HD1_NTSC_STRIDE_C   1024#define IMG_D1_NTSC_WIDTH       720#define IMG_D1_NTSC_HEIGHT      480#define IMG_D1_NTSC_STRIDE_Y    1024#define IMG_D1_NTSC_STRIDE_C    1024#define IMG_2CIF_NTSC_WIDTH     352   /* cif@60fps */#define IMG_2CIF_NTSC_HEIGHT    240#define IMG_2CIF_NTSC_STRIDE_Y  512#define IMG_2CIF_NTSC_STRIDE_C  512#define IMG_4CIF_NTSC_WIDTH     704#define IMG_4CIF_NTSC_HEIGHT    480#define IMG_4CIF_NTSC_STRIDE_Y  1024#define IMG_4CIF_NTSC_STRIDE_C  1024#define IMG_DC_MAX_WIDTH        1280  #define IMG_DC_MAX_HEIGHT       1024#define IMG_DC_QVGA_WIDTH       320#define IMG_DC_QVGA_HEIGHT      240#define IMG_DC_QVGA_STRIDE_Y    512    #define IMG_DC_QVGA_STRIDE_C    512#define IMG_DC_VGA_WIDTH        640#define IMG_DC_VGA_HEIGHT       480#define IMG_DC_VGA_STRIDE_Y     1024#define IMG_DC_VGA_STRIDE_C     1024#define IMG_DC_SXGA_WIDTH       1280#define IMG_DC_SXGA_HEIGHT      1024#define IMG_DC_SXGA_STRIDE_Y    1536    #define IMG_DC_SXGA_STRIDE_C    1536/* 2(single or multiple channel ) * size */extern const HI_U32 IMG_VI_WIDTH[2][VIDEO_SIZE_BUTT];/* 2(PAL/NTSC) * size */extern const HI_U32 IMG_VI_HEIGHT[2][VIDEO_SIZE_BUTT] ;typedef enum hiVI_MODE_E{    VI_MODE_BT656=0,   /* ITU-R BT.656 YUV4:2:2 */    VI_MODE_BT601,     /* ITU-R BT.601 YUV4:2:2 */      VI_MODE_DIGITAL_CAMERA,/*digatal camera*/      VI_MODE_RAW_DATA,  /* CVBS and other */    VI_MODE_BUTT} VI_MODE_E;#define VI_CAP_TOP          0x01    /* capture top field            */#define VI_CAP_BOTTOM       0x02    /* capture bottom field         */#define VI_CAP_BOTH         0x03    /* capture top and bottom field */#define VI_CAP_FRAME        0x04    /* capture frame                */typedef struct hiVI_CH_ATTR_S{    HI_U32      u32CapSel;  /* capture mode, such as  VI_CAP_TOP ,and so on       */    HI_U32      u32StartX;  /* start position of video input*/    HI_U32      u32StartY;    HI_U32      u32Width;   /* size of video input         */    HI_U32      u32Height;} VI_CH_ATTR_S;/* this structure define the way how to read the VI channel information from VBI , when 4 D1 is inputed */typedef struct hiVBI_CFG_S{    HI_U32 u32Position;     /* reserved                            */    HI_U32 u32Interval;     /* the lines from the begining of blank interval to VBI data line  */    HI_U32 u32Excursion;    /*the  pixel offset from begining of horizontal valid data to VBI data*/    HI_U32 u32Start;        /* the bits from the begining of valid VBI data to channel ID */    HI_U32 u32Size;         /* the bits a channel ID will take                          */    HI_U32 u32Count;        /* reserved                             */     HI_U32 Reserved;} VBI_CFG_S;/* VI channel distributing * How are the macros named ? * VI_(I)nput_(A)nalog/(D)igital_(L)ive/(S)with * _(chns per field)(toatl chns )  */#define VI_IA_L11   0x0011#define VI_IA_L12   0x0012#define VI_IA_L22   0x0022#define VI_IA_L24   0x0024#define VI_IA_S12   0x0112#define VI_IA_S14   0x0114#define VI_ID_L11   0x1011 /* QVGA */#define VI_ID_L12   0x2011 /* VGA  */#define VI_ID_L13   0x3011 /* XGA  */typedef struct hiVI_ATTR_S{    VIDEO_CONTROL_MODE_E    enMaster; /*if enInputMode is BT601,this field can be slave and master */    VI_MODE_E   enInputMode; /*video input mode*/    VIDEO_NORM_E    enInputNorm; /* video input normal */    HI_U32 u32InputOption; /* VI channel distribute */        HI_U32 u32CapSel; /* VI capture mode */        HI_BOOL   bDownScaling; /*downscaling switch(1/2) in horizon*/    HI_U32  u32Bufsize;/* the size of frame buffer */    } VI_ATTR_S;typedef struct hiVI_CHN_LUM_S{    HI_U32 u32FramId;    HI_U32 u32Lum;    }VI_CHN_LUM_S;#define VI_RGB(r,g,b) (((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff))#define VI_RED(c)   ((c & 0xff0000) >> 16)#define VI_GREEN(c) ((c & 0xff00) >> 8)#define VI_BLUE(c)  (c & 0xff)#define VI_RGB2Y(r,g,b)  (HI_U8)((( r*66 +g*129+b*25) >> 8) + 16)#define VI_RGB2U(r,g,b)  (HI_U8)((((b*112-r*38)-g*74) >> 8) + 128)#define VI_RGB2V(r,g,b)  (HI_U8)((((r*112-g*94)-b*18) >> 8) + 128)#define VI_YUV(y,u,v)  ((y & 0xff) | ((u & 0xff) << 8) | ((v & 0xff) << 16))#define VI_Y(c) (c & 0xff)#define VI_U(c) ((c & 0xff00) >> 8)#define VI_V(c) ((c & 0xff0000) >> 16)#define VI_OVERLAY_GREEN 0x0000FF00#define VI_OVERLAY_BLACK 0x00000000#define VI_OVERLAY_RED   0x00FF0000typedef struct hiVI_OVERLAY_CONF_S{    VI_CHN chnId;    HI_U32 u32Color;    HI_U32 u32StartX;    HI_U32 u32StartY;    HI_U32 u32Width;    HI_U32 u32Height;    HI_U32 u32Reserve;}VI_OVERLAY_CONF_S;typedef struct hiVI_VI2VO_S{   VI_CHN ViChnId;   VO_CHN VoChnId;}VI_VI2VO_S;#ifdef __cplusplus#if __cplusplus}#endif#endif /* __cplusplus */#endif /* End of #ifndef__HI_COMM_VIDEO_IN_H__ */

⌨️ 快捷键说明

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