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

📄 show_vcd.c

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

#define _SHOW_VCD_C_

#pragma NOAREGS
#include "general.h"

#if((!defined CDDA_USE_CDFS) || (!defined NEW_SHOW )) 
// *********************************************************************
// Show time mark
// *********************************************************************
void vVCDShowTimeMark(BYTE fgClear) large
{
  BYTE bMin, bSec;
  BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
  BYTE bTrkNo = bSharedInfo(SI_TRACK_NO);

  switch(_rOsdStateCtx.bTimeType)
  {
    case OSD_SHOW_DISABLE:
      if (fgClear)
      {
        vOsdShowTimeClear();
      }
      /* for VFD */
#if 0 /* disc elapsed time */
      bMin = bSharedInfo(SI_TIME_MM);
      bSec = bSharedInfo(SI_TIME_SS);
#else /* track elsapsed time */
      bMin = bSharedInfo(SI_TIME_TRACK_MM);
      bSec = bSharedInfo(SI_TIME_TRACK_SS);
#endif
      break;

    case OSD_SHOW_SINGLE_ELAPSED:
      bMin = bSharedInfo(SI_TIME_TRACK_MM);
      bSec = bSharedInfo(SI_TIME_TRACK_SS);
      break;

    case OSD_SHOW_SINGLE_REMAIN:
      bMin = bSharedInfo(SI_TIME_TRACK_RMN_MM);
      bSec = bSharedInfo(SI_TIME_TRACK_RMN_SS);
      break;

    case OSD_SHOW_TOTAL_ELAPSED:
      bMin = bSharedInfo(SI_TIME_MM);
      bSec = bSharedInfo(SI_TIME_SS);
      break;

    case OSD_SHOW_TOTAL_REMAIN:
      bMin = bSharedInfo(SI_TIME_RMN_MM);
      bSec = bSharedInfo(SI_TIME_RMN_SS);
      break;

    default:
      _rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
      return;
  }

  if (fgIsInDigest(bPbcState) && (fgIsCddaPlay()
#ifndef VCD_DGST_SHOW_MSG_ONLY
                                  || fgIsVcdPlay()
#endif
                                  ))
  {
    /* keep time mark show */
  }
  else if (!fgIsDiscPlay(bPbcState))
  {
    bMin = bSharedInfo(SI_TIME_TOTAL_MM);
    bSec = bSharedInfo(SI_TIME_TOTAL_SS);
  }

  // 3/25 mark by Jerry, Some Segment Play Item is Motion Picture
#if 0  
  if (bTrkNo == 0) /* for PBC menu */
  {
    bMin = 0; bSec = 0;
  }
#endif  

  if (_rOsdStateCtx.bTimeType != OSD_SHOW_DISABLE)
  {
    vOsdShowTimeRemain2(bMin, bSec, OSD_NO_DISAPPEAR);
  }

  if ((bPbcState != SV_STOP)
#ifndef VCD_VFD_TRACK0_SHOW_TIME  
  && (bTrkNo != 0)
#endif
#ifdef VCD_DGST_SHOW_MSG_ONLY
      && (!fgIsInDigest(bPbcState) && fgIsVcdPlay())
#endif
     )
  {
#ifdef VCD_VFD_SHOW_HOUR
    if (bMin > 0x59)
    {
      VfdShowPlayTime(1, bMin-0x60, bSec);
    }
    else
#endif
    {
      VfdShowPlayTime(0, bMin, bSec);
    }
  }
}
#endif /* CDDA_USE_CDFS */

#ifdef VCD_SUPPORT
#ifndef NEW_SHOW
// *********************************************************************
// Initial OSD state for VCD
// *********************************************************************
void vVCDShowInit(void) large
{
  _rOsdStateCtx.fgTimeShow = TRUE;
  _rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
#ifdef KEEP_REMAIN_TYPE_SHOW
  _rOsdStateCtx.fgRemainMsgShow = TRUE;
#else
  _rOsdStateCtx.fgRemainMsgShow = FALSE;
#endif
  _rOsdStateCtx.fgPlayInfoShow = TRUE;
  _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 */  

#ifndef VCD_AUTO_PLAY
  vPlayerShowLogo(VCD_STOP_LOGO, VCD_LOGO_COLOR);
#endif
}



void vVCDShowTotalTimeMark(void) large
{
  BYTE bMin, bSec;
  BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
  BYTE bTrkNo = bSharedInfo(SI_TRACK_NO);

  switch(_rOsdStateCtx.bTimeType)
  {
    case OSD_SHOW_DISABLE:
      vOsdShowTimeClear();
      /* for VFD */
      /* disc/track elapsed time */
      bMin = 0;
      bSec = 0;
      break;

    case OSD_SHOW_SINGLE_ELAPSED:
      bMin = 0;
      bSec = 0;
      break;

    case OSD_SHOW_SINGLE_REMAIN:
      bMin = bSharedInfo(SI_TIME_TOTAL_TRACK_MM);
      bSec = bSharedInfo(SI_TIME_TOTAL_TRACK_SS);
      break;

    case OSD_SHOW_TOTAL_ELAPSED:
      bMin = 0;
      bSec = 0;
      break;

    case OSD_SHOW_TOTAL_REMAIN:
      bMin = bSharedInfo(SI_TIME_TOTAL_MM);
      bSec = bSharedInfo(SI_TIME_TOTAL_SS);
      break;

    default:
      _rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
      return;
  }

  if (bSharedInfo(SI_TRACK_NO) == 0) /* for PBC menu */
  {
    bMin = 0; bSec = 0;
  }

  if (_rOsdStateCtx.bTimeType != OSD_SHOW_DISABLE)
  {
    vOsdShowTimeRemain2(bMin, bSec, OSD_NO_DISAPPEAR);
  }

  if (bTrkNo != 0)
  {
#ifdef VCD_VFD_SHOW_HOUR
    if (bMin > 0x59)
    {
      VfdShowPlayTime(1, bMin-0x60, bSec);
    }
    else
#endif
    {
      VfdShowPlayTime(0, bMin, bSec);
    }
  }
}
#endif /* #ifndef NEW_SHOW */
static code WORD pwVcdDispModeMsg[5] =
{
  OSD_MSG_DISPLAY_OFF,
  OSD_MSG_SINGLE_ELAPSED,
  OSD_MSG_SINGLE_REMAIN,
  OSD_MSG_TOTAL_ELAPSED,
  OSD_MSG_TOTAL_REMAIN,
};

void vVCDShowRemainMsg(BYTE fgShowOff) large
{
  BYTE bPbcState = bSharedInfo(SI_PBC_STATE);

  if ((fgShowOff == FALSE) && (_rOsdStateCtx.bTimeType == OSD_SHOW_DISABLE))
  {
    return;
  }

  if (!fgIsDiscPlay(bPbcState))
  {
    vOsdPosClear(OSD_POS_REMAIN_MSG);
  }
  else if (_rOsdStateCtx.bTimeType != OSD_SHOW_DISABLE)
  {
    if (_rOsdStateCtx.fgRemainMsgShow == TRUE)
    {
      vOsdPosShow(OSD_POS_REMAIN_MSG, pwVcdDispModeMsg[_rOsdStateCtx.bTimeType], OSD_NO_DISAPPEAR);
    }
    else
    {
      vOsdPosShow(OSD_POS_REMAIN_MSG, pwVcdDispModeMsg[_rOsdStateCtx.bTimeType], OSD_TIMEOUT_SHORT);
    }

    vVCDShowPlayInfo(0);
  }
  else /* OSD_SHOW_DISABLE */
  {
    if ((bSharedInfo(SI_PBC_SWITCH) == SV_PBC_OFF) || (bSharedInfo(SI_VCD_DOM) == SV_PLAY_LIST))
    {
      vOsdPosShow(OSD_POS_REMAIN_MSG, pwVcdDispModeMsg[_rOsdStateCtx.bTimeType], OSD_TIMEOUT);
    }
    else
    {
      vOsdPosClear(OSD_POS_REMAIN_MSG);
    }
  }
}

// *********************************************************************
// Check if current time mark display mode is valid
// *********************************************************************
BYTE bVcdCheckRemainShow(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) && (bUsrPbc != SV_USR_DIGEST)) ||
      (bSharedInfo(SI_PBC_SWITCH) == SV_PBC_ON))
  {
    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;
      }
    }
  }
#else /* not USR_PBC_NO_TOTAL_TIME */
  if (bSharedInfo(SI_PBC_SWITCH) == SV_PBC_ON)
  {
    if (fgCheckOnly == TRUE)
    {
      if ((bCurrType != OSD_SHOW_SINGLE_ELAPSED) &&
          (bCurrType != OSD_SHOW_SINGLE_REMAIN))
      {
        if (_rOsdStateCtx.bTimeType == OSD_SHOW_DISABLE)
        {
          bType = OSD_SHOW_SINGLE_ELAPSED;
        }
        else
        {
          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 /* not USR_PBC_NO_TOTAL_TIME */

  if ((fgChange == TRUE) && (fgCheckOnly == FALSE))
  {
    _rOsdStateCtx.bTimeType = bType;
    
    vVCDShowRemainMsg(FALSE);
#ifndef NEW_SHOW        
    vVCDShowTimeMark(TRUE);
#else
    vShowTimeMark(TRUE);
#endif    
  }

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

  return (bType);
}

// *********************************************************************
// Function : void vVCDShowDomainInfo(void)
// Description : Show if in menu(VCD)
// Parameter : None
// Return    : None

⌨️ 快捷键说明

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