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

📄 vfdshow.c

📁 是MTK公司新出来的DVD方案
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "general.h"

#pragma NOAREGS

#ifndef PLAYER_NO_VFD

/************************************************************************
     Function :
  Description :
    Parameter :
    Return    : None
************************************************************************/
void VfdShowDiscType(BYTE bType) large
{
  switch(bType)
  {
    case SV_DVD_VIDEO:
#ifdef VFDICON_dvdon
      VfdIcon(VFDICON_dvdon);
#endif
      break;

    case SV_DVD_AUDIO:
#ifdef VFDICON_dvd_audio
      VfdIcon(VFDICON_dvd_audio);
#elif defined(VFDICON_dvd)
      VfdIcon(VFDICON_dvd);
#else
      VfdIcon(VFDICON_cdda);
#endif
      break;

    case SV_VCD1_1:
    case SV_VCD2_0:
    case SV_VCD3_0:
      VfdIcon(VFDICON_vcd);
      break;

    case SV_CVD:
#ifdef VFDICON_cvd
      VfdIcon(VFDICON_cvd);
#else
  #ifdef VFDICON_SHOW_CVD_AS_VCD
      VfdIcon(VFDICON_vcd);
  #endif
#endif
      break;

    case SV_VCD6_0:
    case SV_VCD6_1:
#ifdef VFDICON_dvcd
      VfdIcon(VFDICON_dvcd);
#else
      VfdIcon(VFDICON_vcd);
#endif
      break;

    case SV_SVCD:
#ifdef VFDICON_svcd
      VfdIcon(VFDICON_svcd);
#else
      VfdIcon(VFDICON_vcd);
#endif
      break;

    case SV_PCD: // - for KODAK picture CD.
/* move to vPCDShowInit() in pcdshow.c
#ifdef VFDMSG_p_cd
      VfdMsg(VFDMSG_p_cd);
#endif
*/
      break;

    case SV_DTS_CS:
#ifdef VFDICON_dts
      VfdIcon(VFDICON_dts);
#endif
#ifdef VFDICON_cdda
      VfdIcon(VFDICON_cdda);
#endif
      break;

    case SV_CDDA:
    case SV_HDCD:
    case SV_CDG:
#ifdef VFDICON_cdda
      VfdIcon(VFDICON_cdda);
#endif
      break;

    case SV_DATA:
      break;

    case SV_SACD:
#ifdef VFDICON_sacd
      VfdIcon(VFDICON_sacd);
#elif (defined(VFDICON_cdda))
      VfdIcon(VFDICON_cdda);
#endif
      break;

    default:
      break;
  }

#ifdef VFD_HDCD_LED
  if(bType == SV_HDCD)
  {
    VfdLed(TRUE, 0xff); // light on LED
  }
  else
  {
    VfdLed(FALSE, 0xff); // LED off
  }
#endif /* VFD_HDCD_LED */
}

#if 0
/************************************************************************
     Function :
  Description :
    Parameter :
    Return    : None
************************************************************************/
BYTE bVfdShowDiscInfoMsg(BYTE bType) large
{
  switch (bType)
  {
    case SV_DVD_VIDEO:
    case SV_DVD_AUDIO:
#ifdef VFDMSG_DVD
      VfdMsg(VFDMSG_dvd)
      break;
#else
      return VFD_NO_DISC_INFO_MSG;
#endif

    case SV_VCD1_1:
    case SV_VCD2_0:
    case SV_VCD3_0:
    case SV_VCD6_0:
    case SV_VCD6_1:
    case SV_CVD:
#ifdef VFDMSG_VCD
      VfdMsg(VFDMSG_vcd);
      break;
#else
      return VFD_NO_DISC_INFO_MSG;
#endif

    case SV_SVCD:
#ifdef VFDMSG_SVCD
      VfdMsg(VFDMSG_svcd);
      break;
#else
      return VFD_NO_DISC_INFO_MSG;
#endif

    case SV_CDDA:
#ifdef VFDMSG_CDDA
      VfdMsg(VFDMSG_cdda);
      break;
#else
      return VFD_NO_DISC_INFO_MSG;
#endif

    case SV_DTS_CS:
#ifdef VFDMSG_DTSCD
      VfdMsg(VFDMSG_dtscd);
      break;
#elif defined(VFDMSG_CDDA)
      VfdMsg(VFDMSG_cdda);
      break;
#else
      return VFD_NO_DISC_INFO_MSG;
#endif

    case SV_DATA:
    case SV_PCD:
      return VFD_NO_DISC_INFO_MSG;

    default:
      return VFD_NO_DISC_INFO_MSG;
  }

  return 0;
}
#endif

/************************************************************************
     Function :
  Description :
    Parameter :
    Return    : None
************************************************************************/
void VfdShowInitStatus(BYTE bStatus) large
{
  if (bStatus != SV_DISC_IDENTIFIED)
  {
    VfdClearAll();
  }

  switch (bStatus)
  {
    case SV_LOADING_DISC:
      VfdMsg(VFDMSG_loading);
      break;

    case SV_TRAY_OPENING:
      VfdMsg(VFDMSG_open);
      break;

    case SV_TRAY_CLOSING:
      VfdMsg(VFDMSG_close);
      break;

    case SV_TRAY_ERROR:
      break;

    case SV_NO_DISC:
      VfdMsg(VFDMSG_nodisc);
      break;

    case SV_UNKNOWN_DISC:
      VfdMsg(VFDMSG_undisc);
      break;

    case SV_DISC_IDENTIFIED:
/*
#ifdef VFDMSG_init
      VfdMsg(VFDMSG_init);
#endif
*/
      VfdMsg(VFDMSG_loading);
      break;

    default:
      break;
  }

  VfdShowTvType(bSharedInfo(SI_TV_SYSTEM));

#ifdef PSCAN_EN
  VfdShowPScanType(bEepromReadByte(TV_PSCAN_EN_POS), bEepromReadByte(TV_COMP_POS));
#endif

  VfdShowKaraMode(bSharedInfo(SI_KARAOKE_SWITCH));

#ifdef VFD_INIT_STATE_FLASHING
  if (fgIsDiscReady(bStatus))
  {
    VfdSetFlashing(VFD_FLASHING_OFF);
  }
  else
  {
    VfdSetFlashing(VFD_FLASHING_ON);
  }
#endif /* VFD_INIT_STATE_FLASHING */
}

/************************************************************************
     Function :
  Description :
    Parameter :
    Return    : None
************************************************************************/
void VfdStatusRecall(void) large
{
  VfdShowTrick(bSharedInfo(SI_PBC_STATE));
  VfdShowAudioType(bSharedInfo(SI_A_CODE_MODE));
  VfdShowAudioCh(bSharedInfo(SI_A_CH_CFG));
  /* note the following sequence */
  VfdShowUsrMode(bSharedInfo(SI_USR_PBC_CTRL));
  VfdShowRepeatMode(bSharedInfo(SI_REPEAT_MODE));
  VfdShowRepeatAB(bSharedInfo(SI_USR_AUX_CTRL));
}

/************************************************************************
     Function :
  Description :
    Parameter :
    Return    : None
************************************************************************/
void VfdShowStatus(BYTE bStatus) large
{
  BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);

  VfdClearAll();

  switch (bStatus)
  {
    case VFD_STATUS_STOP:
      VfdClearMsg();
      VfdWheel(VFD_WHEEL_CLEAR);
      VfdMsg(VFDMSG_stop);
      VfdIcon(VFDICON_stop);
      break;

    case VFD_STATUS_HOLD: /* STOP_RESUME */
      VfdClearMsg();
      VfdWheel(VFD_WHEEL_CLEAR);
#ifdef VFDMSG_hold
      VfdMsg(VFDMSG_hold);
#else
      VfdMsg(VFDMSG_stop);
#endif
      VfdIcon(VFDICON_stop);
      break;

    case VFD_STATUS_PLAY:
      /* for SVCD/VCD/CD only, recall all VFD status */
      VfdClearMsg();
      VfdIcon(VFDICON_play);
      VfdShowPlayInfo(VFD_INFO_TRACK, 0, bSharedInfo(SI_TRACK_NO));
      VfdShowPbcSwitch(bSharedInfo(SI_PBC_SWITCH) == SV_PBC_ON);
      VfdStatusRecall();
      break;

    case VFD_STATUS_VMGM:
#ifndef DVD_SHOW_MENU_TIME
  #ifdef VFDMSG_title
      VfdMsg(VFDMSG_title);
  #endif
#endif
      VfdShowAudioType(bSharedInfo(SI_A_CODE_MODE));
      VfdShowAudioCh(bSharedInfo(SI_A_CH_CFG));
      break;

    case VFD_STATUS_VTSM:
#ifndef DVD_SHOW_MENU_TIME
  #ifdef VFDMSG_root
      VfdMsg(VFDMSG_root);
  #endif
#endif
      VfdShowAudioType(bSharedInfo(SI_A_CODE_MODE));
      VfdShowAudioCh(bSharedInfo(SI_A_CH_CFG));
      break;

    case VFD_STATUS_VTSTT:
      VfdClearMsg();
#ifdef VFDICON_in_vts
      VfdIcon(VFDICON_in_vts);
#endif
      VfdShowPlayInfo(VFD_INFO_TITLE_CHAPTER, bSharedInfo(SI_TT_NO), bSharedInfo(SI_CHAP_NO));
      VfdShowAngle(bSharedInfo(SI_AGL_NS) > 1);
      VfdStatusRecall();
      break;

    case VFD_STATUS_OFF:
#ifdef VFDMSG_off
      VfdMsg(VFDMSG_off);
#endif
      break;

    case VFD_STATUS_ERROR:
#ifdef VFDMSG_error
      VfdMsg(VFDMSG_error);
#endif
      break;

    case VFD_STATUS_PBC:
#ifdef VFDMSG_pbc_play
      VfdMsg(VFDMSG_pbc_play);
#endif
      VfdIcon(VFDICON_play);
      VfdShowPbcSwitch(TRUE);
      VfdStatusRecall();
      break;

    case VFD_STATUS_DIGEST:
#ifdef VFDMSG_digest
      VfdMsg(VFDMSG_digest);
#endif

    default:
      break;
  } /* switch( status ) */

  VfdShowDiscType(bDiscType);

  VfdShowTvType(bSharedInfo(SI_TV_SYSTEM));

  VfdShowKaraMode(bSharedInfo(SI_KARAOKE_SWITCH));

  return;
}

/************************************************************************
     Function :
  Description :
    Parameter :
    Return    : None
************************************************************************/
void VfdShowTrick(BYTE bMode) large
{
  if (bMode != SV_PAUSE)
  {
#ifdef VFDICON_pause_off
    VfdIcon(VFDICON_pause_off);
#endif
  }

  switch (bMode)
  {
    case SV_PLAY:
      VfdIcon(VFDICON_play);
      break;

    case SV_PAUSE:
#ifdef VFDICON_pause_on
      VfdIcon(VFDICON_pause_on);
#endif
#ifdef VFD_VOLATILE_MSG
  #ifdef VFDMSG_pause
      VfdMsgVolatile(VFDMSG_pause, VFD_MSG_TIMEOUT);
  #endif
#endif
      break;

    case SV_STEP:
    case SV_STEP_BACK:
#ifdef VFDICON_pause_on
      VfdIcon(VFDICON_pause_on);
#endif
      break;

    case SV_FF:
#ifdef VFD_VOLATILE_MSG
  #ifdef VFDMSG_pause
      VfdMsgVolatile(VFDMSG_ff, VFD_MSG_TIMEOUT);
  #endif
#endif
      break;

    case SV_FR:
#ifdef VFD_VOLATILE_MSG
  #ifdef VFDMSG_pause
      VfdMsgVolatile(VFDMSG_fr, VFD_MSG_TIMEOUT);
  #endif
#endif
      break;

    case SV_SF:
    case SV_SR:
    case SV_FREEZE:
      break;

    default:
      break;
  }
}

/************************************************************************
     Function :
  Description :
    Parameter :
    Return    : None
************************************************************************/
void VfdShowPlayInfo(BYTE bType, BYTE bHiSeg, BYTE bLoSeg) large
{
  switch (bType)
  {
    case VFD_INFO_TITLE_CHAPTER: /* for DVD */
      VfdSegment(VFD_TITLE, bHEXToBCD(bHiSeg), 0);
      /*
#ifdef VFD_CHAP100
      VfdSegment(VFD_CHAP100, 0, 1);
#endif
      */
      VfdSegment(VFD_CHAPTER, bHEXToBCD(bLoSeg), 0);
      VfdIcon(VFDICON_title);
      break;

    case VFD_INFO_TRACK: /* for VCD/SVCD ... */
      /* check track range */
      if (bLoSeg > 99)
      {
        bLoSeg = 0;
      }
      VfdClearNum(VFD_TITLE);
      VfdSegment(VFD_CHAPTER, bHEXToBCD(bLoSeg), 0);
      VfdIcon(VFDICON_track);
      break;

    case VFD_INFO_CDDA_TRACK: /* for CDDA ... */
      /* check track range */
      if (bLoSeg > 99)
      {
        bLoSeg = 0;
      }
      VfdClearNum(VFD_TITLE);
      VfdSegment(VFD_CHAPTER, bHEXToBCD(bLoSeg), 0);
      VfdIcon(VFDICON_track);
      break;

    case VFD_INFO_NUMBER: /* for MP3, JPG ... */
#ifdef VFD_CHAP100
      VfdSegment(VFD_CHAP100, bHiSeg, 1); /* note already in BCD */
#else
      VfdSegment(VFD_TITLE, bHiSeg, 1); /* note already in BCD */
#endif
      VfdSegment(VFD_CHAPTER, bLoSeg, 0);
      VfdIcon(VFDICON_track);
      break;

    default:
      break;
  }
}

/************************************************************************
     Function :
  Description :
    Parameter :
    Return    : None
************************************************************************/
void VfdShowPlayTime(BYTE bHour, BYTE bMin, BYTE bSec) large
{
  /* vCheckTimeValid3(bHour, bMin, bSec); */ /* DVD/VCD use different check macro */

  /* to prevent the time mark update too fast, we should add a update timer
     and check it here */
  VfdSegment(VFD_HOUR, bHour, 0);
  VfdSegment(VFD_MINUTE, bMin, 0);
  VfdSegment(VFD_SECOND, bSec, 0);
  VfdIcon(VFDICON_colonon); /* should we show icon here ? */
  VfdWheel(VFD_WHEEL_ROTATE);
}

/************************************************************************
     Function :
  Description :
    Parameter :
    Return    : None
************************************************************************/
void VfdShowUsrMode(BYTE bMode) large
{
  VfdIcon(VFDICON_repeat_off);
#ifdef VFDICON_sequence
  VfdIcon(VFDICON_sequence);
#else
  VfdIcon(VFDICON_a2b_cancel);
  VfdSetIcon(ICON_random, 0);
  VfdSetIcon(ICON_program, 0);
#endif

  switch (bMode)
  {
    case SV_REPEAT_ALL:
      VfdIcon(VFDICON_repeat_all);
      break;

    case SV_REPEAT_TITLE:
#ifdef VFDICON_title_repeat_on
      VfdIcon(VFDICON_title_repeat_on);
#else
      VfdIcon(VFDICON_repeat_all);
#endif
      break;

    case SV_REPEAT_TRACK:
    case SV_REPEAT_LIST:
      VfdIcon(VFDICON_repeat_one);
      break;

    case SV_REPEAT_CHAPTER:
#ifdef VFDICON_chapter_repeat_on
      VfdIcon(VFDICON_chapter_repeat_on);
#else
      VfdIcon(VFDICON_repeat_one);
#endif
      break;

    case SV_REPEAT_SET_A:
#ifdef VFDICON_a2b_a
      VfdIcon(VFDICON_a2b_a);
#endif
      break;

    case SV_REPEAT_AB:
#ifdef VFDICON_a2b_b
      VfdIcon(VFDICON_a2b_b);
#endif

⌨️ 快捷键说明

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