📄 play_dvd.c
字号:
BOOL fgDVDDisplayChangeState(void) large
{
BYTE bType = bCurrRemainType();
if (_bIRKey != IR_DISPLAY)
{
vSetExitInputState();
if (_bIRKey == IR_TIME_OUT)
{
return (TRUE);
}
}
else /* if (_bIRKey == IR_DISPLAY) */
{
bType++;
if (bType > OSD_SHOW_DVD_REMAIN_MAX)
{
bType = OSD_SHOW_DISABLE;
}
vOsdDisplayChange(DISP_REMAIN_CHG_INIT, bType);
vIrSetTimeOut(IR_TIMEOUT_DISPLAY);
return (TRUE);
}
return (FALSE);
}
void vDVDDisplayChangeExit(void) large
{
vOsdDisplayChange(DISP_REMAIN_CHG_EXIT, 0);
}
// *********************************************************************
// Handle playback UOP return
// *********************************************************************
#ifndef NEW_PLAY
BYTE bDVDHandleUopRet(BYTE bUopId, BYTE bUopRet) large
{
BYTE bRet;
BYTE bTmp1, bTmp2;
if (bUopRet != SV_NO_ERROR)
{
bRet = UOP_FAIL; /* show error */
}
else
{
bRet = UOP_UPDATE;
}
switch (bUopId)
{
case UOP_DIGITAL_BTN:
case UOP_ARROW_BTN:
{
bRet = UOP_OK; /* no show error */
break;
}
/* normal playback */
case UOP_PLAY:
case UOP_RESUME_PLAY:
if (bUopRet == SV_NO_ERROR)
{
vOsdShowPlayStatus(OSD_SHOW_PLAY, OSD_TIMEOUT_SHORT);
if (bSharedInfo(SI_DVD_DOM) == SV_VTSTT_DOM)
{
VfdShowPlayInfo(VFD_INFO_TITLE_CHAPTER, bSharedInfo(SI_TT_NO), bSharedInfo(SI_TRACK_NO));
}
}
_fgDVDStopPlayWait = FALSE ;
break;
/* case UOP_PAUSE: */
/* case UOP_STOP: */
case UOP_NEXT:
#ifdef DVD_SHOW_MSG_FIRST
if (bUopRet != SV_NO_ERROR)
{
/* TODO: recall play status */
vOsdShowPlayStatus(OSD_SHOW_CLEAR, 0);
}
#else
if (bUopRet == SV_NO_ERROR)
{
vOsdShowPlayStatus(OSD_SHOW_NEXT_CH, OSD_TIMEOUT_SHORT);
}
#endif
break;
case UOP_TOP:
case UOP_PREVIOUS:
#ifdef DVD_SHOW_MSG_FIRST
if (bUopRet != SV_NO_ERROR)
{
/* TODO: recall play status */
vOsdShowPlayStatus(OSD_SHOW_CLEAR, 0);
}
#else
if (bUopRet == SV_NO_ERROR)
{
vOsdShowPlayStatus(OSD_SHOW_PREV_CH, OSD_TIMEOUT_SHORT);
}
#endif
#ifdef KARAOKE_SCORING
if (bUopRet == SV_NO_ERROR)
{
vAdspResetKScore();
}
#endif
break;
case UOP_REPEAT:
bTmp1 = bSharedInfo(SI_REPEAT_MODE);
bTmp2 = bSharedInfo(SI_USR_AUX_CTRL);
if ((bUopRet == SV_NO_ERROR) && (!fgISUsrSeqPlay(bTmp2)))
{
switch (bTmp1)
{
case SV_REPEAT_ALL:
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_REPEAT_ALL, OSD_TIMEOUT_SHORT);
#ifdef PLAYER_GOTO
// megaa Goto begin
if (fgIsInGoto())
{
vShowGotoRepeat(OSD_MSG_ICON_RPT_ALL);
}
// megaa Goto end
#endif
break;
case SV_REPEAT_TITLE:
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_REPEAT_TITLE, OSD_TIMEOUT_SHORT);
#ifdef PLAYER_GOTO
// megaa Goto begin
if (fgIsInGoto())
{
vShowGotoRepeat(OSD_MSG_ICON_RPT_TT);
}
// megaa Goto end
#endif
break;
case SV_REPEAT_CHAPTER:
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_REPEAT_CHAPTER, OSD_TIMEOUT_SHORT);
#ifdef PLAYER_GOTO
// megaa Goto begin
if (fgIsInGoto())
{
vShowGotoRepeat(OSD_MSG_ICON_RPT_CH);
}
// megaa Goto end
#endif
break;
case SV_REPEAT_NONE:
case SV_REPEAT_ABNONE:
vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_REPEAT_OFF, OSD_TIMEOUT_SHORT);
#ifdef PLAYER_GOTO
// megaa Goto begin
if (fgIsInGoto())
{
vShowGotoRepeat(OSD_MSG_OFF);
}
// megaa Goto end
#endif
break;
default:
break;
} /* switch () */
}
break;
/* trick mode control */
#ifdef DVD_SHOW_MSG_FIRST
case UOP_FORWARD:
case UOP_REVERSE:
/* note only for FF/FR/SF/SR */
if (bUopRet == SV_NO_ERROR)
{
vOsdShowPlayStatus(OSD_SHOW_CLEAR, 0);
bRet = UOP_OK; /* no need to update again! */
}
break;
#endif /* DVD_SHOW_MSG_FIRST */
/* case UOP_STEP: */
/* case UOP_STEP_BACK: */
/* case UOP_A_TO_B: */
/* case UOP_FREEZE: */
/* PBC control */
case UOP_MENU_CALL:
if (bUopRet == SV_NO_ERROR)
{
vDVDShowMenuType(OSD_TIMEOUT);
}
break;
/* case UOP_RETURN: */
case UOP_CHANGE_ASTN:
case UOP_NEXT_ASTN:
{
bTmp1 = bSharedInfo(SI_AST_NO);
bTmp2 = bSharedInfo(SI_AST_NS);
#ifdef AUDIO_STREAM_CHANGE_MUTE
if (!fgIsMute()) /* if mute off */
{
// TODO: if change from PCM to PCM?
if (bSharedInfo(SI_A_CODE_MODE) == SV_A_CODE_PCM)
{
vAdspMute(ADSP_ON, AST_PCM_CHANGE_UNMUTE_CNT); // extra mute time for PCM
}
}
#endif /* AUDIO_STREAM_CHANGE_MUTE */
if ((bUopRet == SV_NO_ERROR) && (bTmp1 < bTmp2) && (bTmp2 > 0))
{
#ifdef PLAYER_KARAOKE
if ((bAdspCurrVocal() != VOCAL_AUDIO1) && (bAdspCurrVocal() != VOCAL_AUDIO2))
#endif
{
vDVDShowAudio(bTmp1, bTmp2);
}
//#if SUPPORT_DVD_AUDIO
#if 0
if (bSharedInfo(SI_DISC_TYPE) == SV_DVD_AUDIO)
vSendUopCmd(UOP_TOP, 0, 0, 0);
#endif
}
else
{
#if (DVD_USER_STREAM_CHANGE == DVD_STREAM_CHANGE_DIRECT)
vOsdShowAudio(OSD_AUDIO_CLEAR, 0, 0, 0, 0, 0, 0);
#else
if (fgIsInputStateValid(INPUT_STATE_AUDIO_CHANGE))
{
fgSetPlayPostKey(IR_TIME_OUT);
}
#endif
}
break;
}
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 */
}
}
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: */
#ifdef PLAYER_DIGEST
case UOP_DIGEST:
if (fgIsInputStateValid(INPUT_STATE_DIGEST))
{
if (bUopRet == SV_NO_ERROR)
{
fgSetPlayPostKey(IR_DONE);
}
else /* error occur */
{
fgSetPlayPostKey(IR_TIME_OUT);
}
}
break;
#endif
/* 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: */
#ifdef PLAYER_BOOKMARK
case UOP_BOOKMARK:
vBookmarkUpdate();
break;
#endif
/* 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);
}
#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);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -