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

📄 show_vcd.c

📁 mtk1389L latest sourcecode enjoy
💻 C
📖 第 1 页 / 共 2 页
字号:
  {
      /* for SVCD/VCD/CD only, recall all VFD status */
      vVfdMessageClr();
      vVfdSymbol(VFD_SYM_PLAY);
      bDom=bSharedInfo(SI_TRACK_NO);
      if (bDom<=99)
        vVfdWord(VFD_WORD_CH, bHEXToBCD(bDom), 1);      	
      else
        vVfdWord(VFD_WORD_CH, 0, 1);      	

      vVfdWordClr(VFD_WORD_TT);
      vVfdSymbol(VFD_SYM_PLAYINFO_TRACK);

      if(bSharedInfo(SI_PBC_SWITCH) == SV_PBC_ON)
        vVfdSymbol(VFD_SYM_PBC_ON);
      else
        vVfdSymbol(VFD_SYM_PBC_OFF);

      vVfdUpdateAll();

    
    /* HACK code: show time mark ASAP */
    if (bSharedInfo(SI_PBC_SWITCH) == SV_PBC_ON)
    {
      vVfdUpdateTime(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)) */
      {

      if (bTrkNo > 99)
        vVfdWord(VFD_WORD_CH, 0, 1);      	
      else
        vVfdWord(VFD_WORD_CH, bHEXToBCD(bTrkNo), 1);      	
      vVfdWordClr(VFD_WORD_TT);
      vVfdSymbol(VFD_SYM_PLAYINFO_TRACK);

      }
    }
#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);
      }
    }
  }
}

// *********************************************************************
// 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];
  }
  else if ((bState == SV_SF) || (bState == SV_SR))
  {
    if (bSpeed >= VCD_SLOW_MAX)
    {
      bSpeed = VCD_SLOW_MAX - 1;
    }
    bSpeed = pbVCDSlowDispTbl[bSpeed];
  }

  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;
  }
}

/************************************************************************
     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)
  {
    vVfdSymbol(VFD_SYM_A_STEREO_OFF);
    return;
  }
  else if (fgIsCddaPlay())
  {
    if (bACode == SV_A_CODE_DTS)
    {
      /* no show for DTS-CD */
      vVfdSymbol(VFD_SYM_A_STEREO_OFF);
      return;
    }
  }
  else if (IS_SVCD_TYPE(bDiscType))
  {
    if (bSharedInfo(SI_A_CH_CFG) != SV_A_CH_20_0)
    {
      /* no show for multi-channel SVCD */
      vVfdSymbol(VFD_SYM_A_STEREO_OFF);


      return;
    }
  }    

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

      vVfdSymbol(VFD_SYM_A_LL);

      break;

    case AUDIO_MONO_RIGHT:
      wMsg = OSD_MSG_MONO_RIGHT;

      vVfdSymbol(VFD_SYM_A_RR);

      break;

    case AUDIO_MONO_MIXED:
      wMsg = OSD_MSG_MIXED_MONO;

      vVfdSymbol(VFD_SYM_A_STEREO); /* two speaker */

      break;

    case AUDIO_STEREO:
    default:
      wMsg = OSD_MSG_STEREO;

      vVfdSymbol(VFD_SYM_A_STEREO); /* two speaker */

      break;
  } /* switch */

/*
  Add the '!fgIsInGoto()' condition by Bright_liu 2005/11/21, for CQ(PL00205087)
  when in GOTO mode, show the message will cause the WB error.
*/
  if ((fgShowOsd) && (wMsg != 0xffff) && !fgIsInGoto())
  {
    vOsdPosShow(OSD_POS_NORMAL, wMsg, OSD_TIMEOUT_SHORT);
  }
}

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

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

  /* note only VFD only, OSD is update in play_vcd.c */
  if (bSharedInfo(SI_PBC_SWITCH) == SV_PBC_ON)
    vVfdSymbol(VFD_SYM_PBC_ON);
  else
    vVfdSymbol(VFD_SYM_PBC_OFF);					

}

/************************************************************************
     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)
    {
      if (fgIsCddaPlay())
      {
        vCDDAShowPlayInfo(0);
      }
      else
      {
        vVCDShowPlayInfo(0);
      }
    }
  }
  else
  {
    _rOsdStateCtx.bTimeType = bType;
    
    vVCDShowRemainMsg(TRUE);
    if (fgIsCddaPlay())
    {
      vCDDAShowPlayInfo(0);
    }
    else
    {
      vVCDShowPlayInfo(0);
    }
  }
  
  vVCDShowTimeMark(TRUE);
}

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

⌨️ 快捷键说明

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