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

📄 combine.c

📁 MTK 1389E SOURCE CODE
💻 C
📖 第 1 页 / 共 5 页
字号:
  {
    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 + -