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

📄 show_dvd.c

📁 MTK 1389E SOURCE CODE
💻 C
📖 第 1 页 / 共 2 页
字号:
/**********************************************************************/
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/
/***************                                       ****************/
/***************  $Modtime:: 05/04/07 1:41p    $       ****************/
/***************  $Revision:: 3                $       ****************/
/***************                                       ****************/
/***************   Description :                       ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer :                       ****************/
/**********************************************************************/

#define _SHOW_DVD_C_

#pragma NOAREGS
#include "general.h"

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

//#define KARAOKE_SCORING_TEST
#ifdef KARAOKE_SCORING_TEST
#define   GENER_GRP 12
#define   B_KSCORE_MAX      ((GENER_GRP * 32) + 0x19)       // 8032
#define   B_KSCORE_MIN      ((GENER_GRP * 32) + 0x1a)       // 8032
#define   B_KSCORE_SCORE    ((GENER_GRP * 32) + 0x1b)       // RISC
#define   DSP_KSCORE_MAXSCORE 100
#define   DSP_KSCORE_MINSCORE 0
#endif

#ifndef NEW_SHOW  
// *********************************************************************
// Show time mark
// *********************************************************************
void vDVDShowTimeMark(BYTE fgClear) large
{
  BYTE bHour, bMin, bSec;
  BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
  BYTE bDom = bSharedInfo(SI_DVD_DOM);
  BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
#ifdef KARAOKE_SCORING_TEST
  BYTE bKSScore;
  BYTE bTmpScore;
  BYTE bTestStr[6];
#endif

  switch(_rOsdStateCtx.bTimeType)
  {
    case OSD_SHOW_DISABLE:
      if (fgClear)
      {
        vOsdShowTimeClear();
      }
      /* for VFD */
#if 1 /* title elapsed */
      bHour = bSharedInfo(SI_TIME_HH);
      bMin  = bSharedInfo(SI_TIME_MM);
      bSec  = bSharedInfo(SI_TIME_SS);
#else /* chapter elapsed */
      bHour = bSharedInfo(SI_TIME_CHAPTER_HH);
      bMin  = bSharedInfo(SI_TIME_CHAPTER_MM);
      bSec  = bSharedInfo(SI_TIME_CHAPTER_SS);
#endif
      break;

    case OSD_SHOW_TITLE_ELAPSED:
      bHour = bSharedInfo(SI_TIME_HH);
      bMin  = bSharedInfo(SI_TIME_MM);
      bSec  = bSharedInfo(SI_TIME_SS);
      break;

    case OSD_SHOW_TITLE_REMAIN:
      bHour = bSharedInfo(SI_TIME_RMN_HH);
      bMin  = bSharedInfo(SI_TIME_RMN_MM);
      bSec  = bSharedInfo(SI_TIME_RMN_SS);
      break;

    case OSD_SHOW_CHAPTER_ELAPSED:
      bHour = bSharedInfo(SI_TIME_CHAPTER_HH);
      bMin  = bSharedInfo(SI_TIME_CHAPTER_MM);
      bSec  = bSharedInfo(SI_TIME_CHAPTER_SS);
      break;

    case OSD_SHOW_CHAPTER_REMAIN:
      if (bDiscType == SV_DVD_AUDIO)
      {
        bHour = bSharedInfo(SI_TIME_TRACK_RMN_HH);
        bMin  = bSharedInfo(SI_TIME_TRACK_RMN_MM);
        bSec  = bSharedInfo(SI_TIME_TRACK_RMN_SS);
      }
      else
      {
        bHour = bSharedInfo(SI_TIME_CHAPTER_RMN_HH);
        bMin  = bSharedInfo(SI_TIME_CHAPTER_RMN_MM);
        bSec  = bSharedInfo(SI_TIME_CHAPTER_RMN_SS);
      }
      break;

    default:
      _rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
      return;
  }

  if (!fgIsDiscPlay(bPbcState))
  {
    bHour = 0; bMin = 0; bSec = 0;
  }

#ifndef DVD_SHOW_MENU_TIME
  if ((bDom != SV_VTSTT_DOM) && (bDom != SV_ATSTT_DOM))
  {
    bHour = 0; bMin = 0; bSec = 0;
  }
#endif

  if (_rOsdStateCtx.bTimeType != OSD_SHOW_DISABLE)
  {
#ifndef DVD_MENU_OSD_TIME_ZERO
    if ((bDom != SV_VTSTT_DOM) && (bDom != SV_ATSTT_DOM))
    {
      vOsdShowTimeClear();
    }
    else
#endif
    {
      vOsdShowTimeRemain3(bHour, bMin, bSec, OSD_NO_DISAPPEAR);
    }
#ifdef KARAOKE_SCORING_TEST    
      // Test for Karaoke Scoring
      vWriteDspSharedBInfo(B_KSCORE_MAX,DSP_KSCORE_MAXSCORE);
      vWriteDspSharedBInfo(B_KSCORE_MIN,DSP_KSCORE_MINSCORE);
      bKSScore=bReadDspSharedBInfo(B_KSCORE_SCORE);
      bTmpScore=bHEXToBCD(bKSScore);      
      bTestStr[0]=5;
      bTestStr[1]='-';
      bTestStr[2]='0';
      bTestStr[3]=BCD_HI(bTmpScore)+'0';
      bTestStr[4]=BCD_LO(bTmpScore)+'0';	
      bTestStr[5]='-';
      _wStartX=270;
      _wStartY=0;
      vOsdShowStr(WB_NORMAL_HEAD2, bTestStr);
      // Test for Karaoke Scoring
#endif          
  }

  if (((bDom == SV_VTSTT_DOM) || (bDom == SV_ATSTT_DOM) )&& (bPbcState != SV_STOP)
#ifdef DVD_DGST_SHOW_MSG_ONLY
      && (bSharedInfo(SI_USR_PBC_CTRL) != SV_USR_DIGEST)
#endif
     )
  {
    VfdShowPlayTime(bHour, bMin, bSec);
  }
}

void vDVDShowTotalTimeMark(void) large
{
  BYTE bHour, bMin, bSec;
  BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
  BYTE bDom = bSharedInfo(SI_DVD_DOM);
  BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);

  switch(_rOsdStateCtx.bTimeType)
  {
    case OSD_SHOW_DISABLE:
      vOsdShowTimeClear();
      /* for VFD */
      /* title/chapter elapsed */
      bHour = 0;
      bMin  = 0;
      bSec  = 0;
      break;

    case OSD_SHOW_TITLE_ELAPSED:
      bHour = 0;
      bMin  = 0;
      bSec  = 0;
      break;

    case OSD_SHOW_TITLE_REMAIN:
      bHour = bSharedInfo(SI_TIME_TOTAL_HH);
      bMin  = bSharedInfo(SI_TIME_TOTAL_HH);
      bSec  = bSharedInfo(SI_TIME_TOTAL_HH);
      break;

    case OSD_SHOW_CHAPTER_ELAPSED:
      bHour = 0;
      bMin  = 0;
      bSec  = 0;
      break;

    case OSD_SHOW_CHAPTER_REMAIN:
      if (bDiscType == SV_DVD_AUDIO)
      {
        bHour = bSharedInfo(SI_TIME_TOTAL_TRACK_HH);
        bMin  = bSharedInfo(SI_TIME_TOTAL_TRACK_MM);
        bSec  = bSharedInfo(SI_TIME_TOTAL_TRACK_SS);
      }
      else
      {
        bHour = bSharedInfo(SI_TIME_TOTAL_CHAPTER_HH);
        bMin  = bSharedInfo(SI_TIME_TOTAL_CHAPTER_MM);
        bSec  = bSharedInfo(SI_TIME_TOTAL_CHAPTER_SS);
      }
      break;

    default:
      _rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
      return;
  }

#ifndef DVD_SHOW_MENU_TIME
  if (bDom != SV_VTSTT_DOM)
  {
    bHour = 0; bMin = 0; bSec = 0;
  }
#endif

  if (_rOsdStateCtx.bTimeType != OSD_SHOW_DISABLE)
  {
#ifndef DVD_MENU_OSD_TIME_ZERO
    if (bDom != SV_VTSTT_DOM)
    {
      vOsdShowTimeClear();
    }
    else
#endif
    {
      vOsdShowTimeRemain3(bHour, bMin, bSec, OSD_NO_DISAPPEAR);
    }
  }

  if (bDom == SV_VTSTT_DOM)
  {
    VfdShowPlayTime(bHour, bMin, bSec);
  }
}
#endif  /* #ifndef NEW_SHOW  */

#ifdef SUPPORT_DVD_AUDIO
static code WORD pwDvdDispModeMsg[5][2] =
{
  { OSD_MSG_DISPLAY_OFF, OSD_MSG_DISPLAY_OFF },
  { OSD_MSG_TITLE_ELAPSED, OSD_MSG_GROUP_ELAPSED },
  { OSD_MSG_TITLE_REMAIN, OSD_MSG_GROUP_REMAIN },
  { OSD_MSG_CHAPTER_ELAPSED, OSD_MSG_TRACK_ELAPSED },
  { OSD_MSG_CHAPTER_REMAIN, OSD_MSG_TRACK_REMAIN }
};
#else
static code WORD pwDvdDispModeMsg[5] =
{
  OSD_MSG_DISPLAY_OFF, 
  OSD_MSG_TITLE_ELAPSED,
  OSD_MSG_TITLE_REMAIN,
  OSD_MSG_CHAPTER_ELAPSED,
  OSD_MSG_CHAPTER_REMAIN
};
#endif

void vDVDShowRemainMsg(BYTE fgShowOff) large
{
  BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
  BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);

  if (fgShowOff == FALSE)
  {
    if ((_rOsdStateCtx.fgRemainMsgShow == 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)
    {
#ifdef SUPPORT_DVD_AUDIO
      vOsdPosShow(OSD_POS_REMAIN_MSG, pwDvdDispModeMsg[_rOsdStateCtx.bTimeType][bDiscType%2], OSD_NO_DISAPPEAR);
#else
      vOsdPosShow(OSD_POS_REMAIN_MSG, pwDvdDispModeMsg[_rOsdStateCtx.bTimeType], OSD_NO_DISAPPEAR);
#endif
    }
    else
    {
#ifdef SUPPORT_DVD_AUDIO
      vOsdPosShow(OSD_POS_REMAIN_MSG, pwDvdDispModeMsg[_rOsdStateCtx.bTimeType][bDiscType%2], OSD_TIMEOUT_SHORT);
#else
      vOsdPosShow(OSD_POS_REMAIN_MSG, pwDvdDispModeMsg[_rOsdStateCtx.bTimeType], OSD_TIMEOUT_SHORT);
#endif
    }

    vDVDShowPlayInfo(0);
  }
  else
  {
    if (bSharedInfo(SI_DVD_DOM) == SV_VTSTT_DOM)
    {
#ifdef SUPPORT_DVD_AUDIO
      vOsdPosShow(OSD_POS_REMAIN_MSG, pwDvdDispModeMsg[_rOsdStateCtx.bTimeType][bDiscType%2], OSD_TIMEOUT);
#else
      vOsdPosShow(OSD_POS_REMAIN_MSG, pwDvdDispModeMsg[_rOsdStateCtx.bTimeType], OSD_TIMEOUT);
#endif
    }
    else
    {
      vOsdPosClear(OSD_POS_REMAIN_MSG);
    }
  }
}

// *********************************************************************
// Check if current time mark display mode is valid
// *********************************************************************
BYTE bDvdCheckRemainShow(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))
  {
#ifdef PLAYER_PROGRAM
    if ((bUsrPbc == SV_PROGRAM) && (bSharedInfo(SI_USR_PROGRAM_TYPE) == SV_PROGRAM_TT_ITEM))
    {
      fgChange = FALSE;
    }
    else
#endif
    {
      if (fgCheckOnly == TRUE)
      {
        if (_rOsdStateCtx.bTimeType == OSD_SHOW_DISABLE)
        {
          bType = OSD_SHOW_CHAPTER_ELAPSED;
          fgChange = TRUE;
        }
        else if ((bCurrType != OSD_SHOW_CHAPTER_ELAPSED) &&
                 (bCurrType != OSD_SHOW_CHAPTER_REMAIN))
        {
          bType = OSD_SHOW_DISABLE;
          fgChange = TRUE;
        }
      }
      else /* if (fgCheckOnly == FALSE) */
      {
        if (bCurrType == OSD_SHOW_TITLE_ELAPSED)
        {
          bType = OSD_SHOW_CHAPTER_ELAPSED;;
          fgChange = TRUE;
        }
        else if (bCurrType == OSD_SHOW_TITLE_REMAIN)
        {
          bType = OSD_SHOW_CHAPTER_REMAIN;
          fgChange = TRUE;
        }
      }
    }
  }
#endif

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

    vDVDShowRemainMsg(FALSE);
#ifndef NEW_SHOW      
    vDVDShowTimeMark(TRUE);
#else
    vShowTimeMark(TRUE);
#endif
  }

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

  return (bType);
}

// *********************************************************************
// Show audio stream
// *********************************************************************
void vDVDShowAudio(BYTE bAstNo, BYTE bAstNs) large
{
  BYTE bTmp;

  // 20050324, IS00001522, clear audio before display subtitle

⌨️ 快捷键说明

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