📄 osd.c
字号:
/**
\file osd.c
\brief OSD User APIs
*/
#include <system/osd270.h>
#include <user/osd.h>
OSD_ModeData osdMode_ntsc = {
OSD_FORMAT_CbCr, // cbcrOrder;
OSD_LUT_ROM, // backgroundLUT;
0, // backgroundColor;
FALSE, // fieldSignalReverse;
120, // baseX;
18 // baseY;
};
OSD_ModeData osdMode_pal = {
OSD_FORMAT_CbCr, // cbcrOrder;
OSD_LUT_ROM, // backgroundLUT;
0, // backgroundColor;
TRUE, // fieldSignalReverse;
144, // baseX;
22 // baseY;
};
/**
\brief Initialize OSD in NTSC mode
\return if success, \c E_PASS, else error code
*/
STATUS OSDInit() {
STATUS status;
status = OSD_setMode( &osdMode_ntsc);
if(status!=E_PASS)
return status;
return status;
}
/**
\brief Setup OSD video window in a user specified display mode
\param winID OSD video window ID, OSD_VID_WIN0 or OSD_VID_WIN1
\param vidModeID OSD video window display mode ID
\param address OSD video window data absolute SDRAM
\return if success, \c E_PASS, else error code
*/
STATUS OSDSetMode( OSD_WIN_ID winID, VID_DISPLAY_MODE_ID vidModeID, char *address) {
STATUS status=E_PASS;
OSD_WinConfigData winConfig;
OSD_VideoWinModeData vidWinMode;
if(vidModeID>=VID_MAX_ID)
return E_INVALID_INPUT;
if(winID!=OSD_VID_WIN0 && winID!= OSD_VID_WIN1)
return E_INVALID_INPUT;
switch(vidModeID) {
case VID_FLD_720x480:
winConfig.offset = 720*2;
winConfig.address = address;
winConfig.startX = 0;
winConfig.startY = 0;
winConfig.width = 720;
winConfig.height = 480/2;
winConfig.displayMode = OSD_FIELD_MODE;
winConfig.hzoom = OSD_NO_ZOOM;
winConfig.vzoom = OSD_NO_ZOOM;
vidWinMode.expandFilterEnable = FALSE;
vidWinMode.hexpand = FALSE;
vidWinMode.vexpand = FALSE;
case VID_720x480:
winConfig.offset = 720*2;
winConfig.address = address;
winConfig.startX = 0;
winConfig.startY = 0;
winConfig.width = 720;
winConfig.height = 480/2;
winConfig.displayMode = OSD_FRAME_MODE;
winConfig.hzoom = OSD_NO_ZOOM;
winConfig.vzoom = OSD_NO_ZOOM;
vidWinMode.expandFilterEnable = FALSE;
vidWinMode.hexpand = FALSE;
vidWinMode.vexpand = FALSE;
break;
case VID_FLD_640x480:
winConfig.offset = 640*2;
winConfig.address = address;
winConfig.startX = 0;
winConfig.startY = 0;
winConfig.width = 720;
winConfig.height = 480/2;
winConfig.displayMode = OSD_FIELD_MODE;
winConfig.hzoom = OSD_NO_ZOOM;
winConfig.vzoom = OSD_NO_ZOOM;
vidWinMode.expandFilterEnable = TRUE;
vidWinMode.hexpand = TRUE;
vidWinMode.vexpand = FALSE;
break;
case VID_640x480:
winConfig.offset = 640*2;
winConfig.address = address;
winConfig.startX = 0;
winConfig.startY = 0;
winConfig.width = 720;
winConfig.height = 480/2;
winConfig.displayMode = OSD_FRAME_MODE;
winConfig.hzoom = OSD_NO_ZOOM;
winConfig.vzoom = OSD_NO_ZOOM;
vidWinMode.expandFilterEnable = TRUE;
vidWinMode.hexpand = TRUE;
vidWinMode.vexpand = FALSE;
break;
case VID_320x240:
winConfig.offset = 320*2;
winConfig.address = address;
winConfig.startX = (720-320)/2;
winConfig.startY = ((480-240)/2)/2;
winConfig.width = 320;
winConfig.height = 240/2;
winConfig.displayMode = OSD_FRAME_MODE;
winConfig.hzoom = OSD_NO_ZOOM;
winConfig.vzoom = OSD_NO_ZOOM;
vidWinMode.expandFilterEnable = FALSE;
vidWinMode.hexpand = FALSE;
vidWinMode.vexpand = FALSE;
break;
case VID_FLD_320x240:
winConfig.offset = 320*2;
winConfig.address = address;
winConfig.startX = 0;
winConfig.startY = 0;
winConfig.width = 720;
winConfig.height = 240;
winConfig.displayMode = OSD_FIELD_MODE;
winConfig.hzoom = OSD_ZOOM_2x;
winConfig.vzoom = OSD_NO_ZOOM;
vidWinMode.expandFilterEnable = TRUE;
vidWinMode.hexpand = TRUE;
vidWinMode.vexpand = FALSE;
break;
case VID_352x288:
winConfig.offset = 352*2;
winConfig.address = address;
winConfig.startX = (720-352)/2;
winConfig.startY = ((480-288)/2)/2;
winConfig.width = 352;
winConfig.height = 288/2;
winConfig.displayMode = OSD_FRAME_MODE;
winConfig.hzoom = OSD_NO_ZOOM;
winConfig.vzoom = OSD_NO_ZOOM;
vidWinMode.expandFilterEnable = FALSE;
vidWinMode.hexpand = FALSE;
vidWinMode.vexpand = FALSE;
break;
case VID_FLD_352x288:
winConfig.offset = 352*2;
winConfig.address = address;
winConfig.startX = 0;
winConfig.startY = 0;
winConfig.width = 720;
winConfig.height = 240;
winConfig.displayMode = OSD_FIELD_MODE;
winConfig.hzoom = OSD_ZOOM_2x;
winConfig.vzoom = OSD_NO_ZOOM;
vidWinMode.expandFilterEnable = FALSE;
vidWinMode.hexpand = FALSE;
vidWinMode.vexpand = FALSE;
break;
default:
break;
}
status = OSD_setVideoWinMode( &vidWinMode );
if(status!=E_PASS)
return status;
status=OSD_setWinConfig( winID, &winConfig );
if(status!=E_PASS)
return status;
return status;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -