📄 show_vcd.c
字号:
// *********************************************************************
void vVCDShowDomainInfo(void) large
{
BYTE bDom = bSharedInfo(SI_DVD_DOM);
#ifdef VFD_SHOW_PBC_PLAY
if ((bSharedInfo(SI_PBC_SWITCH) == SV_PBC_ON) &&
(bDom == SV_SELECT_LIST) && (bSharedInfo(SI_TRACK_NO) == 0))
{
/* play segment, show PBC MENU here */
VfdShowStatus(VFD_STATUS_PBC);
}
else /* in PLAY LIST or play track in SELECT LIST */
#endif /* VFD_SHOW_PBC_PLAY */
{
/* refresh time info and play info */
VfdShowStatus(VFD_STATUS_PLAY);
/* HACK code: show time mark ASAP */
if (bSharedInfo(SI_PBC_SWITCH) == SV_PBC_ON)
{
VfdShowPlayTime(0, 0, 0);
}
}
/* update panel L/R icon, not show OSD */
vVCDShowAudioLR(FALSE);
}
// *********************************************************************
// Function : void vVCDShowPlayInfo(BYTE bItem)
// Description :
// Parameter : None
// Return : None
// *********************************************************************
void vVCDShowPlayInfo(BYTE bItem) large
{
BYTE bTrkNo = bSharedInfo(SI_TRACK_NO);
BYTE bTrkNs = bSharedInfo(SI_TRACK_NS);
BYTE bState = bSharedInfo(SI_PBC_STATE);
if (bItem == PLAY_INFO_CLEAR)
{
vOsdPosClear(OSD_POS_PLAY_INFO);
return;
}
else if (bItem > 0) /* if called from RISC notification */
{
/* update VFD first */
if (fgIsDiscPlay(bState)
#ifndef VCD_DGST_SHOW_MSG_ONLY
|| fgIsInDigest(bState)
#endif
)
{
if ((bSharedInfo(SI_PBC_SWITCH) == SV_PBC_ON) && (bSharedInfo(SI_VCD_DOM) == SV_SELECT_LIST))
{
vVCDShowDomainInfo();
}
else /* if ((bSharedInfo(SI_PBC_SWITCH) == SV_PBC_OFF) || (bSharedInfo(SI_VCD_DOM) == SV_PLAY_LIST)) */
{
VfdShowPlayInfo(VFD_INFO_TRACK, 0, bTrkNo);
}
}
#ifdef VCD_MENU_NO_ZOOM_OUT
if ((bSharedInfo(SI_TRACK_NO) == 0) && (bSharedInfo(SI_ZOOM_SWITCH) >= SV_ZOOM_OUT_MIN))
{
vSendUopCmd(UOP_ZOOM_IN, SV_ZOOM_OFF, 0, 0);
}
#endif /* VCD_MENU_NO_ZOOM_OUT */
#ifdef VCD_MENU_NO_ZOOM_IN
if ((bSharedInfo(SI_TRACK_NO) == 0) && (bSharedInfo(SI_ZOOM_SWITCH) >= SV_ZOOM_IN_MIN))
{
vSendUopCmd(UOP_ZOOM_IN, SV_ZOOM_OFF, 0, 0);
}
#endif /* VCD_MENU_NO_ZOOM_IN */
}
/* update OSD */
if (bTrkNs == 0)
{
vOsdPosClear(OSD_POS_PLAY_INFO);
}
else /* if (!fgIsSearchInputState()) */ /* we have move the search info to layer 2 */
{
if (_rOsdStateCtx.bTimeType == OSD_SHOW_DISABLE)
{
if ((bItem == 0) && fgIsUopRetOK(UOP_TRACK_PLAY)) /* if called from UOP return */
{
vOsdShowSelectTrk(bTrkNo, bTrkNs, 2, OSD_TIMEOUT_SHORT);
}
else
{
vOsdPosClear(OSD_POS_PLAY_INFO);
}
}
else
{
if (_rOsdStateCtx.fgPlayInfoShow == TRUE)
{
vOsdShowTrack(OSD_TOTAL_TRACK, bTrkNo, bTrkNs, OSD_NO_DISAPPEAR);
}
else
{
vOsdShowTrack(OSD_TOTAL_TRACK, bTrkNo, bTrkNs, IR_TIMEOUT_DISPLAY);
}
}
}
}
#ifndef NEW_SHOW
// *********************************************************************
// Show trick mode
// *********************************************************************
void vVCDShowTrick(BYTE bState) large
{
BYTE bSpeed = bSharedInfo(SI_PBC_SPEED);
if ((bState == SV_FF) || (bState == SV_FR))
{
if (bSpeed >= VCD_FAST_MAX)
{
bSpeed = VCD_FAST_MAX - 1;
}
bSpeed = pbVCDFastDispTbl[bSpeed];
}
#if ((!defined DISABLE_SF) && (!defined DISABLE_SR))
else if ((bState == SV_SF) || (bState == SV_SR))
{
if (bSpeed >= VCD_SLOW_MAX)
{
bSpeed = VCD_SLOW_MAX - 1;
}
bSpeed = pbVCDSlowDispTbl[bSpeed];
}
#endif
switch (bState)
{
case SV_FF:
vOsdShowPbcState(SV_FF, bSpeed, OSD_NO_DISAPPEAR);
break;
case SV_SF:
vOsdShowPbcState(SV_SF, bSpeed, OSD_NO_DISAPPEAR);
break;
case SV_FR:
vOsdShowPbcState(SV_FR, bSpeed, OSD_NO_DISAPPEAR);
break;
case SV_SR:
vOsdShowPbcState(SV_SR, bSpeed, OSD_NO_DISAPPEAR);
break;
default:
break;
}
}
#endif /*#ifndef NEW_SHOW */
/************************************************************************
Function :
Description : Show Audio L/R for SVCD/VCD/CDDA
Parameter :
Return :
************************************************************************/
void vVCDShowAudioLR(BOOL fgShowOsd) large
{
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
BYTE bType = bAdspCurrVocal();
BYTE bACode = bSharedInfo(SI_A_CODE_MODE);
WORD wMsg = 0xffff;
if (bACode == SV_A_CODE_NONE)
{
VfdShowAudioLR(VFD_LR_CLEAR);
return;
}
#ifndef CDDA_USE_CDFS
else if (fgIsCddaPlay())
{
if (bACode == SV_A_CODE_DTS)
{
/* no show for DTS-CD */
VfdShowAudioLR(VFD_LR_CLEAR);
return;
}
}
#endif
else if (IS_SVCD_TYPE(bDiscType))
{
if (bSharedInfo(SI_A_CH_CFG) != SV_A_CH_20_0)
{
/* no show for multi-channel SVCD */
VfdShowAudioLR(VFD_LR_CLEAR);
return;
}
}
// FIXME: multi channel for SVCD
switch (bType)
{
case AUDIO_MONO_LEFT:
wMsg = OSD_MSG_MONO_LEFT;
VfdShowAudioLR(VFD_MONO_LEFT);
break;
case AUDIO_MONO_RIGHT:
wMsg = OSD_MSG_MONO_RIGHT;
VfdShowAudioLR(VFD_MONO_RIGHT);
break;
case AUDIO_MONO_MIXED:
wMsg = OSD_MSG_MIXED_MONO;
VfdShowAudioLR(VFD_STEREO);
break;
case AUDIO_STEREO:
default:
wMsg = OSD_MSG_STEREO;
VfdShowAudioLR(VFD_STEREO);
break;
} /* switch */
if ((fgShowOsd) && (wMsg != 0xffff))
{
vOsdPosShow(OSD_POS_NORMAL, wMsg, OSD_TIMEOUT_SHORT);
}
}
#ifndef NEW_SHOW
/************************************************************************
Function :
Description :
Parameter :
Return :
************************************************************************/
void vVCDShowStopResumeState(void) large
{
/* show LOGO first */
vPlayerShowLogo(VCD_STOP_LOGO, VCD_LOGO_COLOR);
#if (STOP_RESUME_STYLE == STOP_RESUME_TWO_KEYS)
/* these message will be cleared by key map function */
vOsdPosShow(OSD_POS_STOP_MSG1, OSD_MSG_PLAY_KEY_RESTART, OSD_NO_DISAPPEAR);
vOsdPosShow(OSD_POS_STOP_MSG2, OSD_MSG_RESUME_KEY_CONTINUE, OSD_NO_DISAPPEAR);
#elif (STOP_RESUME_STYLE == STOP_RESUME_TWO_STOP)
/* this message will be cleared by key map function */
vOsdPosShow(OSD_POS_STOP_MSG1, OSD_MSG_PLAY_KEY_CONTINUE, OSD_NO_DISAPPEAR);
#endif /* STOP_RESUME_STYLE */
}
/************************************************************************
Function :
Description :
Parameter :
Return :
************************************************************************/
void vVCDShowStopState(void) large
{
/* show LOGO first */
vPlayerShowLogo(VCD_STOP_LOGO, VCD_LOGO_COLOR);
/* reset OSD play state show */
vOsdShowWb(OSD_WB_CLEAR);
vOsdShowPbcState(SV_STOP, 0, OSD_NO_DISAPPEAR);
#if 0
vVCDShowTimeMark(TRUE);
vOsdShowTrack(OSD_TOTAL, 0, bSharedInfo(SI_TRACK_NS), OSD_NO_DISAPPEAR);
#endif
}
#endif /*#ifndef NEW_SHOW */
/************************************************************************
Function :
Description : recall all displayed information
Parameter :
Return :
************************************************************************/
void vVCDStatusDispRecall(void) large
{
vVCDShowDomainInfo();
vVCDShowRemainMsg(FALSE);
#ifndef NEW_SHOW
vVCDShowTimeMark(TRUE);
#else
vShowTimeMark(TRUE);
#endif
vVCDShowPlayInfo(bSIItemIndex(SI_TRACK_NO));
/* note only VFD only, OSD is update in play_vcd.c */
VfdShowPbcSwitch(bSharedInfo(SI_PBC_SWITCH) == SV_PBC_ON);
}
/************************************************************************
Function :
Description :
Parameter :
Return :
************************************************************************/
void vVCDChangeRemainType(BYTE bType) large
{
if (bType == OSD_SHOW_DISP_CHG_INIT)
{
vOsdPosShow(OSD_POS_REMAIN_MSG, pwVcdDispModeMsg[_rOsdStateCtx.bTimeType], OSD_NO_DISAPPEAR);
vOsdShowTrack(OSD_TOTAL_TRACK, bSharedInfo(SI_TRACK_NO), bSharedInfo(SI_TRACK_NS), OSD_NO_DISAPPEAR);
}
else if (bType == OSD_SHOW_DISP_CHG_EXIT)
{
vOsdPosClear(OSD_POS_REMAIN_MSG);
vVCDShowPlayInfo(PLAY_INFO_CLEAR);
if (_rOsdStateCtx.fgRemainMsgShow == TRUE)
{
vVCDShowRemainMsg(FALSE);
}
if (_rOsdStateCtx.fgPlayInfoShow == TRUE)
{
#ifndef CDDA_USE_CDFS
if (fgIsCddaPlay())
{
vCDDAShowPlayInfo(0);
}
else
#endif
{
vVCDShowPlayInfo(0);
}
}
}
else
{
_rOsdStateCtx.bTimeType = bType;
vVCDShowRemainMsg(TRUE);
#ifndef CDDA_USE_CDFS
if (fgIsCddaPlay())
{
vCDDAShowPlayInfo(0);
}
else
#endif
{
vVCDShowPlayInfo(0);
}
}
#ifndef NEW_SHOW
vVCDShowTimeMark(TRUE);
#else
vShowTimeMark(TRUE);
#endif
}
#ifndef NEW_SHOW
/************************************************************************
Function :
Description :
Parameter :
Return :
************************************************************************/
BOOL fgVCDCheckSelectRange(BYTE bNum) large
{
if ((bSharedInfo(SI_VCD_DOM) == SV_SELECT_LIST) &&
(bNum >= bSharedInfo(SI_MENU_SEL_RNG_START)) &&
(bNum <= bSharedInfo(SI_MENU_SEL_RNG_END)))
{
return (TRUE);
}
else
{
return (FALSE);
}
}
#endif /* #ifndef NEW_SHOW */
#endif /* VCD_SUPPORT */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -