📄 play_dvd.c
字号:
fgSetPlayPostKey(IR_SELECT);
_rSearchStateCtx.bType = SEARCH_DVD_PTT_CHANGE;
vIrSetTimeOut(IR_TIMEOUT_SEARCH);
break;
}
}
/* don't break here */
case UOP_TRACK_PLAY:
case UOP_PTT_PLAY:
if ((_bInputState == INPUT_STATE_PTT_SEARCH) &&
(_rSearchStateCtx.bType == SEARCH_DVD_TIME_CH_WAIT))
{
if (bUopRet != SV_NO_ERROR)
{
/* title search failed, escape */
fgSetPlayPostKey(IR_TIME_OUT);
break;
}
/* call the chapter search state to switch to time search */
fgSetPlayPostKey(IR_SELECT);
_rSearchStateCtx.bType = SEARCH_DVD_TIME_CH_CHANGE;
vIrSetTimeOut(IR_TIMEOUT_SEARCH);
break;
}
else
{
vOsdDisplayChange(DISP_PLAY_INFO, 0);
}
break;
/* case UOP_TRACK_PLAY: */
/* case UOP_MP3_PLAY: */
/* case UOP_JPEG_PLAY: */
#ifdef SUPPORT_DVD_AUDIO
case UOP_NEXT_DLIST:
if (bUopRet == SV_NO_ERROR)
{
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_DA_NEXT_PAGE, OSD_TIMEOUT_SHORT);
}
break;
case UOP_PREV_DLIST:
if (bUopRet == SV_NO_ERROR)
{
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_DA_PREVIOUS_PAGE, OSD_TIMEOUT_SHORT);
}
break;
#endif /* SUPPORT_DVD_AUDIO */
default:
break;
}
return (bRet);
}
#endif /*#ifndef NEW_PLAY */
BOOL fgDVDRemainKey(void) large
{
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
BYTE bType = bCurrRemainType();
if (!fgIsDiscPlay(bPbcState))
{
vOsdShowError(SV_ERR_PLAYBACK_ONLY, OSD_TIMEOUT_SHORT);
return (UOP_OK);
}
#ifdef DISPLAY_SHOW_INFO_FIRST
vChangeInputState(INPUT_STATE_DVD_DISPLAY, FALSE);
#else
bType++;
bType = bDvdCheckRemainShow(TRUE, bType); /* check only */
if (bType > OSD_SHOW_DVD_REMAIN_MAX)
{
bType = OSD_SHOW_DISABLE;
}
if (bType != bCurrRemainType())
{
vOsdDisplayChange(DISP_REMAIN_CHG, bType);
}
#endif
return (UOP_OK);
}
BOOL fgDVDSearchKey(BOOL fgGoto) large
{
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
BYTE bMode = bSharedInfo(SI_USR_PBC_CTRL);
BYTE bDom = bSharedInfo(SI_DVD_DOM);
#ifdef PLAYER_GOTO
BYTE bHliState = bSharedInfo(SI_HLI_STATE);
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
#endif
if (fgIsUsrCtrlMode(bMode))
{
vOsdShowError(SV_ERR_NORMAL_PLAY_ONLY, OSD_TIMEOUT_SHORT);
return (UOP_OK);
}
#ifdef PLAYER_GOTO
if (fgIsDiscPlay(bPbcState) &&
(_rSearchStateCtx.bType == SEARCH_NONE) &&
(bDiscType == SV_DVD_VIDEO) && fgGoto)
{
#ifdef GOTO_VTSTT_DOM_ONLY
if ((bDom == SV_VTSTT_DOM) && (bHliState == SV_OFF))
#endif /* GOTO_VTSTT_DOM_ONLY */
{
vChangeInputState(INPUT_STATE_GOTO, FALSE);
return (UOP_OK);
}
}
#else
//vGotoDummy();
#endif
if ((bDom == SV_VTSTT_DOM) || (bDom == SV_ATSTT_DOM))
{
if ((_rSearchStateCtx.bType == SEARCH_NONE) ||
(_rSearchStateCtx.bType == SEARCH_DVD_TIME_CH))
{
if (fgIsPTTSearchAllow())
{
vChangeInputState(INPUT_STATE_PTT_SEARCH, FALSE);
}
else if (fgIsTimeSearchAllow())
{
vChangeInputState(INPUT_STATE_DVD_TIME_SEARCH, FALSE);
}
else if (fgIsTTLSearchAllow())
{
vChangeInputState(INPUT_STATE_TITLE_SEARCH, FALSE);
}
else
{
vOsdShowError(SV_ERR_INVALID_OPERATION, OSD_TIMEOUT_SHORT);
_rSearchStateCtx.bType = SEARCH_NONE;
}
}
else if (_rSearchStateCtx.bType == SEARCH_DVD_TIME)
{
if (fgIsTimeSearchAllow())
{
/* switch to chapter time search */
vChangeInputState(INPUT_STATE_DVD_TIME_SEARCH, FALSE);
}
else if (fgIsPTTSearchAllow())
{
vChangeInputState(INPUT_STATE_PTT_SEARCH, FALSE);
}
else if (fgIsTTLSearchAllow())
{
vChangeInputState(INPUT_STATE_TITLE_SEARCH, FALSE);
}
else
{
vOsdShowError(SV_ERR_INVALID_OPERATION, OSD_TIMEOUT_SHORT);
_rSearchStateCtx.bType = SEARCH_NONE;
}
}
else if (_rSearchStateCtx.bType == SEARCH_DVD_PTT)
{
if (fgIsTimeSearchAllow())
{
/* switch to title time search */
vChangeInputState(INPUT_STATE_DVD_TIME_SEARCH, FALSE);
}
else if (fgIsPTTSearchAllow())
{
vChangeInputState(INPUT_STATE_PTT_SEARCH, FALSE);
}
/*
else if (fgIsTTLSearchAllow())
{
vChangeInputState(INPUT_STATE_TITLE_SEARCH, FALSE);
}
*/
else
{
vOsdShowError(SV_ERR_INVALID_OPERATION, OSD_TIMEOUT_SHORT);
_rSearchStateCtx.bType = SEARCH_NONE;
}
}
else if ((_rSearchStateCtx.bType == SEARCH_DVD_PTT_TTL) ||
(_rSearchStateCtx.bType == SEARCH_DVD_TIME_TTL))
{
if (fgIsTTLSearchAllow())
{
vChangeInputState(INPUT_STATE_TITLE_SEARCH, FALSE);
}
else
{
vOsdShowError(SV_ERR_INVALID_OPERATION, OSD_TIMEOUT_SHORT);
_rSearchStateCtx.bType = SEARCH_NONE;
}
}
else if (_rSearchStateCtx.bType == SEARCH_DVD_CH)
{
if (fgIsPTTSearchAllow())
{
vChangeInputState(INPUT_STATE_PTT_SEARCH, FALSE);
}
else
{
vOsdShowError(SV_ERR_INVALID_OPERATION, OSD_TIMEOUT_SHORT);
_rSearchStateCtx.bType = SEARCH_NONE;
}
}
else
{
_rSearchStateCtx.bType = SEARCH_NONE;
}
}
else /* non-VTS doamin, only allow title search */
{
if (fgIsTTLSearchAllow())
{
_rSearchStateCtx.bType = SEARCH_DVD_PTT_TTL;
vChangeInputState(INPUT_STATE_TITLE_SEARCH, FALSE);
}
else
{
vOsdShowError(SV_ERR_INVALID_OPERATION, OSD_TIMEOUT_SHORT);
_rSearchStateCtx.bType = SEARCH_NONE;
}
}
return (UOP_OK);
}
static BYTE bDVDGetRepeatType(BYTE bType)
{
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
BYTE bMode = bSharedInfo(SI_USR_PBC_CTRL);
switch (bType)
{
case SV_REPEAT_CHAPTER:
if (fgIsUsrCtrlMode(bMode))
{
#ifdef DVD_NO_REPEAT_ALL
return (SV_REPEAT_NONE);
#else
return (SV_REPEAT_ALL);
#endif
}
else /* normal play */
{
return (SV_REPEAT_TITLE);
}
case SV_REPEAT_TITLE:
#ifdef DVD_NO_REPEAT_ALL
return (SV_REPEAT_NONE);
#else
return (SV_REPEAT_ALL);
#endif
case SV_REPEAT_ALL:
return (SV_REPEAT_NONE);
case SV_REPEAT_NONE:
return (SV_REPEAT_CHAPTER);
default:
return (0xff);
}
}
BOOL fgDVDRepeatKey(void) large
{
BYTE bUsrCtrl = bSharedInfo(SI_USR_PBC_CTRL);
BYTE bRepeatType;
if (0
#ifdef PROGRAM_NO_REPEAT
|| (bUsrCtrl == SV_PROGRAM)
#endif
#ifdef RANDOM_SHUFFLE_NO_REPEAT
|| (bUsrCtrl == SV_RANDOM) || (bUsrCtrl == SV_SHUFFLE)
#endif
)
{
vOsdShowError(SV_ERR_NORMAL_PLAY_ONLY, OSD_TIMEOUT_SHORT);
return (UOP_OK);
}
bRepeatType = bDVDGetRepeatType(bSharedInfo(SI_REPEAT_MODE));
if (bRepeatType == 0xff)
{
bRepeatType = bDVDGetRepeatType(bSharedInfo(SI_USR_PBC_CTRL));
}
if (bRepeatType == 0xff)
{
bRepeatType = SV_REPEAT_CHAPTER;
}
vSendUopCmd(UOP_REPEAT, bRepeatType, 0, 0);
return (UOP_OK);
}
BOOL fgDVDFFKey(void) large
{
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
BYTE bPbcSpeed = bSharedInfo(SI_PBC_SPEED);
if (!fgIsDiscPlay(bPbcState))
{
vOsdShowError(SV_ERR_PLAYBACK_ONLY, OSD_TIMEOUT_SHORT);
return (UOP_OK);
}
#ifdef PAUSE_NO_TRICK
else if (bPbcState == SV_PAUSE)
{
vOsdShowError(SV_ERR_NORMAL_PLAY_ONLY, OSD_TIMEOUT_SHORT);
return (UOP_OK);
}
#endif
if(bPbcState == SV_FF)
{
if(bPbcSpeed < DVD_FAST_MAX - 1)
{
bPbcSpeed++;
}
else
{
#ifdef TRICK_MODE_USE_PLAY
vSendUopCmd(UOP_PLAY, 0, 0, 0);
return UOP_OK;
#else
bPbcSpeed = 0;
#endif
}
}
else
{
bPbcSpeed = SV_TWO;
}
vSendUopCmd(UOP_FORWARD, SV_FAST, bPbcSpeed, pbDVDFastSpeedTbl[bPbcSpeed]);
return UOP_OK;
}
BOOL fgDVDFRKey(void) large
{
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
BYTE bPbcSpeed = bSharedInfo(SI_PBC_SPEED);
if (!fgIsDiscPlay(bPbcState))
{
vOsdShowError(SV_ERR_PLAYBACK_ONLY, OSD_TIMEOUT_SHORT);
return (UOP_OK);
}
#ifdef PAUSE_NO_TRICK
else if (bPbcState == SV_PAUSE)
{
vOsdShowError(SV_ERR_NORMAL_PLAY_ONLY, OSD_TIMEOUT_SHORT);
return (UOP_OK);
}
#endif
if(bPbcState == SV_FR)
{
if(bPbcSpeed < DVD_FAST_MAX - 1)
{
bPbcSpeed++;
}
else
{
#ifdef TRICK_MODE_USE_PLAY
vSendUopCmd(UOP_PLAY, 0, 0, 0);
return UOP_OK;
#else
bPbcSpeed = 0;
#endif
}
}
else
{
bPbcSpeed = SV_TWO;
}
vSendUopCmd(UOP_REVERSE, SV_FAST, bPbcSpeed, pbDVDFastSpeedTbl[bPbcSpeed]);
return UOP_OK;
}
#ifndef DISABLE_SF
BOOL fgDVDSFKey(void) large
{
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
BYTE bPbcSpeed = bSharedInfo(SI_PBC_SPEED);
#ifdef SUPPORT_DVD_AUDIO
if (bSharedInfo(SI_DVD_DOM) == SV_ATSTT_DOM)
{
if (!fgIsDiscPlay(bPbcState))
{
vOsdShowError(SV_ERR_INVALID_OPERATION, OSD_TIMEOUT_SHORT);
return (UOP_OK);
}
fgSetPlayPostKey(IR_PREV_DLIST);
return(UOP_OK);
}
#endif /* SUPPORT_DVD_AUDIO */
if (!fgIsDiscPlay(bPbcState))
{
vOsdShowError(SV_ERR_PLAYBACK_ONLY, OSD_TIMEOUT_SHORT);
return (UOP_OK);
}
#ifdef PAUSE_NO_TRICK
else if (bPbcState == SV_PAUSE)
{
vOsdShowError(SV_ERR_NORMAL_PLAY_ONLY, OSD_TIMEOUT_SHORT);
return (UOP_OK);
}
#endif
#ifdef ZOOM_NO_SLOW_STEP
if (bSharedInfo(SI_ZOOM_SWITCH) != SV_ZOOM_1)
{
vOsdShowError(SV_ERR_NORMAL_PLAY_ONLY, OSD_TIMEOUT_SHORT);
return (UOP_OK);
}
#endif
if (bPbcState == SV_SF)
{
if(bPbcSpeed < DVD_SLOW_MAX - 1)
{
bPbcSpeed++;
}
else
{
#ifdef SF_SR_SAME_KEY
#ifdef PLAYER_VRMT
if (fgIsInputStateValid(INPUT_STATE_VREMOTE))
{
#ifdef TRICK_MODE_USE_PLAY
vSendUopCmd(UOP_PLAY, 0, 0, 0);
return (UOP_OK);
#else
bPbcSpeed = 0;
#endif
}
else
#endif /* PLAYER_VRMT */
{
fgSetPlayPostKey(IR_SR);
return(UOP_OK);
}
#else /* not SF_SR_SAME_KEY */
#ifdef TRICK_MODE_USE_PLAY
vSendUopCmd(UOP_PLAY, 0, 0, 0);
return (UOP_OK);
#else
bPbcSpeed = 0;
#endif
#endif /* not SF_SR_SAME_KEY */
}
}
#ifdef SF_SR_SAME_KEY
else if ((bPbcState == SV_SR)
#ifdef PLAYER_VRMT
&& (fgIsInputStateValid(INPUT_STATE_VREMOTE) == FALSE)
#endif
)
{
fgSetPlayPostKey(IR_SR);
return (UOP_OK);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -