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

📄 show_cda.c

📁 MTK 1389E SOURCE CODE
💻 C
字号:
/**********************************************************************/
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/
/***************                                       ****************/
/***************  $Modtime:: 04/08/27 9:40a    $       ****************/
/***************  $Revision:: 1                $       ****************/
/***************                                       ****************/
/***************   Description :                       ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer :                       ****************/
/**********************************************************************/

#define _SHOW_CDDA_C_

#pragma NOAREGS
#include "general.h"

#ifndef CDDA_USE_CDFS
// *********************************************************************
// Initial OSD state for CDDA
// *********************************************************************
void vCDDAShowInit(void) large
{
  BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);

#if (defined(CDDA_AUTO_DISPLAY) || defined(CDDA_NO_DISPLAY_OFF))
  _rOsdStateCtx.fgTimeShow = TRUE;
  _rOsdStateCtx.bTimeType = OSD_SHOW_SINGLE_ELAPSED;
  #ifdef KEEP_REMAIN_TYPE_SHOW
  _rOsdStateCtx.fgRemainMsgShow = TRUE;
  _rOsdStateCtx.fgPlayInfoShow = TRUE;
  #else
  _rOsdStateCtx.fgRemainMsgShow = FALSE;
  _rOsdStateCtx.fgPlayInfoShow = FALSE;
  #endif
#else
  _rOsdStateCtx.fgTimeShow = FALSE;
  _rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
  _rOsdStateCtx.fgRemainMsgShow = FALSE;
  _rOsdStateCtx.fgPlayInfoShow = FALSE;
#endif
  _rOsdStateCtx.bPlayInfoType = OSD_INFO_DISABLE;
  _rOsdStateCtx.fgPlayShow = TRUE;
  _rOsdStateCtx.bPlayType = OSD_SHOW_PLAY;
  _rOsdStateCtx.fgRepeatShow = TRUE;
  _rOsdStateCtx.fgABShow = TRUE;
  _rOsdStateCtx.fgUsrCtrlShow = TRUE;
  _rOsdStateCtx.fgZoomShow = TRUE;
#ifndef ENFORCE_OSD_SHOW_TIME_LEFT
#ifdef TIME_INFO_SAME_LINE
  _rOsdStateCtx.fgTimePos = OSD_SHOW_TIME_RIGHT;
#else
  _rOsdStateCtx.fgTimePos = OSD_SHOW_TIME_LEFT;
#endif
#else
  _rOsdStateCtx.fgTimePos = OSD_SHOW_TIME_LEFT;
#endif /* ENFORCE_OSD_SHOW_TIME_LEFT */  

#ifdef KEEP_REMAIN_TYPE_SHOW
  if (_rOsdStateCtx.fgRemainMsgShow == TRUE)
  {
    vVCDShowRemainMsg(FALSE);
  }
#endif

#ifdef CDDA_AUTO_PLAY
  if (bDiscType != SV_CDG)
#endif
  {
    vPlayerShowLogo(CDDA_STOP_LOGO, CDDA_LOGO_COLOR);
  }
}

// *********************************************************************
// Check if current time mark display mode is valid
// *********************************************************************
BYTE bCddaCheckRemainShow(BOOL fgCheckOnly, BYTE bCurrType) large
{
  BOOL fgChange = FALSE;
  BYTE bType;

#ifdef USR_PBC_NO_TOTAL_TIME
  BYTE bUsrPbc = bSharedInfo(SI_USR_PBC_CTRL);

  if (fgIsUsrCtrlMode(bUsrPbc))
  {
    if (fgCheckOnly == TRUE)
    {
      if (_rOsdStateCtx.bTimeType == OSD_SHOW_DISABLE)
      {
        bType = OSD_SHOW_SINGLE_ELAPSED;
        fgChange = TRUE;
      }
      else if ((bCurrType != OSD_SHOW_SINGLE_ELAPSED) &&
               (bCurrType != OSD_SHOW_SINGLE_REMAIN))
      {
        bType = OSD_SHOW_DISABLE;
        fgChange = TRUE;
      }
    }
    else /* if (fgCheckOnly == FALSE) */
    {
      if (bCurrType == OSD_SHOW_TOTAL_ELAPSED)
      {
        bType = OSD_SHOW_SINGLE_ELAPSED;
        fgChange = TRUE;
      }
      else if (bCurrType == OSD_SHOW_TOTAL_REMAIN)
      {
        bType = OSD_SHOW_SINGLE_REMAIN;
        fgChange = TRUE;
      }
    }
  }
#endif /* USR_PBC_NO_TOTAL_TIME */

  if ((fgChange == TRUE) && (fgCheckOnly == FALSE))
  {
    _rOsdStateCtx.bTimeType = bType;

    vVCDShowRemainMsg(FALSE);
    vVCDShowTimeMark(TRUE);
  }

  if (fgChange == FALSE)
  {
    if (bCurrType > OSD_SHOW_VCD_REMAIN_MAX)
    {
      bType = OSD_SHOW_DISABLE;
    }
    else
    {
      bType = bCurrType;
    }
  }

#ifdef CDDA_NO_DISPLAY_OFF
  if (fgIsCddaPlay())
  {
    if (bType == OSD_SHOW_DISABLE)
    {
      bType = OSD_SHOW_SINGLE_ELAPSED;
    }
  }
#endif /* CDDA_NO_DISPLAY_OFF */

  return (bType);
}

// *********************************************************************
// Function : void vCDDAShowPlayInfo(BYTE bItem)
// Description :
// Parameter : None
// Return    : None
// *********************************************************************
void vCDDAShowPlayInfo(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 */
    VfdShowPlayInfo(VFD_INFO_CDDA_TRACK, 0, bTrkNo);
  }

  /* update OSD */
  if (_rOsdStateCtx.bTimeType == OSD_SHOW_DISABLE)
  {
    vOsdPosClear(OSD_POS_PLAY_INFO);
  }
  else
  {
    vOsdShowTrack(OSD_TOTAL_TRACK, bTrkNo, bTrkNs, OSD_NO_DISAPPEAR);
#ifdef SHOW_CD_TEXT   
    vClearWB(WB_NORMAL_PBC2);
    vOsdShowCDTextXY(0, 0, CDTEXT_TRACK_NAME, WB_NORMAL_PBC2, bTrkNo); 
#endif    
  }
}

// *********************************************************************
// Show trick mode
// *********************************************************************
void vCDDAShowTrick(BYTE bState) large
{
  BYTE bSpeed = bSharedInfo(SI_PBC_SPEED);
  BYTE bType = bSharedInfo(SI_DISC_TYPE);

  if ((bState == SV_FF) || (bState == SV_FR))
  {
    if (bSpeed >= CDDA_FAST_MAX)
    {
      bSpeed = CDDA_FAST_MAX - 1;
    }
    bSpeed = pbCDDAFastDispTbl[bSpeed];
  }
  else if ((bState == SV_SF) || (bState == SV_SR))
  {
    if (bSpeed >= CDDA_SLOW_MAX)
    {
      bSpeed = CDDA_SLOW_MAX - 1;
    }
    bSpeed = pbCDDASlowDispTbl[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 :
    Parameter :
    Return    :
************************************************************************/
void vCDDAShowStopResumeState(void) large
{
  BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);

  /* show LOGO first */
  if ((bDiscType != SV_CDG) || (CDDA_STOP_LOGO == SV_LOGO_COLOR))
  {
    vPlayerShowLogo(CDDA_STOP_LOGO, CDDA_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 vCDDAShowStopState(void) large
{
  /* show LOGO first */
  vPlayerShowLogo(CDDA_STOP_LOGO, CDDA_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

#ifdef SHOW_CD_TEXT
  vClearWB(WB_NORMAL_PBC2);
  vOsdShowCDTextXY(0, 0, CDTEXT_TITLE_NAME, WB_NORMAL_PBC2, 0); 
#endif
}

/************************************************************************
     Function :
  Description : recall all displayed information
    Parameter :
    Return    :
************************************************************************/
void vCDDAStatusDispRecall(void) large
{
  VfdShowStatus(VFD_STATUS_PLAY);
  VfdShowPlayTime(0, 0, 0);

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

  vVCDShowRemainMsg(FALSE);
  vVCDShowTimeMark(TRUE);
  vCDDAShowPlayInfo(bSIItemIndex(SI_TRACK_NO));
}
#endif /*#ifndef CDDA_USE_CDFS */

⌨️ 快捷键说明

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