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

📄 combine.c

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