📄 show_dvd.c
字号:
/**********************************************************************/
/*************** MTK CONFIDENTIAL & COPYRIGHTED ****************/
/*************** ****************/
/*************** $Modtime:: 05/04/07 1:41p $ ****************/
/*************** $Revision:: 3 $ ****************/
/*************** ****************/
/*************** Description : ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : ****************/
/**********************************************************************/
#define _SHOW_DVD_C_
#pragma NOAREGS
#include "general.h"
#ifndef NEW_SHOW
// *********************************************************************
// Initial OSD state for DVD
// *********************************************************************
void vDVDShowInit(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 */
}
#endif /* #ifndef NEW_SHOW */
//#define KARAOKE_SCORING_TEST
#ifdef KARAOKE_SCORING_TEST
#define GENER_GRP 12
#define B_KSCORE_MAX ((GENER_GRP * 32) + 0x19) // 8032
#define B_KSCORE_MIN ((GENER_GRP * 32) + 0x1a) // 8032
#define B_KSCORE_SCORE ((GENER_GRP * 32) + 0x1b) // RISC
#define DSP_KSCORE_MAXSCORE 100
#define DSP_KSCORE_MINSCORE 0
#endif
#ifndef NEW_SHOW
// *********************************************************************
// Show time mark
// *********************************************************************
void vDVDShowTimeMark(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);
#ifdef KARAOKE_SCORING_TEST
BYTE bKSScore;
BYTE bTmpScore;
BYTE bTestStr[6];
#endif
switch(_rOsdStateCtx.bTimeType)
{
case OSD_SHOW_DISABLE:
if (fgClear)
{
vOsdShowTimeClear();
}
/* for VFD */
#if 1 /* title elapsed */
bHour = bSharedInfo(SI_TIME_HH);
bMin = bSharedInfo(SI_TIME_MM);
bSec = bSharedInfo(SI_TIME_SS);
#else /* chapter elapsed */
bHour = bSharedInfo(SI_TIME_CHAPTER_HH);
bMin = bSharedInfo(SI_TIME_CHAPTER_MM);
bSec = bSharedInfo(SI_TIME_CHAPTER_SS);
#endif
break;
case OSD_SHOW_TITLE_ELAPSED:
bHour = bSharedInfo(SI_TIME_HH);
bMin = bSharedInfo(SI_TIME_MM);
bSec = bSharedInfo(SI_TIME_SS);
break;
case OSD_SHOW_TITLE_REMAIN:
bHour = bSharedInfo(SI_TIME_RMN_HH);
bMin = bSharedInfo(SI_TIME_RMN_MM);
bSec = bSharedInfo(SI_TIME_RMN_SS);
break;
case OSD_SHOW_CHAPTER_ELAPSED:
bHour = bSharedInfo(SI_TIME_CHAPTER_HH);
bMin = bSharedInfo(SI_TIME_CHAPTER_MM);
bSec = bSharedInfo(SI_TIME_CHAPTER_SS);
break;
case OSD_SHOW_CHAPTER_REMAIN:
if (bDiscType == SV_DVD_AUDIO)
{
bHour = bSharedInfo(SI_TIME_TRACK_RMN_HH);
bMin = bSharedInfo(SI_TIME_TRACK_RMN_MM);
bSec = bSharedInfo(SI_TIME_TRACK_RMN_SS);
}
else
{
bHour = bSharedInfo(SI_TIME_CHAPTER_RMN_HH);
bMin = bSharedInfo(SI_TIME_CHAPTER_RMN_MM);
bSec = bSharedInfo(SI_TIME_CHAPTER_RMN_SS);
}
break;
default:
_rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
return;
}
if (!fgIsDiscPlay(bPbcState))
{
bHour = 0; bMin = 0; bSec = 0;
}
#ifndef DVD_SHOW_MENU_TIME
if ((bDom != SV_VTSTT_DOM) && (bDom != SV_ATSTT_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) && (bDom != SV_ATSTT_DOM))
{
vOsdShowTimeClear();
}
else
#endif
{
vOsdShowTimeRemain3(bHour, bMin, bSec, OSD_NO_DISAPPEAR);
}
#ifdef KARAOKE_SCORING_TEST
// Test for Karaoke Scoring
vWriteDspSharedBInfo(B_KSCORE_MAX,DSP_KSCORE_MAXSCORE);
vWriteDspSharedBInfo(B_KSCORE_MIN,DSP_KSCORE_MINSCORE);
bKSScore=bReadDspSharedBInfo(B_KSCORE_SCORE);
bTmpScore=bHEXToBCD(bKSScore);
bTestStr[0]=5;
bTestStr[1]='-';
bTestStr[2]='0';
bTestStr[3]=BCD_HI(bTmpScore)+'0';
bTestStr[4]=BCD_LO(bTmpScore)+'0';
bTestStr[5]='-';
_wStartX=270;
_wStartY=0;
vOsdShowStr(WB_NORMAL_HEAD2, bTestStr);
// Test for Karaoke Scoring
#endif
}
if (((bDom == SV_VTSTT_DOM) || (bDom == SV_ATSTT_DOM) )&& (bPbcState != SV_STOP)
#ifdef DVD_DGST_SHOW_MSG_ONLY
&& (bSharedInfo(SI_USR_PBC_CTRL) != SV_USR_DIGEST)
#endif
)
{
VfdShowPlayTime(bHour, bMin, bSec);
}
}
void vDVDShowTotalTimeMark(void) large
{
BYTE bHour, bMin, bSec;
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
BYTE bDom = bSharedInfo(SI_DVD_DOM);
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
switch(_rOsdStateCtx.bTimeType)
{
case OSD_SHOW_DISABLE:
vOsdShowTimeClear();
/* for VFD */
/* title/chapter elapsed */
bHour = 0;
bMin = 0;
bSec = 0;
break;
case OSD_SHOW_TITLE_ELAPSED:
bHour = 0;
bMin = 0;
bSec = 0;
break;
case OSD_SHOW_TITLE_REMAIN:
bHour = bSharedInfo(SI_TIME_TOTAL_HH);
bMin = bSharedInfo(SI_TIME_TOTAL_HH);
bSec = bSharedInfo(SI_TIME_TOTAL_HH);
break;
case OSD_SHOW_CHAPTER_ELAPSED:
bHour = 0;
bMin = 0;
bSec = 0;
break;
case OSD_SHOW_CHAPTER_REMAIN:
if (bDiscType == SV_DVD_AUDIO)
{
bHour = bSharedInfo(SI_TIME_TOTAL_TRACK_HH);
bMin = bSharedInfo(SI_TIME_TOTAL_TRACK_MM);
bSec = bSharedInfo(SI_TIME_TOTAL_TRACK_SS);
}
else
{
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;
}
#ifndef DVD_SHOW_MENU_TIME
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);
}
}
if (bDom == SV_VTSTT_DOM)
{
VfdShowPlayTime(bHour, bMin, bSec);
}
}
#endif /* #ifndef NEW_SHOW */
#ifdef SUPPORT_DVD_AUDIO
static code WORD pwDvdDispModeMsg[5][2] =
{
{ OSD_MSG_DISPLAY_OFF, OSD_MSG_DISPLAY_OFF },
{ OSD_MSG_TITLE_ELAPSED, OSD_MSG_GROUP_ELAPSED },
{ OSD_MSG_TITLE_REMAIN, OSD_MSG_GROUP_REMAIN },
{ OSD_MSG_CHAPTER_ELAPSED, OSD_MSG_TRACK_ELAPSED },
{ OSD_MSG_CHAPTER_REMAIN, OSD_MSG_TRACK_REMAIN }
};
#else
static code WORD pwDvdDispModeMsg[5] =
{
OSD_MSG_DISPLAY_OFF,
OSD_MSG_TITLE_ELAPSED,
OSD_MSG_TITLE_REMAIN,
OSD_MSG_CHAPTER_ELAPSED,
OSD_MSG_CHAPTER_REMAIN
};
#endif
void vDVDShowRemainMsg(BYTE fgShowOff) large
{
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
if (fgShowOff == FALSE)
{
if ((_rOsdStateCtx.fgRemainMsgShow == 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)
{
#ifdef SUPPORT_DVD_AUDIO
vOsdPosShow(OSD_POS_REMAIN_MSG, pwDvdDispModeMsg[_rOsdStateCtx.bTimeType][bDiscType%2], OSD_NO_DISAPPEAR);
#else
vOsdPosShow(OSD_POS_REMAIN_MSG, pwDvdDispModeMsg[_rOsdStateCtx.bTimeType], OSD_NO_DISAPPEAR);
#endif
}
else
{
#ifdef SUPPORT_DVD_AUDIO
vOsdPosShow(OSD_POS_REMAIN_MSG, pwDvdDispModeMsg[_rOsdStateCtx.bTimeType][bDiscType%2], OSD_TIMEOUT_SHORT);
#else
vOsdPosShow(OSD_POS_REMAIN_MSG, pwDvdDispModeMsg[_rOsdStateCtx.bTimeType], OSD_TIMEOUT_SHORT);
#endif
}
vDVDShowPlayInfo(0);
}
else
{
if (bSharedInfo(SI_DVD_DOM) == SV_VTSTT_DOM)
{
#ifdef SUPPORT_DVD_AUDIO
vOsdPosShow(OSD_POS_REMAIN_MSG, pwDvdDispModeMsg[_rOsdStateCtx.bTimeType][bDiscType%2], OSD_TIMEOUT);
#else
vOsdPosShow(OSD_POS_REMAIN_MSG, pwDvdDispModeMsg[_rOsdStateCtx.bTimeType], OSD_TIMEOUT);
#endif
}
else
{
vOsdPosClear(OSD_POS_REMAIN_MSG);
}
}
}
// *********************************************************************
// Check if current time mark display mode is valid
// *********************************************************************
BYTE bDvdCheckRemainShow(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))
{
#ifdef PLAYER_PROGRAM
if ((bUsrPbc == SV_PROGRAM) && (bSharedInfo(SI_USR_PROGRAM_TYPE) == SV_PROGRAM_TT_ITEM))
{
fgChange = FALSE;
}
else
#endif
{
if (fgCheckOnly == TRUE)
{
if (_rOsdStateCtx.bTimeType == OSD_SHOW_DISABLE)
{
bType = OSD_SHOW_CHAPTER_ELAPSED;
fgChange = TRUE;
}
else if ((bCurrType != OSD_SHOW_CHAPTER_ELAPSED) &&
(bCurrType != OSD_SHOW_CHAPTER_REMAIN))
{
bType = OSD_SHOW_DISABLE;
fgChange = TRUE;
}
}
else /* if (fgCheckOnly == FALSE) */
{
if (bCurrType == OSD_SHOW_TITLE_ELAPSED)
{
bType = OSD_SHOW_CHAPTER_ELAPSED;;
fgChange = TRUE;
}
else if (bCurrType == OSD_SHOW_TITLE_REMAIN)
{
bType = OSD_SHOW_CHAPTER_REMAIN;
fgChange = TRUE;
}
}
}
}
#endif
if ((fgChange == TRUE) && (fgCheckOnly == FALSE))
{
_rOsdStateCtx.bTimeType = bType;
vDVDShowRemainMsg(FALSE);
#ifndef NEW_SHOW
vDVDShowTimeMark(TRUE);
#else
vShowTimeMark(TRUE);
#endif
}
if (fgChange == FALSE)
{
if (bCurrType > OSD_SHOW_DVD_REMAIN_MAX)
{
bType = OSD_SHOW_DISABLE;
}
else
{
bType = bCurrType;
}
}
return (bType);
}
// *********************************************************************
// Show audio stream
// *********************************************************************
void vDVDShowAudio(BYTE bAstNo, BYTE bAstNs) large
{
BYTE bTmp;
// 20050324, IS00001522, clear audio before display subtitle
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -