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

📄 show_vcd.c

📁 MTK 1389E SOURCE CODE
💻 C
📖 第 1 页 / 共 2 页
字号:
// *********************************************************************
void vVCDShowDomainInfo(void) large
{
  BYTE bDom = bSharedInfo(SI_DVD_DOM);

#ifdef VFD_SHOW_PBC_PLAY
  if ((bSharedInfo(SI_PBC_SWITCH) == SV_PBC_ON) &&
      (bDom == SV_SELECT_LIST) && (bSharedInfo(SI_TRACK_NO) == 0))
  {
    /* play segment, show PBC MENU here */
    VfdShowStatus(VFD_STATUS_PBC);
  }
  else /* in PLAY LIST or play track in SELECT LIST */
#endif /* VFD_SHOW_PBC_PLAY */
  {
    /* refresh time info and play info */
    VfdShowStatus(VFD_STATUS_PLAY);
    
    /* HACK code: show time mark ASAP */
    if (bSharedInfo(SI_PBC_SWITCH) == SV_PBC_ON)
    {
      VfdShowPlayTime(0, 0, 0);
    }
  }

  /* update panel L/R icon, not show OSD */
  vVCDShowAudioLR(FALSE);
}

// *********************************************************************
// Function : void vVCDShowPlayInfo(BYTE bItem)
// Description :
// Parameter : None
// Return    : None
// *********************************************************************
void vVCDShowPlayInfo(BYTE bItem) large
{
  BYTE bTrkNo = bSharedInfo(SI_TRACK_NO);
  BYTE bTrkNs = bSharedInfo(SI_TRACK_NS);
  BYTE bState = bSharedInfo(SI_PBC_STATE);

  if (bItem == PLAY_INFO_CLEAR)
  {
    vOsdPosClear(OSD_POS_PLAY_INFO);
    return;
  }
  else if (bItem > 0) /* if called from RISC notification */
  {
    /* update VFD first */
    if (fgIsDiscPlay(bState)
#ifndef VCD_DGST_SHOW_MSG_ONLY
        || fgIsInDigest(bState)
#endif
        )
    {
      if ((bSharedInfo(SI_PBC_SWITCH) == SV_PBC_ON) && (bSharedInfo(SI_VCD_DOM) == SV_SELECT_LIST))
      {
        vVCDShowDomainInfo();
      }
      else /* if ((bSharedInfo(SI_PBC_SWITCH) == SV_PBC_OFF) || (bSharedInfo(SI_VCD_DOM) == SV_PLAY_LIST)) */
      {
        VfdShowPlayInfo(VFD_INFO_TRACK, 0, bTrkNo);
      }
    }
#ifdef VCD_MENU_NO_ZOOM_OUT
    if ((bSharedInfo(SI_TRACK_NO) == 0) && (bSharedInfo(SI_ZOOM_SWITCH) >= SV_ZOOM_OUT_MIN))
    {
      vSendUopCmd(UOP_ZOOM_IN, SV_ZOOM_OFF, 0, 0);
    }
#endif /* VCD_MENU_NO_ZOOM_OUT */
#ifdef VCD_MENU_NO_ZOOM_IN
    if ((bSharedInfo(SI_TRACK_NO) == 0) && (bSharedInfo(SI_ZOOM_SWITCH) >= SV_ZOOM_IN_MIN))
    {
      vSendUopCmd(UOP_ZOOM_IN, SV_ZOOM_OFF, 0, 0);
    }
#endif /* VCD_MENU_NO_ZOOM_IN */
  }

  /* update OSD */
  if (bTrkNs == 0)
  {
    vOsdPosClear(OSD_POS_PLAY_INFO);
  }
  else /* if (!fgIsSearchInputState()) */ /* we have move the search info to layer 2 */
  {
    if (_rOsdStateCtx.bTimeType == OSD_SHOW_DISABLE)
    {
      if ((bItem == 0) && fgIsUopRetOK(UOP_TRACK_PLAY)) /* if called from UOP return */
      {
        vOsdShowSelectTrk(bTrkNo, bTrkNs, 2, OSD_TIMEOUT_SHORT);
      }
      else
      {
        vOsdPosClear(OSD_POS_PLAY_INFO);
      }
    }
    else
    {
      if (_rOsdStateCtx.fgPlayInfoShow == TRUE)
      {
        vOsdShowTrack(OSD_TOTAL_TRACK, bTrkNo, bTrkNs, OSD_NO_DISAPPEAR);
      }
      else
      {
        vOsdShowTrack(OSD_TOTAL_TRACK, bTrkNo, bTrkNs, IR_TIMEOUT_DISPLAY);
      }
    }
  }
}

#ifndef NEW_SHOW
// *********************************************************************
// Show trick mode
// *********************************************************************
void vVCDShowTrick(BYTE bState) large
{
  BYTE bSpeed = bSharedInfo(SI_PBC_SPEED);

  if ((bState == SV_FF) || (bState == SV_FR))
  {
    if (bSpeed >= VCD_FAST_MAX)
    {
      bSpeed = VCD_FAST_MAX - 1;
    }
    bSpeed = pbVCDFastDispTbl[bSpeed];
  }
#if ((!defined DISABLE_SF) && (!defined DISABLE_SR))   
  else if ((bState == SV_SF) || (bState == SV_SR))
  {
    if (bSpeed >= VCD_SLOW_MAX)
    {
      bSpeed = VCD_SLOW_MAX - 1;
    }
    bSpeed = pbVCDSlowDispTbl[bSpeed];
  }
#endif  

  switch (bState)
  {
    case SV_FF:
      vOsdShowPbcState(SV_FF, bSpeed, OSD_NO_DISAPPEAR);
      break;

    case SV_SF:
      vOsdShowPbcState(SV_SF, bSpeed, OSD_NO_DISAPPEAR);
      break;

    case SV_FR:
      vOsdShowPbcState(SV_FR, bSpeed, OSD_NO_DISAPPEAR);
      break;

    case SV_SR:
      vOsdShowPbcState(SV_SR, bSpeed, OSD_NO_DISAPPEAR);
      break;

    default:
      break;
  }
}
#endif /*#ifndef NEW_SHOW */
/************************************************************************
     Function :
  Description : Show Audio L/R for SVCD/VCD/CDDA
    Parameter :
    Return    :
************************************************************************/
void vVCDShowAudioLR(BOOL fgShowOsd) large
{
  BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
  BYTE bType = bAdspCurrVocal();
  BYTE bACode = bSharedInfo(SI_A_CODE_MODE);
  WORD wMsg = 0xffff;

  if (bACode == SV_A_CODE_NONE)
  {
    VfdShowAudioLR(VFD_LR_CLEAR);
    return;
  }
#ifndef CDDA_USE_CDFS    
  else if (fgIsCddaPlay())
  {
    if (bACode == SV_A_CODE_DTS)
    {
      /* no show for DTS-CD */
      VfdShowAudioLR(VFD_LR_CLEAR);
      return;
    }
  }
#endif  
  else if (IS_SVCD_TYPE(bDiscType))
  {
    if (bSharedInfo(SI_A_CH_CFG) != SV_A_CH_20_0)
    {
      /* no show for multi-channel SVCD */
      VfdShowAudioLR(VFD_LR_CLEAR);
      return;
    }
  }    

  // FIXME: multi channel for SVCD
  switch (bType)
  {
    case AUDIO_MONO_LEFT:
      wMsg = OSD_MSG_MONO_LEFT;
      VfdShowAudioLR(VFD_MONO_LEFT);
      break;

    case AUDIO_MONO_RIGHT:
      wMsg = OSD_MSG_MONO_RIGHT;
      VfdShowAudioLR(VFD_MONO_RIGHT);
      break;

    case AUDIO_MONO_MIXED:
      wMsg = OSD_MSG_MIXED_MONO;
      VfdShowAudioLR(VFD_STEREO);
      break;

    case AUDIO_STEREO:
    default:
      wMsg = OSD_MSG_STEREO;
      VfdShowAudioLR(VFD_STEREO);
      break;
  } /* switch */

  if ((fgShowOsd) && (wMsg != 0xffff))
  {
    vOsdPosShow(OSD_POS_NORMAL, wMsg, OSD_TIMEOUT_SHORT);
  }
}

#ifndef NEW_SHOW
/************************************************************************
     Function :
  Description :
    Parameter :
    Return    :
************************************************************************/
void vVCDShowStopResumeState(void) large
{
  /* show LOGO first */
  vPlayerShowLogo(VCD_STOP_LOGO, VCD_LOGO_COLOR);

#if (STOP_RESUME_STYLE == STOP_RESUME_TWO_KEYS)
  /* these message will be cleared by key map function */
  vOsdPosShow(OSD_POS_STOP_MSG1, OSD_MSG_PLAY_KEY_RESTART, OSD_NO_DISAPPEAR);
  vOsdPosShow(OSD_POS_STOP_MSG2, OSD_MSG_RESUME_KEY_CONTINUE, OSD_NO_DISAPPEAR);
#elif (STOP_RESUME_STYLE == STOP_RESUME_TWO_STOP)
  /* this message will be cleared by key map function */
  vOsdPosShow(OSD_POS_STOP_MSG1, OSD_MSG_PLAY_KEY_CONTINUE, OSD_NO_DISAPPEAR);
#endif /* STOP_RESUME_STYLE */
}


/************************************************************************
     Function :
  Description :
    Parameter :
    Return    :
************************************************************************/
void vVCDShowStopState(void) large
{
  /* show LOGO first */
  vPlayerShowLogo(VCD_STOP_LOGO, VCD_LOGO_COLOR);

  /* reset OSD play state show */
  vOsdShowWb(OSD_WB_CLEAR);

  vOsdShowPbcState(SV_STOP, 0, OSD_NO_DISAPPEAR);

#if 0
  vVCDShowTimeMark(TRUE);
  vOsdShowTrack(OSD_TOTAL, 0, bSharedInfo(SI_TRACK_NS), OSD_NO_DISAPPEAR);
#endif
}
#endif /*#ifndef NEW_SHOW */

/************************************************************************
     Function :
  Description : recall all displayed information
    Parameter :
    Return    :
************************************************************************/
void vVCDStatusDispRecall(void) large
{
  vVCDShowDomainInfo();
  vVCDShowRemainMsg(FALSE);
#ifndef NEW_SHOW        
  vVCDShowTimeMark(TRUE);
#else
    vShowTimeMark(TRUE);
#endif  
  vVCDShowPlayInfo(bSIItemIndex(SI_TRACK_NO));

  /* note only VFD only, OSD is update in play_vcd.c */
  VfdShowPbcSwitch(bSharedInfo(SI_PBC_SWITCH) == SV_PBC_ON);
}

/************************************************************************
     Function :
  Description : 
    Parameter :
    Return    :
************************************************************************/
void vVCDChangeRemainType(BYTE bType) large
{
  if (bType == OSD_SHOW_DISP_CHG_INIT)
  {
    vOsdPosShow(OSD_POS_REMAIN_MSG, pwVcdDispModeMsg[_rOsdStateCtx.bTimeType], OSD_NO_DISAPPEAR);
    vOsdShowTrack(OSD_TOTAL_TRACK, bSharedInfo(SI_TRACK_NO), bSharedInfo(SI_TRACK_NS), OSD_NO_DISAPPEAR);
  }
  else if (bType == OSD_SHOW_DISP_CHG_EXIT)
  {
    vOsdPosClear(OSD_POS_REMAIN_MSG);
    vVCDShowPlayInfo(PLAY_INFO_CLEAR);

    if (_rOsdStateCtx.fgRemainMsgShow == TRUE)
    {
      vVCDShowRemainMsg(FALSE);
    }
    if (_rOsdStateCtx.fgPlayInfoShow == TRUE)
    {
#ifndef CDDA_USE_CDFS    	
      if (fgIsCddaPlay())
      {
        vCDDAShowPlayInfo(0);
      }
      else
#endif      
      {
        vVCDShowPlayInfo(0);
      }
    }
  }
  else
  {
    _rOsdStateCtx.bTimeType = bType;
    
    vVCDShowRemainMsg(TRUE);
#ifndef CDDA_USE_CDFS
    if (fgIsCddaPlay())
    {
      vCDDAShowPlayInfo(0);
    }
    else
#endif    
    {
      vVCDShowPlayInfo(0);
    }
  }
  
#ifndef NEW_SHOW        
  vVCDShowTimeMark(TRUE);
#else
    vShowTimeMark(TRUE);
#endif  
}

#ifndef NEW_SHOW
/************************************************************************
     Function :
  Description : 
    Parameter :
    Return    :
************************************************************************/
BOOL fgVCDCheckSelectRange(BYTE bNum) large
{
  if ((bSharedInfo(SI_VCD_DOM) == SV_SELECT_LIST) && 
      (bNum >= bSharedInfo(SI_MENU_SEL_RNG_START)) &&
      (bNum <= bSharedInfo(SI_MENU_SEL_RNG_END)))
  {
    return (TRUE);
  }
  else
  {
    return (FALSE);
  }
}
#endif /* #ifndef NEW_SHOW */

#endif /* VCD_SUPPORT */

⌨️ 快捷键说明

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