📄 show_com.c
字号:
/*************** $Modtime:: 0 $ ****************/
/*************** $Revision:: 1 $ ****************/
/*************** ****************/
/*************** Description : ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : ****************/
/**********************************************************************/
#define _SHOW_COM_C_
#pragma NOAREGS
#include "general.h"
#include "../../custom/demo/fslist/flcomm.h"
// *********************************************************************
// Initial OSD state
// *********************************************************************
void vShowInit(void) large
{
_rOsdStateCtx.fgTimeShow = TRUE;
_rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
#ifdef KEEP_REMAIN_TYPE_SHOW
_rOsdStateCtx.fgRemainMsgShow = TRUE;
#else
_rOsdStateCtx.fgRemainMsgShow = FALSE;
#endif
#ifdef KEEP_PLAY_INFO_SHOW
_rOsdStateCtx.fgPlayInfoShow = TRUE;
#else
_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 */
}
// *********************************************************************
// Show time mark
// *********************************************************************
void vShowTimeMark(BYTE fgClear) large
{
BYTE bHour, bMin, bSec;
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
BYTE bDom = bSharedInfo(SI_DVD_DOM);
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
BYTE bItemType = bSharedInfo(SI_ISO_ITEM_TYPE);
BYTE bTrkNo = bSharedInfo(SI_TRACK_NO);
BYTE bType = _rOsdStateCtx.bTimeType;
if((bSharedInfo(SI_DVD_DOM) == SV_VMGM_DOM) || (bSharedInfo(SI_DVD_DOM) == SV_VTSM_DOM))
{
vOsdShowTimeClear();
return;
}
#ifndef CDDA_USE_CDFS
if((fgIsIsoPlay()) && (_bFlCmdTarget != FL_CMD_TARGET_MPEG))
{
bPbcState = bSharedInfo(SI_MP3_MOD);
}
else if(fgIsCddaPlay())
{
return;
}
#endif
#ifdef VCD_SUPPORT
if(fgIsVcdPlay())//make _rOsdStateCtx.bTimeType of VCD match with DVD and ISO
{ //case 3,4 mapping to case 1,2
if(bType >= 3) bType-=2;
else if(bType >= 1) bType+=2;
}
#endif
switch(bType)
{
case OSD_SHOW_DISABLE:
if (fgClear)
{
if((fgIsIsoPlay())&& (_bFlCmdTarget != FL_CMD_TARGET_MPEG))
{
vOsdPosClear(OSD_POS_ISO_TIME_LEFT);
}
else
{
vOsdShowTimeClear();
}
}
/* for VFD */
/* title elapsed */
#ifdef VCD_SUPPORT
if(fgIsVcdPlay())
{
/* track elsapsed time */
bHour = bSharedInfo(SI_TIME_TRACK_HH);
bMin = bSharedInfo(SI_TIME_TRACK_MM);
bSec = bSharedInfo(SI_TIME_TRACK_SS);
}
else
#endif
{
bHour = bSharedInfo(SI_TIME_HH);
bMin = bSharedInfo(SI_TIME_MM);
bSec = bSharedInfo(SI_TIME_SS);
}
break;
case 1:
/* DVD OSD_SHOW_TITLE_ELAPSED */
/* VCD OSD_SHOW_TOTAL_ELAPSED */
/* ISO OSD_SHOW_SINGLE_ELAPSED */
bHour = bSharedInfo(SI_TIME_HH);
bMin = bSharedInfo(SI_TIME_MM);
bSec = bSharedInfo(SI_TIME_SS);
break;
case 2:
/* DVD OSD_SHOW_TITLE_REMAIN */
/* VCD OSD_SHOW_TOTAL_REMAIN */
/* ISO OSD_SHOW_SINGLE_REMAIN */
bHour = bSharedInfo(SI_TIME_RMN_HH);
bMin = bSharedInfo(SI_TIME_RMN_MM);
bSec = bSharedInfo(SI_TIME_RMN_SS);
break;
case 3:
/* DVD OSD_SHOW_CHAPTER_ELAPSED */
/* VCD OSD_SHOW_SINGLE_ELAPSED */
#ifdef VCD_SUPPORT
if(fgIsVcdPlay())
{
bHour = bSharedInfo(SI_TIME_TRACK_HH);
bMin = bSharedInfo(SI_TIME_TRACK_MM);
bSec = bSharedInfo(SI_TIME_TRACK_SS);
}
else
#endif
{
bHour = bSharedInfo(SI_TIME_CHAPTER_HH);
bMin = bSharedInfo(SI_TIME_CHAPTER_MM);
bSec = bSharedInfo(SI_TIME_CHAPTER_SS);
}
break;
case 4:
/* DVD OSD_SHOW_CHAPTER_REMAIN */
/* VCD OSD_SHOW_SINGLE_REMAIN */
#ifdef VCD_SUPPORT
if(fgIsVcdPlay())
{
bHour = bSharedInfo(SI_TIME_TRACK_RMN_HH);
bMin = bSharedInfo(SI_TIME_TRACK_RMN_MM);
bSec = bSharedInfo(SI_TIME_TRACK_RMN_SS);
}
else
#endif
{
bHour = bSharedInfo(SI_TIME_CHAPTER_RMN_HH);
bMin = bSharedInfo(SI_TIME_CHAPTER_RMN_MM);
bSec = bSharedInfo(SI_TIME_CHAPTER_RMN_SS);
}
break;
}
if(fgIsVcdPlay())
{
if(bMin >= 0x60)
{
bHour = 1;
bMin -= 0x60;
}
}
if (!fgIsDiscPlay(bPbcState))
{
bHour = 0; bMin = 0; bSec = 0;
}
if (_rOsdStateCtx.bTimeType != OSD_SHOW_DISABLE)
{
vOsdShowTimeRemain3(bHour, bMin, bSec, OSD_NO_DISAPPEAR);
}
if (((bDom == SV_VTSTT_DOM) || (bDom == SV_ATSTT_DOM) )&& (bPbcState != SV_STOP) && (fgIsDvdPlay())
#ifdef DVD_DGST_SHOW_MSG_ONLY
&& (bSharedInfo(SI_USR_PBC_CTRL) != SV_USR_DIGEST)
#endif
)
{
VfdShowPlayTime(bHour, bMin, bSec);
}
else 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_UPDATE_HOUR
if (bMin > 0x59)
{
VfdShowPlayTime(1, bMin-0x60, bSec);
}
else
#endif
{
VfdShowPlayTime(0, bMin, bSec);
}
}
// #ifndef CDDA_USE_CDFS
if(fgIsIsoPlay() && (_bFlCmdTarget != FL_CMD_TARGET_MPEG))
{
if (_rOsdStateCtx.bTimeType != OSD_SHOW_DISABLE)
{
#ifdef PLAYER_FLMENU
if (fgFlCheckStatus(FL_STATUS_IN_MENU) && (_rSearchStateCtx.bType != SEARCH_ISO_TIME))
vFlIpShowInfo(IP_INFO_PLAYTIME, bMin, bSec);
else
#endif
vOsdShowIsoTimeRemain2(bHour, bMin, bSec, OSD_NO_DISAPPEAR);
}
}
// #endif
}
void vShowTotalTimeMark(void) large
{
BYTE bHour, bMin, bSec;
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
BYTE bDom = bSharedInfo(SI_DVD_DOM);
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
BYTE bTrkNo = bSharedInfo(SI_TRACK_NO);
switch(_rOsdStateCtx.bTimeType)
{
case OSD_SHOW_DISABLE:
vOsdShowTimeClear();
/* for VFD */
/* title/chapter elapsed */
bHour = 0;
bMin = 0;
bSec = 0;
break;
case 1:
/* case OSD_SHOW_TITLE_ELAPSED: //DVD */
/* case OSD_SHOW_SINGLE_ELAPSED: //VCD */
bHour = 0;
bMin = 0;
bSec = 0;
break;
case 2:
/* case OSD_SHOW_TITLE_REMAIN: //DVD */
/* case OSD_SHOW_SINGLE_REMAIN: //VCD */
#ifdef VCD_SUPPORT
if(fgIsVcdPlay())
{
bMin = bSharedInfo(SI_TIME_TOTAL_TRACK_MM);
bSec = bSharedInfo(SI_TIME_TOTAL_TRACK_SS);
if(bMin >= 0x60)
{
bHour = 1;
bMin -= 0x60;
}
}
else
#endif
{
bHour = bSharedInfo(SI_TIME_TOTAL_HH);
bMin = bSharedInfo(SI_TIME_TOTAL_HH);
bSec = bSharedInfo(SI_TIME_TOTAL_HH);
}
break;
case 3:
/* case OSD_SHOW_CHAPTER_ELAPSED: //DVD */
/* case OSD_SHOW_TOTAL_ELAPSED: //VCD */
bHour = 0;
bMin = 0;
bSec = 0;
break;
case 4:
/* case OSD_SHOW_CHAPTER_REMAIN: //DVD */
/* case OSD_SHOW_TOTAL_REMAIN: //VCD */
#ifdef VCD_SUPPORT
if (fgIsVcdPlay())
{
bMin = bSharedInfo(SI_TIME_TOTAL_MM);
bSec = bSharedInfo(SI_TIME_TOTAL_SS);
if(bMin >= 0x60)
{
bHour = 1;
bMin -= 0x60;
}
}
else
#endif
{
bHour = bSharedInfo(SI_TIME_TOTAL_CHAPTER_HH);
bMin = bSharedInfo(SI_TIME_TOTAL_CHAPTER_MM);
bSec = bSharedInfo(SI_TIME_TOTAL_CHAPTER_SS);
}
break;
default:
_rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
return;
}
#ifdef VCD_SUPPORT
if (fgIsVcdPlay())
{
if (bSharedInfo(SI_TRACK_NO) == 0) /* for PBC menu */
{
bHour = 0; bMin = 0; bSec = 0;
}
}
else
#endif
#ifndef DVD_SHOW_MENU_TIME
if(fgIsDvdPlay())
{
if (bDom != SV_VTSTT_DOM)
{
bHour = 0; bMin = 0; bSec = 0;
}
}
#endif
if (_rOsdStateCtx.bTimeType != OSD_SHOW_DISABLE)
{
#ifndef DVD_MENU_OSD_TIME_ZERO
if (bDom != SV_VTSTT_DOM)
{
vOsdShowTimeClear();
}
else
#endif
{
vOsdShowTimeRemain3(bHour, bMin, bSec, OSD_NO_DISAPPEAR);
}
}
#ifdef VCD_SUPPORT
if ((fgIsVcdPlay()) && (bTrkNo != 0))
{
#ifdef VCD_VFD_UPDATE_HOUR
if (bMin > 0x59)
{
VfdShowPlayTime(1, bMin-0x60, bSec);
}
else
#endif
{
VfdShowPlayTime(0, bMin, bSec);
}
}
else
#endif /* #ifdef VCD_SUPPORT */
if ((fgIsDvdPlay()) && (bDom == SV_VTSTT_DOM))
{
VfdShowPlayTime(bHour, bMin, bSec);
}
}
// *********************************************************************
// Show trick mode
// *********************************************************************
void vShowTrick(BYTE bState) large
{
BYTE bSpeed = bSharedInfo(SI_PBC_SPEED);
if ((bState == SV_FF) || (bState == SV_FR))
{
if (bSpeed >= FAST_MAX)
{
bSpeed = FAST_MAX - 1;
}
bSpeed = pbFastDispTbl[bSpeed];
}
else if (bState == SV_SF)
{
if (bSpeed >= SLOW_MAX)
{
bSpeed = SLOW_MAX - 1;
}
bSpeed = pbSlowDispTbl[bSpeed];
}
switch (bState)
{
case SV_FF:
vOsdShowPbcState(SV_FF, bSpeed, OSD_NO_DISAPPEAR);
break;
case SV_FR:
vOsdShowPbcState(SV_FR, bSpeed, OSD_NO_DISAPPEAR);
break;
case SV_SF:
vOsdShowPbcState(SV_SF, bSpeed, OSD_NO_DISAPPEAR);
break;
default:
break;
}
}
/************************************************************************
Function :
Description :
Parameter :
Return :
************************************************************************/
void vShowStopResumeState(void) large
{
/* show LOGO first */
if(fgIsDvdPlay())
{
vPlayerShowLogo(DVD_STOP_LOGO, DVD_LOGO_COLOR);
}
#ifdef VCD_SUPPORT
else if(fgIsVcdPlay())
{
vPlayerShowLogo(VCD_STOP_LOGO, VCD_LOGO_COLOR);
}
#endif
#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 vShowStopState(void) large
{
/* show LOGO first */
if(fgIsDvdPlay())
{
vPlayerShowLogo(DVD_STOP_LOGO, DVD_LOGO_COLOR);
}
#ifdef VCD_SUPPORT
else if(fgIsVcdPlay())
{
vPlayerShowLogo(VCD_STOP_LOGO, VCD_LOGO_COLOR);
}
#endif
/* reset OSD play state show */
vOsdShowWb(OSD_WB_CLEAR);
vOsdShowPbcState(SV_STOP, 0, OSD_NO_DISAPPEAR);
}
/************************************************************************
Function :
Description :
Parameter :
Return :
************************************************************************/
BOOL fgCheckSelectRange(BYTE bNum) large
{
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
if(
(((fgIsDiscPlay(bPbcState) )&&
(bSharedInfo(SI_HLI_STATE) == SV_ON) &&
(fgIsDvdPlay())) || //DVD
((bSharedInfo(SI_VCD_DOM) == SV_SELECT_LIST) &&
(fgIsVcdPlay()))) &&
(bNum >= bSharedInfo(SI_MENU_SEL_RNG_START)) &&
(bNum <= bSharedInfo(SI_MENU_SEL_RNG_END)))
{
return (TRUE);
}
else
{
return (FALSE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -