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

📄 show_dvd.c

📁 MTK 1389E SOURCE CODE
💻 C
📖 第 1 页 / 共 2 页
字号:
  vOsdShowAudio(OSD_AUDIO_CLEAR, 0, 0, 0, 0, 0, 0);

#if (DVD_USER_STREAM_CHANGE == DVD_STREAM_CHANGE_SELECT)
  if ((bAstNs > 1) && fgIsInputStateValid(INPUT_STATE_AUDIO_CHANGE))
  {
    bTmp = OSD_AUDIO_HILI;
  }
  else
#endif
  {
#if (DVD_USER_STREAM_CHANGE == DVD_STREAM_CHANGE_INFO)
    bTmp = OSD_AUDIO_NORMAL;
#else
    bTmp = OSD_AUDIO_NORMAL + OSD_TIMEOUT;
#endif
  }

  vOsdShowAudio(bTmp, bAstNo + 1, bAstNs,
                bSharedInfo(SI_A_CH_CFG), bSharedInfo(SI_A_CODE_MODE),
                bSharedInfo(SI_A_LCD_0), bSharedInfo(SI_A_LCD_1));
}

// *********************************************************************
// Show sub-picture stream
// *********************************************************************
void vDVDShowSubtitle(BYTE bSpNo, BYTE bSpNs) large
{
  BYTE bTmp1, bTmp2;

  // 20050324, IS00001522, clear subtitle before display audio
  vOsdShowSubtitle(OSD_SUBTITLE_CLEAR, 0, 0, 0, 0, 0);

  if ((bSpNo == 0x3e) || (bSpNo == 0x3f))
  {
    /* take dummy stream as subtitle disabled */
    bSpNo = 0x00;
  }

#if (DVD_USER_STREAM_CHANGE == DVD_STREAM_CHANGE_SELECT)
  if (fgIsInputStateValid(INPUT_STATE_SUBTITLE_CHANGE))
  {
    bTmp1 = OSD_SUBTITLE_HILI;
    bTmp2 = OSD_NO_DISAPPEAR; 
  }
  else
#endif
  {
    bTmp1 = OSD_SUBTITLE_NORMAL;
#if (DVD_USER_STREAM_CHANGE == DVD_STREAM_CHANGE_INFO)
    bTmp2 = OSD_NO_DISAPPEAR;
#else
    bTmp2 = OSD_TIMEOUT;
#endif
  }

  if ((bSpNo & 0x40) && ((bSpNo & 0x1f) < bSpNs) && (bSpNs > 0))
  {
    vOsdShowSubtitle(bTmp1, (bSpNo & 0x1f) + 1, bSpNs,
                     bSharedInfo(SI_SP_LCD_0), bSharedInfo(SI_SP_LCD_1), bTmp2);
  }
  else
  {
    vOsdShowSubtitle(OSD_SUBTITLE_CLEAR, 0, 0, 0, 0, 0);
    vOsdPosShow(OSD_POS_SUBTITLE, OSD_MSG_SUBTITLE_OFF, OSD_TIMEOUT);
  }
}

/************************************************************************
     Function : vDVDShowMenuType(BYTE bTime)
  Description :
    Parameter :
    Return    : None
************************************************************************/
void vDVDShowMenuType(BYTE bTime) large
{
  BYTE bDom = bSharedInfo(SI_DVD_DOM);
  BYTE bMenuId = bSharedInfo(SI_DVD_MENU_TYPE);

  switch (bMenuId)
  {
    case SV_TITLE_MENU:
      if (bDom == SV_VMGM_DOM)
      {
        vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_TITLE_MENU, bTime);
      }
      break;
    case SV_ROOT_MENU:
      if (bDom == SV_VTSM_DOM)
      {
        vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_ROOT_MENU, bTime);
      }
      break;
    case SV_SP_MENU:
    case SV_AUDIO_MENU:
    case SV_AGL_MENU:
    case SV_PTT_MENU:
    default:
      break;
  }
}

// *********************************************************************
// Function : void vDVDShowDomainInfo(void)
// Description : Show Menu type(DVD), show if in menu(VCD)
// Parameter : None
// Return    : None
// *********************************************************************
void vDVDShowDomainInfo(void) large
{
  BYTE bDom = bSharedInfo(SI_DVD_DOM);

  switch (bDom)
  {
    case SV_FP_DOM:
      break;

    case SV_VMGM_DOM:
#ifndef DVD_SHOW_MENU_TIME
      VfdShowStatus(VFD_STATUS_VMGM);
#endif
      vDVDShowRemainMsg(FALSE);
      vDVDShowPlayInfo(0);
#ifndef NEW_SHOW      
      vDVDShowTimeMark(TRUE);
#else
      vShowTimeMark(TRUE);
#endif
      break;

    case SV_VTSM_DOM:
#ifndef DVD_SHOW_MENU_TIME
      VfdShowStatus(VFD_STATUS_VTSM);
#endif
      vDVDShowRemainMsg(FALSE);
      vDVDShowPlayInfo(0);
#ifndef NEW_SHOW      
      vDVDShowTimeMark(TRUE);
#else
      vShowTimeMark(TRUE);
#endif
      break;

    case SV_VTSTT_DOM:
      VfdShowStatus(VFD_STATUS_VTSTT);
      vDVDShowRemainMsg(FALSE);
      vDVDShowPlayInfo(0);
#ifndef NEW_SHOW      
      vDVDShowTimeMark(TRUE);
#else
      vShowTimeMark(TRUE);
#endif      
      break;

    default:
      break;
  }
}

// *********************************************************************
// Function : void vDVDShowPlayInfo(BYTE bItem)
// Description :
// Parameter : None
// Return    : None
// *********************************************************************
void vDVDShowPlayInfo(BYTE bItem) large
{
  BYTE bTtNo = bSharedInfo(SI_TT_NO);
  BYTE bTtNs = bSharedInfo(SI_TT_NS);
  BYTE bChNo = bSharedInfo(SI_CHAP_NO);
  BYTE bChNs = bSharedInfo(SI_CHAP_NS);
  BYTE bType = bSharedInfo(SI_DISC_TYPE);
  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 */
    if (fgIsDiscPlay(bState)
#ifdef DVD_DGST_SHOW_MSG_ONLY
        && (bSharedInfo(SI_USR_PBC_CTRL) != SV_USR_DIGEST)
#endif
       )
    {
      if ((bSharedInfo(SI_DVD_DOM) == SV_VTSTT_DOM)
#ifdef SUPPORT_DVD_AUDIO
          || (bSharedInfo(SI_DVD_DOM) == SV_ATSTT_DOM)
#endif
         )
      {
        VfdShowPlayInfo(VFD_INFO_TITLE_CHAPTER, bTtNo, bChNo);
      }
    }
  }

  /* update OSD */
  if ((bTtNs == 0) || (bChNs == 0))
  {
    vOsdPosClear(OSD_POS_PLAY_INFO);
  }
  else /* if (!fgIsSearchInputState()) */ /* we have move the search info to layer 2 */
  {
    if (_rOsdStateCtx.bTimeType == OSD_SHOW_DISABLE)
    {
#ifndef SEARCH_INPUT_SHOW
      if ((bItem == 0) && fgIsUopRetOK(UOP_PTT_PLAY)) /* if called from UOP return */
      {
        vOsdShowChapterSearch(bTtNo, bTtNs, 2, bChNo, bChNs, OSD_TIMEOUT_SHORT);
      }
      else
#endif
      {
        vOsdPosClear(OSD_POS_PLAY_INFO);
      }
    }
    else
    {
      if ((bSharedInfo(SI_DVD_DOM) == SV_VTSTT_DOM)
#ifdef SUPPORT_DVD_AUDIO
           || (bSharedInfo(SI_DVD_DOM) == SV_ATSTT_DOM)
#endif
         )
      {
        if (_rOsdStateCtx.fgPlayInfoShow == TRUE)
        {
          vOsdShowTitleChapter(bTtNo, bTtNs, bChNo, bChNs, OSD_NO_DISAPPEAR);
        }
        else
        {
#ifndef SEARCH_INPUT_SHOW
          if (fgIsUopUpdate())
          {
            vOsdShowTitleChapter(bTtNo, bTtNs, bChNo, bChNs, IR_TIMEOUT_DISPLAY);
          }
#endif
        }
      }
      else
      {
        vOsdPosClear(OSD_POS_PLAY_INFO);
      }
    } /* if (_rOsdStateCtx.bTimeType != OSD_SHOW_DISABLE) */
  } /* if (!fgIsSearchInputState()) */
}

#ifndef NEW_SHOW
// *********************************************************************
// Show trick mode
// *********************************************************************
void vDVDShowTrick(BYTE bState) large
{
  BYTE bSpeed = bSharedInfo(SI_PBC_SPEED);

  if ((bState == SV_FF) || (bState == SV_FR))
  {
    if (bSpeed >= DVD_FAST_MAX)
    {
      bSpeed = DVD_FAST_MAX - 1;
    }
    bSpeed = pbDVDFastDispTbl[bSpeed];
  }
#if ((!defined DISABLE_SF) && (!defined DISABLE_SR))   
  else if ((bState == SV_SF) || (bState == SV_SR))
  {
    if (bSpeed >= DVD_SLOW_MAX)
    {
      bSpeed = DVD_SLOW_MAX - 1;
    }
    bSpeed = pbDVDSlowDispTbl[bSpeed];
  }
#endif  

  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 vDVDShowStopResumeState(void) large
{
  /* show LOGO first */
  vPlayerShowLogo(DVD_STOP_LOGO, DVD_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 vDVDShowStopState(void) large
{
  /* show LOGO first */
  vPlayerShowLogo(DVD_STOP_LOGO, DVD_LOGO_COLOR);
  
  /* reset OSD play state show */
  vOsdShowWb(OSD_WB_CLEAR);

  vOsdShowPbcState(SV_STOP, 0, OSD_NO_DISAPPEAR);

#if 0
  vDVDShowTimeMark(TRUE);
  vOsdShowTitleChapter(bSharedInfo(SI_TT_NO), bSharedInfo(SI_TT_NS),
                       bSharedInfo(SI_CHAP_NO), bSharedInfo(SI_CHAP_NS),
                       OSD_NO_DISAPPEAR);
#endif
}
#endif /* #ifndef NEW_SHOW */


/************************************************************************
     Function :
  Description : recall all displayed information
    Parameter :
    Return    :
************************************************************************/
void vDVDStatusDispRecall(void) large
{
  vDVDShowDomainInfo();
  vDVDShowRemainMsg(FALSE);
#ifndef NEW_SHOW      
  vDVDShowTimeMark(TRUE);
#else
    vShowTimeMark(TRUE);
#endif
  vDVDShowPlayInfo(bSIItemIndex(SI_CHAP_NO));
}

/************************************************************************
     Function :
  Description : 
    Parameter :
    Return    :
************************************************************************/
void vDVDChangeRemainType(BYTE bType) large
{
  if (bType == OSD_SHOW_DISP_CHG_INIT)
  {
#ifdef SUPPORT_DVD_AUDIO
    vOsdPosShow(OSD_POS_REMAIN_MSG, pwDvdDispModeMsg[_rOsdStateCtx.bTimeType][bSharedInfo(SI_DISC_TYPE)], OSD_NO_DISAPPEAR);
#else
    vOsdPosShow(OSD_POS_REMAIN_MSG, pwDvdDispModeMsg[_rOsdStateCtx.bTimeType], OSD_NO_DISAPPEAR);
#endif
    vOsdShowTitleChapter(bSharedInfo(SI_TT_NO), bSharedInfo(SI_TT_NS),
                         bSharedInfo(SI_CHAP_NO), bSharedInfo(SI_CHAP_NS),
                         OSD_NO_DISAPPEAR);
  }
  else if (bType == OSD_SHOW_DISP_CHG_EXIT)
  {
    vOsdPosClear(OSD_POS_REMAIN_MSG);
    vDVDShowPlayInfo(PLAY_INFO_CLEAR);

    if (_rOsdStateCtx.fgRemainMsgShow == TRUE)
    {
      vDVDShowRemainMsg(FALSE);
    }
    if (_rOsdStateCtx.fgPlayInfoShow == FALSE)
    {
      vDVDShowPlayInfo(0);
    }
  }
  else
  {
    _rOsdStateCtx.bTimeType = bType;
    
    vDVDShowRemainMsg(TRUE);
    vDVDShowPlayInfo(0);
  }
  
#ifndef NEW_SHOW      
  vDVDShowTimeMark(TRUE);
#else
    vShowTimeMark(TRUE);
#endif
}

#ifndef NEW_SHOW
/************************************************************************
     Function :
  Description : 
    Parameter :
    Return    :
************************************************************************/
BOOL fgDVDCheckSelectRange(BYTE bNum) large
{
  BYTE bPbcState = bSharedInfo(SI_PBC_STATE);

  if (fgIsDiscPlay(bPbcState) && 
      (bSharedInfo(SI_HLI_STATE) == SV_ON) &&
      (bNum >= bSharedInfo(SI_MENU_SEL_RNG_START)) &&
      (bNum <= bSharedInfo(SI_MENU_SEL_RNG_END)))
  {
    return (TRUE);
  }
  else
  {
    return (FALSE);
  }
}
#endif  /* #ifndef NEW_SHOW */

⌨️ 快捷键说明

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