convert_manager.c
#include <config.h>
#include <convert_manager.h>
#include <string.h>static PT_VideoConvert g_ptVideoConvertHead = NULL;/*********************************************************************** 函數名稱: RegisterVideoConvert* 功能描述: 注冊"字體模塊", 所謂字體模塊就是取出字符位圖的方法* 輸入參數: ptVideoConvert - 一個結構體,內含"取出字符位圖"的操作函數* 輸出參數: 無* 返 回 值: 0 - 成功, 其他值 - 失敗* 修改日期 版本號 修改人 修改內容* -----------------------------------------------* 2013/02/08 V1.0 韋東山 創建***********************************************************************///構造結構體,并形成鏈表
int RegisterVideoConvert(PT_VideoConvert ptVideoConvert)
{PT_VideoConvert ptTmp;if (!g_ptVideoConvertHead){g_ptVideoConvertHead = ptVideoConvert;ptVideoConvert->ptNext = NULL;}else{ptTmp = g_ptVideoConvertHead;while (ptTmp->ptNext){ptTmp = ptTmp->ptNext;}ptTmp->ptNext = ptVideoConvert;ptVideoConvert->ptNext = NULL;}return 0;
}/*********************************************************************** 函數名稱: ShowVideoConvert* 功能描述: 顯示本程序能支持的"字體模塊"* 輸入參數: 無* 輸出參數: 無* 返 回 值: 無* 修改日期 版本號 修改人 修改內容* -----------------------------------------------* 2013/02/08 V1.0 韋東山 創建***********************************************************************///顯示一個結構體的name成員
void ShowVideoConvert(void)
{int i = 0;PT_VideoConvert ptTmp = g_ptVideoConvertHead;while (ptTmp){printf("%02d %s\n", i++, ptTmp->name);ptTmp = ptTmp->ptNext;}
}/*********************************************************************** 函數名稱: GetVideoConvert* 功能描述: 根據名字取出指定的"字體模塊"* 輸入參數: pcName - 名字* 輸出參數: 無* 返 回 值: NULL - 失敗,沒有指定的模塊, * 非NULL - 字體模塊的PT_VideoConvert結構體指針* 修改日期 版本號 修改人 修改內容* -----------------------------------------------* 2013/02/08 V1.0 韋東山 創建***********************************************************************///根據結構的name來得到結構體
PT_VideoConvert GetVideoConvert(char *pcName)
{PT_VideoConvert ptTmp = g_ptVideoConvertHead;while (ptTmp){if (strcmp(ptTmp->name, pcName) == 0){return ptTmp;}ptTmp = ptTmp->ptNext;}return NULL;
}/*********************************************************************** 函數名稱: FontsInit* 功能描述: 調用各個字體模塊的初始化函數* 輸入參數: 無* 輸出參數: 無* 返 回 值: 0 - 成功, 其他值 - 失敗* 修改日期 版本號 修改人 修改內容* -----------------------------------------------* 2013/02/08 V1.0 韋東山 創建***********************************************************************///各個轉化模塊初始化
int VideoConvertInit(void)
{int iError;iError = Yuv2RgbInit();iError |= Mjpeg2RgbInit();iError |= Rgb2RgbInit();return iError;
}
convert_manager.h
#ifndef _CONVERT_MANAGER_H
#define _CONVERT_MANAGER_H#include <config.h>
#include <video_manager.h>typedef struct VideoConvert {int (*isSupport)(int iPixelFormatIn, int iPixelFormatOut); // 看輸入像素格式 是否支持 轉化成 輸出像素格式int (*Convert)(PT_VideoBuf ptVideoBufIn, PT_VideoBuf ptVideoBufOut); //輸入像素buf 轉換成 輸出像素buf int (*ConvertExit)(PT_VideoBuf ptVideoBufOut);//輸出像素buf在 convert函數中申請內存,用完要釋放掉
}T_VideoConvert, *PT_VideoConvert;#endif /* _CONVERT_MANAGER_H */