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

📄 nonshow.c

📁 mtk1389L latest sourcecode enjoy
💻 C
📖 第 1 页 / 共 3 页
字号:
/**********************************************************************/
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/
/***************                                       ****************/
/***************  $Modtime:: 07/04/09 11:49a   $       ****************/
/***************  $Revision:: 2                $       ****************/
/***************                                       ****************/
/***************   Description : OSD                   ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer : Peter Huang           ****************/
/**********************************************************************/

#define _NONSHOW_C_

#pragma NOAREGS

#include "general.h"
#include "osdshow.h"
#ifdef MT1379_MANUFACTURE_TEST
extern void vOsdShowTestInfo(BYTE bIndex) large;
#endif

extern BOOL fgIsDiscError(void) large;

// *********************************************************************
// Function : void vOsdShowInitState(BYTE bInitState)
// Description :
// Parameter :
// Return    : None
// Note      :
// *********************************************************************
void vOsdShowInitState(BYTE bInitState) large
{
  BYTE pbBmp[3];


#ifndef VFD_SUPPORT
  if (bInitState != SV_DISC_IDENTIFIED)
    vVfdLedSet(TRUE, FALSE, LED_ALL);
#endif

  if(bInitState != SV_DISC_IDENTIFIED)
  {
    vVfdClearAll();
  }
  switch (bInitState)
  {
    case SV_LOADING_DISC:
      vDelBmp(); /* to clear bitmap ICON */
      pbBmp[0] = 2;
      pbBmp[1] = BMP_LOAD_0;
      pbBmp[2] = BMP_LOAD_1;
#ifndef MT1389HD_NO_SERVO       
      vClearWB(WB_NORMAL_HEAD1);
      vOsdShowBmpXY(0, 0, WB_NORMAL_HEAD1, pbBmp, 1, OSD_NO_DISAPPEAR);
      vOsdPosShow(OSD_POS_INIT, OSD_MSG_LOADING, OSD_NO_DISAPPEAR);
#endif //MT1389HD_NO_SERVO
      vVfdMessage(VFD_MESSAGE_LOADING);
      break;

    case SV_TRAY_OPENING:
      vDelBmp(); /* to clear bitmap ICON */
      pbBmp[0] = 1;
      pbBmp[1] = BMP_OPEN;
#ifndef MT1389HD_NO_SERVO            
      vOsdShowBmpXY(0, 0, WB_NORMAL_HEAD1, pbBmp, 0, OSD_NO_DISAPPEAR);
      vOsdPosShow(OSD_POS_INIT, OSD_MSG_OPEN, OSD_NO_DISAPPEAR);
#endif //MT1389HD_NO_SERVO
      vVfdMessage(VFD_MESSAGE_OPEN);
      break;

    case SV_TRAY_CLOSING:
      vDelBmp(); /* to clear bitmap ICON */
      pbBmp[0] = 1;
      pbBmp[1] = BMP_CLOSE;
#ifndef MT1389HD_NO_SERVO            
      vOsdShowBmpXY(0, 0, WB_NORMAL_HEAD1, pbBmp, 0, OSD_NO_DISAPPEAR);
      vOsdPosShow(OSD_POS_INIT, OSD_MSG_CLOSE, OSD_NO_DISAPPEAR);
#endif //MT1389HD_NO_SERVO
      vVfdMessage(VFD_MESSAGE_CLOSE);
      break;

    case SV_TRAY_ERROR:
      vDelBmp(); /* to clear bitmap ICON */
#ifndef MT1389HD_NO_SERVO            
      vOsdPosShow(OSD_POS_INIT, OSD_MSG_TRAY_ERROR, OSD_NO_DISAPPEAR);
#endif //MT1389HD_NO_SERVO
      break;

    case SV_NO_DISC:
  #ifdef MT1379_MANUFACTURE_TEST
      vOsdShowTestInfo(0x10);
      _bPlayPostKey = IR_EJECT;
	#endif

      vDelBmp(); /* to clear bitmap ICON */

#ifndef MT1389HD_NO_SERVO            
      if (fgIsDiscError())
      {      
        vOsdPosShow(OSD_POS_INIT, OSD_MSG_DISC_ERROR, OSD_NO_DISAPPEAR);
      }
      else
      {
        vOsdPosShow(OSD_POS_INIT, OSD_MSG_NO_DISC, OSD_NO_DISAPPEAR);
      }
#endif //MT1389HD_NO_SERVO
      
      vVfdMessage(VFD_MESSAGE_NO_DISC);
      break;

    case SV_UNKNOWN_DISC:
      vDelBmp(); /* to clear bitmap ICON */
#ifndef MT1389HD_NO_SERVO                  
      vOsdPosShow(OSD_POS_INIT, OSD_MSG_UNKNOWN_DISC, OSD_NO_DISAPPEAR);
#endif //MT1389HD_NO_SERVO
      vVfdMessage(VFD_MESSAGE_UN_DISC);
      break;

    case SV_DISC_IDENTIFIED:
      // HACK code: let the icon and message disappear at the same time
      vOsdSetSt(OSD_ST_BURST);
      vOsdPosClear(OSD_POS_INIT); /* the disc type show os moved to layer 2 */
      vDelBmp(); /* to clear bitmap ICON */
      // HACK code
      vOsdSetSt(OSD_ST_NML);
      break;

    case SV_EMD_LOADING:
      vDelBmp();
/*
  Add the 'vOsdPosClear(OSD_POS_REMAIN_MSG);' by Bright_liu 2005/12/21, for CQ(PL00101404)
  when the OSD show the remmain time message, and press the key to change device, the 'waiting'
  message overlay the old message but it has some garbage.
*/
      vOsdPosClear(OSD_POS_REMAIN_MSG);

      vOsdPosShow(OSD_POS_INIT, OSD_MSG_WAITING, OSD_NO_DISAPPEAR);
      break;

    default:
      vOsdPosClear(OSD_POS_INIT);
      vDelBmp(); /* to clear bitmap ICON */
      break;
  }

  pbBmp[0]=bSharedInfo(SI_TV_SYSTEM);
  if (pbBmp[0]==SV_NTSC)
    vVfdSymbol(VFD_SYM_TV_NTSC);
  else if (pbBmp[0]==SV_PAL)
    vVfdSymbol(VFD_SYM_TV_PAL);
  else
    vVfdSymbol(VFD_SYM_TV_MULTI);


#ifdef PSCAN_EN

  if (bEepromReadByte(TV_PSCAN_EN_POS)==SV_ON)
  	{
  	if (bEepromReadByte(TV_COMP_POS)==SV_TVE_VGA)
      vVfdSymbol(VFD_SYM_TV_VGA);
  	else
      vVfdSymbol(VFD_SYM_TV_PSCAN);
  	}
  else
    vVfdSymbol(VFD_SYM_TV_INTERLACE);

#endif  //PSCAN_EN

#ifdef MTK_MIC
#ifdef PLAYER_KARAOKE

  if (bEepromReadByte(MIC_SW_POS) == EV_ON)
    vVfdSymbol(VFD_SYM_VOCAL_ON);
  else
    vVfdSymbol(VFD_SYM_VOCAL_OFF);

#endif  //PLAYER_KARAOKE
#endif  //MTK_MIC

#ifdef VFD_INIT_FLASHING
  if (fgIsDiscReady(bStatus))
  {
    vVfdFlashSwitch(VFD_FLASHING_OFF);
  }
  else
  {
    vVfdFlashSwitch(VFD_FLASHING_ON);
  }
#endif /* VFD_INIT_FLASHING */

}

// *********************************************************************
// Function : void vOsdShowPlayStatus(BYTE bStatus, BYTE bTime)
// Description :
// Parameter :  bState
// Return    : None
// *********************************************************************
void vOsdShowPlayStatus(BYTE bStatus, BYTE bTime) large
{
  WORD wMsgIndex = 0;
#ifdef PLAYER_GOTO
  BYTE pbStr[] = { 0 };
#endif

  switch (bStatus)
  {
    case OSD_SHOW_PLAY:
      wMsgIndex = OSD_MSG_ICON_PLAY;
      break;

    case OSD_SHOW_TRICK:
      break;

#if 1
    case OSD_SHOW_NEXT_TRK:
    case OSD_SHOW_NEXT_CH:
    case OSD_SHOW_NEXT_ITEM:
      wMsgIndex = OSD_MSG_ICON_NEXT;
      break;

    case OSD_SHOW_PREV_TRK:
    case OSD_SHOW_PREV_CH:
    case OSD_SHOW_PREV_ITEM:
      wMsgIndex = OSD_MSG_ICON_PREV;
      break;
#else /* show message instead icon */
    case OSD_SHOW_NEXT_TRK:
      vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_NEXT_TRACK, bTime);
      break;

    case OSD_SHOW_NEXT_CH:
      vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_NEXT_CHAPTER, bTime);
      break;

    case OSD_SHOW_NEXT_ITEM:
      vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_NEXT_ITEM, bTime);
      break;

    case OSD_SHOW_PREV_TRK:
      vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_PREVIOUS_TRACK, bTime);
      break;

    case OSD_SHOW_PREV_CH:
      vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_PREVIOUS_CHAPTER, bTime);
      break;

    case OSD_SHOW_PREV_ITEM:
      vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_PREVIOUS_ITEM, bTime);
      break;
#endif

    default:
      bStatus = OSD_SHOW_CLEAR;
      break;
  }

  if (wMsgIndex != 0)
  {
    vOsdCoreSetPlayStatus(bStatus, bTime);
  }

  if (bStatus == OSD_SHOW_CLEAR)
  {
    vOsdDisplayChange(DISP_TRICK, bSharedInfo(SI_PBC_STATE));
  }
  else if (wMsgIndex != 0)
  {
#if 0
#ifdef PLAYER_FLMENU
    if (fgFlVdoOn)
    {
      //vFlIpShowInfo(IP_INFO_PBC, bHiByte(wMsgIndex), bLoByte(wMsgIndex));
      //vOsdPosShow(OSD_POS_NORMAL, wMsgIndex, bTime);
      vOsdPosShow(OSD_POS_PLAY_STATUS, wMsgIndex, bTime);
    }
    else
#endif /* PLAYER_FLMENU */
#endif
    {
      vOsdPosShow(OSD_POS_PLAY_STATUS, wMsgIndex, bTime);
#ifdef PLAYER_GOTO
      if (fgIsInGoto())
      {
        vGotoShowIcon(wMsgIndex, pbStr);
      }
#endif /* PLAYER_GOTO */
    }
  }
}

struct _sPbcStateMsg
{
  WORD  wMsg;
  WORD  wIcon;
};

static code struct _sPbcStateMsg _rPbcStateMsg[SV_DIGEST+1] =
{
  { OSD_MSG_NULL, OSD_MSG_NULL },
  { OSD_MSG_STOP, OSD_MSG_ICON_STOP },    // SV_STOP
  { OSD_MSG_PLAY, OSD_MSG_ICON_PLAY },    // SV_PLAY
  { OSD_MSG_FFX, OSD_MSG_ICON_FFX},       // SV_FF
  { OSD_MSG_SFX, OSD_MSG_ICON_SFX},       // SV_SF
  { OSD_MSG_FRX, OSD_MSG_ICON_FRX},       // SV_FR
  { OSD_MSG_ICON_SRX, OSD_MSG_ICON_SRX }, // SV_SR
  { OSD_MSG_PAUSE, OSD_MSG_ICON_PAUSE },  // SV_PAUSE
  { OSD_MSG_STEP, OSD_MSG_ICON_STEP },    // SV_STEP
  { OSD_MSG_ICON_STEP_BACK, OSD_MSG_ICON_STEP_BACK }, // SV_STEP_BACK
  { OSD_MSG_NULL, OSD_MSG_NULL},          // SV_FREEZE
  { OSD_MSG_PLAY, OSD_MSG_ICON_PLAY },    // SV_STILL
  { OSD_MSG_NULL, OSD_MSG_NULL},          // SV_SETUP_PAUSE
  { OSD_MSG_STOP, OSD_MSG_ICON_STOP },    // SV_STOP_RESUME
  { OSD_MSG_PLAY, OSD_MSG_ICON_PLAY },    // SV_DIGEST9
  { OSD_MSG_PLAY, OSD_MSG_ICON_PLAY },    // SV_DIGEST4
  { OSD_MSG_PLAY, OSD_MSG_ICON_PLAY },    // SV_DIGEST
};

void vGetPbcStateMsg(BYTE bState, BYTE bVal, WORD *wMsg, BYTE *pbStr) large
{
  pbStr[0] = 2;

  if ((bState == SV_FF) || (bState == SV_FR))
  {
    if (bVal == 0)
    {
      bState = SV_PLAY;
    }
    else
    {
      bVal = bHEXToBCD(bVal);
      if (BCD_HI(bVal) > 0)
      {
        pbStr[1] = BCD_HI(bVal) + '0';
      }
      else
      {
        pbStr[1] = ' ';
      }
      pbStr[2] = BCD_LO(bVal) + '0';
    }
  }
  else if ((bState == SV_SF) || (bState == SV_SR))
  {
    if (bVal == 0)
    {
      bState = SV_PLAY;
    }
    else
    {
      bVal = bHEXToBCD(bVal);
      if (BCD_HI(bVal) > 0)
      {
        pbStr[1] = BCD_HI(bVal) + '0';
        pbStr[2] = BCD_LO(bVal) + '0';
      }
      else
      {
        pbStr[1] = BCD_LO(bVal) + '0';
        pbStr[2] = ' ';
      }
    }
  }
  else
  {
    pbStr[0] = 0;
  }
  
  // 20050517, PL00000965, when bState == SV_PRE_PLAY, it's out of range and will show unexpected msg.
  // So we add check if it's out of range, set msg as NULL
  if (bState > SV_DIGEST)
  {
    *wMsg = OSD_MSG_NULL ;
    return ;
  }

  *wMsg = _rPbcStateMsg[bState].wIcon;
//  *wMsg = (fgFlCheckStatus(FL_STATUS_IN_MENU)) ? _rPbcStateMsg[bState].wIcon :
//                                _rPbcStateMsg[bState].wMsg;
}

// *********************************************************************
// Function : void vOsdShowPbcState(BYTE bState, BYTE bVal, BYTE bTime)
// Description :
// Parameter :  bState
//                      - SV_STOP
//                      - SV_PLAY
//                      - SV_FF
//                      - SV_FR
//                      - SV_SF
//                      - SV_SR
//                      - SV_PAUSE
//                      - SV_STEP
// Return    : None
// *********************************************************************
void vOsdShowPbcState(BYTE bState, BYTE bVal, BYTE bTime) large
{
  BYTE pbStr[5];
  WORD wMsgIndex = 0;
  BYTE bPlayType = bOsdCoreCurrPlayType();

  if (bPlayType != OSD_SHOW_CLEAR)
  {
    if (bPlayType != OSD_SHOW_PLAY)
    {
      // we must by pass user action here
      if (fgIsTrickPlay(bState))
      {
        vOsdCoreSetPlayStatus(OSD_SHOW_TRICK, bTime);
      }
      else if ((bState == SV_PLAY) && (bPlayType == OSD_SHOW_TRICK))
      {
        // clear play status first, this should be moved to vChangePbcState()
        vOsdCoreSetPlayStatus(OSD_SHOW_CLEAR, 0);
      }
      else
      {
        return;
      }
    }
    else if (bState == SV_PLAY)  // && (bPlayType == OSD_SHOW_PLAY)
    {
      return;
    }
    else
    {
      // clear play status first
      vOsdCoreSetPlayStatus(OSD_SHOW_CLEAR, 0);
    }

⌨️ 快捷键说明

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