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

📄 stprisc.c

📁 MTK portableDVD 采用mtk1389方案的代码
💻 C
字号:
/**********************************************************************/
/***************    MTK CONFIDENTIAL & COPYRIGHTED     ****************/
/***************                                       ****************/
/***************  $Modtime:: 05/07/13 4:19p    $       ****************/
/***************  $Revision: 2.0 $       ****************/
/***************                                       ****************/
/***************   Description : Setup Risc            ****************/
/***************                 relative routine      ****************/
/***************                                       ****************/
/***************       Company : MediaTek Inc.         ****************/
/***************    Programmer : Peter Huang           ****************/
/**********************************************************************/

#include "general.h"

#include SETUP_MENU_FILE
//#include "stpmenu.h"

#include "stposdfn.h"

#ifdef DL333_T100
extern void BBKTFTSetNTSCPALDIRECT(BYTE bMode) large;
#endif

#pragma NOAREGS

struct sLangChar
{
  WORD  wLangItem;
  BYTE  c0;
  BYTE  c1;  
};

static code struct sLangChar rLangChar[] = 
     { { EV_FRENCH, 'f', 'r' },   { EV_SPANISH, 'e', 's' },   { EV_CHINESE, 'z', 'h' },
       { EV_JAPANESE, 'j', 'a'},  { EV_GERMAN, 'd', 'e' },     { EV_SWEDISH, 's', 'v' },
       { EV_DANISH, 'd', 'a' },   { EV_NORWEGIAN, 'n', 'o' },  { EV_FINNISH, 'n', 'i' },
       { EV_DUTCH, 'n', 'l'},     { EV_ICELANDIC , 'i', 's' }, { EV_PORTUGUES, 'p', 't' },
       { EV_HEBREW, 'i', 'w' },   { EV_GREEK, 'e', 'l' },      { EV_CROATIAN, 'h', 'r' },  
       { EV_TURKISH, 't', 'r' },  { EV_ITALIAN, 'i', 't' },    { EV_POLISH, 'p', 'l' },   
       { EV_HUNGARIAN, 'h','u' }, { EV_CZECH, 'c','s' },       { EV_INDONESIAN, 'i', 'n'},
       { EV_THAI, 't', 'h' },     { EV_KOREAN, 'k', 'o' },     { EV_MALAY, 'm', 's' },
       { EV_IRISH, 'g','a' },     { EV_ROMANIAN, 'r','o' },    { EV_UKRAINIAN, 'u', 'k' },
       { EV_BYELORUSSIA, 'b','e' },{ EV_LATVIAN, 'l','v' },    { EV_KAZAKH, 'k', 'k' },
       { EV_ESTONIAN, 'e','t' },  { EV_OTHER, 0, 0 },          { EV_LANG_OFF, 0, 0}, 
       {EV_ENGLISH, 'e', 'n' } 
     };
#ifdef SUPPORT_SACD
// for SACD layer selection
extern BIT         _fgSACDSelCD;
#endif
 
// *********************************************************************
// Function : BYTE bNormalVdo(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return    : None
// *********************************************************************
BYTE bNormalVdo(WORD wEEPos, BYTE bVal) large
{
  WORD wSIPos;
  BYTE bTemp;
	
  switch (wEEPos)
  {
    case TV_SYSTEM_POSITION:
      vVideoTvSystem(bVal);
#ifdef DL333_T100
	  BBKTFTSetNTSCPALDIRECT(bVal);
#endif
      break;

    case GAMMA_POS:
      vVideoGammaLevel(bVal);
      break;

    case SHARP_POS:
      vVideoSharpness(bVal);
      break;

    case EDGE_EN_POS:
      vVideoEdgeEnhance(bVal);
      break;

#ifndef GUI_II_YWB
    case CC_SW_POSITION:
      /* note use SV_ON/OFF */
      vSystemCloseCaption(bVal);
      break;
#endif

    case ASPECT_POSITION:
      vSystemTvMode(bVal);
      break;
      
   case BLACK_LVL_POS: // composite.
//    case BLACK_LVL_COMPN_POS: //component. will be added. currently, compoent and composite will be switch together.
//r case BLACKER_THAN_BLACKER: //will be added in future.  
      vVideoPedestal(SV_SETUP,(bVal!=SV_BLACK_NONE));
      vVideoPedestal(SV_CPNT_SETUP,(bVal!=SV_BLACK_NONE));  
      break;
#ifdef PSCAN_EN
    case TV_PSCAN_VIDEO_POS:
      #if 0 //max remove
      if (bSharedInfo(SI_DRAM_BW) == SV_DRAM_16BIT)
      {
  #ifndef HIGH_SPEED_DRAM
        if (bVal == SV_PSCAN_HR)
        {
          bVal = SV_PSCAN_NF;
        }
  #endif
      }
      #endif
      vSetSharedInfo(SI_PSCAN_VIDEO, bVal);
      vNotifySharedInfo(SI_PSCAN_VIDEO, 0, 0);      
      break;
#endif
    case WARMTH_FILTER_POS:
      vSetSharedInfo(SI_WARMTH_LEVEL, bEepromReadByte(WARMTH_FILTER_POS));
      vNotifySharedInfo(SI_WARMTH_LEVEL, 0, 0);
      break;

    default:
      wSIPos = _rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wSIPos;
      if (wSIPos)
      {
        vSetSharedInfo(wSIPos, bVal);
        vNotifySharedInfo(wSIPos, 0, 0);
      }

      break;
  } /* switch (wEEPos) */

  /* for user switch PBC on/off flag */
  if (wEEPos == VCD_PBC_SW_POSITION)
  {
    vSetSharedInfo(SH_VCD_USR_PBC_OFF, bVal);
    vNotifySharedInfo(SH_VCD_USR_PBC_OFF, 0, 0); //BillDen
  }

#ifdef SUPPORT_SACD
  if (wEEPos == SACD_PRIORITY_POSITION)
  {
    /* depend on setup menu SACD Priority option */
    _fgSACDSelCD = (bSharedInfo(SI_SACD_PRIO) == SV_SACD_CD);
  }
#endif
  
#ifdef PSCAN_EN
  if ((wEEPos == TV_PSCAN_EN_POS) ||
      (wEEPos == TV_PSCAN_MODE_POS))
  {
    return (ENTRY_FUN_REDRAW);
  }
#endif /* PSCAN_EN */
  return (ENTRY_FUN_OK);
}



BYTE bSetVdoQlty(WORD wEEPos, BYTE bVal) large
{
  switch(wEEPos)
  {
    case BRIGHT_POS:
      cVideoGammaBright((char)_bDataCur);
      break;

    case HUE_POS:
#ifdef MTK_TVE
      vVideoHueDegree(_bDataCur);
#else
      vVideoHueDegree((char)(_bDataCur - 9) * 5);
#endif
      break;

    case CONTRAST_POS:
      cVideoGammaContrast(_bDataCur);
      break;

    case TINT_POS:
      vVideoHueSaturation(_bDataCur);
      break;
  }
  return (ENTRY_FUN_OK);
}


#ifdef ENABLE_USER_LANG_CODE
BYTE bSwitchLang(WORD wEEPos, BYTE bValue) large
{
  if (!_fgNotify)
  {
    return (ENTRY_FUN_OK);
  }
  
  _bPrevMenu = _bMenu;
  _bPrevEntry = _bEntry;
  
  _bOsdState = STPSTT_DIALOG_INPUT;
  _bMenu = LANG_OTH_PAGE;
  _bEntry = 1;
  
  _bDataSel = 0;
  _bDataCur = 0;
  
  switch(wEEPos)
  {
    case AUDIO_LCD_POSITION:
      _bDlgId = DLG_AUDIO_LANG_CODE;
      break;
    case SP_LCD_POSITION:
      _bDlgId = DLG_SP_LANG_CODE;
      break;
    case MENU_LCD_POSITION:
      _bDlgId = DLG_MENU_LANG_CODE;
      break;
  }
  
  //vRedrawPage();
  return (ENTRY_FUN_DRAW_OTHRE_LANG);

}
#endif

// *********************************************************************
// Function : BYTE bSetLangCd(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return    : None
// *********************************************************************
BYTE bSetLangCd(WORD wEEPos, BYTE bValue) large
{
  BYTE bLc0;
  BYTE bLc1;
  BYTE i;

  if (bValue == EV_OTHER)
  {
#ifdef ENABLE_USER_LANG_CODE
    //return (bSwitchLang(wEEPos, bValue));
    return (bSwitchLang(wEEPos, 0));
#endif
    return (ENTRY_FUN_OK);
  }
  
  i = 0;
  while ((rLangChar[i].wLangItem != 0) && (rLangChar[i].wLangItem != bValue))
    i++;

  if (rLangChar[i].wLangItem != 0)
  {
    bLc0 = rLangChar[i].c0;
    bLc1 = rLangChar[i].c1;
  }
  else
  {
    bLc0 = 'e';
    bLc1 = 'n';
  }

  switch (wEEPos)
  {
    case AUDIO_LCD_POSITION:
      vSystemPrefAuLang(bLc0, bLc1);
      break;

    case SP_LCD_POSITION:
      vSystemPrefSpLang(bLc0, bLc1);
      break;

    case MENU_LCD_POSITION:
      vSystemPrefMenuLang(bLc0, bLc1);
      break;
  }
  
    return (ENTRY_FUN_OK);
}
#ifdef RUSSIAN_BUYER_SPECIAL2		//songchen 061205
// *********************************************************************
// Function : BYTE bSetLangPage(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return    : None
// *********************************************************************
BYTE bSetFontPage(WORD wEEPos, BYTE bValue)large
{

    fgEepromWriteByte(DIVX_FONTPAGE_POSITION, bValue);
    return (ENTRY_FUN_OK);

}
#endif
// *********************************************************************
// Function : BYTE bSetPrLvl(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return    : None
// *********************************************************************
BYTE bSetPrLvl(WORD wEEPos, BYTE bValue) large
{
  if (!_fgNotify)
  {
    return (ENTRY_FUN_OK);
  }


  if(bValue > 8)
  	bValue = 0x0f;

  fgEepromWriteByte(PTL_LEVEL_POSITION, bValue);
  vSystemParentalLevel(bValue);

  return (ENTRY_FUN_OK);
}

#ifdef MTK_TVE

// *********************************************************************
// Function : BYTE bSetCompOut(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return    : None
// *********************************************************************
#ifdef PSCAN_EN
BYTE bSetCompOut(WORD wEEPos, BYTE bValue) large
{
  BYTE bTvOut;
  BYTE bPScan;
#if defined(MT1389_REV_HD) && defined(PSCAN_EN)
  BYTE bTvHdMode = bSharedInfo(SI_HD_MODE);
  vSetSharedInfo(SI_TV_CHG_MODE, bSharedInfo(SI_HD_MODE));
#endif
  bPScan = bEepromReadByte(TV_PSCAN_EN_POS);
  bTvOut = bEepromReadByte(TV_COMP_POS);
  if ((bTvOut == SV_TVE_DIRECT) || (bTvOut == SV_TVE_SCART))
  {
    if (bPScan != SV_OFF)
    {
      bPScan = SV_OFF;
      fgEepromWriteByte(TV_PSCAN_EN_POS, SV_OFF);
    }
  }
  else if (bTvOut == SV_TVE_VGA)
  {
    if (bPScan != SV_ON)
    {
      bPScan = SV_ON;
      fgEepromWriteByte(TV_PSCAN_EN_POS, SV_ON);
    }
#if defined(MT1389_REV_HD) && defined(PSCAN_EN)
    if (SV_HD_MODE_1080I == bTvHdMode)
    {
      fgEepromWriteByte(TV_HD_MODE_POS, SV_HD_MODE_OFF);
      vSetSharedInfo(SI_HD_MODE, SV_HD_MODE_OFF);
      vNotifySharedInfo(SI_HD_MODE, 0, 0);
    }
#endif
  }  
#if defined(MT1389_REV_HD) && defined(PSCAN_EN)
  else
  {
    if ((SV_HD_MODE_720P == bTvHdMode) && (bPScan == SV_OFF))
    {
      bPScan = SV_ON;
      fgEepromWriteByte(TV_PSCAN_EN_POS, SV_ON);
    }
    else if ((SV_HD_MODE_1080I == bTvHdMode) && (bPScan == SV_ON))
    {
      bPScan = SV_OFF;
      fgEepromWriteByte(TV_PSCAN_EN_POS, SV_OFF);
    }
  }
#endif
	
  vVideoPScanMode(bPScan, bTvOut);
  return (ENTRY_FUN_REDRAW);
}



// *********************************************************************
// Function : BYTE bSetCompOut(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return    : None
// *********************************************************************
/*
BYTE bSetCompOutBBK(WORD wEEPos, BYTE bValue) large
{
  BYTE bVideoMode;
  
  #ifdef PSCAN_EN//billy050905
  if(bEepromReadByte(TV_PSCAN_EN_POS) == SV_ON)
    return (ENTRY_FUN_REDRAW);  //if tv_pscan == on,then decide output by usrrecall YPBPR or vga
  #endif
  
  fgEepromWriteByte(TV_COMP_POS, bValue);   //dengsu 0809
  vVideoPScanMode(SV_OFF, bValue);
  return (ENTRY_FUN_REDRAW);
}
*/
#endif

#endif

#if 1 //def SUPPORT_CAPTURE_LOGO
// *********************************************************************
// Function : BYTE bSetLogoType(WORD wItem, BYTE bValue)
// Description :
// Parameter :
// Return    : None
// Note      : this function will be called from play_iso for NUI file list
//             Do not use code segment in this function
// *********************************************************************
BYTE bSetLogoType(WORD wItem, BYTE bValue) large
{
  switch (bValue)
  {
    case EV_LOGO_JACKET:
      bValue = SV_LOGO_JACKET;
      vSetSharedInfo(SI_FLASH_LOGO_IDX, 0);
      break;

    case EV_LOGO_BLUE:
      vSetSharedInfo(SI_DEFAULT_LOGO_CLR_Y, (LOGO_BLUE & 0x000f) << 4);
      vSetSharedInfo(SI_DEFAULT_LOGO_CLR_CB, ((LOGO_BLUE >> 4) & 0x000f) << 4);
      vSetSharedInfo(SI_DEFAULT_LOGO_CLR_CR, ((LOGO_BLUE >> 8) & 0x000f) << 4);
      bValue = SV_LOGO_COLOR;
  #ifdef PLAYER_FLMENU
      vSetSharedInfo(SI_FLASH_LOGO_IDX, 2);
  #else
      vSetSharedInfo(SI_FLASH_LOGO_IDX, 0);
  #endif
      break;

    case EV_LOGO_CAPTURED:
      bValue = SV_LOGO_CAPTURE;
      vSetSharedInfo(SI_FLASH_LOGO_IDX, 0);
      break;

    case EV_LOGO_DEFAULT:
    default:
      bValue = SV_LOGO_FLASH;
#ifdef BBK_NEW_GUI
      vSetSharedInfo(SI_FLASH_LOGO_IDX, wItem);
#else
      vSetSharedInfo(SI_FLASH_LOGO_IDX, 0);
#endif
			break;
  }

  #ifdef PLAYER_FLMENU
  // when enter setup menu from flmenu, do not change share info
  // restore it when exit ISO play module
  #ifdef BBK_NEW_GUI
  if(0)
	#else
  if(fgIsInSetupMenu() && fgIsIsoPlay())
  #endif
	{
    return (ENTRY_FUN_OK);
  }
  #endif

  vSetSharedInfo(SI_DEFAULT_LOGO, bValue);
  vNotifySharedInfo(SI_DEFAULT_LOGO, 0, 0);  

  return (ENTRY_FUN_OK);
}
#endif /* SUPPORT_CAPTURE_LOGO */




#ifdef PAUSE_MODE_SWITCH
BYTE bSetPauseMode(WORD wItem, BYTE bValue) large
{
  switch (bValue)
  {
  case EV_PM_AUTO:
    vSetSharedInfo(SI_PSCAN_PAUSE_MODE, SV_PSCAN_PAUSE_AUTO);
    vSetSharedInfo(SI_V2_PAUSE_SHOW_1FLD, 0);
    break;
  case EV_PM_FRAME:
    vSetSharedInfo(SI_PSCAN_PAUSE_MODE, SV_PSCAN_PAUSE_FRAME);
    vSetSharedInfo(SI_V2_PAUSE_SHOW_1FLD, 0);
    break;  
  case EV_PM_VIDEO:
    vSetSharedInfo(SI_PSCAN_PAUSE_MODE, SV_PSCAN_PAUSE_FIELD);
    vSetSharedInfo(SI_V2_PAUSE_SHOW_1FLD, 1);
    break;
  default:
    // error!
    break;
  }

  return (ENTRY_FUN_OK);
}
#endif /* PAUSE_MODE_SWITCH */

⌨️ 快捷键说明

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