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

📄 play_com.c

📁 mtk1389L latest sourcecode enjoy
💻 C
📖 第 1 页 / 共 4 页
字号:
  BYTE bInitState = bSharedInfo(SI_INIT_STATE);
  BYTE bPbcState = bSharedInfo(SI_PBC_STATE);
  BYTE bTvSystem = bTvSystemSetting();
  BOOL fgChange = TRUE;

#ifdef PSCAN_EN
  #ifdef HD_VIDEO
  BYTE bTvHdMode = bSharedInfo(SI_HD_MODE);
  #endif
  BYTE bTvOut = bSharedInfo(SI_TVE_OUT_MODE);
  BYTE bPScan = bSharedInfo(SI_PSCAN_EN);
  
#ifdef REAL_TIME_SAVE_FLASH_SHADOW
    if (_bPNSwitchTimer > 0) {
	   _bIRKey = IR_NONE;
	   return(UOP_OK);
    }		
#endif
  
  if(bTvSystem!=SV_AUTO) //corresponding vFlJvDgtMnHil vEnableWB(WB_DGST_HILI)
  {
   vDisableWB(WB_DGST_HILI);
  }
  #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 PLAY_NO_CHG_TV_FMT
  else if (!fgIsNonPlay())
  {
    if (fgIsDiscPlay(bPbcState) || fgIsInDigest(bPbcState))
    {
      fgChange = FALSE;
    }
  }
  #endif /* PLAY_NO_CHG_TV_FMT */
#endif /* MTK_TVE */

  /* change the format */
  if (fgChange)
  {
#if defined(HD_VIDEO) && defined(PSCAN_EN)
    vSetSharedInfo(SI_TV_CHG_MODE, bTvHdMode);
#endif

#ifdef REAL_TIME_SAVE_FLASH_SHADOW
    if (_bPNSwitchTimer > 0) {
	   _bIRKey = IR_NONE;
	   return(UOP_OK);
    }		
#endif

    switch (bTvSystem)
    {
      case SV_NTSC:
#ifdef PSCAN_EN
        if ((bTvOut != SV_TVE_DIRECT) && (bPScan == SV_ON))
        {
  #ifdef HD_VIDEO
          if (bTvHdMode == SV_HD_MODE_OFF)
          {
            vOsdShowTvFormat(OSD_MSG_720P60);
            bTvHdMode = SV_HD_MODE_720P;
          }
          else
  #endif
          {
            vOsdShowTvFormat(OSD_MSG_PAL_PSCAN);
            bTvSystem = SV_PAL;
  #ifdef HD_VIDEO
            bTvHdMode = SV_HD_MODE_OFF;
  #endif
          }
        }
        else
#endif /* PSCAN_EN */
        {
#if defined(HD_VIDEO) && defined(PSCAN_EN)
          if (bTvHdMode == SV_HD_MODE_OFF)
          {
            vOsdShowTvFormat(OSD_MSG_1080I60);
            bTvHdMode = SV_HD_MODE_1080I;
          }
          else
#endif
          {
            vOsdShowTvFormat(OSD_MSG_PAL);
            bTvSystem = SV_PAL;
  #if defined(HD_VIDEO) && defined(PSCAN_EN)
            bTvHdMode = SV_HD_MODE_OFF;
  #endif
          }
        }
        break;

      case SV_PAL:
#ifdef PSCAN_EN
        if ((bTvOut != SV_TVE_DIRECT) && (bPScan == SV_ON))
        {
  #ifdef HD_VIDEO
          if (bTvHdMode == SV_HD_MODE_OFF)
          {
          	#ifndef HD_HIGH_PALCLOSE
            vOsdShowTvFormat(OSD_MSG_720P50);
            bTvHdMode = SV_HD_MODE_720P;
		#else
		vOsdShowTvFormat(OSD_MSG_MULTI_PSCAN);
            bTvSystem = SV_AUTO;
		#endif
          }
          else
  #endif  // MT1389_REV_HD
          {
            vOsdShowTvFormat(OSD_MSG_MULTI_PSCAN);
            bTvSystem = SV_AUTO;
  #ifdef HD_VIDEO
            bTvHdMode = SV_HD_MODE_OFF;
  #endif
          }
        }
        else
#endif /* PSCAN_EN */
        {
#if defined(HD_VIDEO) && defined(PSCAN_EN)
          if (bTvHdMode == SV_HD_MODE_OFF)
          {
          	#ifndef HD_HIGH_PALCLOSE
            vOsdShowTvFormat(OSD_MSG_1080I50);
            bTvHdMode = SV_HD_MODE_1080I;
		#else
		vOsdShowTvFormat(OSD_MSG_MULTI);
            bTvSystem = SV_AUTO;
		#endif
          }
          else
#endif
          {
            vOsdShowTvFormat(OSD_MSG_MULTI);
            bTvSystem = SV_AUTO;
  #if defined(HD_VIDEO) && defined(PSCAN_EN)
            bTvHdMode = SV_HD_MODE_OFF;
  #endif
          }
        }
        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)
        {
#ifdef HD_VIDEO
          if ((bPScan == SV_OFF) && (bTvHdMode == SV_HD_MODE_1080I))
          {
            bPScan = SV_ON;
          }
          else if ((bPScan == SV_ON) && (bTvHdMode == SV_HD_MODE_720P))
          {
            bPScan = SV_OFF;
          }
#else
          if (bPScan == SV_OFF)
          {
            /* switch to P-SCAN on */
            bPScan = SV_ON;
          }
          else
          {
            /* switch to P-SCAN off */
            bPScan = SV_OFF;
          }
#endif

#if (defined (MT1389_PTCON) && defined (MT1389_REV_L))
          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
    #ifdef HD_VIDEO
          if (bTvHdMode == SV_HD_MODE_OFF)
          {
            vOsdShowTvFormat(OSD_MSG_720P_AUTO);
            bTvHdMode = SV_HD_MODE_720P;
          }
          else
    #endif
          {
            vOsdShowTvFormat(OSD_MSG_NTSC_PSCAN);
            bTvSystem = SV_NTSC;
     #ifdef HD_VIDEO
            bTvHdMode = SV_HD_MODE_OFF;
     #endif
          }
  #endif
        }
        else
#endif /* PSCAN_EN */
        {
#if defined(HD_VIDEO) && defined(PSCAN_EN)
          if (bTvHdMode == SV_HD_MODE_OFF)
          {
            vOsdShowTvFormat(OSD_MSG_1080I_AUTO);
            bTvHdMode = SV_HD_MODE_1080I;
          }
          else
#endif
          {
            vOsdShowTvFormat(OSD_MSG_NTSC);
            bTvSystem = SV_NTSC;
#if defined(HD_VIDEO) && defined(PSCAN_EN)
            bTvHdMode = SV_HD_MODE_OFF;
#endif
          }
        }
        break;
    }
#if defined(HD_VIDEO) && defined(PSCAN_EN)
    if (bSharedInfo(SI_HD_MODE) != bTvHdMode)
    {
      fgEepromWriteByte(TV_HD_MODE_POS, bTvHdMode);
      vSetSharedInfo(SI_HD_MODE, bTvHdMode);
      vNotifySharedInfo(SI_HD_MODE, 0, 0);
    }
#endif /* MT1389_REV_HD */
    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 = 20;
#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);
  }

   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);

  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 */

  _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;
        }
      }
      else
      {
        bVScale += ZOOM_OUT_V_STEP;
      }
      break;
    } // IR_UP, vertical zoom in

    case IR_DOWN: // vertical zoom out
    {
      if (bVScale <= ZOOM_USR_V_BASE)
      {
        if (bVScale <= (ZOOM_USR_V_MIN + ZOOM_OUT_V_STEP))
        {
          bVScale = ZOOM_USR_V_MIN;
        }
        else
        {
          bVScale -= ZOOM_OUT_V_STEP;
        }
      }
      else
      {
        bVScale -= ZOOM_IN_V_STEP;
      }
      break;
    } // IR_DOWN, vertical zoom out

    case IR_RIGHT: // horizontal zoom in
    {
      if (bHScale >= ZOOM_USR_H_BASE)
      {
        if (bHScale >= (ZOOM_USR_H_MAX - ZOOM_IN_H_STEP))
        {
          bHScale = ZOOM_USR_H_MAX;
        }
        else
        {
          bHScale += ZOOM_IN_H_STEP;
        }
      }
      else
      {
        bHScale += ZOOM_OUT_H_STEP;
      }
      break;
    } // IR_RIGHT, horizontal zoom in

    case IR_LEFT: // horizontal zoom out
    {
      if (bHScale <= ZOOM_USR_H_BASE)
      {
        if (bHScale <= (ZOOM_USR_H_MIN + ZOOM_OUT_H_STEP))
        {
          bHScale = ZOOM_USR_H_MIN;
        }
        else
        {
          bHScale -= ZOOM_OUT_H_STEP;
        }
      }
      else
      {
        bHScale -= ZOOM_IN_H_STEP;
      }
      break;
    } // IR_LEFT, horizontal zoom out

    default:
      return (UOP_FAIL);
  }

#ifdef VCD_MENU_NO_ZOOM_OUT
  if (fgIsVcdPlay() && (bSharedInfo(SI_TRACK_NO) == 0))
  {
    if (bHScale < ZOOM_USR_H_BASE)
    {
      bHScale = ZOOM_USR_H_BASE;
    }

    if (bVScale < ZOOM_USR_V_BASE)
    {
      bVScale = ZOOM_USR_V_BASE;
    }
  }
#endif /* VCD_MENU_NO_ZOOM_OUT */

  if ((bHScale != bSharedInfo(SI_ZOOM_USR_H)) ||
      (bVScale != bSharedInfo(SI_ZOOM_USR_V)))
  {
    vSendUopCmd(UOP_ZOOM_IN, SV_ZOOM_USR, bHScale, bVScale);
  }

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

#ifdef SUPPORT_CAPTURE_LOGO
BOOL fgCOMCaptureKey(void) large
{
  if (fgIsInputStateValid(INPUT_STATE_LOGO_CAPTURE) == FALSE)
  {
    if (fgIsLogoCaptureAllow())
    {
      vChangeInputState(INPUT_STATE_LOGO_CAPTURE, FALSE);
    }
  }

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

#ifdef SUPPORT_USB_COPY //yan 070409
// *********************************************************************
// Function : fgCOMUSBInputKey  
// Description : Direct key to copy disc(s)
// Parameter :  none
// Return    :  UOP_OK
// *********************************************************************
BOOL fgCOMUSBInputKey(void) large
{
  BYTE bID;
  BYTE bEMDTotal;
  bID = bSharedInfo(SI_DEVICE_ID);
  bEMDTotal = bSharedInfo(SI_EMD_ATTACH);
  #ifdef USB_COPY_DEBUG
  DBGLogS("fgCOMUSBInputKey:");
  DBGLogB(bEMDTotal,_bUSBUIState,0,0);
  #endif
  if((bSharedInfo(SI_INIT_STATE) == SV_DISC_IDENTIFIED) && bEMDTotal
  #ifdef SUPPORT_ONLY_AUDIO_TPYE
      && fgFlMnOnAudio()
#endif
  )
{ 	
	#ifdef PLAYER_FLMENU
  	if (fgFlCheckStatus(FL_STATUS_IN_MENU))
  	 {
	  vDisableWB(FSMENU_OSD_WBIDX_BASIC);
  	  vDisableWB(FSMENU_INFO);
       }
	 #ifdef MPEG4_TXT_SP
	  if (fgIsIsoPlay() && fgFlCheckStatus(FL_STATUS_IN_MPEG))
	  {
	    vDisableWB(WB_MP4_SP);
	  }
	 #endif
	#endif
	
	#ifdef SHOW_CD_TEXT
 	 if ((_sCDText.fgIsShowCDPanel)&&(bID == SV_DEVID_CDVDROM)) 
 	 {
          vExitCDPanel();
	      _sCDText.fgIsShowCDPanel = FALSE;
          _sCDText.fgCDTextHide = TRUE;
          vSetSharedInfo(SI_CDT_TRACK,0xff);

⌨️ 快捷键说明

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