📄 combine.c
字号:
{
bPbcState = SV_STOP;
}
#endif
if (fgIsIsoPlay()
#ifdef SUPPORT_PCD
|| fgIsPcdPlay()
#endif
)
{
if (fgFlCheckStatus(FL_STATUS_BUSY) == FALSE)
{
/* if not decoding, allowed */
return (TRUE);
}
else
{
/* if is decoding, not allowed */
return (FALSE);
}
}
switch (bPbcState)
{
case SV_STOP:
if (_bLastSyncUop == UOP_STOP)
{
/* clear _bLastSyncUop flag immediately */
_bLastSyncUop = UOP_NONE;
/* change to stop state due to previous UOP command */
return (TRUE); /* allowed */
}
else if (fgIsUopUpdate() && (bSharedInfo(SI_UOP_RET_VAL) == SV_NO_ERROR))
{
/* any key changed to stop state */
return (TRUE); /* allowed */
}
else if (_bLastPbcState == SV_PBC_INIT)
{
return (TRUE);
}
else
{
return (FALSE); /* not allowed */
}
case SV_STOP_RESUME:
case SV_PAUSE:
case SV_STEP:
case SV_STEP_BACK:
case SV_PTL_ERR:
case SV_REGION_ERR:
case SV_DISC_ERR:
case SV_SET_TMP_PTL:
case SV_PLAY:
case SV_FF:
case SV_SF:
case SV_FR:
case SV_SR:
case SV_FREEZE:
case SV_DIGEST9:
case SV_DIGEST4:
case SV_DIGEST:
case SV_STILL:
/* DVD/VCD is not allowed in still mode */
return (FALSE);
default:
break; /* not determined */
}
return (FALSE); /* default is not allowed */
}
#endif /* PLAYER_STOP_SRV_STOP */
/************************************************************************
Function :
Description :
Parameter :
Return :
************************************************************************/
void vShowInitState(BYTE bInitState) large
{
BYTE bTmp;
BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
/* show or clear ICON/message first */
vOsdShowInitState(bInitState);
switch (bInitState)
{
case SV_LOADING_DISC:
#ifdef HDCD_EN
vSetSharedInfo(SI_FS_DISC_TYPE,0);//init
#endif
if (fgIsInSetupMenu())
{
vSetupMenuClose();
}
#ifdef AUDIO_IN_EN
if (fgIsAinPlay())
{
vClearPlayType();
}
#endif /* AUDIO_IN_EN */
break;
case SV_TRAY_OPENING:
// 20050428, when tray out, clear SH_PAUSE_SHOW_WB so that can accept setup key
if(bSharedInfo(SH_PAUSE_SHOW_WB) != 0)
vSetSharedInfo(SH_PAUSE_SHOW_WB,0);
_fgSetupProhibit = FALSE ; //20050504, PL00000143
#ifdef AUDIO_IN_EN
if (fgIsAinPlay())
{
vClearPlayType();
}
#endif /* AUDIO_IN_EN */
/* the vPlayerReset() has been moved to eject key routine */
//reset video when tray out
#ifdef RESET_VDO_TRAY_OUT
vResetVdoPage();
#endif
#ifdef EEPROM_LASTMEM_EJECT_WR_BACK
if (_rOsdStateCtx.fgLastMemWrBack == TRUE)
{
bTmp = bSharedInfo(SI_LASTMEM_NS);
if (bTmp > 0)
{
vSendPeriCmd(MISC_CMD_EEPROM_SVC, EEPROM_CMD_WR_SLOT, bTmp - 1);
}
_rOsdStateCtx.fgLastMemWrBack = FALSE;
}
#endif /* EEPROM_LASTMEM_EJECT_WR_BACK */
break;
case SV_TRAY_CLOSING:
vClearPlayType();
break;
case SV_TRAY_ERROR:
break;
case SV_NO_DISC:
#ifdef AUDIO_IN_EN
if (fgIsFuncAin())
{
vSetPlayType(SV_AUDIO_IN);
}
#endif /* AUDIO_IN_EN */
break;
case SV_UNKNOWN_DISC:
break;
case SV_DISC_IDENTIFIED:
#ifdef EN_DISC_ID_CHK
vSetDiscInitFlag(DISC_INIT_DISC_TYPE);
if (fgIsDiscInitFinished())
{
vSendPeriCmd(MISC_CMD_EEPROM_SVC, EEPROM_CMD_CHK_DISC_ID, 0);
}
#else
/* always assume RISC notify disc type first */
vSetPlayType(bDiscType);
#endif
break;
default:
break;
}
if (bInitState != SV_DISC_IDENTIFIED)
{
vAdspAudioTypeChange(bSharedInfo(SI_A_CODE_MODE), 0xff, bInitState);
}
#ifdef AUDIO_IN_EN
if (bInitState == SV_DISC_IDENTIFIED)
{
if (_bDiscLoadSt == DISC_LOAD_TOC)
{
_bDiscLoadSt = DISC_LOAD_IDENT;
}
}
else if ((bInitState == SV_DISC_IDENTIFIED) || (bInitState == SV_DISC_IDENTIFIED))
{
if (_bDiscLoadSt >= DISC_LOAD_STARTUP)
{
_bDiscLoadSt = DISC_LOAD_IDENT;
}
}
#endif /* AUDIO_IN_EN */
#ifdef PLAYER_STOP_SRV_STOP
if (bInitState == bSharedInfo(SI_INIT_STATE))
{
if (fgSrvStopCheck() == TRUE) /* for unknown disc */
{
_bUISrvStatus = PLAYER_SRV_STOP;
}
}
#endif /* PLAYER_STOP_SRV_STOP */
}
/************************************************************************
Function :
Description :
Parameter :
Return :
************************************************************************/
void vShowPbcState(BYTE bPbcState) large
{
BYTE bTmp;
WORD wFileNo;
// 20050428, IS00002663, if PBC mode changed, clear SH_PAUSE_SHOW_WB so it accept key
if(bSharedInfo(SH_PAUSE_SHOW_WB) != 0 && bPbcState != SV_PAUSE)
{
vSetSharedInfo(SH_PAUSE_SHOW_WB,0);
}
if (_fgSetupProhibit && bPbcState != SV_PAUSE)
_fgSetupProhibit = FALSE ; //20050504, PL00000143
switch (bPbcState)
{
case SV_STOP:
#ifdef PLAYER_FLMENU
// prevent showing stop icon while beginning to repeat
// if (!fgIsIsoItemAV(bSharedInfo(SI_ISO_ITEM_TYPE)) && !fgFlCheckStatus(FL_STATUS_IN_JPEG))
// 20050905, PL00001407, bItemType will always be SV_ISO_NONE
if (!fgFlCheckStatus(FL_STATUS_IN_MPEG) && !fgFlCheckStatus(FL_STATUS_IN_JPEG))
#else
VfdShowStatus(VFD_STATUS_STOP);
if (!fgIsIsoItemAV(bSharedInfo(SI_ISO_ITEM_TYPE)))
#endif
{
vOsdShowPbcState(SV_STOP, 0, OSD_NO_DISAPPEAR);
}
vOsdDisplayChange(DISP_STOP, 0);
break;
case SV_STOP_RESUME:
VfdShowStatus(VFD_STATUS_HOLD);
vOsdShowPbcState(SV_STOP_RESUME, 0, OSD_NO_DISAPPEAR);
vOsdDisplayChange(DISP_STOP_RESUME, 0);
break;
case SV_PLAY:
if(fgIsIsoPlay())
{
#if 0
// show file no in VFD
wFileNo = wIsoFileNo();
wFileNo = wWRDToBCD(wFileNo + 1); /* from 1 ~ Ns */
#ifdef VFD_FLD_CH100
vVfdWord(VFD_WORD_CH100, bHiByte(wFileNo), 0); /* note already in BCD */
#else
vVfdWord(VFD_WORD_TT, bHiByte(wFileNo), 0); /* note already in BCD */
#endif //VFD_FLD_CH100
vVfdWord(VFD_WORD_CH, bLoByte(wFileNo), 1);
#endif
}
vOsdShowPbcState(SV_PLAY, 0, OSD_NO_DISAPPEAR);
break;
case SV_FF:
case SV_SF:
case SV_FR:
case SV_SR:
vOsdDisplayChange(DISP_TRICK, bPbcState);
break;
case SV_PAUSE:
// 20050414, IS00001870, I don't know why our PCD show pause with timeout, but this is very old behavior since 1369.
// Already explained to QA. But they issue CQ again, so I changed the behavior to same as other JPEG.
#if 0//#ifdef SUPPORT_PCD
if (fgIsPcdPlay())
{
vOsdShowPbcState(SV_PAUSE, 0, OSD_TIMEOUT_SHORT);
}
else
#endif
{
if(!bSharedInfo(SH_PAUSE_SHOW_WB))
{
vOsdShowPbcState(SV_PAUSE, 0, OSD_NO_DISAPPEAR);
}
}
break;
case SV_STEP:
vOsdShowPbcState(SV_STEP, 0, OSD_NO_DISAPPEAR);
break;
case SV_STEP_BACK:
vOsdShowPbcState(SV_STEP_BACK, 0, OSD_NO_DISAPPEAR);
break;
case SV_FREEZE:
break;
case SV_STILL:
vOsdShowPbcState(SV_STILL, 0, OSD_NO_DISAPPEAR);
break;
#ifdef PLAYER_DIGEST
case SV_DIGEST9:
case SV_DIGEST4:
case SV_DIGEST:
if(fgIsIsoPlay()
#ifdef SUPPORT_PCD
|| fgIsPcdPlay()
#endif
)
{
VfdShowStatus(VFD_STATUS_DIGEST);
}
vOsdShowPbcState(bPbcState, 0, OSD_NO_DISAPPEAR);
break;
#endif
case SV_PTL_ERR:
case SV_SET_TMP_PTL:
/* clear status first */
/* vOsdPosClear(OSD_POS_PLAY_STATUS); */
/* call the password check function */
if (fgIsDvdPlay() && (fgIsInputStateValid(INPUT_STATE_PASSWORD) == FALSE))
{
fgSetPlayPostKey(IR_PASSWORD);
}
break;
case SV_REGION_ERR:
#ifndef EN_DISC_ID_CHK /* not define EN_DISC_ID_CHK */
if (fgIsDvdPlay())
{
vClearPlayType();
vOsdPosShow(OSD_POS_ERROR, OSD_MSG_WRONG_REGION, OSD_NO_DISAPPEAR);
vOsdShowPbcState(SV_STOP, 0, OSD_NO_DISAPPEAR);
}
#endif /* not define EN_DISC_ID_CHK */
break;
case SV_DISC_ERR:
vOsdPosShow(OSD_POS_ERROR, OSD_MSG_DISC_ERROR, OSD_NO_DISAPPEAR);
vOsdShowPbcState(SV_STOP, 0, OSD_NO_DISAPPEAR);
break;
default:
break;
}
}
/************************************************************************
Function :
Description :
Parameter :
Return :
************************************************************************/
void vChangePbcState(BYTE bPbcState) large
{
BYTE bTmp;
/* for state change only */
if (bPbcState == _bLastPbcState)
{
return;
}
switch (_bLastPbcState)
{
case SV_STOP:
case SV_STOP_RESUME:
#if (STOP_RESUME_STYLE == STOP_RESUME_TWO_KEYS)
if ((_bLastPbcState == SV_STOP_RESUME) ||
(_bLastPbcState == SV_STOP))
{
vOsdPosClear(OSD_POS_STOP_MSG1);
vOsdPosClear(OSD_POS_STOP_MSG2);
}
#elif (STOP_RESUME_STYLE == STOP_RESUME_TWO_STOP)
if (_bLastPbcState == SV_STOP_RESUME)
{
vOsdPosClear(OSD_POS_STOP_MSG1);
}
#endif
break;
case SV_PLAY:
case SV_FF:
case SV_SF:
case SV_FR:
case SV_SR:
case SV_PAUSE:
case SV_STEP:
case SV_STEP_BACK:
case SV_FREEZE:
case SV_STILL:
/* fgIsDiscPlay() */
break;
case SV_DIGEST9:
case SV_DIGEST4:
case SV_DIGEST:
case SV_PTL_ERR:
case SV_REGION_ERR:
case SV_DISC_ERR:
case SV_SET_TMP_PTL:
break;
default:
/* error? */
break;
}
switch (bPbcState)
{
case SV_STOP:
case SV_STOP_RESUME:
vOsdCoreSetPlayStatus(OSD_SHOW_CLEAR, 0);
#ifdef STOP_CANCEL_USR_CTRL
if ((!fgIsIsoPlay()
#ifdef SUPPORT_PCD
&& !fgIsPcdPlay()
#endif
)
#ifdef SINGLE_STOP_KEEP_USR_CTRL
&& (bPbcState != SV_STOP_RESUME)
#endif
)
{
bTmp = bSharedInfo(SI_USR_PBC_CTRL);
if (bTmp == SV_PROGRAM)
{
if(bPbcState != SV_STOP_RESUME)
{
vSendUopCmd(UOP_PROGRAM, SV_PROGRAM_STOP, 0, 0);
}
}
else if (bTmp == SV_SHUFFLE)
{
vSendUopCmd(UOP_SHUFFLE, SV_OFF, 0, 0);
}
else if (bTmp == SV_RANDOM)
{
vSendUopCmd(UOP_RANDOM, SV_OFF, 0, 0);
}
}
#endif /* STOP_CANCEL_USR_CTRL */
#ifdef STOP_RESUME_CANCEL_REPEAT
if (!fgIsIsoPlay()
#ifdef SUPPORT_PCD
&& !fgIsPcdPlay()
#endif
)
{
bTmp = bSharedInfo(SI_REPEAT_MODE);
if ((bTmp != SV_REPEAT_NONE) &&
(bTmp != SV_REPEAT_ABNONE))
{
if(bPbcState != SV_STOP_RESUME)
{
vSendUopCmd(UOP_REPEAT, SV_REPEAT_NONE, 0, 0);
}
}
}
#endif /* STOP_RESUME_CANCEL_REPEAT */
break;
case SV_PLAY:
case SV_FF:
case SV_SF:
case SV_FR:
case SV_SR:
case SV_PAUSE:
case SV_STEP:
case SV_STEP_BACK:
case SV_FREEZE:
case SV_STILL:
if (bPbcState != SV_PAUSE)
{
vSetSharedInfo(SI_MPV_PAUSE,0);
}
/* fgIsDiscPlay() */
if (!fgIsDiscPlay(_bLastPbcState) && (_bLastPbcState != SV_PBC_INIT))
{
vStatusDispRecall();
if (_bLastPbcState == SV_STOP)
{
/* if previous state is STOP, the time information may be incorrect! */
if (fgIsDvdPlay())
{
#ifndef NEW_SHOW
vDVDShowTotalTimeMark();
#else
vShowTotalTimeMark();
#endif
}
#ifdef VCD_SUPPORT
else if (fgIsVcdPlay())
{
#ifndef NEW_SHOW
vVCDShowTotalTimeMark();
#else
vShowTotalTimeMark();
#endif
}
#endif
}
}
#ifdef CDDA_USE_CDFS
#ifdef CDG_SUPPORT
if(bSharedInfo(SI_CDG_DISC) == SV_ON)
{
// 20050505, PL00000334, don't disable the WB or p/n, repeat can't display. Just clear it.
//vDisableWB(FSMENU_OSD_WBIDX_BASIC);
vClearWB (FSMENU_OSD_WBIDX_BASIC) ;
}
#endif
#endif
break;
case SV_DIGEST9:
case SV_DIGEST4:
case SV_DIGEST:
case SV_PTL_ERR:
case SV_REGION_ERR:
case SV_DISC_ERR:
case SV_SET_TMP_PTL:
break;
default:
/* error? */
break;
}
/* to update VFD */
VfdShowTrick(bPbcState);
#ifdef PLAYER_STOP_SRV_STOP
if (fgSrvStopCheck() == TRUE)
{
_bUISrvStatus = PLAYER_SRV_STOP;
}
#endif
_bLastPbcState = bPbcState;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -