📄 osdcore.c
字号:
#endif
vEnableWB(WB_NORMAL_HEAD1);
vEnableWB(WB_NORMAL_HEAD2);
vEnableWB(WB_NORMAL_PBC1);
vEnableWB(WB_NORMAL_PBC2);
vEnableWB(WB_NORMAL_VOL);
vEnableWB(WB_OVERLAY_MSG1);
/* set initial status */
vSetSharedInfo(SH_OSD_LAYER1_WB, 0x7f); /* all layer 1 WB enable */
vSetSharedInfo(SH_OSD_LAYER1_STATUS, 0x00);
vSetSharedInfo(SH_OSD_LAYER2_WB, 0x00); /* all layer 2 WB disable */
vSetSharedInfo(SH_OSD_LAYER2_STATUS, 0x00);
vSetSharedInfo(SH_PAUSE_SHOW_WB,0);//init
vSetSharedInfo(SH_PROGRAM_START,0);//init
vSetSharedInfo(SH_BOOKMARK_PLAY,0);//init
for (i = 0; i < OSD_TIMER_MAX; i++)
{
vSetSharedInfo(SH_OSD_TIMER_START + i, 0);
}
/* set OSD wb mode */
vSetSharedInfo(SH_OSD_WB_MODE, OSD_WB_NORMAL);
vSetSharedInfo(SH_OSD_WB_SAVED, OSD_WB_NONE);
/* file system code page asigned */
//vSetFsCodePage(CODE_PAGE_MENU);
/* set OSD state to run state */
vOsdSetSt(OSD_ST_RUN);
//for SPECTRUM wb
#ifdef SPTM_SUPPORT
vCreateWBEx(WB_NORMAL_SPTM);
#endif
#ifdef PLAYER_ZOOMIN_INDICATOR
// for ZOOM IN indicator
vCreateWBEx(WB_ZOOM_BR);
#endif
//Fixed Me
//WBs can't show after vOsdCoreInit besides WB_HEAD1
//but call vOsdShowWb(OSD_WB_DISABLE) and then call vOsdShowWb(OSD_WB_RESTORE);
//all static WBs can be showed
vOsdShowWb(OSD_WB_DISABLE);
vOsdShowWb(OSD_WB_RESTORE);
}
// *********************************************************************
// Function : void vOsdCoreExit(void) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
#if 0
void vOsdCoreExit(void) large
{
}
#endif
// *********************************************************************
// Function : void vOsdCoreLayer1Refresh(void)
// Description :
// Parameter :
// Return : None
// *********************************************************************
void vOsdCoreLayer1Refresh(void) large
{
BYTE bPbcState;
/* for play status show */
if (_rOsdStateCtx.fgPlayShow == TRUE)
{
if (bSharedInfo(SH_OSD_TIMER_PLAY_STATUS) == 0)
{
_rOsdStateCtx.fgPlayShow = FALSE;
_rOsdStateCtx.bPlayType = OSD_SHOW_PLAY;
/* update flag first then call show PBC state */
vShowPbcState(bSharedInfo(SI_PBC_STATE));
}
}
/* for audio status show */
if (_rOsdStateCtx.fgAudioStatusRecall == TRUE)
{
if (bSharedInfo(SH_OSD_TIMER_AUDIO_CTRL) == 0)
{
_rOsdStateCtx.fgAudioStatusRecall = FALSE;
if (_rOsdStateCtx.bAudioStatus == OSD_AUDIO_SHOW_MUTE)
{
vOsdShowMute(OSD_MUTE_ON);
}
}
}
}
// *********************************************************************
// Function : void vOsdCoreLayer2Refresh(void)
// Description :
// Parameter :
// Return : None
// *********************************************************************
void vOsdCoreLayer2Refresh(void) large
{
uOsdLayer1Status uTmp1;
uOsdLayer2Status uTmp2;
BYTE bCnt, bIdx;
BYTE bChanged;
BYTE bWbMode;
uTmp1.Byte = bSharedInfo(SH_OSD_LAYER1_STATUS);
uTmp2.Byte = bSharedInfo(SH_OSD_LAYER2_STATUS);
bWbMode = bSharedInfo(SH_OSD_WB_MODE);
/* LINE 1 */
bChanged = 0;
bCnt = bSharedInfo(SH_OSD_TIMER_LAYER2_1);
if (uTmp2.Bit.Line1)
{
if (bCnt == 0)
{
uTmp2.Bit.Line1 = FALSE;
bChanged = 1;
}
}
else
{
if (bCnt > 0)
{
uTmp2.Bit.Line1 = TRUE;
bChanged = 1;
}
}
if (bChanged)
{
if (uTmp2.Bit.Line1)
{
bCnt = bSharedInfo(SH_OSD_LAYER1_WB);
bCnt &= (~(0x01 << 0x00));
vSetSharedInfo(SH_OSD_LAYER1_WB, bCnt);
vDisableWB(pbWbLayer1[0x00]);
bCnt = bSharedInfo(SH_OSD_LAYER2_WB);
bCnt |= (0x01 << 0x00);
vSetSharedInfo(SH_OSD_LAYER2_WB, bCnt);
if ((!fgIsInSetupMenu()) && (!fgIsScrSaverOn()) && (bWbMode != OSD_WB_FULL_SCR))
{
vEnableWB(pbWbLayer2[0x00]);
/* for input state */
if (uTmp2.Bit.Wb1Hili == TRUE)
{
vInMsgColEn(pbWbLayer2[0x00]);
}
else
{
vInMsgColDis(pbWbLayer2[0x00]);
}
}
}
else
{
bCnt = bSharedInfo(SH_OSD_LAYER2_WB);
bCnt &= (~(0x01 << 0x00));
vSetSharedInfo(SH_OSD_LAYER2_WB, bCnt);
uTmp2.Bit.Wb1Hili = FALSE;
vDisableWB(pbWbLayer2[0x00]);
bCnt = bSharedInfo(SH_OSD_LAYER1_WB);
bCnt |= (0x01 << 0x00);
vSetSharedInfo(SH_OSD_LAYER1_WB, bCnt);
if ((!fgIsInSetupMenu()) && (!fgIsScrSaverOn()) && (bWbMode != OSD_WB_FULL_SCR))
{
vEnableWB(pbWbLayer1[0x00]);
/* for input state */
if (uTmp1.Bit.Wb1Hili == TRUE)
{
vInMsgColEn(pbWbLayer1[0x00]);
}
else
{
vInMsgColDis(pbWbLayer1[0x00]);
}
}
}
}
/* LINE 2 */
bChanged = 0;
bCnt = bSharedInfo(SH_OSD_TIMER_LAYER2_2);
if (uTmp2.Bit.Line2)
{
if (bCnt == 0)
{
uTmp2.Bit.Line2 = FALSE;
bChanged = 1;
}
}
else
{
if (bCnt > 0)
{
uTmp2.Bit.Line2 = TRUE;
bChanged = 1;
}
}
if (bChanged)
{
if (uTmp2.Bit.Line2)
{
bCnt = bSharedInfo(SH_OSD_LAYER1_WB);
bCnt &= (~(0x01 << 0x01));
vSetSharedInfo(SH_OSD_LAYER1_WB, bCnt);
vDisableWB(pbWbLayer1[0x01]);
bCnt = bSharedInfo(SH_OSD_LAYER2_WB);
bCnt |= (0x01 << 0x01);
vSetSharedInfo(SH_OSD_LAYER2_WB, bCnt);
if ((!fgIsInSetupMenu()) && (!fgIsScrSaverOn()) && (bWbMode != OSD_WB_FULL_SCR))
{
vEnableWB(pbWbLayer2[0x01]);
/* for input state */
if (uTmp2.Bit.Wb2Hili == TRUE)
{
vInMsgColEn(pbWbLayer2[0x01]);
}
else
{
vInMsgColDis(pbWbLayer2[0x01]);
}
}
}
else
{
bCnt = bSharedInfo(SH_OSD_LAYER2_WB);
bCnt &= (~(0x01 << 0x01));
vSetSharedInfo(SH_OSD_LAYER2_WB, bCnt);
uTmp2.Bit.Wb2Hili = FALSE;
vDisableWB(pbWbLayer2[0x01]);
bCnt = bSharedInfo(SH_OSD_LAYER1_WB);
bCnt |= (0x01 << 0x01);
vSetSharedInfo(SH_OSD_LAYER1_WB, bCnt);
if ((!fgIsInSetupMenu()) && (!fgIsScrSaverOn()) && (bWbMode != OSD_WB_FULL_SCR))
{
vEnableWB(pbWbLayer1[0x01]);
/* for input state */
if (uTmp1.Bit.Wb2Hili == TRUE)
{
vInMsgColEn(pbWbLayer1[0x01]);
}
else
{
vInMsgColDis(pbWbLayer1[0x01]);
}
}
}
}
/* LINE 3 */
bChanged = 0;
bCnt = bSharedInfo(SH_OSD_TIMER_LAYER2_3);
if (uTmp2.Bit.Line3)
{
if (bCnt == 0)
{
uTmp2.Bit.Line3 = FALSE;
bChanged = 1;
}
}
else
{
if (bCnt > 0)
{
uTmp2.Bit.Line3 = TRUE;
bChanged = 1;
}
}
if (bChanged)
{
if (uTmp2.Bit.Line3)
{
bCnt = bSharedInfo(SH_OSD_LAYER1_WB);
bCnt &= (~(0x01 << 0x02));
vSetSharedInfo(SH_OSD_LAYER1_WB, bCnt);
vDisableWB(pbWbLayer1[0x02]);
bCnt = bSharedInfo(SH_OSD_LAYER2_WB);
bCnt |= (0x01 << 0x02);
vSetSharedInfo(SH_OSD_LAYER2_WB, bCnt);
if ((!fgIsInSetupMenu()) && (!fgIsScrSaverOn()) && (bWbMode != OSD_WB_FULL_SCR))
{
vEnableWB(pbWbLayer2[0x02]);
/* for input state */
if (uTmp2.Bit.Wb3Hili == TRUE)
{
vInMsgColEn(pbWbLayer2[0x02]);
}
else
{
vInMsgColDis(pbWbLayer2[0x02]);
}
}
}
else
{
bCnt = bSharedInfo(SH_OSD_LAYER2_WB);
bCnt &= (~(0x01 << 0x02));
vSetSharedInfo(SH_OSD_LAYER2_WB, bCnt);
uTmp2.Bit.Wb3Hili = FALSE;
vDisableWB(pbWbLayer2[0x02]);
bCnt = bSharedInfo(SH_OSD_LAYER1_WB);
bCnt |= (0x01 << 0x02);
vSetSharedInfo(SH_OSD_LAYER1_WB, bCnt);
if ((!fgIsInSetupMenu()) && (!fgIsScrSaverOn()) && (bWbMode != OSD_WB_FULL_SCR))
{
vEnableWB(pbWbLayer1[0x02]);
/* for input state */
if (uTmp1.Bit.Wb3Hili == TRUE)
{
vInMsgColEn(pbWbLayer1[0x02]);
}
else
{
vInMsgColDis(pbWbLayer1[0x02]);
}
}
}
}
/* LINE 4 */
bChanged = 0;
bCnt = bSharedInfo(SH_OSD_TIMER_LAYER2_4);
if (uTmp2.Bit.Line4)
{
if (bCnt == 0)
{
uTmp2.Bit.Line4 = FALSE;
bChanged = 1;
}
}
else
{
if (bCnt > 0)
{
uTmp2.Bit.Line4 = TRUE;
bChanged = 1;
}
}
if (bChanged)
{
if (uTmp2.Bit.Line4)
{
bCnt = bSharedInfo(SH_OSD_LAYER1_WB);
bCnt &= (~(0x01 << 0x03));
vSetSharedInfo(SH_OSD_LAYER1_WB, bCnt);
vDisableWB(pbWbLayer1[0x03]);
bCnt = bSharedInfo(SH_OSD_LAYER2_WB);
bCnt |= (0x01 << 0x03);
vSetSharedInfo(SH_OSD_LAYER2_WB, bCnt);
if ((!fgIsInSetupMenu()) && (!fgIsScrSaverOn()) && (bWbMode != OSD_WB_FULL_SCR))
{
vEnableWB(pbWbLayer2[0x03]);
/* for input state */
if (uTmp2.Bit.Wb4Hili == TRUE)
{
vInMsgColEn(pbWbLayer2[0x03]);
}
else
{
vInMsgColDis(pbWbLayer2[0x03]);
}
}
}
else
{
bCnt = bSharedInfo(SH_OSD_LAYER2_WB);
bCnt &= (~(0x01 << 0x03));
vSetSharedInfo(SH_OSD_LAYER2_WB, bCnt);
uTmp2.Bit.Wb4Hili = FALSE;
vDisableWB(pbWbLayer2[0x03]);
bCnt = bSharedInfo(SH_OSD_LAYER1_WB);
bCnt |= (0x01 << 0x03);
vSetSharedInfo(SH_OSD_LAYER1_WB, bCnt);
if ((!fgIsInSetupMenu()) && (!fgIsScrSaverOn()) && (bWbMode != OSD_WB_FULL_SCR))
{
vEnableWB(pbWbLayer1[0x03]);
/* for input state */
if (uTmp1.Bit.Wb4Hili == TRUE)
{
vInMsgColEn(pbWbLayer1[0x03]);
}
else
{
vInMsgColDis(pbWbLayer1[0x03]);
}
}
}
}
vSetSharedInfo(SH_OSD_LAYER1_STATUS, uTmp1.Byte);
vSetSharedInfo(SH_OSD_LAYER2_STATUS, uTmp2.Byte);
}
// *********************************************************************
// Function : void vOsdCoreRefresh(void)
// Description : called every seconds
// Parameter :
// Return : None
// *********************************************************************
void vOsdCoreRefresh(BOOL fgIsTimer) large
{
BYTE bIdx;
BYTE bTmp;
/* if is timer beep, count down OSD timer */
if (fgIsTimer == TRUE)
{
for (bIdx = 0; bIdx < OSD_TIMER_MAX; bIdx++)
{
bTmp = bSharedInfo(SH_OSD_TIMER_START + bIdx);
if ((bTmp != OSD_NO_DISAPPEAR) && (bTmp != 0))
{
bTmp--;
vSetSharedInfo(SH_OSD_TIMER_START + bIdx, bTmp);
}
}
} /* fgIsTimer == TRUE */
/* for error message in the layer 2 */
if (OSD_POS_ERROR >= OSD_POS_LAYER2_LINE1)
{
bTmp = bSharedInfo(SH_OSD_TIMER_START + (OSD_POS_ERROR - OSD_POS_LAYER2_LINE1));
bIdx = bSharedInfo(SH_OSD_TIMER_ERR_MSG);
if (bTmp > bIdx)
{
vSetSharedInfo(SH_OSD_TIMER_ERR_MSG, 0);
}
}
vOsdCoreLayer2Refresh();
vOsdCoreLayer1Refresh();
}
// *********************************************************************
// Function : BOOL fgOsdCoreChgColEn(WORD wPosIndex, BYTE bWB)
// Description :
// Parameter :
// Return : None
// *********************************************************************
BOOL fgOsdCoreChgColEn(WORD wPosIndex, BYTE bWB) large
{
BOOL fgChange;
uOsdLayer1Status uTmp1;
uOsdLayer2Status uTmp2;
fgChange = FALSE;
uTmp1.Byte = bSharedInfo(SH_OSD_LAYER1_STATUS);
uTmp2.Byte = bSharedInfo(SH_OSD_LAYER2_STATUS);
if (fgIsLayer2(wPosIndex))
{
if (!fgIsInSetupMenu())
{
fgChange = TRUE;
}
if (bWB == pbWbLayer2[0])
{
uTmp2.Bit.Wb1Hili = TRUE;
}
else if (bWB == pbWbLayer2[1])
{
uTmp2.Bit.Wb2Hili = TRUE;
}
else if (bWB == pbWbLayer2[2])
{
uTmp2.Bit.Wb3Hili = TRUE;
}
else if (bWB == pbWbLayer2[3])
{
uTmp2.Bit.Wb4Hili = TRUE;
}
vSetSharedInfo(SH_OSD_LAYER2_STATUS, uTmp2.Byte);
}
else if (fgIsLayer1(wPosIndex))
{
/* the hili enable is done in layer refresh */
if (bWB == pbWbLayer1[0])
{
uTmp1.Bit.Wb1Hili = TRUE;
if (!(uTmp2.Bit.Line1 || fgIsInSetupMenu()))
{
fgChange = TRUE;
}
}
else if (bWB == pbWbLayer1[1])
{
uTmp1.Bit.Wb2Hili = TRUE;
if (!(uTmp2.Bit.Line2 || fgIsInSetupMenu()))
{
fgChange = TRUE;
}
}
else if (bWB == pbWbLayer1[2])
{
uTmp1.Bit.Wb3Hili = TRUE;
if (!(uTmp2.Bit.Line3 || fgIsInSetupMenu()))
{
fgChange = TRUE;
}
}
else if (bWB == pbWbLayer1[3])
{
uTmp1.Bit.Wb4Hili = TRUE;
if (!(uTmp2.Bit.Line4 || fgIsInSetupMenu()))
{
fgChange = TRUE;
}
}
vSetSharedInfo(SH_OSD_LAYER1_STATUS, uTmp1.Byte);
}
else
{
fgChange = TRUE;
}
return (fgChange);
}
// *********************************************************************
// Function : BOOL fgOsdCoreChgColDis(WORD wPosIndex, BYTE bWB)
// Description :
// Parameter :
// Return : None
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -