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

📄 show_dvd.c

📁 mtk1389L latest sourcecode enjoy
💻 C
📖 第 1 页 / 共 2 页
字号:
                bSharedInfo(SI_A_LCD_0), bSharedInfo(SI_A_LCD_1));
}

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

  //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);

  vVfdRotate(VFD_DISC_LIGHT_OFF);  

  switch (bDom)
  {
    case SV_FP_DOM:
      break;

    case SV_VMGM_DOM:
#ifndef DVD_SHOW_MENU_TIME
  #ifdef VFD_MESSAGE_TITLE
      vVfdMessage(VFD_MESSAGE_TITLE);
  #endif
  
#endif
      vVfdUpdateAll();
      vDVDShowRemainMsg(FALSE);
      vDVDShowPlayInfo(0);
      vDVDShowTimeMark(TRUE);
      break;

    case SV_VTSM_DOM:
#ifndef DVD_SHOW_MENU_TIME
  #ifdef VFD_MESSAGE_ROOT
      vVfdMessage(VFD_MESSAGE_ROOT);
  #endif
#endif
      vVfdUpdateAll();
      vDVDShowRemainMsg(FALSE);
      vDVDShowPlayInfo(0);
      vDVDShowTimeMark(TRUE);
      break;

    case SV_VTSTT_DOM:
      vVfdMessageClr();
      vVfdSymbol(VFD_SYM_PLAY);
      vVfdWord(VFD_WORD_TT, bHEXToBCD(bSharedInfo(SI_TT_NO)), 1);
      vVfdWord(VFD_WORD_CH, bHEXToBCD(bSharedInfo(SI_CHAP_NO)), 1);
      vVfdSymbol(VFD_SYM_PLAYINFO_TT_CH);

      if (bSharedInfo(SI_AGL_NS) > 1)
        vVfdSymbol(VFD_SYM_ANGLE_ON);  	
      else
        vVfdSymbol(VFD_SYM_ANGLE_OFF);  	

      vVfdUpdateAll();

      vDVDShowRemainMsg(FALSE);
      vDVDShowPlayInfo(0);
      vDVDShowTimeMark(TRUE);
      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);

#ifdef DVD_VR_SUPPORT
  //alfonso patch VR chapter
  if (bType == SV_DVD_VR)
  {
    bChNo = bSharedInfo(SI_VR_CH_NO_LO);
    bChNs = bSharedInfo(SI_VR_CH_NS_LO);
  }
#endif /* DVD_VR_SUPPORT */

  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
         )
      {

        vVfdWord(VFD_WORD_TT, bHEXToBCD(bTtNo), 1);
        vVfdWord(VFD_WORD_CH, bHEXToBCD(bChNo), 1);
        vVfdSymbol(VFD_SYM_PLAYINFO_TT_CH);

      }
    }
  }

  /* 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()) */
}

// *********************************************************************
// 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];
  }
  else if ((bState == SV_SF) || (bState == SV_SR))
  {
    if (bSpeed >= DVD_SLOW_MAX)
    {
      bSpeed = DVD_SLOW_MAX - 1;
    }
    bSpeed = pbDVDSlowDispTbl[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 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
}

/************************************************************************
     Function :
  Description : recall all displayed information
    Parameter :
    Return    :
************************************************************************/
void vDVDStatusDispRecall(void) large
{
  vDVDShowDomainInfo();
  vDVDShowRemainMsg(FALSE);
  vDVDShowTimeMark(TRUE);
#ifdef DVD_VR_SUPPORT
  if (bSharedInfo(SI_DISC_TYPE) == SV_DVD_VR)
  {
    vDVDShowPlayInfo(bSIItemIndex(SI_VR_CH_NO_LO));
  }
  else
#endif /* DVD_VR_SUPPORT */  
  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
#ifdef DVD_VR_SUPPORT
    if (bSharedInfo(SI_DISC_TYPE) == SV_DVD_VR)
    {
      vOsdShowTitleChapter(bSharedInfo(SI_TT_NO), bSharedInfo(SI_TT_NS),
                         bSharedInfo(SI_VR_CH_NO_LO), bSharedInfo(SI_VR_CH_NS_LO),
                         OSD_NO_DISAPPEAR);
    }
    else
#endif /* DVD_VR_SUPPORT */
    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);
  }
  
  vDVDShowTimeMark(TRUE);
}

/************************************************************************
     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);
  }
}

⌨️ 快捷键说明

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