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

📄 play_com.c

📁 手机8032的完整代码。吐血推荐。小做改动就可以生产。
💻 C
📖 第 1 页 / 共 5 页
字号:
    )
    {
      /* when osd state is init, do not accept setup menu command */
      if(_bTrayStatus != TRAY_ST_MIDDLE)
      {
        vChangeInputState(INPUT_STATE_SETUP, FALSE);
      }
    }
    #endif /* N22_CERTIFICATION */
  }

  _bIRKey = IR_NONE;
  return (UOP_OK);
}

//#ifndef BA_VERSION_V11
#if !defined(BA_VERSION_V11) && !defined(BA_VERSION_V122) && !defined(BA_VERSION_V13)
static code WORD pwSetOsdLan[EV_OSD_LANG_NS] = {
  OSD_MSG_OSDLANG_ENGLISH,
  OSD_MSG_OSDLANG_RUSSIAN//,OSD_MSG_OSDLANG_CHINESE
};
#else
static code WORD pwSetOsdLan[EV_OSD_LANG_NS] = {
  OSD_MSG_OSDLANG_ENGLISH
  //,OSD_MSG_OSDLANG_CHINESE
};
#endif

#if (defined(DDISC_FTYPE_JPEG_SUPPORT) && defined(SUPPORT_DATA_DISC))
extern void vFsMenuChangeLang(BYTE bLangIdx) large;
#endif

BOOL fgCOMOsdLangKey(void) large
{
  BYTE bLang = bEepromReadByte(OSD_LANG_POSITION);

  if (bLang >= EV_OSD_LANG_NS - 1)
  {
    bLang = 0;
  }
  else
  {
    bLang++;
  }

  vOsdSetLang(bLang);
  #ifndef PLAYER_FLMENU
  #if (defined(DDISC_FTYPE_JPEG_SUPPORT) && defined(SUPPORT_DATA_DISC))
  vFsMenuChangeLang(bLang);
  #endif
  #endif

  #ifdef PLAYER_VRMT
  if(fgIsInputStateValid(INPUT_STATE_VREMOTE))
  {
    vVRMTRedrawAll();
  }
  #endif

  vOsdPosShow(OSD_POS_NORMAL, pwSetOsdLan[bLang], OSD_TIMEOUT_SHORT);

  fgEepromWriteByte(OSD_LANG_POSITION, bLang);

  #if (!defined(PLAYER_FLMENU) && defined(SUPPORT_DATA_DISC))
  //Mars Wen,[2002/2/6],for JPG language switch support
  if (
  #ifdef SUPPORT_PCD
  fgIsPcdPlay() ||
  #endif
  (fgIsIsoPlay() && (bSharedInfo(SI_ISO_ITEM_TYPE) == SV_ISO_JPG)))
  {
    vFsMenuRecoverMenus();
  }
  #endif

  #ifdef PLAYER_FLMENU
  if (
  #ifdef SUPPORT_PCD
  fgIsPcdPlay() ||
  #endif
  fgIsIsoPlay())
  {
    vFlChgLang(bLang); //vFlRedraw(REDRAW_CHG_LANG, bLang);
  }
  #endif
  _bIRKey = IR_NONE;
  return (UOP_OK);
}

BOOL fgCOMGameKey(void) large
{
  #ifndef SUPPORT_OSD_GAME
  /*
  vChangeInputState(INPUT_STATE_GAME, FALSE);
  _bIRKey = IR_NONE;
  return (UOP_OK);
  */

  // 20050401, CR00002256, show prohibit for non-supported keys
  _bIRKey = IR_NONE;
  return (UOP_FAIL);
  #else

  #ifdef OSD_GAME_MAIN_MENU
  if ( fgIsNonPlay()
  && fgIsNoInputState()
  && !fgIsOsdGamePlay()
  && (bSharedInfo(SI_INIT_STATE) != SV_LOADING_DISC) )
  {
    vChangeInputState(INPUT_STATE_OSD_GAME_MAIN_MENU, FALSE);
  }
  #endif

  _bIRKey = IR_NONE;
  return (UOP_OK);
  #endif
}

BOOL fgCOMFunctionKey(void) large
{
  #ifdef AUDIO_IN_EN
  if (fgIsFuncAin())
  {
    // pass this key to play_ain.c
    return (UOP_OK);
  }
  else if (fgIsFuncDvd())
  {
    if (fgAINIsFuncChgAllow() == TRUE)
    {
      vPlayerFuncSwitch(PLAYER_FUNC_AIN);
    }
  }

  _bIRKey = IR_NONE;
  return (UOP_OK);
  #else  /* AUDIO_IN_EN */

  // 20050401, CR00002256, show prohibit for non-supported keys
  return (UOP_FAIL);
  #endif /* AUDIO_IN_EN */
}

BOOL fgCOMVfdDark(void) large
{
  VfdBright(VFD_DISP_DARK);

  _bIRKey = IR_NONE;
  return (UOP_OK);
}

BOOL fgCOMVfdBright(void) large
{
  VfdBright(VFD_DISP_BRIGHT);

  _bIRKey = IR_NONE;
  return (UOP_OK);
}

BOOL fgCOMTvFormatKey(void) large
{
  BYTE bInitState = bSharedInfo(SI_INIT_STATE);
  BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
  BYTE bTvSystem = bTvSystemSetting();
  BOOL fgChange = TRUE;
  #ifdef PSCAN_EN
  BYTE bTvOut = bSharedInfo(SI_TVE_OUT_MODE);
  BYTE bPScan = bSharedInfo(SI_PSCAN_EN);

  #if 0 // allow VGA mode for PAL
  if (bTvOut == SV_TVE_VGA)
  {
    vOsdShowError(SV_ERR_INVALID_OPERATION, OSD_TIMEOUT_SHORT);
    _bIRKey = IR_NONE;
    return (UOP_OK);
  }
  #endif // allow VGA mode for PAL
  #endif /* PSCAN_EN */

  /* this condition is not allowed */
  #ifdef MTK_TVE
  if ((bInitState == SV_LOADING_DISC) || (bInitState == SV_TRAY_CLOSING))
  {
    fgChange = FALSE;
  }
  else if (bInitState == SV_TRAY_OPENING)
  {
    if (!fgIsTrayOutside())
    {
      fgChange = FALSE;
    }
  }

  #ifdef MP3_LYRICS_V2_SUPPORT
  if(bSharedInfo(SI_MP3_KARA_DISC_TYPE) == SV_ID_MATCH)
  {
    if(fgChange)
    {
      switch(bTvSystem)
      {
        case SV_NTSC:
        vVideoTvSystem(SV_PAL);
        vOsdClearPosXY(40,0,WB_NORMAL_HEAD1,320,30);      //clear vol pos
        vOsdPosShow(OSD_POS_REMAIN_MSG, OSD_MSG_PAL, OSD_TIMEOUT);
        break;
        case SV_PAL:
        vVideoTvSystem(SV_AUTO);
        vOsdClearPosXY(40,0,WB_NORMAL_HEAD1,320,30);
        vOsdPosShow(OSD_POS_REMAIN_MSG, OSD_MSG_AUTO, OSD_TIMEOUT);
        break;
        case SV_AUTO:
        vVideoTvSystem(SV_NTSC);
        vOsdClearPosXY(40,0,WB_NORMAL_HEAD1,320,30);
        vOsdPosShow(OSD_POS_REMAIN_MSG, OSD_MSG_NTSC, OSD_TIMEOUT);
        break;
      }
    }
    else
    {
      // show error
    }

    _bIRKey = IR_NONE;
    return (UOP_OK);
  }
  #endif

  #ifdef PLAY_NO_CHG_TV_FMT
  else if (!fgIsNonPlay())
  {
    if (fgIsDiscPlay(bPbcState) || fgIsInDigest(bPbcState))
    {
      fgChange = FALSE;
    }
  }
  #endif /* PLAY_NO_CHG_TV_FMT */
  #endif /* MTK_TVE */

  #ifdef JPG_PREVIEW_SUPPORT
  // 20050516, prohibit p/n switch when JPEG preview is still decoding. Or JPEG preview might be overwritten by background logo.
  if (fgChange && fgIsIsoPlay() && fgFlCheckStatus (FL_STATUS_IN_MENU) && fgFlCheckStatus (FL_STATUS_JPEG_DECODING))
  fgChange = FALSE ;
  #endif

  /* change the format */
  if (fgChange)
  {
    switch (bTvSystem)
    {
      case SV_NTSC:
      #ifdef PSCAN_EN
      if ((bTvOut != SV_TVE_DIRECT) && (bPScan == SV_ON))
      {
        vOsdShowTvFormat(OSD_MSG_PAL_PSCAN);
      }
      else
      #endif /* PSCAN_EN */
      {
        vOsdShowTvFormat(OSD_MSG_PAL);
      }
      bTvSystem = SV_PAL;
      break;

      case SV_PAL:
      #ifdef PSCAN_EN
      if ((bTvOut != SV_TVE_DIRECT) && (bPScan == SV_ON))
      {
        vOsdShowTvFormat(OSD_MSG_MULTI_PSCAN);
        //vOsdShowTvFormat(OSD_MSG_AUTO_PSCAN);
      }
      else
      #endif /* PSCAN_EN */
      {
        vOsdShowTvFormat(OSD_MSG_MULTI);
        //vOsdShowTvFormat(OSD_MSG_AUTO);
      }
      bTvSystem = SV_AUTO;
      break;

      case SV_AUTO:
      default:
      #ifdef PSCAN_EN
      #ifdef PN_IP_SAME_KEY
      #if 1 // force P-Scan on
      // ** when VGA, switch to non-Pscan, must set component to YUV or RGB
      if (bTvOut == SV_TVE_DIRECT || bTvOut == SV_TVE_VGA)
      {
        if (bTvOut == SV_TVE_DIRECT)
        bPScan = SV_OFF;

        // Choose one as default
        bTvOut = SV_TVE_YCBCR;
        //bTvOut = SV_TVE_RGB;
        if (bEepromReadByte(TV_COMP_POS) != bTvOut)
        {
          fgEepromWriteByte(TV_COMP_POS, bTvOut);
        }

        bSetCompOut(0, 0);
      }
      #else // don't force P-Scan on
      if (bTvOut == SV_TVE_DIRECT)
      {
        bPScan = SV_OFF;
      }
      #endif // don't force P-Scan on

      if (bTvOut != SV_TVE_DIRECT)
      {
        if (bPScan == SV_OFF)
        {
          /* switch to P-SCAN on */
          bPScan = SV_ON;
        }
        else
        {
          /* switch to P-SCAN off */
          bPScan = SV_OFF;
        }

        #if defined( MT1389_PTCON )
        bPScan = SV_ON;
        #endif

        if (bEepromReadByte(TV_PSCAN_EN_POS) != bPScan)
        {
          fgEepromWriteByte(TV_PSCAN_EN_POS, bPScan);
        }

        vVideoPScanMode(bPScan, bTvOut);
      }
      #endif /* PN_IP_SAME_KEY */

      if (bPScan == SV_ON)
      {
        #ifdef PSCAN_FORCE_TV_AUTO
        vOsdShowTvFormat(OSD_MSG_PROGRESSIVE);
        bTvSystem = SV_AUTO;
        #else
        vOsdShowTvFormat(OSD_MSG_NTSC_PSCAN);
        bTvSystem = SV_NTSC;
        #endif
      }
      else
      #endif /* PSCAN_EN */
      {
        vOsdShowTvFormat(OSD_MSG_NTSC);
        bTvSystem = SV_NTSC;
      }
      break;
    }

    vVideoTvSystem(bTvSystem);

    #ifdef PSCAN_EN /* if P-Scan is enabled, TV system must sync with menu */
    fgEepromWriteByte(TV_SYSTEM_POSITION, bTvSystem);
    #endif

    #ifdef REAL_TIME_SAVE_FLASH_SHADOW
    _bPNSwitchTimer = 40;
    _bFlashSaveTimer = 40;
    #endif

  } /* if (fgChange) */
  else /* fgChange == FALSE */
  {
    vOsdShowError(SV_ERR_INVALID_OPERATION, OSD_TIMEOUT_SHORT);
  }

  _bIRKey = IR_NONE;
  return (UOP_OK);
}

#ifdef PSCAN_EN
BOOL fgCOMPScanKey(void) large
{
  BYTE bTvOut = bSharedInfo(SI_TVE_OUT_MODE);
  BYTE bPScan = bSharedInfo(SI_PSCAN_EN);

  if (bPScan == SV_OFF)
  {
    bPScan = SV_ON;

    if ((bTvOut == SV_TVE_DIRECT) || (bTvOut == SV_TVE_VGA))
    {
      bTvOut = SV_TVE_YCBCR;
    }
  }
  else
  {
    bPScan = SV_OFF;

    if (bTvOut == SV_TVE_VGA)
    {
      bTvOut = SV_TVE_YCBCR;
    }
  }

  if (bEepromReadByte(TV_PSCAN_EN_POS) != bPScan)
  {
    fgEepromWriteByte(TV_PSCAN_EN_POS, bPScan);
  }

  if (bEepromReadByte(TV_COMP_POS) != bTvOut)
  {
    fgEepromWriteByte(TV_COMP_POS, bTvOut);
  }

  if (bPScan == SV_ON)
  {
    vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_PROGRESSIVE, OSD_TIMEOUT);
  }
  else
  {
    vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_INTERLACE, OSD_TIMEOUT);
  }

  VfdShowPScanType(bPScan, bTvOut);

  vVideoPScanMode(bPScan, bTvOut);

  _bIRKey = IR_NONE;
  return (UOP_OK);
}

BOOL fgCOMVGAKey(void) large
{
  // for turn on VGA mode only
  if (bEepromReadByte(TV_PSCAN_EN_POS) != SV_ON)
  {
    fgEepromWriteByte(TV_PSCAN_EN_POS, SV_ON);
  }

  if (bEepromReadByte(TV_COMP_POS) != SV_TVE_VGA)
  {
    fgEepromWriteByte(TV_COMP_POS, SV_TVE_VGA);
  }

  vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_VGA, OSD_TIMEOUT);

  VfdShowPScanType(SV_ON, SV_TVE_VGA);

  vVideoPScanMode(SV_ON, SV_TVE_VGA);

  _bIRKey = IR_NONE;
  return (UOP_OK);
}
#endif /* PSCAN_EN */

BOOL fgCOMCompKey(void) large
{
  BYTE bMode;

  #ifdef MTK_TVE
  bMode = bEepromReadByte(TV_COMP_POS);

  switch (bMode)
  {
    case SV_TVE_DIRECT:
    bMode = SV_TVE_YCBCR;
    vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_YUV, OSD_TIMEOUT);
    break;

    case SV_TVE_YCBCR:
    bMode = SV_TVE_RGB;
    vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_RGB, OSD_TIMEOUT);
    break;

    case SV_TVE_RGB:
    #ifdef PSCAN_EN
    bMode = SV_TVE_VGA;
    vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_VGA, OSD_TIMEOUT);
    #else
    bMode = SV_TVE_DIRECT;
    vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_OFF, OSD_TIMEOUT);
    #endif
    break;

    #ifdef PSCAN_EN
    case SV_TVE_VGA:
    #endif
    default:
    bMode = SV_TVE_DIRECT;
    vOsdPosShow(OSD_POS_NORMAL, OSD_MSG_OFF, OSD_TIMEOUT);
    break;
  }

  fgEepromWriteByte(TV_COMP_POS, bMode);

  bSetCompOut(0, 0);

  #elif (defined(SCART_SELECTION) && !defined(MTK_TVE))
  bMode = bEepromReadByte(SCART_POS);

  switch (bMode)
  {
    case EV_RGB:
    fgEepromWriteByte(SCART_POS, EV_YPBPR);
    vTvRGBOut(TRUE);
    vOsdPosShow(OSD_POS_AUD_CTRL, OSD_MSG_SCART_YPBPR, OSD_TIMEOUT);
    break;

    case EV_YPBPR:
    default:
    fgEepromWriteByte(SCART_POS, EV_RGB);
    vTvRGBOut(FALSE);
    vOsdPosShow(OSD_POS_AUD_CTRL, OSD_MSG_RGB, OSD_TIMEOUT);
    break;
  }
  #endif /* SCART_SELECTION !MTK_TVE */

  #ifdef REAL_TIME_SAVE_FLASH_SHADOW
  _bFlashSaveTimer = 40;
  #endif

  _bIRKey = IR_NONE;
  return (UOP_OK);
}

#ifdef ENABLE_ZOOM_USER_MODE
BOOL fgCOMDirKey(void) large
{
  BYTE bHScale, bVScale;

  if (bSharedInfo(SI_ZOOM_SWITCH) != SV_ZOOM_USR)
  {
    // bypass the key
    return (UOP_OK);
  }

  bHScale = bSharedInfo(SI_ZOOM_USR_H);
  bVScale = bSharedInfo(SI_ZOOM_USR_V);

  switch (_bIRKey)
  {
    case IR_UP: // vertical zoom in
    {
      if (bVScale >= ZOOM_USR_V_BASE)
      {
        if (bVScale >= (ZOOM_USR_V_MAX - ZOOM_IN_V_STEP))
        {
          bVScale = ZOOM_USR_V_MAX;
        }
        else
        {
          bVScale += ZOOM_IN_V_STEP;
        }
      }

⌨️ 快捷键说明

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