📄 show_cda.c
字号:
/**********************************************************************/
/*************** MTK CONFIDENTIAL & COPYRIGHTED ****************/
/*************** ****************/
/*************** $Modtime:: 04/08/27 9:40a $ ****************/
/*************** $Revision:: 1 $ ****************/
/*************** ****************/
/*************** Description : ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : ****************/
/**********************************************************************/
#define _SHOW_CDDA_C_
#pragma NOAREGS
#include "general.h"
#ifndef CDDA_USE_CDFS
// *********************************************************************
// Initial OSD state for CDDA
// *********************************************************************
void vCDDAShowInit(void) large
{
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
#if (defined(CDDA_AUTO_DISPLAY) || defined(CDDA_NO_DISPLAY_OFF))
_rOsdStateCtx.fgTimeShow = TRUE;
_rOsdStateCtx.bTimeType = OSD_SHOW_SINGLE_ELAPSED;
#ifdef KEEP_REMAIN_TYPE_SHOW
_rOsdStateCtx.fgRemainMsgShow = TRUE;
_rOsdStateCtx.fgPlayInfoShow = TRUE;
#else
_rOsdStateCtx.fgRemainMsgShow = FALSE;
_rOsdStateCtx.fgPlayInfoShow = FALSE;
#endif
#else
_rOsdStateCtx.fgTimeShow = FALSE;
_rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
_rOsdStateCtx.fgRemainMsgShow = FALSE;
_rOsdStateCtx.fgPlayInfoShow = FALSE;
#endif
_rOsdStateCtx.bPlayInfoType = OSD_INFO_DISABLE;
_rOsdStateCtx.fgPlayShow = TRUE;
_rOsdStateCtx.bPlayType = OSD_SHOW_PLAY;
_rOsdStateCtx.fgRepeatShow = TRUE;
_rOsdStateCtx.fgABShow = TRUE;
_rOsdStateCtx.fgUsrCtrlShow = TRUE;
_rOsdStateCtx.fgZoomShow = TRUE;
#ifndef ENFORCE_OSD_SHOW_TIME_LEFT
#ifdef TIME_INFO_SAME_LINE
_rOsdStateCtx.fgTimePos = OSD_SHOW_TIME_RIGHT;
#else
_rOsdStateCtx.fgTimePos = OSD_SHOW_TIME_LEFT;
#endif
#else
_rOsdStateCtx.fgTimePos = OSD_SHOW_TIME_LEFT;
#endif /* ENFORCE_OSD_SHOW_TIME_LEFT */
#ifdef KEEP_REMAIN_TYPE_SHOW
if (_rOsdStateCtx.fgRemainMsgShow == TRUE)
{
vVCDShowRemainMsg(FALSE);
}
#endif
#ifdef CDDA_AUTO_PLAY
if (bDiscType != SV_CDG)
#endif
{
vPlayerShowLogo(CDDA_STOP_LOGO, CDDA_LOGO_COLOR);
}
}
// *********************************************************************
// Check if current time mark display mode is valid
// *********************************************************************
BYTE bCddaCheckRemainShow(BOOL fgCheckOnly, BYTE bCurrType) large
{
BOOL fgChange = FALSE;
BYTE bType;
#ifdef USR_PBC_NO_TOTAL_TIME
BYTE bUsrPbc = bSharedInfo(SI_USR_PBC_CTRL);
if (fgIsUsrCtrlMode(bUsrPbc))
{
if (fgCheckOnly == TRUE)
{
if (_rOsdStateCtx.bTimeType == OSD_SHOW_DISABLE)
{
bType = OSD_SHOW_SINGLE_ELAPSED;
fgChange = TRUE;
}
else if ((bCurrType != OSD_SHOW_SINGLE_ELAPSED) &&
(bCurrType != OSD_SHOW_SINGLE_REMAIN))
{
bType = OSD_SHOW_DISABLE;
fgChange = TRUE;
}
}
else /* if (fgCheckOnly == FALSE) */
{
if (bCurrType == OSD_SHOW_TOTAL_ELAPSED)
{
bType = OSD_SHOW_SINGLE_ELAPSED;
fgChange = TRUE;
}
else if (bCurrType == OSD_SHOW_TOTAL_REMAIN)
{
bType = OSD_SHOW_SINGLE_REMAIN;
fgChange = TRUE;
}
}
}
#endif /* USR_PBC_NO_TOTAL_TIME */
if ((fgChange == TRUE) && (fgCheckOnly == FALSE))
{
_rOsdStateCtx.bTimeType = bType;
vVCDShowRemainMsg(FALSE);
vVCDShowTimeMark(TRUE);
}
if (fgChange == FALSE)
{
if (bCurrType > OSD_SHOW_VCD_REMAIN_MAX)
{
bType = OSD_SHOW_DISABLE;
}
else
{
bType = bCurrType;
}
}
#ifdef CDDA_NO_DISPLAY_OFF
if (fgIsCddaPlay())
{
if (bType == OSD_SHOW_DISABLE)
{
bType = OSD_SHOW_SINGLE_ELAPSED;
}
}
#endif /* CDDA_NO_DISPLAY_OFF */
return (bType);
}
// *********************************************************************
// Function : void vCDDAShowPlayInfo(BYTE bItem)
// Description :
// Parameter : None
// Return : None
// *********************************************************************
void vCDDAShowPlayInfo(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 */
VfdShowPlayInfo(VFD_INFO_CDDA_TRACK, 0, bTrkNo);
}
/* update OSD */
if (_rOsdStateCtx.bTimeType == OSD_SHOW_DISABLE)
{
vOsdPosClear(OSD_POS_PLAY_INFO);
}
else
{
vOsdShowTrack(OSD_TOTAL_TRACK, bTrkNo, bTrkNs, OSD_NO_DISAPPEAR);
#ifdef SHOW_CD_TEXT
vClearWB(WB_NORMAL_PBC2);
vOsdShowCDTextXY(0, 0, CDTEXT_TRACK_NAME, WB_NORMAL_PBC2, bTrkNo);
#endif
}
}
// *********************************************************************
// Show trick mode
// *********************************************************************
void vCDDAShowTrick(BYTE bState) large
{
BYTE bSpeed = bSharedInfo(SI_PBC_SPEED);
BYTE bType = bSharedInfo(SI_DISC_TYPE);
if ((bState == SV_FF) || (bState == SV_FR))
{
if (bSpeed >= CDDA_FAST_MAX)
{
bSpeed = CDDA_FAST_MAX - 1;
}
bSpeed = pbCDDAFastDispTbl[bSpeed];
}
else if ((bState == SV_SF) || (bState == SV_SR))
{
if (bSpeed >= CDDA_SLOW_MAX)
{
bSpeed = CDDA_SLOW_MAX - 1;
}
bSpeed = pbCDDASlowDispTbl[bSpeed];
}
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;
}
}
/************************************************************************
Function :
Description :
Parameter :
Return :
************************************************************************/
void vCDDAShowStopResumeState(void) large
{
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
/* show LOGO first */
if ((bDiscType != SV_CDG) || (CDDA_STOP_LOGO == SV_LOGO_COLOR))
{
vPlayerShowLogo(CDDA_STOP_LOGO, CDDA_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 vCDDAShowStopState(void) large
{
/* show LOGO first */
vPlayerShowLogo(CDDA_STOP_LOGO, CDDA_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
#ifdef SHOW_CD_TEXT
vClearWB(WB_NORMAL_PBC2);
vOsdShowCDTextXY(0, 0, CDTEXT_TITLE_NAME, WB_NORMAL_PBC2, 0);
#endif
}
/************************************************************************
Function :
Description : recall all displayed information
Parameter :
Return :
************************************************************************/
void vCDDAStatusDispRecall(void) large
{
VfdShowStatus(VFD_STATUS_PLAY);
VfdShowPlayTime(0, 0, 0);
/* update panel L/R icon, not show OSD */
vVCDShowAudioLR(FALSE);
vVCDShowRemainMsg(FALSE);
vVCDShowTimeMark(TRUE);
vCDDAShowPlayInfo(bSIItemIndex(SI_TRACK_NO));
}
#endif /*#ifndef CDDA_USE_CDFS */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -