阅读量:0
video_manager.c
/********************************************************************** * 函数名称: RegisterVideoOpr * 功能描述: 注册"字体模块", 所谓字体模块就是取出字符位图的方法 * 输入参数: ptVideoOpr - 一个结构体,内含"取出字符位图"的操作函数 * 输出参数: 无 * 返 回 值: 0 - 成功, 其他值 - 失败 * 修改日期 版本号 修改人 修改内容 * ----------------------------------------------- * 2013/02/08 V1.0 韦东山 创建 ***********************************************************************/ int RegisterVideoOpr(PT_VideoOpr ptVideoOpr) { PT_VideoOpr ptTmp; if (!g_ptVideoOprHead) { g_ptVideoOprHead = ptVideoOpr; ptVideoOpr->ptNext = NULL; } else { ptTmp = g_ptVideoOprHead; while (ptTmp->ptNext) { ptTmp = ptTmp->ptNext; } ptTmp->ptNext = ptVideoOpr; ptVideoOpr->ptNext = NULL; } return 0; } /********************************************************************** * 函数名称: ShowVideoOpr * 功能描述: 显示本程序能支持的"字体模块" * 输入参数: 无 * 输出参数: 无 * 返 回 值: 无 * 修改日期 版本号 修改人 修改内容 * ----------------------------------------------- * 2013/02/08 V1.0 韦东山 创建 ***********************************************************************/ void ShowVideoOpr(void) { int i = 0; PT_VideoOpr ptTmp = g_ptVideoOprHead; while (ptTmp) { printf("%02d %s\n", i++, ptTmp->name); ptTmp = ptTmp->ptNext; } } /********************************************************************** * 函数名称: GetVideoOpr * 功能描述: 根据名字取出指定的"字体模块" * 输入参数: pcName - 名字 * 输出参数: 无 * 返 回 值: NULL - 失败,没有指定的模块, * 非NULL - 字体模块的PT_VideoOpr结构体指针 * 修改日期 版本号 修改人 修改内容 * ----------------------------------------------- * 2013/02/08 V1.0 韦东山 创建 ***********************************************************************/ PT_VideoOpr GetVideoOpr(char *pcName) { PT_VideoOpr ptTmp = g_ptVideoOprHead; while (ptTmp) { if (strcmp(ptTmp->name, pcName) == 0) { return ptTmp; } ptTmp = ptTmp->ptNext; } return NULL; } /********************************************************************** * 函数名称: FontsInit * 功能描述: 调用各个字体模块的初始化函数 * 输入参数: 无 * 输出参数: 无 * 返 回 值: 0 - 成功, 其他值 - 失败 * 修改日期 版本号 修改人 修改内容 * ----------------------------------------------- * 2013/02/08 V1.0 韦东山 创建 ***********************************************************************/ int VideoInit(void) { int iError; iError = V4l2Init(); return iError; }
video_manager.h
#ifndef _VIDEO_MANAGER_H #define _VIDEO_MANAGER_H #include <config.h> #include <pic_operation.h> #define NB_BUFFER 4 struct VideoDevice; struct VideoOpr; typedef struct VideoDevice T_VideoDevice, *PT_VideoDevice; typedef struct VideoOpr T_VideoOpr, *PT_VideoOpr; typedef struct VideoDevice { int iFd; int iPixelFormat; int iWidth; int iHeight; int iVideoBufCnt; int iVideoBufMaxLen; int iVideoBufCurIndex; unsigned char *pucVideBuf[NB_BUFFER]; /* ���� */ PT_VideoOpr ptOPr; }T_VideoDevice, *PT_VideoDevice; typedef struct VideoBuf { T_PixelDatas tPixelDatas; int iPixelFormat; }T_VideoBuf, *PT_VideoBuf; typedef struct VideoOpr { char *name; int (*InitDevice)(char *strDevName, PT_VideoDevice ptVideoDevice); int (*ExitDevice)(PT_VideoDevice ptVideoDevice); int (*GetFrame)(PT_VideoDevice ptVideoDevice, PT_VideoBuf ptVideoBuf); int (*PutFrame)(PT_VideoDevice ptVideoDevice, PT_VideoBuf ptVideoBuf); int (*StartDevice)(PT_VideoDevice ptVideoDevice); int (*StopDevice)(PT_VideoDevice ptVideoDevice); }T_VideoOpr, *PT_VideoOpr; int V4l2Init(void); #endif /* _VIDEO_MANAGER_H */