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

📄 show_com.c

📁 mtkDVD源代码程序4*16 很好玩的内置5.1环绕音效 大家可以玩一下
💻 C
字号:
/***************  $Modtime:: 0 $       ****************/
/***************  $Revision:: 1                $       ****************/
/***************                                       ****************/
/***************   Description :                       ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer :                       ****************/
/**********************************************************************/
#define _SHOW_COM_C_

#pragma NOAREGS
#include "general.h"
#include "../../custom/demo/fslist/flcomm.h"

// *********************************************************************
// Initial OSD state 
// *********************************************************************
void vShowInit(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 */  
}

// *********************************************************************
// Show time mark
// *********************************************************************
void vShowTimeMark(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);
  BYTE bItemType = bSharedInfo(SI_ISO_ITEM_TYPE);
  BYTE bTrkNo = bSharedInfo(SI_TRACK_NO);
  BYTE bType = _rOsdStateCtx.bTimeType;

  if((bSharedInfo(SI_DVD_DOM) == SV_VMGM_DOM) || (bSharedInfo(SI_DVD_DOM) == SV_VTSM_DOM))
  {
    vOsdShowTimeClear();
    return;
  }

#ifndef CDDA_USE_CDFS
  if((fgIsIsoPlay()) && (_bFlCmdTarget != FL_CMD_TARGET_MPEG))
  { 
    bPbcState = bSharedInfo(SI_MP3_MOD);
  }
  else if(fgIsCddaPlay()) 
  {
    return;
  }
#endif  

#ifdef VCD_SUPPORT
  if(fgIsVcdPlay())//make _rOsdStateCtx.bTimeType of VCD match with DVD and ISO
  {                //case 3,4 mapping to case 1,2
    if(bType >= 3) bType-=2;
    else if(bType >= 1) bType+=2;
  }
#endif  
  
  switch(bType)
  {
    case OSD_SHOW_DISABLE:
      if (fgClear)
      {
        if((fgIsIsoPlay())&& (_bFlCmdTarget != FL_CMD_TARGET_MPEG))
        {
          vOsdPosClear(OSD_POS_ISO_TIME_LEFT);
        }
        else
        {
          vOsdShowTimeClear();
        }  
      }
      /* for VFD */
      /* title elapsed */
#ifdef VCD_SUPPORT      
      if(fgIsVcdPlay())
      {
        /* track elsapsed time */
        bHour = bSharedInfo(SI_TIME_TRACK_HH);
        bMin = bSharedInfo(SI_TIME_TRACK_MM);
        bSec = bSharedInfo(SI_TIME_TRACK_SS);
      }
      else
#endif      
      {
        bHour = bSharedInfo(SI_TIME_HH);
        bMin  = bSharedInfo(SI_TIME_MM);
        bSec  = bSharedInfo(SI_TIME_SS);
      }  
      break;

    case 1:
    /*   DVD    OSD_SHOW_TITLE_ELAPSED    */
    /*   VCD    OSD_SHOW_TOTAL_ELAPSED    */
    /*   ISO    OSD_SHOW_SINGLE_ELAPSED   */
    
      bHour = bSharedInfo(SI_TIME_HH);
      bMin  = bSharedInfo(SI_TIME_MM);
      bSec  = bSharedInfo(SI_TIME_SS);
      break;

    case 2:
    /*   DVD    OSD_SHOW_TITLE_REMAIN     */
    /*   VCD    OSD_SHOW_TOTAL_REMAIN     */
    /*   ISO    OSD_SHOW_SINGLE_REMAIN    */
      bHour = bSharedInfo(SI_TIME_RMN_HH);
      bMin  = bSharedInfo(SI_TIME_RMN_MM);
      bSec  = bSharedInfo(SI_TIME_RMN_SS);
      break;

    case 3:
    /*   DVD	OSD_SHOW_CHAPTER_ELAPSED   */
    /*   VCD    OSD_SHOW_SINGLE_ELAPSED    */
#ifdef VCD_SUPPORT    
      if(fgIsVcdPlay())
      {
        bHour = bSharedInfo(SI_TIME_TRACK_HH);
        bMin = bSharedInfo(SI_TIME_TRACK_MM);
        bSec = bSharedInfo(SI_TIME_TRACK_SS);
      }
      else
#endif      
      {
        bHour = bSharedInfo(SI_TIME_CHAPTER_HH);
        bMin  = bSharedInfo(SI_TIME_CHAPTER_MM);
        bSec  = bSharedInfo(SI_TIME_CHAPTER_SS);
      }
      break;

    case 4:
    /*  DVD 	OSD_SHOW_CHAPTER_REMAIN    */
    /*  VCD     OSD_SHOW_SINGLE_REMAIN     */
#ifdef VCD_SUPPORT
      if(fgIsVcdPlay())
      {
        bHour = bSharedInfo(SI_TIME_TRACK_RMN_HH);
        bMin = bSharedInfo(SI_TIME_TRACK_RMN_MM);
        bSec = bSharedInfo(SI_TIME_TRACK_RMN_SS);
      }
      else
#endif      
      {
        bHour = bSharedInfo(SI_TIME_CHAPTER_RMN_HH);
        bMin  = bSharedInfo(SI_TIME_CHAPTER_RMN_MM);
        bSec  = bSharedInfo(SI_TIME_CHAPTER_RMN_SS);
      }
      break;  
  }

  if(fgIsVcdPlay())
  {
    if(bMin >= 0x60)
    {
      bHour = 1;
      bMin -= 0x60;
    } 
  }

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

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

  if (((bDom == SV_VTSTT_DOM) || (bDom == SV_ATSTT_DOM) )&& (bPbcState != SV_STOP) && (fgIsDvdPlay())
#ifdef DVD_DGST_SHOW_MSG_ONLY
      && (bSharedInfo(SI_USR_PBC_CTRL) != SV_USR_DIGEST)
#endif
     )
  {
    VfdShowPlayTime(bHour, bMin, bSec);
  }
  else 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_UPDATE_HOUR
    if (bMin > 0x59)
    {
      VfdShowPlayTime(1, bMin-0x60, bSec);
    }
    else
#endif
    {
      VfdShowPlayTime(0, bMin, bSec);
    }
  }

// #ifndef CDDA_USE_CDFS
  if(fgIsIsoPlay() && (_bFlCmdTarget != FL_CMD_TARGET_MPEG))
  {
    if (_rOsdStateCtx.bTimeType != OSD_SHOW_DISABLE)
    {
#ifdef PLAYER_FLMENU
      if (fgFlCheckStatus(FL_STATUS_IN_MENU) && (_rSearchStateCtx.bType != SEARCH_ISO_TIME))
        vFlIpShowInfo(IP_INFO_PLAYTIME, bMin, bSec);
      else
#endif
        vOsdShowIsoTimeRemain2(bHour, bMin, bSec, OSD_NO_DISAPPEAR);
    }
  }
// #endif  
}


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

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

    case 1:
    /*  case OSD_SHOW_TITLE_ELAPSED:    //DVD  */
    /*  case OSD_SHOW_SINGLE_ELAPSED:   //VCD  */
      bHour = 0;
      bMin  = 0;
      bSec  = 0;
      break;

    case 2:
    /*  case OSD_SHOW_TITLE_REMAIN:   //DVD  */
    /*  case OSD_SHOW_SINGLE_REMAIN:  //VCD	 */
#ifdef VCD_SUPPORT
      if(fgIsVcdPlay())
      {
        bMin = bSharedInfo(SI_TIME_TOTAL_TRACK_MM);
        bSec = bSharedInfo(SI_TIME_TOTAL_TRACK_SS);
        if(bMin >= 0x60)
        {
          bHour = 1;
          bMin -= 0x60;
        }  
      }
      else
#endif      
      {
        bHour = bSharedInfo(SI_TIME_TOTAL_HH);
        bMin  = bSharedInfo(SI_TIME_TOTAL_HH);
        bSec  = bSharedInfo(SI_TIME_TOTAL_HH);
      }
      break;

    case 3:
    /*  case OSD_SHOW_CHAPTER_ELAPSED:  //DVD  */
    /*  case OSD_SHOW_TOTAL_ELAPSED:    //VCD  */
      bHour = 0;
      bMin  = 0;
      bSec  = 0;
      break;

    case 4:
    /*  case OSD_SHOW_CHAPTER_REMAIN:   //DVD  */
    /*  case OSD_SHOW_TOTAL_REMAIN:     //VCD  */
#ifdef VCD_SUPPORT    
      if (fgIsVcdPlay())
      {
        bMin = bSharedInfo(SI_TIME_TOTAL_MM);
        bSec = bSharedInfo(SI_TIME_TOTAL_SS);	
        if(bMin >= 0x60)
        {
          bHour = 1;
          bMin -= 0x60;
        }  
      }
      else
#endif      
      {
        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;
  }

#ifdef VCD_SUPPORT
  if (fgIsVcdPlay())
  {
    if (bSharedInfo(SI_TRACK_NO) == 0) /* for PBC menu */
    {
      bHour = 0; bMin = 0; bSec = 0;
    }
  }
  else
#endif  
#ifndef DVD_SHOW_MENU_TIME
  if(fgIsDvdPlay())
  {
    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);
    }
  }

#ifdef VCD_SUPPORT
  if ((fgIsVcdPlay()) && (bTrkNo != 0))
  {
#ifdef VCD_VFD_UPDATE_HOUR
    if (bMin > 0x59)
    {
      VfdShowPlayTime(1, bMin-0x60, bSec);
    }
    else
#endif
    {
      VfdShowPlayTime(0, bMin, bSec);
    }
  }
  else
#endif /* #ifdef VCD_SUPPORT */   
  if ((fgIsDvdPlay()) && (bDom == SV_VTSTT_DOM))
  {
    VfdShowPlayTime(bHour, bMin, bSec);
  }
}

// *********************************************************************
// Show trick mode
// *********************************************************************
void vShowTrick(BYTE bState) large
{
  BYTE bSpeed = bSharedInfo(SI_PBC_SPEED);
  	
  if ((bState == SV_FF) || (bState == SV_FR))
  {
    if (bSpeed >= FAST_MAX)
    {
      bSpeed = FAST_MAX - 1;
    }
    
    bSpeed = pbFastDispTbl[bSpeed];
  }
  else if (bState == SV_SF) 
  {
    if (bSpeed >= SLOW_MAX)
    {
      bSpeed = SLOW_MAX - 1;
    }
    bSpeed = pbSlowDispTbl[bSpeed];
  }

  switch (bState)
  {
    case SV_FF:
      vOsdShowPbcState(SV_FF, bSpeed, OSD_NO_DISAPPEAR);
      break;

    case SV_FR:
      vOsdShowPbcState(SV_FR, bSpeed, OSD_NO_DISAPPEAR);
      break;

    case SV_SF:
      vOsdShowPbcState(SV_SF, bSpeed, OSD_NO_DISAPPEAR);
      break;
      
    default:
      break;
  }
}

/************************************************************************
     Function :
  Description :
    Parameter :
    Return    :
************************************************************************/
void vShowStopResumeState(void) large
{
  /* show LOGO first */
  if(fgIsDvdPlay())
  {
    vPlayerShowLogo(DVD_STOP_LOGO, DVD_LOGO_COLOR);
  }
#ifdef VCD_SUPPORT  
  else if(fgIsVcdPlay())
  {
    vPlayerShowLogo(VCD_STOP_LOGO, VCD_LOGO_COLOR);
  }
#endif  

#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 vShowStopState(void) large
{
  /* show LOGO first */
  if(fgIsDvdPlay())
  {
    vPlayerShowLogo(DVD_STOP_LOGO, DVD_LOGO_COLOR);
  }
#ifdef VCD_SUPPORT  
  else if(fgIsVcdPlay())
  {
    vPlayerShowLogo(VCD_STOP_LOGO, VCD_LOGO_COLOR);
  }
#endif  
  
  /* reset OSD play state show */
  vOsdShowWb(OSD_WB_CLEAR);

  vOsdShowPbcState(SV_STOP, 0, OSD_NO_DISAPPEAR);
  
}

/************************************************************************
     Function :
  Description : 
    Parameter :
    Return    :
************************************************************************/
BOOL fgCheckSelectRange(BYTE bNum) large
{
  BYTE bPbcState = bSharedInfo(SI_PBC_STATE);

  if( 
  	 (((fgIsDiscPlay(bPbcState) )&& 
      (bSharedInfo(SI_HLI_STATE) == SV_ON) &&
      (fgIsDvdPlay())) || //DVD
      ((bSharedInfo(SI_VCD_DOM) == SV_SELECT_LIST) && 
       (fgIsVcdPlay()))) &&
      (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 + -