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

📄 show_iso.c

📁 MTK 1389E SOURCE CODE
💻 C
字号:
/**********************************************************************/
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/
/***************                                       ****************/
/***************  $Modtime:: 05/09/05 3:48p    $       ****************/
/***************  $Revision:: 4                $       ****************/
/***************                                       ****************/
/***************   Description :                       ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer :                       ****************/
/**********************************************************************/

#define _SHOW_ISO_C_

#pragma NOAREGS
#include "general.h"

#ifdef SUPPORT_DATA_DISC

#ifndef NEW_SHOW
// *********************************************************************
// Initial OSD state for ISO
// *********************************************************************
void vISOShowInit(void) large
{
  _rOsdStateCtx.fgTimeShow = TRUE;
#ifdef PLAYER_FLMENU
  _rOsdStateCtx.bTimeType = OSD_SHOW_SINGLE_ELAPSED;
#else
  _rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
#endif
#ifdef KEEP_REMAIN_TYPE_SHOW
  _rOsdStateCtx.fgRemainMsgShow = TRUE;
#else
  _rOsdStateCtx.fgRemainMsgShow = FALSE;
#endif
  _rOsdStateCtx.fgPlayInfoShow = TRUE;
  _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;
  _rOsdStateCtx.fgTimePos = OSD_SHOW_TIME_LEFT;

    #ifndef MT1379_MANUFACTURE_TEST
  vPlayerShowLogo(ISO_STOP_LOGO, ISO_LOGO_COLOR);
    #endif
  vPlayerShowLogo(ISO_STOP_LOGO, ISO_LOGO_COLOR);
}

// *********************************************************************
// Show time mark
// *********************************************************************
void vISOShowTimeMark(BYTE fgClear) large
{
  BYTE  bHour, bMin, bSec;
  BYTE  bPbcState = bSharedInfo(SI_MP3_MOD);
  BYTE  bItemType = bSharedInfo(SI_ISO_ITEM_TYPE);


  bHour = bMin = bSec = 0;

#ifndef PLAYER_FLMENU
  if (fgFlCheckStatus(FL_STATUS_IN_MENU))
  {
    if (!fgIsDiscPlay(bPbcState) || (bItemType == SV_ISO_NONE))
    {
      vOsdPosClear(OSD_POS_ISO_TIME_LEFT);
      return;
    }
  }
  else if (fgFlCheckStatus(FL_STATUS_IN_JPEG))
  {
    vOsdPosClear(OSD_POS_ISO_TIME_LEFT);
    return;
  }
#endif /* PLAYER_FLMENU */

  switch(_rOsdStateCtx.bTimeType)
  {
    case OSD_SHOW_DISABLE:
      if (fgClear)
      {
        vOsdPosClear(OSD_POS_ISO_TIME_LEFT);
      }
      /* for VFD */
      bHour = bSharedInfo(SI_TIME_HH);
      bMin  = bSharedInfo(SI_TIME_MM);
      bSec  = bSharedInfo(SI_TIME_SS);
      break;

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

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

    default:
      _rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
      return;
  }

  if (((fgFlCheckStatus(FL_STATUS_IN_MENU)) && (fgIsDiscPlay(bSharedInfo(SI_MP3_MOD)))) ||
      ((fgFlCheckStatus(FL_STATUS_IN_MPEG)) && (fgIsDiscPlay(bSharedInfo(SI_PBC_STATE)))))
  {
    VfdShowPlayTime(bHour, bMin, bSec);
  }
  else
  {
    bHour = 0; bMin = 0; bSec = 0;
  }

  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  /* #ifndef NEW_SHOW */

static code WORD pwIsoDispModeMsg[3] =
{
  OSD_MSG_DISPLAY_OFF,
  OSD_MSG_SINGLE_ELAPSED,
  OSD_MSG_SINGLE_REMAIN,
};

void vISOShowRemainMsg(BYTE fgShowOff) large
{
  BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
  BYTE bItemType = bSharedInfo(SI_ISO_ITEM_TYPE);

  if ((fgShowOff == FALSE) && (_rOsdStateCtx.bTimeType == OSD_SHOW_DISABLE))
  {
    return;
  }

  if (!fgIsDiscPlay(bPbcState))
  {
    if (fgFlCheckStatus(FL_STATUS_IN_MENU) == FALSE)
    {
      vOsdPosClear(OSD_POS_REMAIN_MSG);
    }
  }
  else if (_rOsdStateCtx.bTimeType != OSD_SHOW_DISABLE)
  {
    if ((fgIsDiscPlay(bPbcState)) && (bItemType == SV_ISO_JPG))
    {
      vOsdPosShow(OSD_POS_REMAIN_MSG, pwIsoDispModeMsg[_rOsdStateCtx.bTimeType], OSD_TIMEOUT_SHORT);
    }
    else
    {
      if (_rOsdStateCtx.fgRemainMsgShow == TRUE)
      {
        vOsdPosShow(OSD_POS_REMAIN_MSG, pwIsoDispModeMsg[_rOsdStateCtx.bTimeType], OSD_NO_DISAPPEAR);
      }
      else
      {
        vOsdPosShow(OSD_POS_REMAIN_MSG, pwIsoDispModeMsg[_rOsdStateCtx.bTimeType], OSD_TIMEOUT_SHORT);
      }
    }
  }
  else
  {
    vOsdPosShow(OSD_POS_REMAIN_MSG, pwIsoDispModeMsg[_rOsdStateCtx.bTimeType], OSD_TIMEOUT_SHORT);
  }
}

// *********************************************************************
// Function : void vISOShowPlayInfo(BYTE bItem)
// Description :
// Parameter : None
// Return    : None
// *********************************************************************
void vISOShowPlayInfo(BYTE bItem) large
{
#if 0
  WORD wFileNo = wIsoFileNo();
  WORD wFileNs = wIsoFileNs();
  BYTE bN1 = 0;
  BYTE bType = bSharedInfo(SI_DISC_TYPE);
  BYTE bState = bSharedInfo(SI_PBC_STATE);

  /* for OSD */
  switch (bItem)
  {
    case bSIItemIndex(SI_FILE_NS_HI):
    case bSIItemIndex(SI_FILE_NS_LO):
      vOsdShowFile(OSD_FILE_TOTAL, wFileNo, wFileNs, OSD_TIMEOUT);
      /* show VFD stop message here? */
      break;
    
    case bSIItemIndex(SI_FILE_NO_HI):
    case bSIItemIndex(SI_FILE_NO_LO):
      if ((fgIsDiscPlay(bState))
#ifdef JPEG_DGST_SHOW_NO
            || (fgIsInDigest(bState) && (bSharedInfo(SI_ISO_ITEM_TYPE) == SV_ISO_JPG))
#endif
         )
      {
        wFileNo = wWRDToBCD(wFileNo + 1); /* from 1 ~ Ns */
        VfdShowPlayInfo(VFD_INFO_NUMBER, bHiByte(wFileNo), bLoByte(wFileNo));
    
        /* check item type and show VFD message here? */
      }
      break;

    default:
      break;
  } /* switch (bItme) */
#endif

  /* force escape GOTO state if notified from RISC */
  if ((bItem > 0) && (bItem != PLAY_INFO_CLEAR))
  {
    if (fgIsInputStateValid(INPUT_STATE_ISO_TIME_SEARCH))
    {
      vSetExitInputState();
    }
  }
}

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

  if ((bState == SV_FF) || (bState == SV_FR))
  {
    if (bSpeed >= ISO_FAST_MAX)
    {
      bSpeed = ISO_FAST_MAX - 1;
    }
    bSpeed = pbISOFastDispTbl[bSpeed];
  }
#if ((!defined DISABLE_SF) && (!defined DISABLE_SR))   
  else if ((bState == SV_SF) || (bState == SV_SR))
  {
    if (bSpeed >= ISO_SLOW_MAX)
    {
      bSpeed = ISO_SLOW_MAX - 1;
    }
    bSpeed = pbISOSlowDispTbl[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;
  }
}
#endif  /*  #ifndef NEW_SHOW  */

// *********************************************************************
// Function : void vISOShowItemType(BYTE bType)
// Description :
// Parameter : None
// Return    : None
// *********************************************************************
void vISOShowItemType(BYTE bType) large
{
  WORD wFileNo;
  BYTE bPbcState = bSharedInfo(SI_PBC_STATE);

#if 0

  wFileNo = wIsoFileNo();
  wFileNo = wWRDToBCD(wFileNo + 1); /* from 1 ~ Ns */

#ifdef DDISC_FTYPE_JPEG_SUPPORT
  if (fgIsIsoItemStill(bType)) /* SV_ISO_JPG */
  {
    // HACK code: prevent JPEG hog all the time
    vOsdSetSt(OSD_ST_BURST);

    vOsdPosClear(OSD_POS_REMAIN_MSG);
    vOsdPosClear(OSD_POS_ISO_TIME_LEFT);
    vOsdPosClear(OSD_POS_ISO_ZOOM);
#ifndef ENFORCE_OSD_SHOW_TIME_LEFT
    if (_rOsdStateCtx.fgTimePos == OSD_SHOW_TIME_LEFT)
    {
      vOsdPosClear(OSD_POS_ISO_REPEAT);
    }
    else if (_rOsdStateCtx.fgTimePos == OSD_SHOW_TIME_RIGHT)
    {
      vOsdPosClear(OSD_POS_ISO_REPEAT_LEFT);
    }
#else
    vOsdPosClear(OSD_POS_ISO_REPEAT);
#endif /* ENFORCE_OSD_SHOW_TIME_LEFT */

    // HACK code
    vOsdSetSt(OSD_ST_NML);

    _rOsdStateCtx.fgTimeShow = FALSE;
    _rOsdStateCtx.fgRemainMsgShow = FALSE;
    _rOsdStateCtx.fgRepeatShow = FALSE;
    _rOsdStateCtx.fgABShow = FALSE;

    /* if show still picture, no show time */
    VfdClearMsg();
#ifdef VFDICON_clear_audio
  VfdIcon(VFDICON_clear_audio);
#endif
#ifdef VFDMSG_jpeg
    VfdMsg(VFDMSG_jpeg);
#endif
    if (fgIsDiscPlay(bPbcState))
    {
      VfdShowPlayInfo(VFD_INFO_NUMBER, bHiByte(wFileNo), bLoByte(wFileNo));
    }
  }
  else
#endif /* DDISC_FTYPE_JPEG_SUPPORT */
  if (fgIsIsoItemAOnly(bType))
  {
#ifndef ENFORCE_OSD_SHOW_TIME_LEFT  	
    if (_rOsdStateCtx.fgTimePos == OSD_SHOW_TIME_LEFT)
    {
      vOsdPosClear(OSD_POS_ISO_REPEAT);
    }
    else if (_rOsdStateCtx.fgTimePos == OSD_SHOW_TIME_RIGHT)
    {
      vOsdPosClear(OSD_POS_ISO_REPEAT_LEFT);
    }
#else
    vOsdPosClear(OSD_POS_ISO_REPEAT);
#endif /* ENFORCE_OSD_SHOW_TIME_LEFT */

    _rOsdStateCtx.fgTimeShow = TRUE;
#ifdef KEEP_REMAIN_TYPE_SHOW
    _rOsdStateCtx.fgRemainMsgShow = TRUE;
#else
    _rOsdStateCtx.fgRemainMsgShow = FALSE;
#endif
    _rOsdStateCtx.fgRepeatShow = TRUE;
    _rOsdStateCtx.fgABShow = TRUE;

    vISOStatusDispRecall();
  }
  else if (fgIsIsoItemAV(bType))
  {
  }
  else
  {
    vOsdPosClear(OSD_POS_REMAIN_MSG);
    vOsdPosClear(OSD_POS_ISO_TIME_LEFT);
  }
#endif // - 0


  if (fgIsInputStateValid(INPUT_STATE_ISO_TIME_SEARCH))
  {
    /* force escape GOTO state */
    fgSetPlayPostKey(IR_TIME_OUT);
  }
#ifdef DDISC_FTYPE_JPEG_SUPPORT
  else if (fgIsInputStateValid(INPUT_STATE_PCD_ZOOM))
  {
    /* force escape JPG zoom state if is not JPG */
    if (fgIsIsoItemStill(bType) == FALSE) 
    {
      /* need to escape zoom control mode */
      fgSetPlayPostKey(IR_ZOOM_IN);
    }
  }
#endif
}

extern BOOL fgFlCmdIsOOC(void) large;

// *********************************************************************
// Function : void vISOShowStopState(void) large
// Description :
// Parameter : None
// Return    : None
// *********************************************************************
void vISOShowStopState(void) large
{
  BYTE bItemType = bSharedInfo(SI_ISO_ITEM_TYPE);

  if ((!fgIsIsoItemAV(bItemType)) && (!fgFlCheckStatus(FL_STATUS_IN_MENU)))
  {
    //vPlayerShowLogo(ISO_STOP_LOGO, ISO_LOGO_COLOR);
  }
  
  /* reset OSD play state show */
  /* vOsdShowWb(OSD_WB_CLEAR); */

  // prevent showing stop icon while beginning to repeat
#ifdef PLAYER_FLMENU
//  if (!fgIsIsoItemAV(bItemType) && !fgFlCheckStatus(FL_STATUS_IN_JPEG))
  // 20050905, PL00001407, bItemType will always be SV_ISO_NONE
  if (!fgFlCheckStatus(FL_STATUS_IN_MPEG) && !fgFlCheckStatus(FL_STATUS_IN_JPEG))
#else
  if (!fgIsIsoItemAV(bItemType))
#endif
  {
    vOsdShowPbcState(SV_STOP, 0, OSD_NO_DISAPPEAR);
  }
#if 0
  vISOShowRemainMsg(FALSE);
  vISOShowTimeMark(TRUE);
#else
  vOsdPosClear(OSD_POS_REMAIN_MSG);
#ifdef NEW_SHOW
  // 20050905, PL00001407, we use OSD_POS_TIME_LEFT to display time, not OSD_POS_ISO_TIME_LEFT
  if (fgFlCheckStatus(FL_STATUS_IN_MPEG))
    vOsdPosClear(OSD_POS_TIME_LEFT);
  else
#endif
  vOsdPosClear(OSD_POS_ISO_TIME_LEFT);
#endif
  /* Since we have FS menu, no play info is needed in STOP mode */
#ifdef SUPPORT_DRM
  if ((fgIsInSetupMenu() == FALSE) && (!fgIsInDRMShow())
  	&&(!fgFlCheckStatus(FL_STATUS_IN_MENU))
#ifdef CDDA_USE_CDFS  
  #ifdef CDG_SUPPORT  
      || ((bSharedInfo(SI_CDG_DISC) == SV_ON) && (!fgFlCmdIsOOC())) // RC, very tmp solution
  #endif  
#endif   
)
#else
  if (((fgIsInSetupMenu() == FALSE) && (!fgFlCheckStatus(FL_STATUS_IN_MENU))) 
#ifdef CDDA_USE_CDFS       
  #ifdef CDG_SUPPORT  
      || ((bSharedInfo(SI_CDG_DISC) == SV_ON) && (!fgFlCmdIsOOC())) // RC, very tmp solution
  #endif      
#endif        
      )
#endif
     
  {
#ifdef PLAYER_FLMENU
    vFlRecover();
#else
    vFsMenuRecoverMenus();
#endif
  }
}

/************************************************************************
     Function :
  Description : recall all displayed information
    Parameter :
    Return    :
************************************************************************/
void vISOStatusDispRecall(void) large
{
  BYTE bItemType = bSharedInfo(SI_ISO_ITEM_TYPE);

  if ((bItemType != SV_ISO_JPG) &&
      (bItemType != SV_ISO_NONE))
  {
    vISOShowRemainMsg(FALSE);
#ifndef NEW_SHOW    
    vISOShowTimeMark(TRUE);
#else
    vShowTimeMark(TRUE);
#endif
  }

    vISOShowPlayInfo(bSIItemIndex(SI_FILE_NO_HI));
}

/************************************************************************
     Function :
  Description : 
    Parameter :
    Return    :
************************************************************************/
void vISOChangeRemainType(BYTE bType) large
{
  vISOShowRemainMsg(TRUE);
  vISOShowPlayInfo(0);
#ifndef NEW_SHOW    
  vISOShowTimeMark(TRUE);
#else
    vShowTimeMark(TRUE);
#endif
}

#else  // #ifdef SUPPORT_DATA_DISC

static code WORD pwIsoDispModeMsg[] = { 0 };

/*
void vISOShowTimeMark(BYTE fgClear) large  
{ 
  BYTE bTmp = pwIsoDispModeMsg[0];
}
*/
//void vISOShowRemainMsg(BYTE fgShowOff) large  { }
//void vISOShowPlayInfo(BYTE bItem) large  { }
//void vISOShowTrick(BYTE bState) large  { }
void vISOShowItemType(BYTE bType) large  
{ 
  BYTE bTmp = pwIsoDispModeMsg[0];
}
//void vISOShowStopState(void) large  { }
//void vISOStatusDispRecall(void) large  { }
//void vISOChangeRemainType(BYTE bType) large  { }

#endif  // #ifdef SUPPORT_DATA_DISC

⌨️ 快捷键说明

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