⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 player.c

📁 MTK portableDVD 采用mtk1389方案的代码
💻 C
📖 第 1 页 / 共 4 页
字号:
#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 + -