📄 play_dvd.c
字号:
case UOP_CHANGE_SPSTN:
case UOP_NEXT_SPSTN:
case UOP_SP_SWITCH:
case UOP_NEXT_SPSTN_NOSP:
{
bTmp1 = bSharedInfo(SI_SPST_NO);
bTmp2 = bSharedInfo(SI_SPST_NS);
if ((bUopRet == SV_NO_ERROR) && (bTmp2 > 0) && ((bTmp1 & 0x1f) < bTmp2))
{
vDVDShowSubtitle(bTmp1, bTmp2);
}
else
{
#if (DVD_USER_STREAM_CHANGE == DVD_STREAM_CHANGE_DIRECT)
vOsdShowSubtitle(OSD_SUBTITLE_CLEAR, 0, 0, 0, 0, 0);
#else
if (fgIsInputStateValid(INPUT_STATE_SUBTITLE_CHANGE))
{
fgSetPlayPostKey(IR_TIME_OUT);
}
#endif
}
break;
} /* UOP_CHANGE_SPSTN */
#ifdef DVD_ANGLE_CHANGE_SELECT
case UOP_NEXT_AGL:
case UOP_CHANGE_AGL:
{
if (!fgIsInputStateValid(INPUT_STATE_VREMOTE))
{
if (bUopRet == SV_NO_ERROR)
{
if (fgIsInputStateValid(INPUT_STATE_ANGLE_CHANGE))
{
vOsdShowAngle(OSD_ANGLE_HILI, bSharedInfo(SI_AGL_NO), bSharedInfo(SI_AGL_NS));
}
else /* not in angle select mode */
{
if (fgIsAngleShow())
{
vOsdShowAngle(OSD_ANGLE_NORMAL, bSharedInfo(SI_AGL_NO), bSharedInfo(SI_AGL_NS));
}
else
{
vOsdShowAngle(OSD_ANGLE_CLEAR, 0, 0);
}
}
bRet = UOP_OK; /* no need to update angle mark again */
}
}
else //when angle mark is off ,enter step UI, press angle of UI, don't display angle icon[luoqing20060221]
{
if (bEepromReadByte(ANGLE_MARK_POSITION) == EV_ON)
vOsdShowAngle(OSD_ANGLE_HILI, bSharedInfo(SI_AGL_NO), bSharedInfo(SI_AGL_NS));
else
vOsdShowAngle(OSD_ANGLE_TIME_MASK, bSharedInfo(SI_AGL_NO), bSharedInfo(SI_AGL_NS));
}
break;
}
#endif /* DVD_ANGLE_CHANGE_SELECT */
case UOP_RESUME:
if (bUopRet == SV_NO_ERROR)
{
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_RESUME, OSD_TIMEOUT_SHORT);
}
break;
/* case UOP_DEFAULT: */
/* case UOP_TOP: */
/* case UOP_GOUP: */
/* case UOP_STILL_OFF: */
/* case UOP_MEMORY_PLAY: */
/* non-PBC control */
/* case UOP_PBC_SWITCH: */
case UOP_DIGEST:
if (fgIsInputStateValid(INPUT_STATE_DIGEST))
{
if (bUopRet == SV_NO_ERROR)
{
fgSetPlayPostKey(IR_DONE);
}
else /* error occur */
{
fgSetPlayPostKey(IR_TIME_OUT);
}
}
break;
/* case UOP_PROGRAM: */
/* case UOP_RANDOM: */
case UOP_SHUFFLE:
if (bUopRet == SV_NO_ERROR)
{
bTmp1 = bSharedInfo(SI_USR_AUX_CTRL);
bTmp2 = bSharedInfo(SI_REPEAT_MODE);
if (fgISUsrSeqPlay(bTmp1) && fgISUsrSeqPlay(bTmp2))
{
break;
}
if (bSharedInfo(SI_USR_PBC_CTRL) == SV_SHUFFLE)
{
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_SHUFFLE_ON, OSD_TIMEOUT_SHORT);
}
else
{
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_SHUFFLE_OFF, OSD_TIMEOUT_SHORT);
}
}
break;
/* case UOP_MEMORY: */
case UOP_BOOKMARK:
vBookmarkUpdate();
break;
/* item play */
/* case UOP_TIME_PLAY: */
case UOP_GROUP_PLAY:
case UOP_TITLE_PLAY:
if (_bInputState == INPUT_STATE_TITLE_SEARCH)
{
if (bUopRet != SV_NO_ERROR)
{
/* title search failed, escape */
fgSetPlayPostKey(IR_TIME_OUT);
break;
}
if (_rSearchStateCtx.bType == SEARCH_DVD_TIME_WAIT)
{
/* call the title search state to switch to time search */
fgSetPlayPostKey(IR_SELECT);
_rSearchStateCtx.bType = SEARCH_DVD_TIME_CHANGE;
vIrSetTimeOut(IR_TIMEOUT_SEARCH);
break;
}
else if (_rSearchStateCtx.bType == SEARCH_DVD_PTT_WAIT)
{
/* call the title search state to switch to PTT search */
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);
}
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
)
{
/*
Add the '!fgIsInGoto()' condition by Bright_liu 2005/12/01, for CQ(PL00205173),
In Goto menu, press IR_REPEAT maybe cause error.
*/
if(!fgIsInGoto())
{
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 (UO
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -