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

📄 dvdshow.c

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

#define _DVDSHOW_C_

#pragma NOAREGS

#include "general.h"
#include "osdshow.h"

enum
{
#ifdef DVD_CHAP_3_DIGITS              
  MSG_TT_CH_3,
  MSG_TITLE_CHAPTER_3,
  MSG_CHAPTER_TIME_SEARCH_PTT_3,
  MSG_CHAPTER_TIME_SEARCH_TIME_3,
  MSG_TITLE_CHAPTER_SEARCH_PTT_3,
#endif  
  MSG_TT_CH, 
  MSG_TITLE_CHAPTER,
  MSG_TITLE_TIME_SEARCH_TTL,
  MSG_TITLE_TIME_SEARCH_TIME,
  MSG_CHAPTER_TIME_SEARCH_PTT,
  MSG_CHAPTER_TIME_SEARCH_TIME, 
  MSG_TITLE_CHAPTER_SEARCH_TTL, 
  MSG_TITLE_CHAPTER_SEARCH_PTT,
  MSG_MAX
};

code WORD _pwDvdOsdMsg[MSG_MAX][2] = {
#ifdef DVD_CHAP_3_DIGITS
  { OSD_MSG_TT_CH_3, OSD_MSG_GR_TR_3 },
  { OSD_MSG_TITLE_CHAPTER_3, OSD_MSG_GROUP_TRACK_3 },
  { OSD_MSG_CHAPTER_TIME_SEARCH_PTT_3, OSD_MSG_TRACK_TIME_SEARCH_PTT_3 },
  { OSD_MSG_CHAPTER_TIME_SEARCH_TIME_3, OSD_MSG_TRACK_TIME_SEARCH_TIME_3 },
  { OSD_MSG_TITLE_CHAPTER_SEARCH_PTT_3, OSD_MSG_GROUP_TRACK_SEARCH_PTT_3},
#endif
  { OSD_MSG_TT_CH, OSD_MSG_GR_TR },
  { OSD_MSG_TITLE_CHAPTER, OSD_MSG_GROUP_TRACK },
  { OSD_MSG_TITLE_TIME_SEARCH_TTL, OSD_MSG_GROUP_TIME_SEARCH_TTL },
  { OSD_MSG_TITLE_TIME_SEARCH_TIME, OSD_MSG_GROUP_TIME_SEARCH_TIME },
  { OSD_MSG_CHAPTER_TIME_SEARCH_PTT, OSD_MSG_TRACK_TIME_SEARCH_PTT },
  { OSD_MSG_CHAPTER_TIME_SEARCH_TIME, OSD_MSG_TRACK_TIME_SEARCH_TIME }, 
  { OSD_MSG_TITLE_CHAPTER_SEARCH_TTL, OSD_MSG_GROUP_TRACK_SEARCH_TTL },  
  { OSD_MSG_TITLE_CHAPTER_SEARCH_PTT, OSD_MSG_GROUP_TRACK_SEARCH_PTT}
};

// *********************************************************************
// Function : void vOsdShowAngle(BYTE bMode, BYTE bCurr, BYTE bTotal, BYTE bTime)
// Description :
// Parameter :  bState
// Return    : None
// *********************************************************************
void vOsdShowAngle(BYTE bMode, BYTE bCurr, BYTE bTotal) large
{
  BYTE pbAngle[3];

  if (bMode == OSD_ANGLE_CLEAR)
  {
    vOsdClearInputField(OSD_POS_ANGLE);
    vOsdPosClear(OSD_POS_ANGLE);
    return;
  }

  pbAngle[0] = 2;

  /* error check */
  if ((bCurr == 0) || (bTotal <= 1) || (bTotal > 9))
  {
    vOsdPosClear(OSD_POS_ANGLE);
    return;
  }
  if (bCurr > bTotal)
  {
    bCurr = bTotal;
  }

  pbAngle[1] = bCurr + '0';
  pbAngle[2] = bTotal + '0';

  if (bMode & OSD_ANGLE_HILI)
  {
    vOsdSetInputField(OSD_POS_ANGLE);
  }
  else
  {
    vOsdClearInputField(OSD_POS_ANGLE);
  }

  if ((bMode & OSD_ANGLE_TIME_MASK) == 0)
  {
    vOsdPosShowArg(OSD_POS_ANGLE, OSD_MSG_ANGLE, OSD_NO_DISAPPEAR, pbAngle);
  }
  else
  {
    vOsdPosShowArg(OSD_POS_ANGLE, OSD_MSG_ANGLE, (bMode & OSD_ANGLE_TIME_MASK), pbAngle);
  }
}

// *********************************************************************
// Function : void vOsdShowAudio(BYTE bMode, BYTE bCurr, BYTE bTotal, BYTE bCh, BYTE bType, BYTE bLcd0, BYTE bLcd1)
// Description :
// Parameter :  bState
// Return    : None
// *********************************************************************
void vOsdShowAudio(BYTE bMode, BYTE bCurr, BYTE bTotal, BYTE bCh, BYTE bType, BYTE bLcd0, BYTE bLcd1) large
{
  WORD wMsgIdx;
  BYTE pbStr[9];

  if (bMode == OSD_AUDIO_CLEAR)
  {
    vOsdClearInputField(OSD_POS_AUDIO);
    vOsdPosClear(OSD_POS_AUDIO);
    return;
  }

  pbStr[0] = 8;
  /* assume both bCurr and bTotal small than 10 */
  if ((bCurr > 9) || (bTotal > 9))
  {
    return;
  }

  /* error check */
  if (bCurr > bTotal)
  {
    bCurr = bTotal;
  }

  /* vOsdPosShow(OSD_POS_AUDIO, OSD_MSG_AUDIO, OSD_TIMEOUT); */
  /* clear by input state */
  pbStr[1] = bCurr + '0';
  pbStr[2] = bTotal + '0';
  wMsgIdx = wOsdGetAudAtrMsg(bType);
  pbStr[3] = bLoByte(wMsgIdx);
  pbStr[4] = bHiByte(wMsgIdx);
  wMsgIdx = wOsdGetAudChMsg(bCh);
  pbStr[5] = bLoByte(wMsgIdx);
  pbStr[6] = bHiByte(wMsgIdx);
  wMsgIdx = wOsdGetLcdMsg(bLcd0, bLcd1);
  pbStr[7] = bLoByte(wMsgIdx);
  pbStr[8] = bHiByte(wMsgIdx);

  if (bMode & OSD_AUDIO_HILI)
  {
    vOsdSetInputField(OSD_POS_AUDIO);
  }

  if ((bMode & OSD_AUDIO_TIME_MASK) == 0)
  {
    /*
    if (bSharedInfo(SI_DVD_DOM) == SV_ATSTT_DOM)
    {
      pbStr[2] = 6;
      vOsdPosShowArg(OSD_POS_AUDIO, OSD_MSG_DA_AUDIO_SELECT, OSD_NO_DISAPPEAR, pbStr+2);
    }
    else
    */
    {
      vOsdPosShowArg(OSD_POS_AUDIO, OSD_MSG_AUDIO_SELECT, OSD_NO_DISAPPEAR, pbStr);
    }    
  }
  else
  {
    /*
    if (bSharedInfo(SI_DVD_DOM) == SV_ATSTT_DOM)
    {
      pbStr[2] = 6;
      vOsdPosShowArg(OSD_POS_AUDIO, OSD_MSG_DA_AUDIO_SELECT, (bMode & OSD_AUDIO_TIME_MASK), pbStr+2);
    }
    else
    */
    {
      vOsdPosShowArg(OSD_POS_AUDIO, OSD_MSG_AUDIO_SELECT, (bMode & OSD_AUDIO_TIME_MASK), pbStr);
    }
  }
}

// *********************************************************************
// Function : void vOsdShowSubtitle(BYTE bMode, BYTE bCurr, BYTE bTotal, BYTE bLcd0, BYTE bLcd1, BYTE bTime)
// Description :
// Parameter :  bState
// Return    : None
// *********************************************************************
void vOsdShowSubtitle(BYTE bMode, BYTE bCurr, BYTE bTotal, BYTE bLcd0, BYTE bLcd1, BYTE bTime) large
{
  WORD wMsgIdx;
  BYTE pbStr[7];
  BYTE i, bKeySeq;

  if (bMode == OSD_SUBTITLE_CLEAR)
  {
    vOsdClearInputField(OSD_POS_SUBTITLE);
    vOsdPosClear(OSD_POS_SUBTITLE);
    return;
  }
  else
  {
    vOsdPosClear(OSD_POS_SUBTITLE);
  }

  bKeySeq = bMode & OSD_SUBTITLE_SEQ_MASK;
  bMode = bMode & (~OSD_SUBTITLE_SEQ_MASK);

  pbStr[0] = 6;
  /* assume both bCurr and bTotal small than 10 */
  if ((bCurr > 32) || (bTotal > 32))
  {
    return;
  }

  /* error check */
  if (bCurr > bTotal)
  {
    bCurr = bTotal;
  }

  bCurr = bHEXToBCD(bCurr);
  bTotal = bHEXToBCD(bTotal);

#ifdef NO_ADD10_KEY
  if (bMode == OSD_SUBTITLE_HILI)
  {
    if (bKeySeq == 1)
    {
      pbStr[1] = BCD_LO(bCurr) + '0';
      pbStr[2] = ' ';
    }
    else
    {
      pbStr[1] = BCD_HI(bCurr) + '0';
      pbStr[2] = BCD_LO(bCurr) + '0';
    }
  }
  else /* if (bMode == OSD_SUBTITLE_NORMAL) */
  {
    pbStr[1] = BCD_HI(bCurr) + '0';
    pbStr[2] = BCD_LO(bCurr) + '0';
  }
#else /* use ADD10 key */
  pbStr[1] = BCD_HI(bCurr) + '0';
  pbStr[2] = BCD_LO(bCurr) + '0';
#endif

  pbStr[3] = BCD_HI(bTotal) + '0';
  pbStr[4] = BCD_LO(bTotal) + '0';
  wMsgIdx = wOsdGetLcdMsg(bLcd0, bLcd1);
  pbStr[5] = bLoByte(wMsgIdx);
  pbStr[6] = bHiByte(wMsgIdx);

  if (bMode & OSD_SUBTITLE_HILI)
  {
    vOsdSetInputField(OSD_POS_SUBTITLE);
  }

  vOsdPosShowArg(OSD_POS_SUBTITLE, OSD_MSG_SUBTITLE_SELECT, bTime, pbStr);
}

// *********************************************************************
// Function : void vOsdShowTitleChapter(BYTE bCurTit, BYTE bTotTit,
//                                      BYTE bCurCha, BYTE bTotCha,
//                                      BYTE bTime)
// Description :
// Parameter :  bState
// Return    : None
// *********************************************************************
#ifdef DVD_CHAP_3_DIGITS
void vOsdShowTitleChapter(BYTE bCurTit, BYTE bTotTit, BYTE bCurCha,
                          BYTE bTotCha, BYTE bTime) large
{
  BYTE pbStr[11];
  WORD wTotCha, wCurCha;
  BYTE bCha;
  BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);

  pbStr[0] = 8;
  wCurCha = bCurCha;
  wTotCha = bTotCha;

  /* error check */
  if (bCurTit > bTotTit)
  {
    bCurTit = bTotTit;
  }
  if (wCurCha > wTotCha)
  {
    wCurCha = wTotCha;
  }

  if (wTotCha > 99)
  {
    pbStr[0] = 10;
  }

  bCurTit = bHEXToBCD(bCurTit);
  bTotTit = bHEXToBCD(bTotTit);
  wCurCha = wWRDToBCD(wCurCha);
  wTotCha = wWRDToBCD(wTotCha);

  pbStr[1] = BCD_HI(bCurTit) + '0';
  pbStr[2] = BCD_LO(bCurTit) + '0';
  pbStr[3] = BCD_HI(bTotTit) + '0';
  pbStr[4] = BCD_LO(bTotTit) + '0';

  if (pbStr[0] == 10)
  {
    pbStr[5]  = BCD_LO(bHiByte(wCurCha)) + '0';
    pbStr[6]  = BCD_HI(bLoByte(wCurCha)) + '0';
    pbStr[7]  = BCD_LO(bLoByte(wCurCha)) + '0';
    pbStr[8]  = BCD_LO(bHiByte(wTotCha)) + '0';
    pbStr[9]  = BCD_HI(bLoByte(wTotCha)) + '0';
    pbStr[10] = BCD_LO(bLoByte(wTotCha)) + '0';
  }
  else
  {
    pbStr[5] = BCD_HI(bLoByte(wCurCha)) + '0';
    pbStr[6] = BCD_LO(bLoByte(wCurCha)) + '0';
    pbStr[7] = BCD_HI(bLoByte(wTotCha)) + '0';
    pbStr[8] = BCD_LO(bLoByte(wTotCha)) + '0';
  }
  
#ifdef TIME_INFO_SAME_LINE
  if (pbStr[0] == 10)
  {
    vOsdPosShowArg(OSD_POS_PLAY_INFO, _pwDvdOsdMsg[MSG_TT_CH_3][bDiscType%2], bTime, pbStr);
  }
  else
  {
    vOsdPosShowArg(OSD_POS_PLAY_INFO, _pwDvdOsdMsg[MSG_TT_CH][bDiscType%2], bTime, pbStr);
  }
#else
  if (pbStr[0] == 10)
  {
    vOsdPosShowArg(OSD_POS_PLAY_INFO, _pwDvdOsdMsg[MSG_TITLE_CHAPTER_3][bDiscType%2], bTime, pbStr);
  }
  else
  {
    vOsdPosShowArg(OSD_POS_PLAY_INFO, _pwDvdOsdMsg[MSG_TITLE_CHAPTER][bDiscType%2], bTime, pbStr);
  }
#endif
}

#else
void vOsdShowTitleChapter(BYTE bCurTit, BYTE bTotTit, BYTE bCurCha,
                          BYTE bTotCha, BYTE bTime) large
{
  BYTE pbStr[9];
  BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);

  pbStr[0] = 8;
  /* error check */
  if (bCurTit > bTotTit)
  {
    bCurTit = bTotTit;
  }
  if (bCurCha > bTotCha)
  {
    bCurCha = bTotCha;
  }

  // only support 2 digits for chapter
  while (bCurCha > 99) bCurCha -= 100;
  while (bTotCha > 99) bTotCha -= 100;

  bCurTit = bHEXToBCD(bCurTit);
  bTotTit = bHEXToBCD(bTotTit);
  bCurCha = bHEXToBCD(bCurCha);
  bTotCha = bHEXToBCD(bTotCha);

  pbStr[1] = BCD_HI(bCurTit) + '0';
  pbStr[2] = BCD_LO(bCurTit) + '0';
  pbStr[3] = BCD_HI(bTotTit) + '0';
  pbStr[4] = BCD_LO(bTotTit) + '0';
  pbStr[5] = BCD_HI(bCurCha) + '0';
  pbStr[6] = BCD_LO(bCurCha) + '0';
  pbStr[7] = BCD_HI(bTotCha) + '0';
  pbStr[8] = BCD_LO(bTotCha) + '0';

#ifdef TIME_INFO_SAME_LINE
  vOsdPosShowArg(OSD_POS_PLAY_INFO, _pwDvdOsdMsg[MSG_TT_CH][bDiscType%2], bTime, pbStr);
#else
  vOsdPosShowArg(OSD_POS_PLAY_INFO, _pwDvdOsdMsg[MSG_TITLE_CHAPTER][bDiscType%2], bTime, pbStr);
#endif
}
#endif

// *********************************************************************
// Function : void vOsdShowTitleTimeSearch(BYTE bCurTit, BYTE bTotTit, BYTE bNum, BYTE *pbTime) large
// Description :
// Parameter : bState
// Return    : None
// Note      : Can not disappear automatic !!
// *********************************************************************
void vOsdShowTitleTimeSearch(BYTE bCurTit, BYTE bTotTit, BYTE bNum, BYTE *pbTime) large
{
  BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
  BYTE i;
  BYTE pbStr[10];


  pbStr[0] = 9;
  for(i=0; i<pbStr[0]; i++)
  {
    pbStr[i] = ' ';
  }

  if (bNum == OSD_SEARCH_CLEAR)
  {
    vOsdClearInputField(OSD_POS_DVD_SEARCH);
    vOsdPosClear(OSD_POS_DVD_SEARCH);
  }
  else if (bNum & OSD_DVD_TTL_SEARCH) /* for title search */
  {
    /* error check */
    if (bCurTit > bTotTit)
    {
      bCurTit = bTotTit;
    }

    bCurTit = bHEXToBCD(bCurTit);
    bTotTit = bHEXToBCD(bTotTit);

    if (bNum == (OSD_DVD_TTL_SEARCH | 0))
    {
      // Fix me
      vOsdSetInputField(OSD_POS_DVD_SEARCH);
    }
    else if (bNum == (OSD_DVD_TTL_SEARCH | 1))
    {
#ifdef NO_ADD10_KEY
      pbStr[1] = BCD_LO(bCurTit) + '0';
#else /* for +10 key */
      if (bCurTit > 0)
      {
        pbStr[1] = BCD_HI(bCurTit) + '0';
        if (BCD_LO(bCurTit) == 0)
        {
#ifdef ADD10_SHOW_10
          pbStr[2] = '0';
#else
          pbStr[2] = '-';
#endif
        }
        else
        {
          pbStr[2] = BCD_LO(bCurTit) + '0';
        }
      }
#endif
      /* for +10 key */
    }
    else if ((bNum == (OSD_DVD_TTL_SEARCH | 2)) ||
             (bNum == (OSD_DVD_TTL_SEARCH | OSD_DVD_SEARCH_END)))
    {
      pbStr[1] = BCD_HI(bCurTit) + '0';
      pbStr[2] = BCD_LO(bCurTit) + '0';
    }

    pbStr[3] = BCD_HI(bTotTit) + '0';
    pbStr[4] = BCD_LO(bTotTit) + '0';
      
    if (pbTime == 0)
    {
      for(i=0; i<5; i++)
      {
        pbStr[5+i] = '0';
      }
    }
    else
    {
      for(i=0; i<5; i++)
      {
        pbStr[5+i] = pbTime[i] + '0';
      }
    }

    // Fix me
//    vCreateWBEx(0x05);
    if (bNum == (OSD_DVD_TTL_SEARCH | OSD_DVD_SEARCH_END))
    {

⌨️ 快捷键说明

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