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

📄 player.c

📁 mtkDVD源代码程序4*16 很好玩的内置5.1环绕音效 大家可以玩一下
💻 C
📖 第 1 页 / 共 3 页
字号:
    }
    vSetSharedInfo(SI_RISC_SHM_RP, _bShmRp);
  }
  else
  {
    /* no more info to update */
    vClearShmUpdCnt();
  }
#else
  if (_bSMUpdate)
  {
    vHandleSM();
    _bSMUpdate = FALSE;
    ClrSmBusy();
  }
#endif
}

// *********************************************************************
// Function : void vPlayerInit(void) large
// Description :
// Parameter : None
// Return    : None
// *********************************************************************
static void vPlayerInit(void) large
{
  /* note: player function is loaded in vUserInit() */
  
  #ifdef SUPPORT_DRM
  _bDRMState=DRM_MAX_ST;
  _rOsdStateCtx.fgDRMShow=FALSE;
  #endif
  
  _rOsdStateCtx.fgUopUpdate = FALSE;
  _rOsdStateCtx.bUopRetId = UOP_NONE;
  _rOsdStateCtx.bUopRetVal = SV_NO_ERROR;
  _rOsdStateCtx.fgSetupShow = FALSE;
#ifdef PLAYER_GOTO
  _rOsdStateCtx.fgGotoShow = FALSE;  //megaa Goto
  _rOsdStateCtx.fgVRemoteShow = FALSE;  //megaa Goto
#endif
  _rOsdStateCtx.fgZoomBrShow = FALSE;
  _rEqState.bDispType = OSD_EQ_TYPE_DISABLE;

  // 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

  // reset program state
  /* vSelMenuReset(); */
#ifdef PLAYER_PROGRAM
  vSetSharedInfo(SI_USR_PROGRAM_TYPE, SV_PROGRAM_NONE_ITEM);
  /* vSetSharedInfo(SI_USR_PROGRAM_NO, 0); */
  vSetSharedInfo(SI_USR_PROGRAM_NS, 0);
#endif

  /* 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);

#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 SRV_SHOW_ERROR_COUNTER
  _bSrvErrorTimer = 0;
  _bSrvShowErrIdx = 0;

  _pbSrvErrTrace[0] = 0;
  _pbSrvErrTrace[1] = 0;
  _pbSrvErrTrace[2] = 0;
  _pbSrvErrTrace[3] = 0;
  _pbSrvErrTrace[4] = 0;
#endif

  _rUopmapFlag.fgVCDPBCShow = 0;
  _rUopmapFlag.fgVCDLMShow = 0;
  _fgSetupProhibit = FALSE ;    // 20050504, PL00000143

  return;
}

#define PLAYER_TIMER_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 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
      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_TIMER_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_TIMER_ST_NONE,
  /* 03 */ PLAYER_TIMER_ST_NONE,
  /* 04 */ PLAYER_TIMER_ST_NONE,
  /* 05 */ PLAYER_TIMER_ST_NONE,
  /* 06 */ PLAYER_TIMER_ST_OSD_CHECK,
  /* 07 */ PLAYER_TIMER_ST_MIC_DETECT,
  /* 08 */ PLAYER_TIMER_ST_NONE,
  /* 09 */ PLAYER_TIMER_ST_NONE,
  /* 10 */ PLAYER_TIMER_ST_NONE,
  /* 11 */ PLAYER_TIMER_ST_NONE,
  /* 12 */ PLAYER_TIMER_ST_OSD_CHECK,
  /* 13 */ PLAYER_TIMER_ST_NONE,
  /* 14 */ PLAYER_TIMER_ST_NONE,
  /* 15 */ PLAYER_TIMER_ST_NONE,
  /* 16 */ PLAYER_TIMER_ST_NONE,
  /* 17 */ PLAYER_TIMER_ST_NONE,
  /* 18 */ PLAYER_TIMER_ST_OSD_CHECK,
  /* 19 */ PLAYER_TIMER_ST_MIC_DETECT,
  /* 20 */ PLAYER_TIMER_ST_NONE,
  /* 21 */ PLAYER_TIMER_ST_NONE,
  /* 22 */ PLAYER_TIMER_ST_NONE,
  /* 23 */ PLAYER_TIMER_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_SHOW_VFD_WHEEL
  BYTE bDom = bSharedInfo(SI_DVD_DOM);
#endif

  /* 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 */

  /* for player timer state */
  _bPlayerTimerBeepCnt--;
#if (defined(DVD_MENU_SHOW_VFD_WHEEL) || defined(JPEG_DECODING_SHOW_VFD_WHEEL) || defined(VCD_MENU_SHOW_VFD_WHEEL)) 
  vPlayerTimerState(bPlayerTimerStateList[_bPlayerTimerBeepCnt%PLAYER_TIMER_BEEP_PERIOD]);
  if (_bPlayerTimerBeepCnt == 0)
  {
    if ( 
  #ifdef DVD_MENU_SHOW_VFD_WHEEL
        (fgIsDvdPlay() && (bSharedInfo(SI_INIT_STATE) == SV_DISC_IDENTIFIED) && 
        ((bDom == SV_VTSM_DOM) || (bDom == SV_VMGM_DOM))) ||
  #endif
  #ifdef VCD_MENU_SHOW_VFD_WHEEL
        (fgIsVcdPlay() && (bSharedInfo(SI_PBC_STATE) != SV_PAUSE) && (bSharedInfo(SI_TRACK_NO) == 0)) ||
  #endif
  #ifdef JPEG_DECODING_SHOW_VFD_WHEEL
        ((bSharedInfo(SI_PBC_STATE) != SV_PAUSE) && (_bWorkingStt == 0x01)) // FSMENU_WKSTT_SPIC
  #else
        0
  #endif
       )
    {
      VfdWheel(VFD_WHEEL_ROTATE);
    }
    _bPlayerTimerBeepCnt = PLAYER_TIMER_BEEP_PERIOD*2;
  }
#else
  vPlayerTimerState(bPlayerTimerStateList[_bPlayerTimerBeepCnt]);
  if (_bPlayerTimerBeepCnt == 0)
  {
    _bPlayerTimerBeepCnt = PLAYER_TIMER_BEEP_PERIOD;
  }
#endif  

#ifdef AUDIO_IN_EN
  if (fgIsFuncDvd())
#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);
          _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)
      {
        vBmpScrSaveState();
      }

      _bScrSaverBeepCnt = SCR_SAVER_ON_BEEP_COUNT;
    }
    else /* screen saver off */
    {
/*
  Add the '!fgIsPcdPlay()' condition by Bright_liu 2005/12/02, for CQ(PL00001430)
  when enter PCD -> file menu, after several mintues, system hang up!
  Same as ISO.
*/
      if (fgScrSaverCheck() && !fgIsIsoPlay() && !fgIsPcdPlay() && !fgIsInSetupMenu())
      {
        if (_bScrSaverTimer == 0) /* time up, turn on the screen saver */
        {
          /* enter power save mode */
#ifndef REDUCE_POWER_MODE          
          vSendPlayerIdle();
#endif
          /* if user allow screen saver */
          if (bEepromReadByte(SCR_SAVER_POSITION) == EV_ON)
          {
            vBmpScrSaveInit();
          }
          vScrSaverSetTimeOut(0);
        }
        else /* if (_bScrSaverTimer > 0) */
        {
          _bScrSaverTimer--;
          _bScrSaverBeepCnt = SCR_SAVER_OFF_BEEP_COUNT;
        }
      }
      else /* not allow to enter screen save mode */
      {
        /* reset counter */
        vScrSaverSetTimeOut(SCR_SAVER_TIMEOUT);
      }
    } /* screen saver off */
  } /* _bScrSaverBeepCnt */

#ifdef SRV_SHOW_ERROR_COUNTER
  vPlayerShowSrvErr();
#endif

  vAdspTimerJob();

  if (_rUopmapFlag.fgVCDPBCShow)
  {
    if (bSharedInfo(SH_OSD_TIMER_START + 1)<=1)
    {
      if ((bSharedInfo(SI_PBC_CTRL_VALID) == SV_PBC_OFF) ||
          (bSharedInfo(SI_VCD_PBC_OFF) == TRUE))
      {
        vOsdPosShow(OSD_POS_PBC_2, OSD_MSG_PBC_OFF, OSD_TIMEOUT_SHORT);
      }
      else /* disc with PBC and allow it on */
      {
        vOsdPosShow(OSD_POS_PBC_2, OSD_MSG_PBC_ON, OSD_TIMEOUT_SHORT);
      }
      
      _rUopmapFlag.fgVCDPBCShow = 0;
    }
  }

  if (_rUopmapFlag.fgVCDLMShow)
  {
    if (bSharedInfo(SH_OSD_TIMER_START + 1)<=1)
    {
      vOsdPosShow(OSD_POS_LAST_MEM, OSD_MSG_LAST_MEMORY, OSD_TIMEOUT);
      _rUopmapFlag.fgVCDLMShow = 0;
    }
  }

}

// *********************************************************************
// Function : void vIrTimer(void)
// Description :
// Parameter : None
// Return    : None
// *********************************************************************
static void vIrTimer(void) large
{
  BOOL fgRet = UOP_OK;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -