📄 player.c
字号:
#endif
}
// *********************************************************************
// Function : void vPlayerInit(void) large
// Description :
// Parameter : None
// Return : None
// *********************************************************************
static void vPlayerInit(void) large
{
/* note: player function is loaded in vUserInit() */
_bFlCmdTarget = 0; //guosong 0820 init var for prevent PAUSE
#ifdef GUI_DC_SELECT
_bDCTimer = 0;
_bDCStChged = DEVICE_NONE;
_bUSBDsct = FALSE;
_bMCRDsct = FALSE;
_bDevType = DEVICE_DVD;
_bDCEmpty = 0;
#endif
#ifdef DL379
T100DVD = 1;
T100CARD = 0;
T100USB = 0;
#endif
#ifdef DL379_MAX9702_STBY
SetBitBIM(BIM_RIODRL, IOL_RD20);
SetBitBIM(BIM_RIODOL, IOL_RD20);
#endif
#ifdef SUPPORT_KEYSACN
SetBitBIM(BIM_RIODRM, IOM_RD24);
SetBitBIM(BIM_RIODRM, IOM_RD25);
SetBitBIM(BIM_RIODRM, IOM_RD26);
#ifndef DL389
SetBitBIM(BIM_RIODRM, IOM_RD27);
#endif
ClrBitBIM(BIM_RIODRM, IOM_RD28);
ClrBitBIM(BIM_RIODRM, IOM_RD29);
ClrBitBIM(BIM_RIODRM, IOM_RD30);
ClrBitBIM(BIM_RIODRM, IOM_RD31);
#endif
#ifdef DL379
SetBitBIM(BIM_RIODRH, IOH_DQM3);
ClrBitBIM(BIM_RIODOH, IOH_DQM3);
#endif
#ifdef DL389
SetBitBIM(BIM_RIODRH, IOH_DQM3);
SetBitBIM(BIM_RIODOH, IOH_DQM3); //CLOSE DC+5V
#endif
#ifdef DL379_PANEL_LED
PanelLED = 0;
#endif
#ifdef DL339_PANEL_LED
SetBitBIM(BIM_RIODRM, IOM_RD24);//FM_D3
ClrBitBIM(BIM_RIODOM, IOM_RD24);
SetBitBIM(BIM_RIODRM, IOM_RD26);//Ext VIDEO
SetBitBIM(BIM_RIODOM, IOM_RD26);
SetBitBIM(BIM_RIODRM, IOM_RD29);//DVD
ClrBitBIM(BIM_RIODOM, IOM_RD29);
SetBitBIM(BIM_RIODRM, IOM_RD27);//+5 DC OUT
ClrBitBIM(BIM_RIODOM, IOM_RD27);
#endif
#ifdef DL339_MENU
_fgInBBKMenuMode = 0;
_bBBKMenuMode = 1;//DVD status
#endif
#ifdef DL389_PANEL_LED
SetBitBIM(BIM_RIODRL, IOL_RD21);
ClrBitBIM(BIM_RIODOL, IOL_RD21); //kks 060802
#endif
_rOsdStateCtx.fgUopUpdate = FALSE;
_rOsdStateCtx.bUopRetId = UOP_NONE;
_rOsdStateCtx.bUopRetVal = SV_NO_ERROR;
_rOsdStateCtx.fgSetupShow = FALSE;
_rOsdStateCtx.fgSetupSttTrans = FALSE;
#ifdef SUPPORT_BROWSER
_rOsdStateCtx.fgBrowserShow = FALSE;
#endif
#ifdef BBK_NEW_SELECTOR
_rOsdStateCtx.fgSelectorShow = FALSE;
_eSltMenu= SLT_MENU_NONE;
#endif
_rOsdStateCtx.fgZoomBrShow = FALSE;
_rEqState.bDispType = OSD_EQ_TYPE_DISABLE;
#ifdef SUPPORT_HDVD_CHANNEL_CHANGE //linshangbo 041505
_bAudioKeyTime=0;
_fgIRAudio=0;
#endif
// for player timer
_bPlayerTimerBeepCnt = 0;
// reset input state
/* vResetInputState(); */
_bInputState = INPUT_STATE_NONE;
_fgInputResend = FALSE;
_fgInputEscape = FALSE;
_bIrTimer = IR_TIMER_VOID;
_bIrTimerBeepCnt = 0;
// for RISC communication states
_bLastSyncUop = UOP_NONE;
_bLastPbcState = SV_PBC_INIT;
// reset osd state
/* vResetOsdState(); */
_rOsdStateCtx.fgTimeShow = FALSE;
_rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
_rOsdStateCtx.fgRemainMsgShow = FALSE;
_rOsdStateCtx.fgPlayInfoShow = FALSE;
_rOsdStateCtx.bPlayInfoType = OSD_INFO_DISABLE;
_rOsdStateCtx.fgPlayShow = FALSE;
_rOsdStateCtx.bPlayType = OSD_SHOW_PLAY;
_rOsdStateCtx.fgRepeatShow = FALSE;
_rOsdStateCtx.fgABShow = FALSE;
_rOsdStateCtx.fgUsrCtrlShow = FALSE;
_rOsdStateCtx.fgZoomShow = FALSE;
_rOsdStateCtx.fgTimePos = OSD_SHOW_TIME_LEFT;
#ifdef EN_DISC_ID_CHK
//vResetDiscInitFlag()
_rOsdStateCtx.bDiscIDFound = 0;
_rOsdStateCtx.bDiscInitFlag = 0;
#endif
// this state is not affected by tray-in/out
_rOsdStateCtx.bAudioStatus = OSD_AUDIO_SHOW_NORMAL;
_rOsdStateCtx.fgAudioStatusRecall = FALSE;
// reset search state
_rSearchStateCtx.bType = SEARCH_NONE;
#ifdef SETUP_NO_AGL_MARK
_rOsdStateCtx.fgAngleShow = TRUE;
#endif
#ifdef SUPPORT_SACD
vSetSharedInfo(SI_SACD_TRACK_NS,0);//DENGSU 0623
#endif
// Seiya: Added on 2004/07/27 for dual mono switch.
#ifdef DVD_VR_SUPPORT
// LLY.1008, reset DVD-VR dual mono type as L channel while power-on
// and this procedure wiil be done for open/close action: vPlayerReset()
vSetSharedInfo(SH_VR_DUAL_MONO_MODE, AUDIO_MONO_LEFT);
#endif
// reset program state
/* vSelMenuReset(); */
vSetSharedInfo(SI_USR_PROGRAM_TYPE, SV_PROGRAM_NONE_ITEM);
/* vSetSharedInfo(SI_USR_PROGRAM_NO, 0); */
vSetSharedInfo(SI_USR_PROGRAM_NS, 0);
/* vClearPlayType(); */
_bPlayType = PLAY_TYPE_NONE;
vSetKeyState(KEY_INIT);
if ( fgIsInSetupMenu() )
{
vSetKeyState(KEY_SETUP);
}
/* reset screen saver timer */
_bScrSaverBeepCnt = SCR_SAVER_OFF_BEEP_COUNT;
_bScrSaverTimer = SCR_SAVER_TIMEOUT;
vSetScrSaverOff();
vSetSharedInfo(SH_IR_TIMER_AUTO_PWR_DOWN, 0);
_fgFlSrcSet = FALSE;
#if (defined(PLAYER_STOP_SRV_STOP) || defined(AUDIO_IN_EN) || defined(SUPPORT_CAPTURE_LOGO))
/* reset player state */
_bUISrvStatus = PLAYER_SRV_NORMAL;
#endif
// for vocal assist
#ifdef PLAYER_KARAOKE
_fgVocalOn = FALSE;
#endif
#ifdef AUDIO_STREAM_CHANGE_MUTE
_fgAstChg = FALSE;
#endif
#ifdef TEST_UPG_SHOW
fgIsInUpg = FALSE;
fgUPGTIME = 0;
#endif
#ifdef CAP_NOALLOW_AFTER_SEARCH
_bCapWaitTime = 0;
#endif
#ifdef SRV_SHOW_ERROR_COUNTER
_bSrvErrorTimer = 0;
_bSrvShowErrIdx = 0;
_pbSrvErrTrace[0] = 0;
_pbSrvErrTrace[1] = 0;
_pbSrvErrTrace[2] = 0;
_pbSrvErrTrace[3] = 0;
_pbSrvErrTrace[4] = 0;
#endif
#if 1//def RISC_SP81 //linshangbo 050905
vSetSharedInfo(SI_ZOOM_SWITCH, SV_ZOOM_OFF);
#endif
return;
}
#define PLAYER_TIEMR_ST_NONE 0
#define PLAYER_TIMER_ST_OSD_REFRESH 1
#define PLAYER_TIMER_ST_OSD_CHECK 2
#define PLAYER_TIMER_ST_MIC_DETECT 3
#define PLAYER_TIMER_ST_CHK_DISC_INIT 4
// *********************************************************************
// Function : void vPlayerTimerState(BYTE bState)
// Description :
// Parameter : None
// Return : None
// *********************************************************************
static void vPlayerTimerState(BYTE bState) large
{
BYTE bTmp;
#ifdef KARAOKE_SCORING
BYTE pbStr[13];
#endif
#ifdef AUDIO_STREAM_CHANGE_MUTE
if (_fgAstChg == TRUE)
{
bTmp = bSharedInfo(SH_CHG_AST_CNT);
if (bTmp > 0)
{
bTmp--;
vSetSharedInfo(SH_CHG_AST_CNT, bTmp);
}
if (bTmp == 0)
{
vSendUopCmd(UOP_CHANGE_ASTN, bSharedInfo(SH_CHG_AST_OPT1),
bSharedInfo(SH_CHG_AST_OPT2), bSharedInfo(SH_CHG_AST_OPT3));
_fgAstChg = FALSE;
}
}
#endif /* AUDIO_STREAM_CHANGE_MUTE */
switch (bState)
{
case PLAYER_TIMER_ST_OSD_REFRESH:
/* force refresh */
vOsdCoreRefresh(TRUE);
vSetLayer2Change(FALSE);
#ifdef PLAYER_FLMENU
vFlMnOnTimer();
#endif
#ifdef KARAOKE_SCORING
if(fgAdspKscoreSupport())
{
vAdspGetScoreStr(pbStr);
vOsdPosShowArg(OSD_POS_FS_KSCORE, OSD_MSG_KSCORE, OSD_TIMEOUT, pbStr);
}
#ifdef KARAOKE_SCORE_TEST
vAdspGetKSHMStr(pbStr);
vOsdPosShowArg(OSD_POS_FS_KSINFO, OSD_MSG_KSHITMISS, OSD_TIMEOUT, pbStr);
#endif
#endif
break;
case PLAYER_TIMER_ST_OSD_CHECK:
/* only when OSD changed */
if (fgIsLayer2Changed())
{
vOsdCoreRefresh(FALSE); /* no timer count */
vSetLayer2Change(FALSE);
}
#ifdef PLAYER_FLMENU
vFlMnOnTimer();
#endif
break;
case PLAYER_TIMER_ST_MIC_DETECT:
#ifdef PLAYER_KARAOKE
vPlayerMicLevelDetect();
#endif
break;
#ifdef EN_DISC_ID_CHK
case PLAYER_TIMER_ST_CHK_DISC_INIT:
if (fgIsNonPlay())
{
if (bSharedInfo(SI_INIT_STATE) == SV_DISC_IDENTIFIED)
{
if (fgIsDiscInitAskPwd())
{
vSetDiscInitFlag(DISC_INIT_WAIT_PWD_IN);
fgSetPlayPostKey(IR_PASSWORD);
}
if (fgIsDiscInitChecked())
{
vSetPlayType(bSharedInfo(SI_DISC_TYPE));
}
}
}
break;
#endif /* EN_DISC_ID_CHK */
case PLAYER_TIEMR_ST_NONE:
default:
break;
}
}
static code BYTE bPlayerTimerStateList[PLAYER_TIMER_BEEP_PERIOD] =
{
/* 00 */ PLAYER_TIMER_ST_OSD_REFRESH,
/* 01 */ PLAYER_TIMER_ST_CHK_DISC_INIT,
/* 02 */ PLAYER_TIEMR_ST_NONE,
/* 03 */ PLAYER_TIEMR_ST_NONE,
/* 04 */ PLAYER_TIEMR_ST_NONE,
/* 05 */ PLAYER_TIEMR_ST_NONE,
/* 06 */ PLAYER_TIMER_ST_OSD_CHECK,
/* 07 */ PLAYER_TIMER_ST_MIC_DETECT,
/* 08 */ PLAYER_TIEMR_ST_NONE,
/* 09 */ PLAYER_TIEMR_ST_NONE,
/* 10 */ PLAYER_TIEMR_ST_NONE,
/* 11 */ PLAYER_TIEMR_ST_NONE,
/* 12 */ PLAYER_TIMER_ST_OSD_CHECK,
/* 13 */ PLAYER_TIEMR_ST_NONE,
/* 14 */ PLAYER_TIEMR_ST_NONE,
/* 15 */ PLAYER_TIEMR_ST_NONE,
/* 16 */ PLAYER_TIEMR_ST_NONE,
/* 17 */ PLAYER_TIEMR_ST_NONE,
/* 18 */ PLAYER_TIMER_ST_OSD_CHECK,
/* 19 */ PLAYER_TIMER_ST_MIC_DETECT,
/* 20 */ PLAYER_TIEMR_ST_NONE,
/* 21 */ PLAYER_TIEMR_ST_NONE,
/* 22 */ PLAYER_TIEMR_ST_NONE,
/* 23 */ PLAYER_TIEMR_ST_NONE
};
// *********************************************************************
// Function : void vPlayerTimer(void)
// Description : Trigger non-key dependant event for play module
// Parameter : None
// Return : None
// *********************************************************************
static void vPlayerTimer(void) large
{
BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
#ifdef DVD_MENU_UPDATE_VFD_CIRCLE
BYTE bDom = bSharedInfo(SI_DVD_DOM);
#endif
#ifdef PLAYER_ZOOMIN_INDICATOR
/*for ZoomBr timer*/
if (_bZoomTimer != ZOOM_TIMER_VOID)
{
_bZoomTimer--;
if (_bZoomTimer == 0)
{
if(fgIsZoomBrShow() == TRUE)
{
vZoomBrOff();
}
}
} /* _bIrTimer */
#endif
#ifdef SUPPORT_HDVD_CHANNEL_CHANGE //linshangbo 040505 bg
if(_fgIRAudio)
_bAudioKeyTime++;
#endif //linshangbo 040505 end
/* for UI timer */
if ((_bIrTimer != IR_TIMER_VOID) && (_bIrTimer != IR_TIMER_TIMEOUT))
{
_bIrTimerBeepCnt--;
if(_bIrTimerBeepCnt == 0)
{
_bIrTimerBeepCnt = IR_TIMER_BEEP_PERIOD;
_bIrTimer--;
if (_bIrTimer == 0)
{
_bIrTimer = IR_TIMER_TIMEOUT;
}
}
} /* _bIrTimer */
#if 0//def VIDEOIN_DETECT //billy[060917]
if(bAudioOpenDelay)
{
bAudioOpenDelay--;
if( bAudioOpenDelay==1)
{
vAudioMute(0); // 为消除冲击声,延时200ms后再打开静音
bMuteDisable = 1;
}
}
#endif
/* for player timer state */
_bPlayerTimerBeepCnt--;
#if (defined(DVD_MENU_UPDATE_VFD_CIRCLE) || defined(JPEG_DECODING_UPDATE_VFD_CIRCLE) || defined(VCD_MENU_UPDATE_VFD_CIRCLE))
vPlayerTimerState(bPlayerTimerStateList[_bPlayerTimerBeepCnt%PLAYER_TIMER_BEEP_PERIOD]);
if (_bPlayerTimerBeepCnt == 0)
{
if ( (bSharedInfo(SI_INIT_STATE) > 5) &&//BillDen
#ifdef DVD_MENU_UPDATE_VFD_CIRCLE
(fgIsDvdPlay() && (bSharedInfo(SI_INIT_STATE) == SV_DISC_IDENTIFIED) &&
((bDom == SV_VTSM_DOM) || (bDom == SV_VMGM_DOM))) ||
#endif
#ifdef VCD_MENU_UPDATE_VFD_CIRCLE
(fgIsVcdPlay() && (bPbcState != SV_PAUSE) && (bPbcState != SV_STOP) && (bPbcState != SV_STOP_RESUME)&& (bSharedInfo(SI_TRACK_NO) == 0)) || //BillDen mod 2003.3.17
#endif
#ifdef JPEG_DECODING_UPDATE_VFD_CIRCLE
((fgIsIsoPlay() || fgIsPcdPlay()) && (bPbcState != SV_PAUSE) && (bPbcState != SV_STOP)) || //BillDen
// ((bSharedInfo(SI_PBC_STATE) != SV_PAUSE) && (_bWorkingStt == 0x01))// FSMENU_WKSTT_SPIC
#endif
0
)
{
vVfdRotate(VFD_DISC_SPIN);
}
_bPlayerTimerBeepCnt = PLAYER_TIMER_BEEP_PERIOD*2;
}
#else
vPlayerTimerState(bPlayerTimerStateList[_bPlayerTimerBeepCnt]);
if (_bPlayerTimerBeepCnt == 0)
{
_bPlayerTimerBeepCnt = PLAYER_TIMER_BEEP_PERIOD;
}
#endif
{
/* for screen saver */
_bScrSaverBeepCnt--;
}
if (_bScrSaverBeepCnt == 0)
{
if (fgIsScrSaverOn())
{
#ifdef PLAYER_AUTO_PWR_DOWN
/* use _bScrSaverTimer as temp counter */
if ((_bScrSaverTimer == 0)
#ifdef PAUSE_NO_PWR_DOWN
&& (!fgIsDiscPause(bPbcState) && (bPbcState != SV_STILL)
#endif
#ifdef SETUP_PAUSE_PLAY
&& (bPbcState != SV_SETUP_PAUSE)
#endif
)
{
/* use _bScrSaverBeepCnt as temp variable */
_bScrSaverBeepCnt = bSharedInfo(SH_IR_TIMER_AUTO_PWR_DOWN);
if (_bScrSaverBeepCnt == 0)
{
fgSetPlayPostKey(IR_POWER);
/*bywhy 2003/02/27*/
#ifdef PORTABLEDVD
#ifdef TRUE_POWERDOWN
BBKAutoPDN();
#endif
#endif
_bScrSaverTimer = 5 * ((BYTE)(50 / SCR_SAVER_ON_BEEP_COUNT)); /* 5 seconds based beep count */
}
else
{
_bScrSaverBeepCnt--;
vSetSharedInfo(SH_IR_TIMER_AUTO_PWR_DOWN, _bScrSaverBeepCnt);
_bScrSaverTimer = 5 * ((BYTE)(50 / SCR_SAVER_ON_BEEP_COUNT)); /* 5 seconds based beep count */
}
}
else
{
_bScrSaverTimer--;
}
#endif
if (bEepromReadByte(SCR_SAVER_POSITION) == EV_ON)
{
vScrSaveState();
}
_bScrSaverBeepCnt = SCR_SAVER_ON_BEEP_COUNT;
}
else /* screen saver off */
{
if (fgScrSaverCheck())
{
if (_bScrSaverTimer == 0) /* time up, turn on the screen saver */
{
/* if user allow screen saver */
if (bEepromReadByte(SCR_SAVER_POSITION) == EV_ON)
{
/* enter power save mode */
if(fgIsInSetupMenu())
{
vSetupMenuClose();
}
if(fgIsInBrowser())
{
vBrowserClose();
}
vSendPlayerIdle(); //BillDen move here 2003.3.17
vScrSaveInit();
vScrSaverSetTimeOut(0); //BillDen move here 2003.3.17
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -