📄 combine.c
字号:
default:
break; /* not determined */
}
return (FALSE); /* default is not allowed */
}
#ifdef PLAYER_STOP_SRV_STOP
/************************************************************************
Function :
Description :
Parameter :
Return : = 0 -> servo stop is not allowed
> 0 -> servo stop is allowed
************************************************************************/
BOOL fgSrvStopCheck(void) large
{
BYTE bInitState = bSharedInfo(SI_INIT_STATE);
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
switch (bInitState)
{
case SV_LOADING_DISC:
case SV_TRAY_CLOSING:
case SV_TRAY_OPENING:
case SV_TRAY_ERROR:
case SV_NO_DISC:
return (FALSE); /* not allowed */
case SV_UNKNOWN_DISC:
return (TRUE); /* allowed */
case SV_DISC_IDENTIFIED:
default:
break; /* not determined */
}
#if (STOP_RESUME_STYLE == STOP_RESUME_TWO_KEYS)
if (bPbcState == SV_STOP_RESUME)
{
bPbcState = SV_STOP;
}
#endif
if (fgIsIsoPlay() || fgIsPcdPlay())
{
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);
#ifdef DOLBY_CANCEL
if(bDiscType == SV_DVD_AUDIO && bInitState == SV_DISC_IDENTIFIED)
{
vSetSharedInfo(SI_DISC_TYPE, 0xff);
vSetSharedInfo(SI_INIT_STATE,SV_UNKNOWN_DISC);
bDiscType = 0xff;
bInitState = SV_UNKNOWN_DISC;
_bPlayPostKey = IR_EJECT;
}
#endif
/* show or clear ICON/message first */
vOsdShowInitState(bInitState);
switch (bInitState)
{
case SV_LOADING_DISC:
#ifdef AUDIO_IN_EN
if (fgIsAinPlay())
{
vClearPlayType();
}
#endif /* AUDIO_IN_EN */
break;
case SV_TRAY_OPENING:
#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 */
#ifdef SUPPORT_USB //billy050822 //for display the angle when changed the device to usb or card
vSetSharedInfo(SI_AGL_NO, 0xff);
vSetSharedInfo(SI_AGL_NS, 0xff);
#endif
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:
#if defined(BBK_NEW_GUI)&&!defined(HAVE_TRUE_REGION) //billy[061220] for wrong region and Q-play
if (bDiscType == SV_DVD_VIDEO)
{
if (bEepromReadByte(SKIP_ADS_POS) == EV_YES)
{
fgSetPlayPostKey(IR_DEFAULT);
}
}
#endif
// tanglushan 0906
#ifdef MT1389_REV_HD //tide
if (bDiscType == SV_DATA && bSharedInfo(SI_DEVICE_ID) != SV_DEVID_CDVDROM)
{
if ((bSharedInfo(SI_REPEAT_MODE) != SV_REPEAT_NONE) &&(bSharedInfo(SI_REPEAT_MODE) != SV_REPEAT_ABNONE))
{
vSendUopCmd(UOP_REPEAT, SV_REPEAT_NONE, 0, 0);
vSetSharedInfo(SI_REPEAT_MODE, SV_REPEAT_NONE);
}
}
#endif
#ifdef MP4_SCALE_ADJUST
if ((bDiscType >= SV_DVD_VIDEO) && (bDiscType <=SV_CVD) \
||bDiscType == SV_PCD)//SV_MINI_DVD//billy050903
{
if ( bEepromReadByte(TV_PSCAN_SQZ_POS) == SV_ON)
{
vSetSharedInfo(SI_PSCAN_SQUEEZE, SV_OFF);
vNotifySharedInfo(SI_PSCAN_SQUEEZE, 0, 0);
fgEepromWriteByte(TV_PSCAN_SQZ_POS, SV_OFF);
}
}
else if(bDiscType ==SV_DATA)
{
if ( bEepromReadByte(TV_PSCAN_SQZ_POS) == SV_ON)
{
vSetSharedInfo(SI_PSCAN_SQUEEZE, SV_ON);
vNotifySharedInfo(SI_PSCAN_SQUEEZE, 0, 0);
}
}
#endif
// tanglushan 0906
#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);
#ifdef SPECTRUM_IN_SETUP //BillDen
if(bEepromReadByte(SPECTRUM_POSITION) == EV_ON)
{
if (!fgIsNonPlay() && !fgIsIsoPlay() && !fgIsPcdPlay() && !fgIsInSetupMenu()
#ifdef SUPPORT_DVD_AUDIO
&& bSharedInfo(SI_DISC_TYPE) != SV_DVD_AUDIO
#endif
)
bShowEq(OSD_EQ_TYPE_GRID);
}
#endif
#endif
#ifdef BBK_INTERNAL_KARA //tide
if(bEepromReadByte(MIC_SW_POS) == EV_ON)
{
bSetMic(NULL_POSITION, EV_ON);
vAdspEchoLevel(bEepromReadByte(MIC_ECHO_POS));
}
#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 :
************************************************************************/
#ifdef SUPPORT_BROWSER
void vVfdShowPbcState(BYTE bPbcState) large
{
WORD wFileNo;
WORD wBsDir;
extern xdata BYTE _bFlMnListId;
switch (bPbcState)
{
case SV_STOP_RESUME:
vVfdMessageClr();
vVfdRotate(VFD_DISC_LIGHT_ALL);
vVfdMessage(VFD_MESSAGE_STOP);
vVfdClrAudInfo();
vVfdSymbol(VFD_SYM_STOP);
break;
case SV_PLAY:
if(fgIsIsoPlay() && bSharedInfo(SI_ISO_ITEM_TYPE) != SV_ISO_AVI)
{
// show file no in VFD
wFileNo = wIsoFileNo();
bLoByte(wBsDir) = bSharedInfo(FL_BBK_LIST_FIELD(_bFlMnListId) + 2);
bHiByte(wBsDir) = bSharedInfo(FL_BBK_LIST_FIELD(_bFlMnListId) + 3);
if(bSharedInfo(FL_BBK_LIST_FIELD(_bFlMnListId)) == FLPARM_LIST_FOLDER && wBsDir)
wFileNo = wWRDToBCD(wFileNo);
else
wFileNo = wWRDToBCD(wFileNo + 1); /* from 1 ~ Ns */
#ifdef SUPPORT_SACD //dengsu 0701
if(IS_SACD_MP3_TYPE())
{
wFileNo++;
}
#endif
#ifdef LED_6961
if(bSharedInfo(SI_MP3_BITRATE_LO) == 0xff) //
{
#ifdef VFD_FLD_CH100
vVfdWord(VFD_WORD_CH100, bHiByte(wFileNo), 0); /* note already in BCD */
#else
vVfdWord(VFD_WORD_MIN, bHiByte(wFileNo), 0); /* note already in BCD */
#endif //VFD_FLD_CH100
vVfdWord(VFD_WORD_MIN, bLoByte(wFileNo), 1);
}
#else
#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
}
break;
default:
break;
}
}
#endif
void vShowPbcState(BYTE bPbcState) large
{
BYTE bTmp;
WORD wFileNo;
WORD wBsDir;
extern xdata BYTE _bFlMnListId;//leguo
#ifdef PORTABLEDVD
vOsdShowShiftState(_bVRMTState);
#endif
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))
#else
vVfdMessageClr();
vVfdRotate(VFD_DISC_LIGHT_ALL);
vVfdMessage(VFD_MESSAGE_STOP);
vVfdClrAudInfo();
vVfdSymbol(VFD_SYM_STOP);
if (!fgIsIsoItemAV(bSharedInfo(SI_ISO_ITEM_TYPE)))
#endif
{
vOsdShowPbcState(SV_STOP, 0, OSD_NO_DISAPPEAR);
}
vOsdDisplayChange(DISP_STOP, 0);
#ifdef PORTABLEDVD
vOsdShowShiftState(_bVRMTState);
#endif
break;
case SV_STOP_RESUME:
vVfdMessageClr();
vVfdRotate(VFD_DISC_LIGHT_ALL);
#ifdef VFD_MESSAGE_HOLD
vVfdMessage(VFD_MESSAGE_HOLD);
#else
vVfdMessage(VFD_MESSAGE_STOP);
#endif
vVfdClrAudInfo();
vVfdSymbol(VFD_SYM_STOP);
vOsdShowPbcState(SV_STOP_RESUME, 0, OSD_NO_DISAPPEAR);
vOsdDisplayChange(DISP_STOP_RESUME, 0);
break;
case SV_PLAY:
if(fgIsIsoPlay() && bSharedInfo(SI_ISO_ITEM_TYPE) != SV_ISO_AVI)
// if(fgIsIsoPlay() && bSharedInfo(SI_ISO_ITEM_TYPE) < SV_ISO_MPG)
{
// show file no in VFD
wFileNo = wIsoFileNo();
bLoByte(wBsDir) = bSharedInfo(FL_BBK_LIST_FIELD(_bFlMnListId) + 2);
bHiByte(wBsDir) = bSharedInfo(FL_BBK_LIST_FIELD(_bFlMnListId) + 3);
if(bSharedInfo(FL_BBK_LIST_FIELD(_bFlMnListId)) == FLPARM_LIST_FOLDER && wBsDir)
wFileNo = wWRDToBCD(wFileNo);
else
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);
}
vOsdShowPbcState(SV_PLAY, 0, OSD_NO_DISAPPEAR);
#ifdef HAVE_TRUE_REGION
if(bSharedInfo(SI_INIT_STATE)==SV_DISC_IDENTIFIED&&bSharedInfo(SI_DISC_TYPE) == SV_DVD_VIDEO&&bSharedInfo(SI_PBC_STATE) != SV_REGION_ERR)
{
if((bSharedInfo(SI_LONGEST_TT)!=bSharedInfo(SI_TT_NO))&&(_fgQPlay==0))//billy[070104]
{
if (bEepromReadByte(SKIP_ADS_POS) == EV_YES)
fgSetPlayPostKey(IR_DEFAULT);
}
}
#endif
break;
case SV_FF:
case SV_SF:
case SV_FR:
case SV_SR:
vOsdDisplayChange(DISP_TRICK, bPbcState);
break;
case SV_PAUSE:
if (fgIsPcdPlay())
{
//vOsdShowPbcState(SV_PAUSE, 0, OSD_TIMEOUT_SHORT);
vOsdShowPbcState(SV_PAUSE, 0, OSD_NO_DISAPPEAR); //tanglushan 0826
}
else
{
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;
case SV_DIGEST9:
case SV_DIGEST4:
case SV_DIGEST:
if(fgIsIsoPlay() || fgIsPcdPlay())
{
#ifdef VFD_MESSAGE_DIGEST
vVfdMessage(VFD_MESSAGE_DIGEST);
#endif
}
vOsdShowPbcState(bPbcState, 0, OSD_NO_DISAPPEAR);
break;
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
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -