📄 play_dvd.c
字号:
vOsdShowSubtitle(OSD_SUBTITLE_CLEAR, 0, 0, 0, 0, 0);
}
// *********************************************************************
// Change Angle
// *********************************************************************
void vDVDAngleChangeInit(BYTE fgInit) large
{
vOsdShowAngle(OSD_ANGLE_HILI, bSharedInfo(SI_AGL_NO), bSharedInfo(SI_AGL_NS));
vIrSetTimeOut(IR_TIMEOUT_ANGLE);
}
BOOL fgDVDAngleChangeState(void) large
{
BYTE bTmp1 = bSharedInfo(SI_AGL_NO);
BYTE bTmp2 = bSharedInfo(SI_AGL_NS);
if ((bSharedInfo(SI_PBC_STATE) != SV_PLAY) ||
(bTmp2 <= 1) || (bTmp2 > 9) || (bTmp1 > bTmp2))
{
vSetExitInputState();
if (_bIRKey == IR_TIME_OUT)
{
return (TRUE);
}
else
{
return (FALSE);
}
}
if (_bIRKey == IR_ANGLE) /* change to next angle */
{
#if 0
if (bTmp1 >= bTmp2)
{
bTmp1 = 1;
}
else
{
bTmp1++;
}
vSendUopCmd(UOP_CHANGE_AGL, bTmp1, 0, 0);
#else
vSendUopCmd(UOP_NEXT_AGL, 0, 0, 0);
#endif
vIrSetTimeOut(IR_TIMEOUT_ANGLE);
return (TRUE);
}
else if ((_bIRKey <= IR_NUM9) && (bTmp2 > 1))
{
if ((_bIRKey > 0) && (_bIRKey <= bTmp2))
{
vSendUopCmd(UOP_CHANGE_AGL, _bIRKey, 0, 0);
/* don't escape input state here, update OSD */
vOsdShowAngle(OSD_ANGLE_HILI, _bIRKey, bTmp2);
}
vIrSetTimeOut(IR_TIMEOUT_ANGLE);
return (TRUE);
}
else
{
vSetExitInputState();
}
if (_bIRKey == IR_TIME_OUT)
{
return (TRUE);
}
return (FALSE); // default does not grab the key
}
void vDVDAngleChangeExit(void) large
{
if (fgIsAngleShow())
{
vOsdShowAngle(OSD_ANGLE_NORMAL, bSharedInfo(SI_AGL_NO), bSharedInfo(SI_AGL_NS));
}
else
{
vOsdShowAngle(OSD_ANGLE_CLEAR, 0, 0);
}
}
// *********************************************************************
// Change display mode
// *********************************************************************
void vDVDDisplayChangeInit(BYTE fgInit) large
{
vOsdDisplayChange(DISP_REMAIN_CHG_INIT, bCurrRemainType());
vIrSetTimeOut(IR_TIMEOUT_DISPLAY);
}
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 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -