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

📄 avshow.c

📁 MTK1389 SOURCE CODE
💻 C
字号:
/**********************************************************************/
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/
/***************                                       ****************/
/***************  $Modtime:: 04/05/07 4:40p    $       ****************/
/***************  $Revision:: 5                $       ****************/
/***************                                       ****************/
/***************   Description : OSD                   ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer : Peter Huang           ****************/
/**********************************************************************/

#define _AVSHOW_C_

#pragma NOAREGS

#include "general.h"
#include "osdshow.h"

// *********************************************************************
// Function : void vOsdShowVol(BYTE bLevel, BYTE bTime) large
// Description :
// Parameter :  cLevel
// Return    : None
// *********************************************************************
void vOsdShowVol(BYTE bLevel, BYTE bTime) large
{
  BYTE pbStr[3];
/*  BYTE i;

  if (bLevel < 0)
  {
    bLevel = 0;
  }

  if (bLevel > MAX_VOL_LEVEL)
  {
    bLevel = MAX_VOL_LEVEL;
  }

  pbStr[0] = 12;

  for(i=0; i<bLevel/2; i++)
  {
    if (i == 10)
    {
      break;
    }
    pbStr[i+1] = ICON_VOL_1; //3;
  }
  if (bLevel % 2)
  {
    pbStr[i+1] = ICON_VOL_2; //4;
    i ++;
  }
  for(; i<20/2; i++)
  {
    pbStr[i+1] = ICON_VOL_0; //2;
  }
  bLevel = bHEXToBCD(bLevel);
  pbStr[11] = BCD_HI(bLevel) + '0';
  pbStr[12] = BCD_LO(bLevel) + '0';
*/
  bLevel = bHEXToBCD(bLevel);
  pbStr[0] = 2;
  pbStr[1] = BCD_HI(bLevel) + '0';
  pbStr[2] = BCD_LO(bLevel) + '0';


#if defined (PCD_SHOW_AUD_CTRL) && defined (SUPPORT_PCD)
  if (fgIsPcdPlay())
  {
    vOsdPosShowArg(OSD_POS_PCD_AUD_CTRL, OSD_MSG_VOLUME, bTime, pbStr);
  }
  else
#endif
  {
    vOsdPosShowArg(OSD_POS_AUD_CTRL, OSD_MSG_VOLUME, bTime, pbStr);
  }

  vOsdCoreSetAudioStatus(OSD_AUDIO_SHOW_CLEAR, 0);
}

// *********************************************************************
// Function : void vOsdShowMute(BYTE bMode) large
// Description :
// Parameter :  
// Return    : None
// *********************************************************************
void vOsdShowMute(BYTE bMode) large
{
  WORD wPos;
#ifdef PLAYER_FLMENU
  BOOL fgFlMenuOn = fgFlCheckStatus(FL_STATUS_IN_MENU);
#endif

#if defined (PCD_SHOW_AUD_CTRL) && defined (SUPPORT_PCD)
  if (fgIsPcdPlay())
  {
    wPos = OSD_POS_PCD_AUD_CTRL;
  }
  else
#endif
  {
    wPos = OSD_POS_AUD_CTRL;
  }

  switch (bMode)
  {
    case OSD_MUTE_OFF:
    {
#ifdef PLAYER_FLMENU
      if (fgFlMenuOn)
        vFlIpShowInfo(IP_INFO_VOLUME, bAdspCurrVol(), FLIP_VOLUME_MUTE_OFF | FLIP_VOLUME_REDRAW);
#endif
      vOsdPosShow(wPos, OSD_MSG_MUTEOFF, OSD_TIMEOUT);
      vOsdCoreSetAudioStatus(OSD_AUDIO_SHOW_CLEAR, 0);
      break;
    }

    case OSD_MUTE_ON:
    {
#ifdef PLAYER_FLMENU
      if (fgFlMenuOn)
        vFlIpShowInfo(IP_INFO_VOLUME, bAdspCurrVol(), FLIP_VOLUME_MUTE_ON);
#endif
      vOsdPosShow(wPos, OSD_MSG_MUTE, OSD_NO_DISAPPEAR);
      vOsdCoreSetAudioStatus(OSD_AUDIO_SHOW_MUTE, OSD_NO_DISAPPEAR);
      break;
    }

    case OSD_MUTE_CLEAR:
    default:
    {
#ifdef PLAYER_FLMENU
      if (fgFlMenuOn)
        vFlIpShowInfo(IP_INFO_VOLUME, bAdspCurrVol(), FLIP_VOLUME_REDRAW);
#endif
      vOsdPosClear(wPos);
      vOsdCoreSetAudioStatus(OSD_AUDIO_SHOW_CLEAR, 0);
      break;
    }
  }
}

// *********************************************************************
// Function : void vOsdShowZoom(BYTE bState)
// Description :
// Parameter :  bState
// Return    : None
// *********************************************************************
static code BYTE pbZoomMsg[SV_ZOOM_MODE_MAX - 1][3] = {
  { '1', '.', '1' }, /* 1:  SV_ZOOM_11  */
  { '1', '.', '2' }, /* 2:  SV_ZOOM_12  */
  { '1', '.', '5' }, /* 3:  SV_ZOOM_15  */
  { ' ', '2', 'X' }, /* 4:  SV_ZOOM_2   */
  { '2', '.', '5' }, /* 5:  SV_ZOOM_25  */
  { ' ', '3', 'X' }, /* 6:  SV_ZOOM_3   */
  { '3', '.', '5' }, /* 7:  SV_ZOOM_35  */
  { ' ', '4', 'X' }, /* 8:  SV_ZOOM_4   */
  { '1', '/', '2' }, /* 9:  SV_ZOOM_21  */
  { '1', '/', '3' }, /* 10: SV_ZOOM_31  */
  { '1', '/', '4' }  /* 11: SV_ZOOM_41  */
};

void vOsdShowZoom(BYTE bState) large
{
  BYTE pbStr[4];
  BYTE bIdx;

  if (fgIsIsoPlay())
  {
    vOsdPosClear(OSD_POS_ISO_ZOOM);
  }
  else
  {
    vOsdPosClear(OSD_POS_ZOOM);
  }

#ifdef ENABLE_ZOOM_USER_MODE
  if (bState == SV_ZOOM_USR)
  {
    pbStr[0] = 3;
    pbStr[1] = 'F';
    pbStr[2] = 'I';
    pbStr[3] = 'T';
  }
  else
#endif /* ENABLE_ZOOM_USER_MODE */
  if ((bState == SV_ZOOM_1) || (bState >= SV_ZOOM_MODE_MAX))
  {
    pbStr[0] = 0;
  }
  else
  {
    bState--;

    for (pbStr[0] = 0; pbStr[0] < 3; pbStr[0] += 1)
    {
      pbStr[pbStr[0] + 1] = pbZoomMsg[bState][pbStr[0]];
    }
    
    //pbStr[0] = 3;
  }

  if (pbStr[0] > 0)
  {
    if (fgIsIsoPlay())
    {
      vOsdPosShowArg(OSD_POS_ISO_ZOOM, OSD_MSG_ICON_ZOOM, OSD_NO_DISAPPEAR, pbStr);
    }
    else
    {
      vOsdPosShowArg(OSD_POS_ZOOM, OSD_MSG_ICON_ZOOM, OSD_NO_DISAPPEAR, pbStr);
    }
  }
}

#ifdef PLAYER_ZOOMIN_INDICATOR

#define vZoomRectangle(bWbIdx, bClr, wStartX, wStartY, wEndX, wEndY) \
{ \
  _wStartX = wStartX;  \
  _wStartY = wStartY;  \
  _wEndX = wEndX;  \
  _wEndY = wEndY;  \
  vRectangle(bWbIdx, 1, bClr, 1, bClr); \
}

static code BYTE pbZoomBr[SV_ZOOM_IN_MAX - SV_ZOOM_IN_MIN + 1][2] = {
  {66,40}, /* SV_ZOOM_11 */
  {66,40}, /* SV_ZOOM_12 */
  {66,40}, /* SV_ZOOM_15 */
  {64,42}, /* SV_ZOOM_2  */
  {64,42}, /* SV_ZOOM_25 */
  {52,34}, /* SV_ZOOM_3  */
  {53,34}, /* SV_ZOOM_35 */
  {45,29}  /* SV_ZOOM_4  */
};

// *********************************************************************
// Function : void vZoomBrDraw(void)
// Description :
// Parameter :  
// Return    : 
// *********************************************************************
void vOsdShowZoomBr(BYTE bX, BYTE bY, BYTE bMode) large
{
  BYTE bNewX;

  // outer rectangle
  vZoomRectangle(WB_ZOOM_BR, 3, 0, 0, ZOOM_BR_WIDTH, ZOOM_BR_HEIGHT);

  bMode -= SV_ZOOM_IN_MIN;

  //Bad code style here.
//  if(((bSharedInfo(SI_ASPECT_RATIO) & 0x7f) == SV_4_3_PS) && fgIsDvdPlay() && (bSharedInfo(SI_V_4_3) == SV_V_16_9))
//    bNewX = bX+(pbZoomBr[bMode][0]+3)*3/4;
//  else
    bNewX = bX+pbZoomBr[bMode][0];

  // inner rectangle
  vZoomRectangle(WB_ZOOM_BR, 1, bX, bY,
                 bNewX, bY + pbZoomBr[bMode][1]);
}
#endif /* PLAYER_ZOOMIN_INDICATOR */

#ifdef DDISC_FTYPE_JPEG_SUPPORT
// *********************************************************************
// Function : void vOsdShowZoomPct(BYTE bPercent)
// Description :
// Parameter :  bState
// Return    : None
// *********************************************************************
void vOsdShowZoomPct(BYTE bPercent) large
{
  BYTE pbStr[4];

  if (bPercent <= 100)
  {
    vOsdPosClear(OSD_POS_ERROR);   // clear "PAN xx" message
  }
    
  if (bPercent == 0)
  {
    vOsdPosClear(OSD_POS_ZOOM_PCT);
  }
  else
  {
    pbStr[0] = 3;

    if (bPercent >= 200)
    {
      pbStr[1] = '2';
      bPercent -= 200;
    }
    else if (bPercent >= 100)
    {
      pbStr[1] = '1';
      bPercent -= 100;
    }
    else
    {
      pbStr[1] = ' ';
    }

    bPercent = bHEXToBCD(bPercent);

    pbStr[2] = BCD_HI(bPercent) + '0';
    pbStr[3] = BCD_LO(bPercent) + '0';

    if ((pbStr[1] == ' ') && (pbStr[2] == '0'))
    {
      pbStr[2] = ' ';
    }

    vOsdPosShowArg(OSD_POS_ZOOM_PCT, OSD_MSG_ZOOM_PERCENT, OSD_NO_DISAPPEAR, pbStr);
  }
}
#endif /* DDISC_FTYPE_JPEG_SUPPORT */

#if ((defined(PLAYER_KARAOKE) || defined(USE_EXTERNAL_KARAOKE)) && (defined(SUPPORT_AUDIO_KEY_ADJUST)))
// *********************************************************************
// Function : void vOsdShowKeyShift(char cLevel) large
// Description :
// Parameter :  cLevel
// Return    : None
// *********************************************************************
void vOsdShowKeyShift(char cLevel, BYTE bTime) large
{
  BYTE pbKey[4];

  if (cLevel >= MAX_KEY_LEVEL)
  {
    cLevel = MAX_KEY_LEVEL;
  }

  if (cLevel <= MIN_KEY_LEVEL)
  {
    cLevel = MIN_KEY_LEVEL;
  }

#if 0
  // show a slide bar
  vOsdShowLineXY(WB_NORMAL_VOL, 2, 2, 300, 18, 300 + (MAX_KEY_LEVEL - MIN_KEY_LEVEL + 1)*4, 18);
  vOsdShowLineXY(WB_NORMAL_VOL, 3, 4, 300, 20, 300 + (MAX_KEY_LEVEL - MIN_KEY_LEVEL + 1)*4, 20);
  vOsdShowLineXY(WB_NORMAL_VOL, 2, 2, 300, 22, 300 + (MAX_KEY_LEVEL - MIN_KEY_LEVEL + 1)*4, 22);

  vOsdShowLineXY(WB_NORMAL_VOL, 0, 2, 300 + (cLevel + 16 + 1)*4-2, 10, 300 + (cLevel + 16 + 1)*4-2, 30);
  vOsdShowLineXY(WB_NORMAL_VOL, 0, 4, 300 + (cLevel + 16 + 1)*4, 10, 300 + (cLevel + 16 + 1)*4, 30);
  vOsdShowLineXY(WB_NORMAL_VOL, 0, 2, 300 + (cLevel + 16 + 1)*4+2, 10, 300 + (cLevel + 16 + 1)*4+2, 30);
  vOsdShowLineXY(WB_NORMAL_VOL, 0, 2, 300 + (cLevel + 16 - 1)*4-2, 10, 300 + (cLevel + 16 - 1)*4-2, 30);
  vOsdShowLineXY(WB_NORMAL_VOL, 0, 4, 300 + (cLevel + 16 - 1)*4, 10, 300 + (cLevel + 16 - 1)*4, 30);
  vOsdShowLineXY(WB_NORMAL_VOL, 0, 2, 300 + (cLevel + 16 - 1)*4+2, 10, 300 + (cLevel + 16 - 1)*4+2, 30);

  vOsdShowLineXY(WB_NORMAL_VOL, 2, 2, 300 + (cLevel + 16)*4-2, 10, 300 + (cLevel + 16)*4-2, 30);
  vOsdShowLineXY(WB_NORMAL_VOL, 3, 4, 300 + (cLevel + 16)*4, 10, 300 + (cLevel + 16)*4, 30);
  vOsdShowLineXY(WB_NORMAL_VOL, 2, 2, 300 + (cLevel + 16)*4+2, 10, 300 + (cLevel + 16)*4+2, 30);
#endif

  if (cLevel < 0)
  {
    pbKey[1] = '-';
    cLevel = - cLevel;
  }
  else
  {
    pbKey[1] = '+';
  }

  pbKey[0] = bHEXToBCD(cLevel);

  pbKey[2] = BCD_HI(pbKey[0]) + '0';
  pbKey[3] = BCD_LO(pbKey[0]) + '0';

  pbKey[0] = 3;

#ifdef PLAYER_FLMENU
  if (fgFlCheckStatus(FL_STATUS_IN_MENU))
    vFlIpShowInfo(IP_INFO_KEY_SHIFT, cLevel, 0);
  else
#endif
  vOsdPosShowArg(OSD_POS_AUD_CTRL, OSD_MSG_SET_KEY, bTime, pbKey);

  vOsdCoreSetAudioStatus(OSD_AUDIO_SHOW_NORMAL, bTime);
}
#endif /* PLAYER_KARAOKE || USE_EXTERNAL_KARAOKE */

#ifdef PLAYER_KARAOKE
 #ifdef KARAOKE_SIMPLE_ECHO
// *********************************************************************
// Function : void vOsdShowEchoLevel(BYTE bLevel)
// Description :
// Parameter :  cLevel
// Return    : None
// *********************************************************************
void vOsdShowEchoLevel(BYTE bLevel) large
{
  BYTE pbStr[3];

  if (bLevel == OSD_MIC_ON)
  {
    vOsdPosShow(OSD_POS_AUD_CTRL, OSD_MSG_MIC_ON, OSD_TIMEOUT);
  }
  else if (bLevel == OSD_MIC_OFF)
  {
    vOsdPosShow(OSD_POS_AUD_CTRL, OSD_MSG_MIC_OFF, OSD_TIMEOUT);
  }
  else
  {
    bLevel = bHEXToBCD(bLevel);

    pbStr[0] = 2;
    pbStr[1] = BCD_HI(bLevel) + '0';
    pbStr[2] = BCD_LO(bLevel) + '0';

    vOsdPosShowArg(OSD_POS_AUD_CTRL, OSD_MSG_ECHO_NO, OSD_TIMEOUT, pbStr);
  }

  vOsdCoreSetAudioStatus(OSD_AUDIO_SHOW_NORMAL, OSD_TIMEOUT);
}
  #endif /* KARAOKE_SIMPLE_ECHO */
#endif /* PLAYER_KARAOKE */

#ifdef PLAYER_SURROUND
// *********************************************************************
// Function : void vOsdShowSurrType(BYTE bType, WORD wPos)
// Description :
// Parameter :  bType
// Return    : None
// *********************************************************************
static code WORD pwSurrTypeMsg[AUD_EQ_TYPE_MAX] = { // include NONE
  /* 00 */ OSD_MSG_OFF, //OSD_MSG_EQ_NONE,
  /* 01 */ OSD_MSG_EQ_ROCK,
  /* 02 */ OSD_MSG_EQ_POP,
  /* 03 */ OSD_MSG_EQ_LIVE,
  /* 04 */ OSD_MSG_EQ_DANCE,
  /* 05 */ OSD_MSG_EQ_TENCO,
  /* 06 */ OSD_MSG_EQ_CLASSIC,
  /* 07 */ OSD_MSG_EQ_SOFT
};

void vOsdShowSurrType(BYTE bType, WORD wPos) large
{
  BYTE pbStr[3];
  
  if (bType >= AUD_EQ_TYPE_MAX)
  {
    return;
  }

  pbStr[0] = 2;
  pbStr[1] = bLoByte(pwSurrTypeMsg[bType]);
  pbStr[2] = bHiByte(pwSurrTypeMsg[bType]);

  if (wPos == OSD_POS_AUD_CTRL)
  {
    vOsdPosShowArg(OSD_POS_AUD_CTRL, OSD_MSG_SURR_TYPE, OSD_TIMEOUT, pbStr);

    vOsdCoreSetAudioStatus(OSD_AUDIO_SHOW_NORMAL, OSD_TIMEOUT);
  }
  #ifdef AUDIO_IN_EN
  else if (wPos == OSD_POS_AIN_EQ_TYPE)
  {
    vOsdPosShowArg(OSD_POS_AIN_EQ_TYPE, OSD_MSG_EQ_TYPE_MSG, OSD_NO_DISAPPEAR, pbStr);
  }
  #endif
}

// *********************************************************************
// Function : void vOsdShowReverbType(BYTE bType, WORD wPos)
// Description :
// Parameter :  bType
// Return    : None
// *********************************************************************
static code WORD pwReverbModeMsg[AUD_REVERB_MODE_MAX + 1] = { // include OFF
  /* 00 */ OSD_MSG_OFF,
  /* 01 */ OSD_MSG_CONCERT,
  /* 02 */ OSD_MSG_LIVING_ROOM,
  /* 03 */ OSD_MSG_HALL,
  /* 04 */ OSD_MSG_BATHROOM,
  /* 05 */ OSD_MSG_CAVE,
  /* 06 */ OSD_MSG_ARENA,
  /* 07 */ OSD_MSG_CHURCH
};

void vOsdShowReverbType(BYTE bType, WORD wPos) large
{
  BYTE pbStr[3];
  
  if (bType > AUD_REVERB_MODE_MAX)
  {
    return;
  }

  pbStr[0] = 2;
  pbStr[1] = bLoByte(pwReverbModeMsg[bType]);
  pbStr[2] = bHiByte(pwReverbModeMsg[bType]);

  if (wPos == OSD_POS_AUD_CTRL)
  {
#ifdef PLAYER_FLMENU
    if (fgFlCheckStatus(FL_STATUS_IN_MENU))
      vFlIpShowInfo(IP_INFO_REVERB, 0, pwReverbModeMsg[bType]);
    else
#endif
    vOsdPosShowArg(OSD_POS_AUD_CTRL, OSD_MSG_REVERB_TYPE, OSD_TIMEOUT, pbStr);
  
    vOsdCoreSetAudioStatus(OSD_AUDIO_SHOW_NORMAL, OSD_TIMEOUT);
  }
  #ifdef AUDIO_IN_EN
  else if (wPos == OSD_POS_AIN_REV_TYPE)
  {
    vOsdPosShowArg(OSD_POS_AIN_REV_TYPE, OSD_MSG_REV_TYPE_MSG, OSD_NO_DISAPPEAR, pbStr);
  }
  #endif
}
#endif /* PLAYER_SURROUND */

#ifdef IR_SUPPORT_SHIFT_KEY
// *********************************************************************
// Function : void vOsdShowShiftMark(BOOL fgShow)
// Description :
// Parameter :
// Return    : None
// Note      :
// *********************************************************************
static code WORD pwPosShiftMark[OSD_SHIFT_MARK_MAX] = {
  OSD_POS_SHIFT_MARK,
  #ifdef PLAYER_DIGEST
  OSD_POS_DGST_SHIFT_MARK
  #else
  OSD_POS_NULL
  #endif
};

void vOsdShowShiftMark(BYTE bMode, BOOL fgShow) large
{
  BYTE bIdx;

  if (bMode == OSD_SHIFT_MARK_ALL)
  {
    for (bIdx = 0;bIdx < OSD_SHIFT_MARK_MAX; bIdx++)
    {
      if (fgShow) /* show mark */
      {
        vOsdPosPaste(pwPosShiftMark[bIdx], OSD_MSG_ICON_SHIFT);
      }
      else /* clear mark */
      {
        vOsdPosClear(pwPosShiftMark[bIdx]);
      }
    }
  }
  else if (bMode >= OSD_SHIFT_MARK_MAX) /* not a valid value */
  {
    return;
  }
  else
  {
    if (fgShow) /* show mark */
    {
      vOsdPosPaste(pwPosShiftMark[bMode], OSD_MSG_ICON_SHIFT);
    }
    else /* clear mark */
    {
      vOsdPosClear(pwPosShiftMark[bMode]);
    }
  }
}
#endif /* IR_SUPPORT_SHIFT_KEY */

⌨️ 快捷键说明

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