📄 play_dvd.c
字号:
else if (_rSearchStateCtx.bType == SEARCH_DVD_TIME_TTL)
{
vOsdShowTitleTimeSearch(_rNumInStateCtx.wNum, bTmp,
(OSD_DVD_TTL_SEARCH | 1), 0);
}
vIrSetTimeOut(IR_TIMEOUT_SEARCH);
}
}
else if (_bIRKey == IR_CLEAR)
{
_rNumInStateCtx.wNum = 0;
if (_rSearchStateCtx.bType == SEARCH_DVD_PTT_TTL)
{
vOsdShowChapterSearch(_rNumInStateCtx.wNum, bTmp,
(OSD_DVD_TTL_SEARCH | 1), 0, 0, OSD_NO_DISAPPEAR);
}
else if (_rSearchStateCtx.bType == SEARCH_DVD_TIME_TTL)
{
vOsdShowTitleTimeSearch(_rNumInStateCtx.wNum, bTmp,
(OSD_DVD_TTL_SEARCH | 1), 0);
}
vIrSetTimeOut(IR_TIMEOUT_SEARCH);
}
else /* > IR_ADD10 and not IR_CLEAR, IR_ADD5 */
{
vSetExitInputState();
if ((_rSearchStateCtx.bType == SEARCH_DVD_PTT_TTL) ||
(_rSearchStateCtx.bType == SEARCH_DVD_PTT_WAIT))
{
vOsdShowChapterSearch(0, 0, OSD_SEARCH_CLEAR, 0, 0, 0);
}
else if ((_rSearchStateCtx.bType == SEARCH_DVD_TIME_TTL) ||
(_rSearchStateCtx.bType == SEARCH_DVD_TIME_WAIT))
{
vOsdShowTitleTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
}
if (_bIRKey == IR_SELECT)
{
switch (_rSearchStateCtx.bType)
{
case SEARCH_DVD_PTT_TTL:
_rSearchStateCtx.bType = SEARCH_DVD_TIME_TTL;
break;
case SEARCH_DVD_TIME_TTL:
// 20050421, IS00002551, if not PTT allow, don't switch to it, or prohibition shown.
if (fgIsPTTSearchAllow())
_rSearchStateCtx.bType = SEARCH_DVD_CH;
else
_rSearchStateCtx.bType = SEARCH_NONE;
break;
case SEARCH_DVD_TIME_CHANGE:
if (fgIsTimeSearchAllow() == TRUE)
{
/* change to title time search in main state */
_rSearchStateCtx.bType = SEARCH_DVD_PTT;
}
else
{
vOsdShowTitleTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
#ifdef SEARCH_INPUT_SHOW
vOsdShowTitleTimeSearch(bSharedInfo(SI_TT_NO), bSharedInfo(SI_TT_NS),
(OSD_DVD_TTL_SEARCH | OSD_DVD_SEARCH_END), 0);
#endif
_rSearchStateCtx.bType = SEARCH_NONE;
return (TRUE);
}
break;
case SEARCH_DVD_PTT_CHANGE:
if (fgIsPTTSearchAllow() == TRUE)
{
/* change to PTT search in main state */
_rSearchStateCtx.bType = SEARCH_DVD_TIME_CH;
}
else
{
vOsdShowChapterSearch(0, 0, OSD_SEARCH_CLEAR, 0, 0, 0);
#ifdef SEARCH_INPUT_SHOW
vOsdShowChapterSearch(bSharedInfo(SI_TT_NO), bSharedInfo(SI_TT_NS),
(OSD_DVD_TTL_SEARCH | OSD_DVD_SEARCH_END),
bSharedInfo(SI_CHAP_NO), bSharedInfo(SI_CHAP_NS),
OSD_TIMEOUT_SHORT);
#endif
_rSearchStateCtx.bType = SEARCH_NONE;
return (TRUE);
}
break;
default:
break;
} /* switch (_rSearchStateCtx.bType) */
return (FALSE); /* pass to main state change search mode */
}
else if ((_bIRKey == IR_LEFT) || (_bIRKey == IR_RIGHT))
{
if (_rSearchStateCtx.bType == SEARCH_DVD_PTT_TTL)
{
/* swicth to PTT search by main state */
#ifdef PLAYER_GOTO
_rSearchStateCtx.bType = SEARCH_DVD_TIME_CH; // megaa Goto
#else
_rSearchStateCtx.bType = SEARCH_NONE;
#endif
}
else if (_rSearchStateCtx.bType == SEARCH_DVD_TIME_TTL)
{
/* swicth to title time search by main state */
_rSearchStateCtx.bType = SEARCH_DVD_PTT;
}
_bIRKey = IR_SELECT;
return (FALSE); /* pass to main state change search mode */
}
else
{
_rSearchStateCtx.bType = SEARCH_NONE;
}
}
return(TRUE);
}
void vDVDTitleSearchExit(void) large
{
if ((_rSearchStateCtx.bType == SEARCH_DVD_PTT_TTL) ||
(_rSearchStateCtx.bType == SEARCH_DVD_PTT_WAIT))
{
vOsdShowChapterSearch(0, 0, OSD_SEARCH_CLEAR, 0, 0, 0);
}
else if ((_rSearchStateCtx.bType == SEARCH_DVD_TIME_TTL) ||
(_rSearchStateCtx.bType == SEARCH_DVD_TIME_WAIT))
{
vOsdShowTitleTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
}
if (_bIRKey != IR_SELECT)
{
_rSearchStateCtx.bType = SEARCH_NONE;
}
}
// *********************************************************************
// Change audio stream
// *********************************************************************
void vDVDAudioChangeInit(BYTE fgInit) large
{
vDVDShowAudio(bSharedInfo(SI_AST_NO), bSharedInfo(SI_AST_NS));
vIrSetTimeOut(IR_TIMEOUT_AUDIO);
}
BOOL fgDVDAudioChangeState(void) large
{
BYTE bTmp1 = bSharedInfo(SI_AST_NO);
BYTE bTmp2 = bSharedInfo(SI_AST_NS);
#ifdef SUPPORT_DVD_AUDIO
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
#endif
if ((bSharedInfo(SI_PBC_STATE) != SV_PLAY) || (bTmp1 >= bTmp2) || (bTmp2 == 0))
{
vSetExitInputState();
return (FALSE);
}
if (_bIRKey == IR_AUDIO) /* change to next AST */
{
if (bTmp2 > 1)
{
bTmp1++;
if (bTmp1 >= bTmp2)
{
bTmp1 = 0;
}
#ifdef SUPPORT_DVD_AUDIO
if (bDiscType == SV_DVD_AUDIO)
{
vSetSharedInfo(SI_DVD_AUDIO_USR_AST, bTmp1);
vNotifySharedInfo(SI_DVD_AUDIO_USR_AST, 0, 0);
}
#endif /* SUPPORT_DVD_AUDIO */
#ifdef AUDIO_STREAM_CHANGE_MUTE
if (!fgIsMute() /* if mute off */
#if (DVD_CHG_AST_OPT3 == SV_UOP_BLOCK)
&& (fgCheckUopBlock(SV_NV_A_CHANGE) == FALSE) /* if UOP not block */
#endif
)
{
if (bSharedInfo(SI_A_CODE_MODE) == SV_A_CODE_PCM)
{
vAdspMute(ADSP_ON, AST_NORMAL_CHANGE_UNMUTE_CNT + AST_PCM_CHANGE_UNMUTE_CNT); // extra mute time for PCM
}
else
{
vAdspMute(ADSP_ON, AST_NORMAL_CHANGE_UNMUTE_CNT);
}
}
vSetAudioStreamChange(AST_NORMAL_CHANGE_CNT, bTmp1, DVD_CHG_AST_OPT2, DVD_CHG_AST_OPT3);
#else
vSendUopCmd(UOP_CHANGE_ASTN, bTmp1, DVD_CHG_AST_OPT2, DVD_CHG_AST_OPT3);
#endif /* AUDIO_STREAM_CHANGE_MUTE */
} /* bTmp2 > 1 */
vIrSetTimeOut(IR_TIMEOUT_AUDIO);
return (TRUE);
}
#if (DVD_USER_STREAM_CHANGE == DVD_STREAM_CHANGE_SELECT)
else if ((_bIRKey < IR_ADD10) && (bTmp2 > 1))
{
if ((_bIRKey > 0) && (_bIRKey <= bTmp2))
{
#if (defined(SUPPORT_DVD_AUDIO) && defined(SET_DVD_AUDIO_USR_AST))
if (bDiscType == SV_DVD_AUDIO)
{
vSetSharedInfo(SI_DVD_AUDIO_USR_AST, _bIRKey - 1);
vNotifySharedInfo(SI_DVD_AUDIO_USR_AST, 0, 0);
}
#endif /* SUPPORT_DVD_AUDIO && SET_DVD_AUDIO_USR_AST */
#ifdef AUDIO_STREAM_CHANGE_MUTE
if (!fgIsMute()) /* if mute off */
{
if (bSharedInfo(SI_A_CODE_MODE) == SV_A_CODE_PCM)
{
vAdspMute(ADSP_ON, AST_NORMAL_CHANGE_UNMUTE_CNT + AST_PCM_CHANGE_UNMUTE_CNT); // extra mute time for PCM
}
else
{
vAdspMute(ADSP_ON, AST_NORMAL_CHANGE_UNMUTE_CNT);
}
}
vSetAudioStreamChange(AST_NORMAL_CHANGE_CNT, _bIRKey - 1, DVD_CHG_AST_OPT2, DVD_CHG_AST_OPT3);
#else
vSendUopCmd(UOP_CHANGE_ASTN, _bIRKey - 1, DVD_CHG_AST_OPT2, DVD_CHG_AST_OPT3);
#endif /* AUDIO_STREAM_CHANGE_MUTE */
vSetExitInputState();
}
else
{
vIrSetTimeOut(IR_TIMEOUT_AUDIO);
}
return (TRUE);
}
#endif
else
{
vSetExitInputState();
}
if (_bIRKey == IR_TIME_OUT)
{
return (TRUE);
}
return (FALSE); // default does not grab the key
}
void vDVDAudioChangeExit(void) large
{
vOsdShowAudio(OSD_AUDIO_CLEAR, 0, 0, 0, 0, 0, 0);
}
// *********************************************************************
// Change sub-picture stream
// *********************************************************************
void vDVDSubtitleChangeInit(BYTE fgInit) large
{
vDVDShowSubtitle(bSharedInfo(SI_SPST_NO), bSharedInfo(SI_SPST_NS));
#if (DVD_USER_STREAM_CHANGE == DVD_STREAM_CHANGE_SELECT)
#ifdef NO_ADD10_KEY
vNumInInitState(NUM_IN_SEQ_WAIT, 2);
#else
vNumInInitState(NUM_IN_TYPE_1, 1);
#endif
#endif
vIrSetTimeOut(IR_TIMEOUT_SUBTITLE);
}
BOOL fgDVDSubtitleChangeState(void) large
{
BYTE bTmp1 = bSharedInfo(SI_SPST_NO);
BYTE bTmp2 = bSharedInfo(SI_SPST_NS);
if ((bTmp1 & (~0x41)) == 0x3e) // include 0x3e, 0x3f, 0x7e, 0x7f
{
/* take dummy stream as subtitle disabled */
bTmp1 = 0x40;
}
if ((bSharedInfo(SI_PBC_STATE) != SV_PLAY) || ((bTmp1 & 0x1f) >= bTmp2) || (bTmp2 == 0))
{
vSetExitInputState();
return (FALSE);
}
if (_bIRKey == IR_SUB_TITLE)
{
#if (DVD_USER_STREAM_CHANGE == DVD_STREAM_CHANGE_SELECT)
#ifdef NO_ADD10_KEY
vNumInInitState(NUM_IN_SEQ_WAIT, 2);
#else
vNumInInitState(NUM_IN_TYPE_1, 1);
#endif
#endif
if (bTmp2 > 0)
{
if (bTmp1 & 0x40)
{
if ((bTmp1 & 0x1f) >= bTmp2 - 1)
{
/* turn off sub-picture */
bTmp1 = 0x00;
}
else
{
/* next sp */
bTmp1 = ((bTmp1 & 0x1f) + 1) | 0x40;
}
}
else
{
bTmp1 = 0x40; /* first stream is 0 */
}
vSendUopCmd(UOP_CHANGE_SPSTN, bTmp1, 0, 0);
} /* bTmp2 > 0 */
vIrSetTimeOut(IR_TIMEOUT_SUBTITLE);
return (TRUE);
}
#if (DVD_USER_STREAM_CHANGE == DVD_STREAM_CHANGE_SELECT)
else if ((_bIRKey <= IR_ADD10 || _bIRKey == IR_ADD5) && (bTmp2 > 0) && (bTmp1 & 0x40)) /* only valid when sub-title on */ // megaa ADD5
{
fgNumInState();
if (_rNumInStateCtx.rState.fgComplete)
{
if ((_rNumInStateCtx.rState.fgCancel == FALSE) &&
(_rNumInStateCtx.wNum <= bTmp2))
{
if (_rNumInStateCtx.wNum > 0)
{
vSendUopCmd(UOP_CHANGE_SPSTN, (_rNumInStateCtx.wNum - 1) | 0x40, 0, 0);
}
#ifdef NO_ADD10_KEY
else if (_rNumInStateCtx.wNum == 0)
{
vSendUopCmd(UOP_CHANGE_SPSTN, 0, 0, 0); /* sub-title off */
}
#endif
}
else
{
vOsdShowError(SV_ERR_INPUT_INVALID, OSD_TIMEOUT_SHORT);
}
vSetExitInputState();
}
#ifndef NO_ADD10_KEY
else if (_bIRKey == IR_NUM0) /* the fgNumInState() does not handle number 0 */
{
vSendUopCmd(UOP_CHANGE_SPSTN, 0, 0, 0); /* sub-title off */
vSetExitInputState();
}
#endif /* NO_ADD10_KEY */
else /* _rNumInStateCtx.rState.fgComplete */
{
vOsdShowSubtitle(OSD_SUBTITLE_HILI | _rNumInStateCtx.rState.bDigNum, _rNumInStateCtx.wNum, bTmp2,
bSharedInfo(SI_SP_LCD_0), bSharedInfo(SI_SP_LCD_1), OSD_NO_DISAPPEAR);
vIrSetTimeOut(IR_TIMEOUT_SUBTITLE);
}
return (TRUE);
}
#endif
else
{
vSetExitInputState();
}
if (_bIRKey == IR_TIME_OUT)
{
return (TRUE);
}
return (FALSE); // default does not grab the key
}
void vDVDSubtitleChangeExit(void) large
{
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);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -