📄 play_dvd.c
字号:
else
{
vSendUopCmd(UOP_PTT_PLAY, _rNumInStateCtx.wNum, SV_PTT_PLAY_NORMAL, 0);
}
}
}
else /* input cancelled */
{
if (_rSearchStateCtx.bType == SEARCH_DVD_CH)
{
vOsdShowChapterTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
}
else
{
vOsdShowChapterSearch(0, 0, OSD_SEARCH_CLEAR, 0, 0, 0);
}
vSetExitInputState();
_rSearchStateCtx.bType = SEARCH_NONE;
vOsdShowError(SV_ERR_INPUT_INVALID, OSD_TIMEOUT_SHORT);
}
}
else /* not complete yet! */
{
/* update OSD only */
if (_rSearchStateCtx.bType == SEARCH_DVD_CH)
{
vOsdShowChapterTimeSearch(_rNumInStateCtx.wNum, bChNs, (OSD_DVD_CH_SEARCH | 1), 0);
}
else
{
if (bDiscType == SV_DVD_AUDIO)
{
vOsdShowChapterSearch(bSharedInfo(SI_GRP_NO), bSharedInfo(SI_GRP_NS), 1,
_rNumInStateCtx.wNum, bChNs, OSD_NO_DISAPPEAR);
}
else
{
vOsdShowChapterSearch(bSharedInfo(SI_TT_NO), bSharedInfo(SI_TT_NS), 1,
_rNumInStateCtx.wNum, bChNs, OSD_NO_DISAPPEAR);
}
}
vIrSetTimeOut(IR_TIMEOUT_SEARCH);
}
}
else /* the key is not grabed, assume exit input state */
{
vSetExitInputState();
if (_rSearchStateCtx.bType == SEARCH_DVD_CH)
{
vOsdShowChapterTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
}
else
{
vOsdShowChapterSearch(0, 0, OSD_SEARCH_CLEAR, 0, 0, 0);
}
if ((_bIRKey == IR_LEFT) || (_bIRKey == IR_RIGHT))
{
if (_rSearchStateCtx.bType == SEARCH_DVD_CH)
{
_rSearchStateCtx.bType = SEARCH_DVD_TIME;
}
else
{
_rSearchStateCtx.bType = SEARCH_DVD_PTT_TTL;
}
_bIRKey = IR_SELECT;
}
else if (_bIRKey == IR_SELECT)
{
/* note we pass IR_SELECT to main state change search mode */
if (_rSearchStateCtx.bType == SEARCH_DVD_CH)
{
_rSearchStateCtx.bType = SEARCH_DVD_PTT_TTL;
}
else if (_rSearchStateCtx.bType == SEARCH_DVD_TIME_CH_CHANGE)
{
if (fgIsTimeSearchAllow() == TRUE)
{
/* change to chapter time search in main state */
_rSearchStateCtx.bType = SEARCH_DVD_TIME;
}
else
{
vOsdShowChapterTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
#ifdef SEARCH_INPUT_SHOW
if (bDiscType == SV_DVD_AUDIO)
{
vOsdShowChapterTimeSearch(bSharedInfo(SI_TRACK_NO), bSharedInfo(SI_TRACK_NS),
(OSD_DVD_CH_SEARCH | OSD_DVD_SEARCH_END), 0);
}
else
{
vOsdShowChapterTimeSearch(bSharedInfo(SI_CHAP_NO), bSharedInfo(SI_CHAP_NS),
(OSD_DVD_CH_SEARCH | OSD_DVD_SEARCH_END), 0);
}
#endif
_rSearchStateCtx.bType = SEARCH_NONE;
return (TRUE);
}
}
}
else
{
if (_bIRKey == IR_TIME_OUT)
{
fgRetValue = TRUE;
}
_rSearchStateCtx.bType = SEARCH_NONE;
}
}
return (fgRetValue);
}
void vDVDTimeSearchInit(BYTE fgInit) large
{
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
vNumInInitState(NUM_IN_DVD_TIME, 5);
if (_rSearchStateCtx.bType == SEARCH_DVD_TIME)
{
_rSearchStateCtx.bType = SEARCH_DVD_TIME_CH;
if (bDiscType == SV_DVD_AUDIO)
{
vOsdShowChapterTimeSearch(bSharedInfo(SI_TRACK_NO), bSharedInfo(SI_TRACK_NS), 0, 0);
}
else
{
vOsdShowChapterTimeSearch(bSharedInfo(SI_CHAP_NO), bSharedInfo(SI_CHAP_NS), 0, 0);
}
}
else
{
_rSearchStateCtx.bType = SEARCH_DVD_TIME;
if (bDiscType == SV_DVD_AUDIO)
{
vOsdShowTitleTimeSearch(bSharedInfo(SI_GRP_NO), bSharedInfo(SI_GRP_NS), 0, 0);
}
else
{
vOsdShowTitleTimeSearch(bSharedInfo(SI_TT_NO), bSharedInfo(SI_TT_NS), 0, 0);
}
}
vIrSetTimeOut(IR_TIMEOUT_SEARCH);
}
BOOL fgDVDTimeSearchState(void) large
{
BOOL fgRetValue;
sTimeChkInfo rTimeChk;
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
if ((_bIRKey <= IR_ADD10) || (_bIRKey == IR_CLEAR) || (_bIRKey == IR_ADD5)) // megaa ADD5
{
/* we accept +10 key but do no action */
fgRetValue = fgNumInState();
if (_rNumInStateCtx.rState.fgComplete)
{
vSetExitInputState();
rTimeChk.bHH = _rNumInStateCtx.bDig[0];
rTimeChk.bMM = _rNumInStateCtx.bDig[1] * 10 + _rNumInStateCtx.bDig[2];
rTimeChk.bSS = _rNumInStateCtx.bDig[3] * 10 + _rNumInStateCtx.bDig[4];
if (_rSearchStateCtx.bType == SEARCH_DVD_TIME)
{
//vOsdShowTitleTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0); /* clear OSD and input field */ // disabled by megaa
rTimeChk.bType = E_TITLE_TIME;
if ((_rNumInStateCtx.rState.fgCancel == FALSE) &&
(fgCheckTimeValid(&rTimeChk) == TRUE))
{
#ifdef SEARCH_INPUT_SHOW
#ifdef SUPPORT_DVD_AUDIO
if (bDiscType == SV_DVD_AUDIO)
{
vOsdShowTitleTimeSearch(bSharedInfo(SI_GRP_NO), bSharedInfo(SI_GRP_NS),
OSD_DVD_SEARCH_END, _rNumInStateCtx.bDig);
}
else
#endif /* SUPPORT_DVD_AUDIO */
{
vOsdShowTitleTimeSearch(bSharedInfo(SI_TT_NO), bSharedInfo(SI_TT_NS),
OSD_DVD_SEARCH_END, _rNumInStateCtx.bDig);
}
#endif
vSendUopCmd(UOP_TIME_PLAY, rTimeChk.bHH, rTimeChk.bMM, rTimeChk.bSS);
}
else
{
vOsdShowTitleTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0); /* clear OSD and input field */ // added by megaa
vOsdShowError(SV_ERR_INPUT_INVALID, OSD_TIMEOUT_SHORT);
}
}
else /* chapter tiem search */
{
//vOsdShowChapterTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0); /* clear OSD and input field */ // disabled by megaa
rTimeChk.bType = E_CHAP_TIME;
if ((_rNumInStateCtx.rState.fgCancel == FALSE) &&
(fgCheckTimeValid(&rTimeChk) == TRUE))
{
#ifdef SEARCH_INPUT_SHOW
#ifdef SUPPORT_DVD_AUDIO
if (bDiscType == SV_DVD_AUDIO)
{
vOsdShowChapterTimeSearch(bSharedInfo(SI_TRACK_NO), bSharedInfo(SI_TRACK_NS),
OSD_DVD_SEARCH_END, _rNumInStateCtx.bDig);
}
else
#endif /* SUPPORT_DVD_AUDIO */
{
vOsdShowChapterTimeSearch(bSharedInfo(SI_CHAP_NO), bSharedInfo(SI_CHAP_NS),
OSD_DVD_SEARCH_END, _rNumInStateCtx.bDig);
}
#endif
vSendUopCmd(UOP_PTT_TIME_PLAY, rTimeChk.bHH, rTimeChk.bMM, rTimeChk.bSS);
}
else
{
vOsdShowChapterTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0); /* clear OSD and input field */ // added by megaa
vOsdShowError(SV_ERR_INPUT_INVALID, OSD_TIMEOUT_SHORT);
}
}
// remember clear search type
_rSearchStateCtx.bType = SEARCH_NONE;
}
else /* _rNumInStateCtx.rState.fgComplete */
{
if (_rSearchStateCtx.bType == SEARCH_DVD_TIME)
{
#ifdef SUPPORT_DVD_AUDIO
if (bDiscType == SV_DVD_AUDIO)
{
vOsdShowTitleTimeSearch(bSharedInfo(SI_GRP_NO), bSharedInfo(SI_GRP_NS),
_rNumInStateCtx.rState.bDigNum, _rNumInStateCtx.bDig);
}
else
#endif /* SUPPORT_DVD_AUDIO */
{
vOsdShowTitleTimeSearch(bSharedInfo(SI_TT_NO), bSharedInfo(SI_TT_NS),
_rNumInStateCtx.rState.bDigNum, _rNumInStateCtx.bDig);
}
}
else /* chapter tiem search */
{
#ifdef SUPPORT_DVD_AUDIO
if (bDiscType == SV_DVD_AUDIO)
{
vOsdShowChapterTimeSearch(bSharedInfo(SI_TRACK_NO), bSharedInfo(SI_TRACK_NS),
_rNumInStateCtx.rState.bDigNum, _rNumInStateCtx.bDig);
}
else
#endif /* SUPPORT_DVD_AUDIO */
{
vOsdShowChapterTimeSearch(bSharedInfo(SI_CHAP_NO), bSharedInfo(SI_CHAP_NS),
_rNumInStateCtx.rState.bDigNum, _rNumInStateCtx.bDig);
}
}
vIrSetTimeOut(IR_TIMEOUT_SEARCH);
}
}
else /* > IR_ADD10 and not IR_CLEAR, IR_ADD5 */
{
if ((_bIRKey == IR_LEFT) || (_bIRKey == IR_RIGHT))
{
if (_rSearchStateCtx.bType == SEARCH_DVD_TIME)
{
/* switch to title search */
vOsdShowTitleTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
vSetExitInputState();
/* pass to main state change search mode */
_rSearchStateCtx.bType = SEARCH_DVD_TIME_TTL;
}
else
{
/* switch to chapter search */
vOsdShowChapterTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
vSetExitInputState();
/* pass to main state change search mode */
_rSearchStateCtx.bType = SEARCH_DVD_CH;
}
_bIRKey = IR_SELECT;
return (FALSE);
}
else /* other keys */
{
if (_rSearchStateCtx.bType == SEARCH_DVD_TIME)
{
vOsdShowTitleTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
}
else
{
vOsdShowChapterTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
}
vSetExitInputState();
if (_bIRKey == IR_SELECT)
{
/* pass to main state change search mode */
return (FALSE);
}
else
{
/* remember clear search state */
_rSearchStateCtx.bType = SEARCH_NONE;
}
} /* other keys */
} /* > IR_ADD10 and not IR_CLEAR, IR_ADD5 */
return(TRUE);
}
// *********************************************************************
// Title Search State Machine
// *********************************************************************
void vDVDTitleSearchInit(BYTE fgInit) large
{
BYTE bTmp;
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
/* BYTE bDom = bSharedInfo(SI_DVD_DOM); */
vEnableWB(WB_OVERLAY_MSG1);
if ((_rSearchStateCtx.bType == SEARCH_DVD_PTT_TTL) ||
(_rSearchStateCtx.bType == SEARCH_NONE))
{
_rSearchStateCtx.bType = SEARCH_DVD_PTT_TTL;
/*
if (bDom == SV_VTSTT_DOM)
{
vOsdShowChapterSearch(0, bSharedInfo(SI_TT_NS), (OSD_DVD_TTL_SEARCH | 0),
bSharedInfo(SI_CHAP_NO), bSharedInfo(SI_CHAP_NS), OSD_NO_DISAPPEAR);
}
else
*/
{
if (bDiscType == SV_DVD_AUDIO)
{
vOsdShowChapterSearch(0, bSharedInfo(SI_GRP_NS), (OSD_DVD_TTL_SEARCH | 0),
0, 0, OSD_NO_DISAPPEAR);
}
else
{
vOsdShowChapterSearch(0, bSharedInfo(SI_TT_NS), (OSD_DVD_TTL_SEARCH | 0),
0, 0, OSD_NO_DISAPPEAR);
}
}
}
else if (_rSearchStateCtx.bType == SEARCH_DVD_TIME_TTL)
{
_rSearchStateCtx.bType = SEARCH_DVD_TIME_TTL;
/*
if (bDom == SV_VTSTT_DOM)
{
bTmp = bSharedInfo(SI_TIME_TOTAL_HH);
_rNumInStateCtx.bDig[0] = (bTmp & 0x0f);
bTmp = bSharedInfo(SI_TIME_TOTAL_MM);
_rNumInStateCtx.bDig[1] = (bTmp & 0xf0) >> 4;
_rNumInStateCtx.bDig[2] = (bTmp & 0x0f);
bTmp = bSharedInfo(SI_TIME_TOTAL_SS);
_rNumInStateCtx.bDig[3] = (bTmp & 0xf0) >> 4;
_rNumInStateCtx.bDig[4] = (bTmp & 0x0f);
vOsdShowTitleTimeSearch(0, bSharedInfo(SI_TT_NS), (OSD_DVD_TTL_SEARCH | 0),
_rNumInStateCtx.bDig);
}
else
*/
{
if (bDiscType == SV_DVD_AUDIO)
{
vOsdShowTitleTimeSearch(0, bSharedInfo(SI_GRP_NS), (OSD_DVD_TTL_SEARCH | 0), 0);
}
else
{
vOsdShowTitleTimeSearch(0, bSharedInfo(SI_TT_NS), (OSD_DVD_TTL_SEARCH | 0), 0);
}
}
}
#ifdef NO_ADD10_KEY
vNumInInitState(NUM_IN_SEQ_WAIT, 2);
#else
vNumInInitState(NUM_IN_TYPE_1, 1);
#endif
vIrSetTimeOut(IR_TIMEOUT_SEARCH);
}
BOOL fgDVDTitleSearchState(void) large
{
BOOL fgRetValue;
BYTE bTmp;
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
if ((_rSearchStateCtx.bType == SEARCH_DVD_TIME_WAIT) ||
(_rSearchStateCtx.bType == SEARCH_DVD_PTT_WAIT))
{
if (_bIRKey != IR_TIME_OUT)
{
return (TRUE);
}
}
bTmp = bSharedInfo(SI_TT_NS);
if (_bIRKey <= IR_ADD10 || _bIRKey == IR_ADD5) // megaa ADD5
{
fgRetValue = fgNumInState();
if (_rNumInStateCtx.rState.fgComplete)
{
if ((_rNumInStateCtx.rState.fgCancel == FALSE) &&
(_rNumInStateCtx.wNum <= bTmp))
{
if (_rSearchStateCtx.bType == SEARCH_DVD_PTT_TTL)
{
#ifdef SUPPORT_DVD_AUDIO
if ((bDiscType == SV_DVD_AUDIO) && (_rNumInStateCtx.wNum == bSharedInfo(SI_GRP_NS)) &&
(bSharedInfo(SI_HIDE_HGR) == SV_ON) &&
(bSharedInfo(SI_HIDDEN_PASSWD0) != 0) && (bSharedInfo(SI_HIDDEN_PASSWD1) != 0))
{
fgSetPlayPostKey(IR_HDN_PASSWORD);
return (TRUE);
}
else
#endif /* SUPPORT_DVD_AUDIO */
{
vOsdShowChapterSearch(_rNumInStateCtx.wNum, bTmp,
(OSD_DVD_TTL_SEARCH | OSD_DVD_SEARCH_END), 0, 0, OSD_NO_DISAPPEAR);
_rSearchStateCtx.bType = SEARCH_DVD_PTT_WAIT;
}
}
else if (_rSearchStateCtx.bType == SEARCH_DVD_TIME_TTL)
{
vOsdShowTitleTimeSearch(_rNumInStateCtx.wNum, bTmp,
(OSD_DVD_TTL_SEARCH | OSD_DVD_SEARCH_END), 0);
_rSearchStateCtx.bType = SEARCH_DVD_TIME_WAIT;
}
if (bDiscType == SV_DVD_AUDIO)
{
vSendUopCmd(UOP_GROUP_PLAY, _rNumInStateCtx.wNum, 0, 0);
}
else
{
vSendUopCmd(UOP_TITLE_PLAY, _rNumInStateCtx.wNum, TITLE_PLAY_IGNORE_UOP_BLOCK, 0);
}
/* the selected title/chapter will be shown by UOP return */
vIrSetTimeOut(IR_TIMEOUT_SEARCH);
}
else
{
if (_rSearchStateCtx.bType == SEARCH_DVD_PTT_TTL)
{
vOsdShowChapterSearch(0, 0, OSD_SEARCH_CLEAR, 0, 0, 0);
}
else if (_rSearchStateCtx.bType == SEARCH_DVD_TIME_TTL)
{
vOsdShowTitleTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
}
vSetExitInputState();
_rSearchStateCtx.bType = SEARCH_NONE;
vOsdShowError(SV_ERR_INPUT_INVALID, OSD_TIMEOUT_SHORT);
}
}
else /* _rNumInStateCtx.rState.fgComplete */
{
/* check range */
if (_rNumInStateCtx.wNum > bTmp)
{
_rNumInStateCtx.wNum = bTmp;
}
/* update OSD only */
if (_rSearchStateCtx.bType == SEARCH_DVD_PTT_TTL)
{
vOsdShowChapterSearch(_rNumInStateCtx.wNum, bTmp,
(OSD_DVD_TTL_SEARCH | 1), 0, 0, OSD_NO_DISAPPEAR);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -