📄 show_vcd.c
字号:
/**********************************************************************/
/*************** MTK CONFIDENTIAL & COPYRIGHTED ****************/
/*************** ****************/
/*************** $Modtime:: 04/08/27 9:40a $ ****************/
/*************** $Revision:: 1 $ ****************/
/*************** ****************/
/*************** Description : ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : ****************/
/**********************************************************************/
#define _SHOW_VCD_C_
#pragma NOAREGS
#include "general.h"
#if((!defined CDDA_USE_CDFS) || (!defined NEW_SHOW ))
// *********************************************************************
// Show time mark
// *********************************************************************
void vVCDShowTimeMark(BYTE fgClear) large
{
BYTE bMin, bSec;
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
BYTE bTrkNo = bSharedInfo(SI_TRACK_NO);
switch(_rOsdStateCtx.bTimeType)
{
case OSD_SHOW_DISABLE:
if (fgClear)
{
vOsdShowTimeClear();
}
/* for VFD */
#if 0 /* disc elapsed time */
bMin = bSharedInfo(SI_TIME_MM);
bSec = bSharedInfo(SI_TIME_SS);
#else /* track elsapsed time */
bMin = bSharedInfo(SI_TIME_TRACK_MM);
bSec = bSharedInfo(SI_TIME_TRACK_SS);
#endif
break;
case OSD_SHOW_SINGLE_ELAPSED:
bMin = bSharedInfo(SI_TIME_TRACK_MM);
bSec = bSharedInfo(SI_TIME_TRACK_SS);
break;
case OSD_SHOW_SINGLE_REMAIN:
bMin = bSharedInfo(SI_TIME_TRACK_RMN_MM);
bSec = bSharedInfo(SI_TIME_TRACK_RMN_SS);
break;
case OSD_SHOW_TOTAL_ELAPSED:
bMin = bSharedInfo(SI_TIME_MM);
bSec = bSharedInfo(SI_TIME_SS);
break;
case OSD_SHOW_TOTAL_REMAIN:
bMin = bSharedInfo(SI_TIME_RMN_MM);
bSec = bSharedInfo(SI_TIME_RMN_SS);
break;
default:
_rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
return;
}
if (fgIsInDigest(bPbcState) && (fgIsCddaPlay()
#ifndef VCD_DGST_SHOW_MSG_ONLY
|| fgIsVcdPlay()
#endif
))
{
/* keep time mark show */
}
else if (!fgIsDiscPlay(bPbcState))
{
bMin = bSharedInfo(SI_TIME_TOTAL_MM);
bSec = bSharedInfo(SI_TIME_TOTAL_SS);
}
// 3/25 mark by Jerry, Some Segment Play Item is Motion Picture
#if 0
if (bTrkNo == 0) /* for PBC menu */
{
bMin = 0; bSec = 0;
}
#endif
if (_rOsdStateCtx.bTimeType != OSD_SHOW_DISABLE)
{
vOsdShowTimeRemain2(bMin, bSec, OSD_NO_DISAPPEAR);
}
if ((bPbcState != SV_STOP)
#ifndef VCD_VFD_TRACK0_SHOW_TIME
&& (bTrkNo != 0)
#endif
#ifdef VCD_DGST_SHOW_MSG_ONLY
&& (!fgIsInDigest(bPbcState) && fgIsVcdPlay())
#endif
)
{
#ifdef VCD_VFD_SHOW_HOUR
if (bMin > 0x59)
{
VfdShowPlayTime(1, bMin-0x60, bSec);
}
else
#endif
{
VfdShowPlayTime(0, bMin, bSec);
}
}
}
#endif /* CDDA_USE_CDFS */
#ifdef VCD_SUPPORT
#ifndef NEW_SHOW
// *********************************************************************
// Initial OSD state for VCD
// *********************************************************************
void vVCDShowInit(void) large
{
_rOsdStateCtx.fgTimeShow = TRUE;
_rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
#ifdef KEEP_REMAIN_TYPE_SHOW
_rOsdStateCtx.fgRemainMsgShow = TRUE;
#else
_rOsdStateCtx.fgRemainMsgShow = FALSE;
#endif
_rOsdStateCtx.fgPlayInfoShow = TRUE;
_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 */
#ifndef VCD_AUTO_PLAY
vPlayerShowLogo(VCD_STOP_LOGO, VCD_LOGO_COLOR);
#endif
}
void vVCDShowTotalTimeMark(void) large
{
BYTE bMin, bSec;
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
BYTE bTrkNo = bSharedInfo(SI_TRACK_NO);
switch(_rOsdStateCtx.bTimeType)
{
case OSD_SHOW_DISABLE:
vOsdShowTimeClear();
/* for VFD */
/* disc/track elapsed time */
bMin = 0;
bSec = 0;
break;
case OSD_SHOW_SINGLE_ELAPSED:
bMin = 0;
bSec = 0;
break;
case OSD_SHOW_SINGLE_REMAIN:
bMin = bSharedInfo(SI_TIME_TOTAL_TRACK_MM);
bSec = bSharedInfo(SI_TIME_TOTAL_TRACK_SS);
break;
case OSD_SHOW_TOTAL_ELAPSED:
bMin = 0;
bSec = 0;
break;
case OSD_SHOW_TOTAL_REMAIN:
bMin = bSharedInfo(SI_TIME_TOTAL_MM);
bSec = bSharedInfo(SI_TIME_TOTAL_SS);
break;
default:
_rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
return;
}
if (bSharedInfo(SI_TRACK_NO) == 0) /* for PBC menu */
{
bMin = 0; bSec = 0;
}
if (_rOsdStateCtx.bTimeType != OSD_SHOW_DISABLE)
{
vOsdShowTimeRemain2(bMin, bSec, OSD_NO_DISAPPEAR);
}
if (bTrkNo != 0)
{
#ifdef VCD_VFD_SHOW_HOUR
if (bMin > 0x59)
{
VfdShowPlayTime(1, bMin-0x60, bSec);
}
else
#endif
{
VfdShowPlayTime(0, bMin, bSec);
}
}
}
#endif /* #ifndef NEW_SHOW */
static code WORD pwVcdDispModeMsg[5] =
{
OSD_MSG_DISPLAY_OFF,
OSD_MSG_SINGLE_ELAPSED,
OSD_MSG_SINGLE_REMAIN,
OSD_MSG_TOTAL_ELAPSED,
OSD_MSG_TOTAL_REMAIN,
};
void vVCDShowRemainMsg(BYTE fgShowOff) large
{
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
if ((fgShowOff == FALSE) && (_rOsdStateCtx.bTimeType == OSD_SHOW_DISABLE))
{
return;
}
if (!fgIsDiscPlay(bPbcState))
{
vOsdPosClear(OSD_POS_REMAIN_MSG);
}
else if (_rOsdStateCtx.bTimeType != OSD_SHOW_DISABLE)
{
if (_rOsdStateCtx.fgRemainMsgShow == TRUE)
{
vOsdPosShow(OSD_POS_REMAIN_MSG, pwVcdDispModeMsg[_rOsdStateCtx.bTimeType], OSD_NO_DISAPPEAR);
}
else
{
vOsdPosShow(OSD_POS_REMAIN_MSG, pwVcdDispModeMsg[_rOsdStateCtx.bTimeType], OSD_TIMEOUT_SHORT);
}
vVCDShowPlayInfo(0);
}
else /* OSD_SHOW_DISABLE */
{
if ((bSharedInfo(SI_PBC_SWITCH) == SV_PBC_OFF) || (bSharedInfo(SI_VCD_DOM) == SV_PLAY_LIST))
{
vOsdPosShow(OSD_POS_REMAIN_MSG, pwVcdDispModeMsg[_rOsdStateCtx.bTimeType], OSD_TIMEOUT);
}
else
{
vOsdPosClear(OSD_POS_REMAIN_MSG);
}
}
}
// *********************************************************************
// Check if current time mark display mode is valid
// *********************************************************************
BYTE bVcdCheckRemainShow(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) && (bUsrPbc != SV_USR_DIGEST)) ||
(bSharedInfo(SI_PBC_SWITCH) == SV_PBC_ON))
{
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;
}
}
}
#else /* not USR_PBC_NO_TOTAL_TIME */
if (bSharedInfo(SI_PBC_SWITCH) == SV_PBC_ON)
{
if (fgCheckOnly == TRUE)
{
if ((bCurrType != OSD_SHOW_SINGLE_ELAPSED) &&
(bCurrType != OSD_SHOW_SINGLE_REMAIN))
{
if (_rOsdStateCtx.bTimeType == OSD_SHOW_DISABLE)
{
bType = OSD_SHOW_SINGLE_ELAPSED;
}
else
{
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 /* not USR_PBC_NO_TOTAL_TIME */
if ((fgChange == TRUE) && (fgCheckOnly == FALSE))
{
_rOsdStateCtx.bTimeType = bType;
vVCDShowRemainMsg(FALSE);
#ifndef NEW_SHOW
vVCDShowTimeMark(TRUE);
#else
vShowTimeMark(TRUE);
#endif
}
if (fgChange == FALSE)
{
if (bCurrType > OSD_SHOW_VCD_REMAIN_MAX)
{
bType = OSD_SHOW_DISABLE;
}
else
{
bType = bCurrType;
}
}
return (bType);
}
// *********************************************************************
// Function : void vVCDShowDomainInfo(void)
// Description : Show if in menu(VCD)
// Parameter : None
// Return : None
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -