?? dvdshow.c
字號:
/**********************************************************************/
/*************** MTK CONFIDENTIAL & COPYRIGHTED ****************/
/*************** ****************/
/*************** $Modtime:: 07/04/17 1:27p $ ****************/
/*************** $Revision:: 4 $ ****************/
/*************** ****************/
/*************** Description : OSD ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : Peter Huang ****************/
/**********************************************************************/
#define _DVDSHOW_C_
#pragma NOAREGS
#include "general.h"
#include "osdshow.h"
enum
{
#ifdef DVD_CHAP_3_DIGITS
MSG_TT_CH_3,
MSG_TITLE_CHAPTER_3,
MSG_CHAPTER_TIME_SEARCH_PTT_3,
MSG_CHAPTER_TIME_SEARCH_TIME_3,
MSG_TITLE_CHAPTER_SEARCH_PTT_3,
#endif
MSG_TT_CH,
MSG_TITLE_CHAPTER,
MSG_TITLE_TIME_SEARCH_TTL,
MSG_TITLE_TIME_SEARCH_TIME,
MSG_CHAPTER_TIME_SEARCH_PTT,
MSG_CHAPTER_TIME_SEARCH_TIME,
MSG_TITLE_CHAPTER_SEARCH_TTL,
MSG_TITLE_CHAPTER_SEARCH_PTT,
MSG_MAX
};
code WORD _pwDvdOsdMsg[MSG_MAX][2] = {
#ifdef DVD_CHAP_3_DIGITS
{ OSD_MSG_TT_CH_3, OSD_MSG_GR_TR_3 },
{ OSD_MSG_TITLE_CHAPTER_3, OSD_MSG_GROUP_TRACK_3 },
{ OSD_MSG_CHAPTER_TIME_SEARCH_PTT_3, OSD_MSG_TRACK_TIME_SEARCH_PTT_3 },
{ OSD_MSG_CHAPTER_TIME_SEARCH_TIME_3, OSD_MSG_TRACK_TIME_SEARCH_TIME_3 },
{ OSD_MSG_TITLE_CHAPTER_SEARCH_PTT_3, OSD_MSG_GROUP_TRACK_SEARCH_PTT_3},
#endif
{ OSD_MSG_TT_CH, OSD_MSG_GR_TR },
{ OSD_MSG_TITLE_CHAPTER, OSD_MSG_GROUP_TRACK },
{ OSD_MSG_TITLE_TIME_SEARCH_TTL, OSD_MSG_GROUP_TIME_SEARCH_TTL },
{ OSD_MSG_TITLE_TIME_SEARCH_TIME, OSD_MSG_GROUP_TIME_SEARCH_TIME },
{ OSD_MSG_CHAPTER_TIME_SEARCH_PTT, OSD_MSG_TRACK_TIME_SEARCH_PTT },
{ OSD_MSG_CHAPTER_TIME_SEARCH_TIME, OSD_MSG_TRACK_TIME_SEARCH_TIME },
{ OSD_MSG_TITLE_CHAPTER_SEARCH_TTL, OSD_MSG_GROUP_TRACK_SEARCH_TTL },
{ OSD_MSG_TITLE_CHAPTER_SEARCH_PTT, OSD_MSG_GROUP_TRACK_SEARCH_PTT}
};
// *********************************************************************
// Function : void vOsdShowAngle(BYTE bMode, BYTE bCurr, BYTE bTotal, BYTE bTime)
// Description :
// Parameter : bState
// Return : None
// *********************************************************************
void vOsdShowAngle(BYTE bMode, BYTE bCurr, BYTE bTotal) large
{
BYTE pbAngle[3];
if (bMode == OSD_ANGLE_CLEAR)
{
vOsdClearInputField(OSD_POS_ANGLE);
vOsdPosClear(OSD_POS_ANGLE);
return;
}
pbAngle[0] = 2;
/* error check */
if ((bCurr == 0) || (bTotal <= 1) || (bTotal > 9))
{
vOsdPosClear(OSD_POS_ANGLE);
return;
}
if (bCurr > bTotal)
{
bCurr = bTotal;
}
pbAngle[1] = bCurr + '0';
pbAngle[2] = bTotal + '0';
if (bMode & OSD_ANGLE_HILI)
{
vOsdSetInputField(OSD_POS_ANGLE);
}
else
{
vOsdClearInputField(OSD_POS_ANGLE);
}
if ((bMode & OSD_ANGLE_TIME_MASK) == 0)
{
vOsdPosShowArg(OSD_POS_ANGLE, OSD_MSG_ANGLE, OSD_NO_DISAPPEAR, pbAngle);
}
else
{
vOsdPosShowArg(OSD_POS_ANGLE, OSD_MSG_ANGLE, (bMode & OSD_ANGLE_TIME_MASK), pbAngle);
}
}
// *********************************************************************
// Function : void vOsdShowAudio(BYTE bMode, BYTE bCurr, BYTE bTotal, BYTE bCh, BYTE bType, BYTE bLcd0, BYTE bLcd1)
// Description :
// Parameter : bState
// Return : None
// *********************************************************************
void vOsdShowAudio(BYTE bMode, BYTE bCurr, BYTE bTotal, BYTE bCh, BYTE bType, BYTE bLcd0, BYTE bLcd1) large
{
WORD wMsgIdx;
BYTE pbStr[9];
BYTE bKeySeq, bTime ;
if (bMode == OSD_AUDIO_CLEAR)
{
vOsdClearInputField(OSD_POS_AUDIO);
vOsdPosClear(OSD_POS_AUDIO);
vOsdPosClear(OSD_POS_DIVX6_STRM_INFO);
return;
}
pbStr[0] = 8;
/* assume both bCurr and bTotal small than 10 */
if ((bCurr > 9) || (bTotal > 9))
{
return;
}
/* error check */
if (bCurr > bTotal)
{
bCurr = bTotal;
}
/* vOsdPosShow(OSD_POS_AUDIO, OSD_MSG_AUDIO, OSD_TIMEOUT); */
/* clear by input state */
pbStr[1] = bCurr + '0';
pbStr[2] = bTotal + '0';
wMsgIdx = wOsdGetAudAtrMsg(bType);
pbStr[3] = bLoByte(wMsgIdx);
pbStr[4] = bHiByte(wMsgIdx);
wMsgIdx = wOsdGetAudChMsg(bCh);
pbStr[5] = bLoByte(wMsgIdx);
pbStr[6] = bHiByte(wMsgIdx);
wMsgIdx = wOsdGetLcdMsg(bLcd0, bLcd1);
pbStr[7] = bLoByte(wMsgIdx);
pbStr[8] = bHiByte(wMsgIdx);
if (bMode & OSD_AUDIO_HILI)
{
vOsdSetInputField(OSD_POS_AUDIO);
}
if ((bMode & OSD_AUDIO_TIME_MASK) == 0)
{
/*
if (bSharedInfo(SI_DVD_DOM) == SV_ATSTT_DOM)
{
pbStr[2] = 6;
vOsdPosShowArg(OSD_POS_AUDIO, OSD_MSG_DA_AUDIO_SELECT, OSD_NO_DISAPPEAR, pbStr+2);
}
else
*/
{
vOsdPosShowArg(OSD_POS_AUDIO, OSD_MSG_AUDIO_SELECT, OSD_NO_DISAPPEAR, pbStr);
bTime = OSD_NO_DISAPPEAR ;
}
}
else
{
/*
if (bSharedInfo(SI_DVD_DOM) == SV_ATSTT_DOM)
{
pbStr[2] = 6;
vOsdPosShowArg(OSD_POS_AUDIO, OSD_MSG_DA_AUDIO_SELECT, (bMode & OSD_AUDIO_TIME_MASK), pbStr+2);
}
else
*/
{
vOsdPosShowArg(OSD_POS_AUDIO, OSD_MSG_AUDIO_SELECT, (bMode & OSD_AUDIO_TIME_MASK), pbStr);
bTime = bMode & OSD_AUDIO_TIME_MASK ;
}
}
bKeySeq = bSharedInfo(SI_A_LCD_TYPE) ;
if (fgIsIsoPlay() && fgFlCheckStatus(FL_STATUS_IN_MPEG) && (bKeySeq != 0 && bKeySeq != 0xFF))
{
wMsgIdx = OSD_MSG_DIVX6_STREAM_NAME_AUD_01 + bKeySeq - 1 ;
}
else
wMsgIdx = OSD_MSG_NULL ;
vOsdPosShow(OSD_POS_DIVX6_STRM_INFO, wMsgIdx, bTime) ;
}
// *********************************************************************
// Function : void vOsdShowSubtitle(BYTE bMode, BYTE bCurr, BYTE bTotal, BYTE bLcd0, BYTE bLcd1, BYTE bTime)
// Description :
// Parameter : bState
// Return : None
// *********************************************************************
void vOsdShowSubtitle(BYTE bMode, BYTE bCurr, BYTE bTotal, BYTE bLcd0, BYTE bLcd1, BYTE bTime) large
{
WORD wMsgIdx;
BYTE pbStr[7];
BYTE i, bKeySeq;
if (bMode == OSD_SUBTITLE_CLEAR)
{
vOsdClearInputField(OSD_POS_SUBTITLE);
vOsdPosClear(OSD_POS_SUBTITLE);
vOsdPosClear(OSD_POS_DIVX6_STRM_INFO);
return;
}
bKeySeq = bMode & OSD_SUBTITLE_SEQ_MASK;
bMode = bMode & (~OSD_SUBTITLE_SEQ_MASK);
pbStr[0] = 6;
/* assume both bCurr and bTotal small than 10 */
if ((bCurr > 32) || (bTotal > 32))
{
return;
}
/* error check */
if (bCurr > bTotal)
{
bCurr = bTotal;
}
bCurr = bHEXToBCD(bCurr);
bTotal = bHEXToBCD(bTotal);
#ifdef NO_ADD10_KEY
if (bMode == OSD_SUBTITLE_HILI)
{
if (bKeySeq == 1)
{
pbStr[1] = BCD_LO(bCurr) + '0';
pbStr[2] = ' ';
}
else
{
pbStr[1] = BCD_HI(bCurr) + '0';
pbStr[2] = BCD_LO(bCurr) + '0';
}
}
else /* if (bMode == OSD_SUBTITLE_NORMAL) */
{
pbStr[1] = BCD_HI(bCurr) + '0';
pbStr[2] = BCD_LO(bCurr) + '0';
}
#else /* use ADD10 key */
pbStr[1] = BCD_HI(bCurr) + '0';
pbStr[2] = BCD_LO(bCurr) + '0';
#endif
pbStr[3] = BCD_HI(bTotal) + '0';
pbStr[4] = BCD_LO(bTotal) + '0';
wMsgIdx = wOsdGetLcdMsg(bLcd0, bLcd1);
pbStr[5] = bLoByte(wMsgIdx);
pbStr[6] = bHiByte(wMsgIdx);
if (bMode & OSD_SUBTITLE_HILI)
{
vOsdSetInputField(OSD_POS_SUBTITLE);
}
bKeySeq = bSharedInfo(SI_SP_LCD_TYPE) ;
if (fgIsIsoPlay() && fgFlCheckStatus(FL_STATUS_IN_MPEG) && (bKeySeq != 0 && bKeySeq != 0xFF))
{
wMsgIdx = OSD_MSG_DIVX6_STREAM_NAME_SP_01 + bKeySeq - 1 ;
}
else
wMsgIdx = OSD_MSG_NULL ;
vOsdPosShowArg(OSD_POS_SUBTITLE, OSD_MSG_SUBTITLE_SELECT, bTime, pbStr);
vOsdPosShow(OSD_POS_DIVX6_STRM_INFO, wMsgIdx, bTime) ;
}
// *********************************************************************
// Function : void vOsdShowTitleChapter(BYTE bCurTit, BYTE bTotTit,
// BYTE bCurCha, BYTE bTotCha,
// BYTE bTime)
// Description :
// Parameter : bState
// Return : None
// *********************************************************************
#ifdef DVD_CHAP_3_DIGITS
void vOsdShowTitleChapter(BYTE bCurTit, BYTE bTotTit, BYTE bCurCha,
BYTE bTotCha, BYTE bTime) large
{
BYTE pbStr[11];
WORD wTotCha, wCurCha;
BYTE bCha;
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
pbStr[0] = 8;
wCurCha = bCurCha;
wTotCha = bTotCha;
/* error check */
if (bCurTit > bTotTit)
{
bCurTit = bTotTit;
}
if (wCurCha > wTotCha)
{
wCurCha = wTotCha;
}
if (wTotCha > 99)
{
pbStr[0] = 10;
}
bCurTit = bHEXToBCD(bCurTit);
bTotTit = bHEXToBCD(bTotTit);
wCurCha = wWRDToBCD(wCurCha);
wTotCha = wWRDToBCD(wTotCha);
pbStr[1] = BCD_HI(bCurTit) + '0';
pbStr[2] = BCD_LO(bCurTit) + '0';
pbStr[3] = BCD_HI(bTotTit) + '0';
pbStr[4] = BCD_LO(bTotTit) + '0';
if (pbStr[0] == 10)
{
pbStr[5] = BCD_LO(bHiByte(wCurCha)) + '0';
pbStr[6] = BCD_HI(bLoByte(wCurCha)) + '0';
pbStr[7] = BCD_LO(bLoByte(wCurCha)) + '0';
pbStr[8] = BCD_LO(bHiByte(wTotCha)) + '0';
pbStr[9] = BCD_HI(bLoByte(wTotCha)) + '0';
pbStr[10] = BCD_LO(bLoByte(wTotCha)) + '0';
}
else
{
pbStr[5] = BCD_HI(bLoByte(wCurCha)) + '0';
pbStr[6] = BCD_LO(bLoByte(wCurCha)) + '0';
pbStr[7] = BCD_HI(bLoByte(wTotCha)) + '0';
pbStr[8] = BCD_LO(bLoByte(wTotCha)) + '0';
}
#ifdef TIME_INFO_SAME_LINE
if (pbStr[0] == 10)
{
vOsdPosShowArg(OSD_POS_PLAY_INFO, _pwDvdOsdMsg[MSG_TT_CH_3][bDiscType%2], bTime, pbStr);
}
else
{
vOsdPosShowArg(OSD_POS_PLAY_INFO, _pwDvdOsdMsg[MSG_TT_CH][bDiscType%2], bTime, pbStr);
}
#else
if (pbStr[0] == 10)
{
vOsdPosShowArg(OSD_POS_PLAY_INFO, _pwDvdOsdMsg[MSG_TITLE_CHAPTER_3][bDiscType%2], bTime, pbStr);
}
else
{
vOsdPosShowArg(OSD_POS_PLAY_INFO, _pwDvdOsdMsg[MSG_TITLE_CHAPTER][bDiscType%2], bTime, pbStr);
}
#endif
}
#else
void vOsdShowTitleChapter(BYTE bCurTit, BYTE bTotTit, BYTE bCurCha,
BYTE bTotCha, BYTE bTime) large
{
BYTE pbStr[9];
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
pbStr[0] = 8;
/* error check */
if (bCurTit > bTotTit)
{
bCurTit = bTotTit;
}
if (bCurCha > bTotCha)
{
bCurCha = bTotCha;
}
// only support 2 digits for chapter
while (bCurCha > 99) bCurCha -= 100;
while (bTotCha > 99) bTotCha -= 100;
bCurTit = bHEXToBCD(bCurTit);
bTotTit = bHEXToBCD(bTotTit);
bCurCha = bHEXToBCD(bCurCha);
bTotCha = bHEXToBCD(bTotCha);
pbStr[1] = BCD_HI(bCurTit) + '0';
pbStr[2] = BCD_LO(bCurTit) + '0';
pbStr[3] = BCD_HI(bTotTit) + '0';
pbStr[4] = BCD_LO(bTotTit) + '0';
pbStr[5] = BCD_HI(bCurCha) + '0';
pbStr[6] = BCD_LO(bCurCha) + '0';
pbStr[7] = BCD_HI(bTotCha) + '0';
pbStr[8] = BCD_LO(bTotCha) + '0';
#ifdef TIME_INFO_SAME_LINE
vOsdPosShowArg(OSD_POS_PLAY_INFO, _pwDvdOsdMsg[MSG_TT_CH][bDiscType%2], bTime, pbStr);
#else
vOsdPosShowArg(OSD_POS_PLAY_INFO, _pwDvdOsdMsg[MSG_TITLE_CHAPTER][bDiscType%2], bTime, pbStr);
#endif
}
#endif
// *********************************************************************
// Function : void vOsdShowTitleTimeSearch(BYTE bCurTit, BYTE bTotTit, BYTE bNum, BYTE *pbTime) large
// Description :
// Parameter : bState
// Return : None
// Note : Can not disappear automatic !!
// *********************************************************************
void vOsdShowTitleTimeSearch(BYTE bCurTit, BYTE bTotTit, BYTE bNum, BYTE *pbTime) large
{
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
BYTE i;
BYTE pbStr[10];
vOsdPosRefreshDynaWb(OSD_POS_DVD_SEARCH);
pbStr[0] = 9;
for(i=0; i<pbStr[0]; i++)
{
pbStr[i] = ' ';
}
if (bNum == OSD_SEARCH_CLEAR)
{
vOsdClearInputField(OSD_POS_DVD_SEARCH);
vOsdPosClear(OSD_POS_DVD_SEARCH);
}
else if (bNum & OSD_DVD_TTL_SEARCH) /* for title search */
{
/* error check */
if (bCurTit > bTotTit)
{
bCurTit = bTotTit;
}
bCurTit = bHEXToBCD(bCurTit);
bTotTit = bHEXToBCD(bTotTit);
if (bNum == (OSD_DVD_TTL_SEARCH | 0))
{
vOsdSetInputField(OSD_POS_DVD_SEARCH);
}
else if (bNum == (OSD_DVD_TTL_SEARCH | 1))
{
#ifdef NO_ADD10_KEY
pbStr[1] = BCD_LO(bCurTit) + '0';
#else /* for +10 key */
if (bCurTit > 0)
{
pbStr[1] = BCD_HI(bCurTit) + '0';
if (BCD_LO(bCurTit) == 0)
{
#ifdef ADD10_SHOW_10
pbStr[2] = '0';
#else
pbStr[2] = '-';
#endif
}
else
{
pbStr[2] = BCD_LO(bCurTit) + '0';
}
}
#endif
/* for +10 key */
}
else if ((bNum == (OSD_DVD_TTL_SEARCH | 2)) ||
(bNum == (OSD_DVD_TTL_SEARCH | OSD_DVD_SEARCH_END)))
{
pbStr[1] = BCD_HI(bCurTit) + '0';
pbStr[2] = BCD_LO(bCurTit) + '0';
}
pbStr[3] = BCD_HI(bTotTit) + '0';
pbStr[4] = BCD_LO(bTotTit) + '0';
if (pbTime == 0)
{
for(i=0; i<5; i++)
{
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -