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

📄 show_iso.c

📁 MTK portableDVD 采用mtk1389方案的代码
💻 C
字号:
/**********************************************************************/
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/
/***************                                       ****************/
/***************  $Modtime:: 05/06/28 11:06a   $       ****************/
/***************  $Revision: 2.0 $       ****************/
/***************                                       ****************/
/***************   Description :                       ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer :                       ****************/
/**********************************************************************/

#define _SHOW_ISO_C_

#pragma NOAREGS
#include "general.h"
extern xdata BYTE _bFlMnListId;//leguo
#ifdef SUPPORT_DATA_DISC

// *********************************************************************
// Initial OSD state for ISO
// *********************************************************************
#ifdef BBK_NEW_GUI
extern void vRefreshTimeBar(BYTE bHour,BYTE bMin,BYTE bSec,BOOL fgInit) large;
extern void vFlshowPlayInfoMsg(void) large;
extern void vFlIpShowTimeRemain(BYTE bHour,BYTE bMin, BYTE bSec) large;
#endif
void vISOShowInit(void) large
{
  _rOsdStateCtx.fgTimeShow = TRUE;
#ifdef PLAYER_FLMENU
  _rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
#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;

  vSetSharedInfo(SI_FSMENU_LOGO_ID, ISO_LOGO_COLOR);
  vPlayerShowLogo(ISO_STOP_LOGO, ISO_LOGO_COLOR);
}
// *********************************************************************
// Show time mark
// *********************************************************************
#ifdef GUI_NEW_DISPLAY
void vISOShowTimeMark(BYTE fgClear) large
{
  BYTE  bHour, bMin, bSec;
	BYTE  bTHour, bTMin, bTSec;
  BYTE  bPbcState = bSharedInfo(SI_MP3_MOD);
  BYTE  bItemType = bSharedInfo(SI_ISO_ITEM_TYPE);


  bHour = bMin = bSec = 0;
	bTHour = bTMin = bTSec = 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);
			bTHour = bSharedInfo(SI_TIME_TOTAL_HH);
      bTMin  = bSharedInfo(SI_TIME_TOTAL_MM);
      bTSec  = bSharedInfo(SI_TIME_TOTAL_SS);
      break;

    default:
      _rOsdStateCtx.bTimeType = OSD_SHOW_DISABLE;
      return;
  }

  if ((/*10/15am for display vfd time while playing mp3 and jpeg(fgFlCheckStatus(FL_STATUS_IN_MENU)) &&*/ (fgIsDiscPlay(bSharedInfo(SI_MP3_MOD)))) ||
      ((fgFlCheckStatus(FL_STATUS_IN_MPEG)) && (fgIsDiscPlay(bSharedInfo(SI_PBC_STATE)))))
  {
    vVfdUpdateTime(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))
    {
			vFlIpShowTimeRemain(bHour, bMin, bSec);
     #ifdef BBK_NEW_GUI
      vRefreshTimeBar(bHour,bMin,bSec,FALSE);
     #endif
    }
    else
#endif
		  vOsdShowIsoTimeRemain23(bHour, bMin, bSec, bTHour, bTMin, bTSec,OSD_NO_DISAPPEAR);
  }
}

#else

// *********************************************************************
// 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 ((/*10/15am for display vfd time while playing mp3 and jpeg(fgFlCheckStatus(FL_STATUS_IN_MENU)) &&*/ (fgIsDiscPlay(bSharedInfo(SI_MP3_MOD)))) ||
      ((fgFlCheckStatus(FL_STATUS_IN_MPEG)) && (fgIsDiscPlay(bSharedInfo(SI_PBC_STATE)))))
  {
    vVfdUpdateTime(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))
    {
      vFlIpShowTimeRemain(bHour, bMin, bSec);
     #ifdef BBK_NEW_GUI
      vRefreshTimeBar(bHour,bMin,bSec,FALSE);
     #endif
    }
    else
#endif
      vOsdShowIsoTimeRemain2(bHour, bMin, bSec, OSD_NO_DISAPPEAR);
  }
}
#endif

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

#ifndef RUSSIAN_BUYER_REQUEST2	
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(bItemType < SV_ISO_MPG) //BillDen
    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);
  }
}
#endif
// *********************************************************************
// Function : void vISOShowPlayInfo(BYTE bItem)
// Description :
// Parameter : None
// Return    : None
// *********************************************************************
void vISOShowPlayInfo(BYTE bItem) large
{

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

// *********************************************************************
// 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];
  }
  else if ((bState == SV_SF) || (bState == SV_SR))
  {
    if (bSpeed >= ISO_SLOW_MAX)
    {
      bSpeed = ISO_SLOW_MAX - 1;
    }
    bSpeed = pbISOSlowDispTbl[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 : void vISOShowItemType(BYTE bType)
// Description :
// Parameter : None
// Return    : None
// *********************************************************************
void vISOShowItemType(BYTE bType) large
{
  WORD wFileNo;
  BYTE bPbcState = bSharedInfo(SI_PBC_STATE);



  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
}

// *********************************************************************
// 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))
#else
  if (!fgIsIsoItemAV(bItemType))
#endif
  {
    vOsdShowPbcState(SV_STOP, 0, OSD_NO_DISAPPEAR);
  }
#if 0
  vISOShowRemainMsg(FALSE);
  vISOShowTimeMark(TRUE);
#else
#ifndef GUI_II_YWB
  vOsdPosClear(OSD_POS_REMAIN_MSG);
#endif
  vOsdPosClear(OSD_POS_ISO_TIME_LEFT);
#endif
#ifdef BBK_NEW_GUI
  vFlshowPlayInfoMsg();
#endif
  /* Since we have FS menu, no play info is needed in STOP mode */
  if ((fgIsInSetupMenu() == FALSE) && (!fgFlCheckStatus(FL_STATUS_IN_MENU)))
  {
#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))
  {
  #ifndef RUSSIAN_BUYER_REQUEST2		//songchen 061213
    vISOShowRemainMsg(FALSE);
  #endif
    vISOShowTimeMark(TRUE);
  }

    vISOShowPlayInfo(bSIItemIndex(SI_FILE_NO_HI));
}

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

#else  // #ifdef SUPPORT_DATA_DISC

static code WORD pwIsoDispModeMsg[] = { 0 };

/*
void vISOShowTimeMark(BYTE fgClear) large  
{ 
  BYTE bTmp = pwIsoDispModeMsg[0];
}
*/
void vISOShowItemType(BYTE bType) large  
{ 
  BYTE bTmp = pwIsoDispModeMsg[0];
}
#endif  // #ifdef SUPPORT_DATA_DISC

⌨️ 快捷键说明

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