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

📄 vid_ctrl.c

📁 mtk1389L latest sourcecode enjoy
💻 C
📖 第 1 页 / 共 2 页
字号:
  vSetSharedInfo(SI_PANEL_SHARPNESS_H, bLevel);
  vSetSharedInfo(SI_PANEL_SHARPNESS_V, bLevel);  
  vNotifySharedInfo(SI_PANEL_SHARPNESS_H, 0, 0);
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
char cVideoPQGammaBright(char cLevel) large
{
  if (cLevel > VID_BRIGHTNESS_MAX)
  {
    cLevel = VID_BRIGHTNESS_MAX;
  }
  else if (cLevel < VID_BRIGHTNESS_MIN)
  {
    cLevel = VID_BRIGHTNESS_MIN;
  }
  vSetSharedInfo(SI_PANEL_BRIGHTNESS, cLevel);
  vNotifySharedInfo(SI_PANEL_BRIGHTNESS, 0, 0);
  return cLevel;
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vVideoPQGammaLevel(BYTE bLevel) large
{
  if (bLevel > VID_GAMMA_LEVEL_MAX)
  {
    bLevel = VID_GAMMA_LEVEL_MAX;
  }
  else if (bLevel < VID_GAMMA_LEVEL_MIN)
  {
    bLevel = VID_GAMMA_LEVEL_MIN;
  }
  vSetSharedInfo(SI_PANEL_GAMMA, bLevel);
  vNotifySharedInfo(SI_PANEL_GAMMA, 0, 0);
}
#endif



// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vVideoEdgeEnhance(BYTE bLevel) large
{
  if (bLevel > VID_EDGE_ENHANCE_MAX)
  {
    bLevel = VID_EDGE_ENHANCE_MAX;
  }
  else if (bLevel < VID_EDGE_ENHANCE_MIN)
  {
    bLevel = VID_EDGE_ENHANCE_MIN;
  }

  vSetSharedInfo(SI_EDGE_EN, bLevel);
  vNotifySharedInfo(SI_EDGE_EN, 0, 0);
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vVideoPedestal(BYTE bType,BOOL fgOnOff) large
{
  /* TODO: check NTSC/PAL system */
  BYTE bOriValue;
  bOriValue = bSharedInfo(SI_BLK_LVL);
  /* pedestal on will make black level lighter */
  if(fgOnOff) //on
    vSetSharedInfo(SI_BLK_LVL, bOriValue|bType);
  else //off
    vSetSharedInfo(SI_BLK_LVL, bOriValue&(~bType));

//r   vSetSharedInfo(SI_BLK_LVL, fgOnOff);
  vNotifySharedInfo(SI_BLK_LVL, 0, 0);
}
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vVideoSharpness(BYTE bLevel) large
{
#ifdef SUPPORT_HDMI
  BYTE bData;
#endif //#ifdef SUPPORT_HDMI
  if (bLevel > VID_SHARPNESS_MAX)
  {
    bLevel = VID_SHARPNESS_MAX;
  }
  else if (bLevel < VID_SHARPNESS_MIN)
  {
    bLevel = VID_SHARPNESS_MIN;
  }
#ifdef SUPPORT_HDMI
  switch(bLevel)
  {
    case 3://highest
      bData = 3;
      break;
    case SV_HIGH:
      bData = 2;
      break;
    case SV_MID:
      bData = 1;
      break;
    case SV_LOW:
      bData = 0;
    default:
      break;
  }
  vSetSharedInfo(SI_HDMI_SHARPNESS_SETTING, bData);
  if(bSharedInfo(SI_HDCP_SERVICE_ROUTINE) == 1)
  {
    vSendPeriCmd(HDMI_CMD_SCLCOEF, bData, 0);
  }
#endif
#ifdef SHARPNESS_USE_YLPF
  switch(bLevel)
  {
    case SV_LOW:
      bLevel = (8<<2)|SV_YLP_ENABLE; //bit7 -> sharpness use YLP, 6->10 worse sharpness
    break;
    case SV_MID:
      bLevel = (5<<2)|SV_YLP_ENABLE; //5 normal sharpness
    break;
    case SV_HIGH:
    default:
      bLevel = (2<<2)|SV_YLP_ENABLE; //4->0 more sharpness
    break;
  }
#else
  bLevel |= (5<<2); //sharpness use CLP and set YLP normal
#endif

  vSetSharedInfo(SI_SHARPNESS, bLevel);
  vNotifySharedInfo(SI_SHARPNESS, 0, 0);
}

#ifdef MTK_TVE
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
void vVideoPScanMode(BYTE bPScanEn, BYTE bTvMode) large
{
  BYTE bMode = bEepromReadByte(ASPECT_POSITION);

#ifdef PSCAN_EN
  if (bPScanEn)
  {
    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
  #ifdef PSCAN_FORCE_TV_AUTO
  if ((bPScanEn == SV_ON) && (bSharedInfo(SI_TV_SYSTEM) != SV_AUTO))
  {
    vSetSharedInfo(SI_TV_SYSTEM, SV_AUTO);
    vNotifySharedInfo(SI_TV_SYSTEM, 0, 0);

    vVfdSymbol(VFD_SYM_TV_MULTI);
  }
  #endif /* PSCAN_FORCE_TV_AUTO */

  if (bTvMode != SV_TVE_SCART)
  {
    vSetSharedInfo(SI_G_SYNC, SV_ON);
    vNotifySharedInfo(SI_G_SYNC, 0, 0);
  }

  #ifdef PSCAN_EN
  if (bPScanEn == SV_ON)
  {
    if (bTvMode == SV_TVE_VGA)
    {
      vSetSharedInfo(SI_G_SYNC, SV_OFF);
      vNotifySharedInfo(SI_G_SYNC, 0, 0);
    }

    if (bTvMode == SV_TVE_DIRECT)
    {
      bTvMode = SV_TVE_YCBCR;
    }

    if (bSharedInfo(SI_TVE_OUT_MODE) != bTvMode)
    {
      vSetSharedInfo(SI_TVE_OUT_MODE, bTvMode);
      vNotifySharedInfo(SI_TVE_OUT_MODE, 0, 0);
    }

    if (bSharedInfo(SI_PSCAN_EN) != SV_ON)
    {
      vSetSharedInfo(SI_PSCAN_EN, SV_ON);
      vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
    }
  }
  else
  #endif /* PSCAN_EN */
  // P-Scan off
  {
    if (bTvMode != SV_TVE_SCART)
    {
      vTvScartAspect(0);  // don't care
      vTvRGBSel(1);
      vTvScartTvSel(0);   // don't care
    }

    if (bTvMode == SV_TVE_VGA)
    {
      bTvMode = SV_TVE_YCBCR;
    }
    else if (bTvMode == SV_TVE_SCART)
    {
      bTvMode = SV_TVE_RGB;

      vSetSharedInfo(SI_G_SYNC, SV_OFF);
      vNotifySharedInfo(SI_G_SYNC, 0, 0);
      vTvScartTvSel(0);
      vTvRGBSel(0);
      if (bMode == SV_WIDE)
        vTvScartAspect(1);
      else
        vTvScartAspect(0);
    }

    if (bSharedInfo(SI_TVE_OUT_MODE) != bTvMode)
    {
      vSetSharedInfo(SI_TVE_OUT_MODE, bTvMode);
      vNotifySharedInfo(SI_TVE_OUT_MODE, 0, 0);
    }

    if (bSharedInfo(SI_PSCAN_EN) != SV_OFF)
    {
      vSetSharedInfo(SI_PSCAN_EN, SV_OFF);
      vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
    }
  }
}
#endif /* MTK_TVE */

#ifdef PSCAN_EN
  #ifdef  SETUP_NO_PSCAN_CTRL
/***************************************************************************
     Function : void vUserRecallPScan(BOOL fgInit)
  Dsecription : called from Timer routine
    Parameter : None
       Return : None
***************************************************************************/
void vVideoUserRecallPScan(BOOL fgInit) large
{
  BYTE bPScan, bTvMode;

  bTvMode = bEepromReadByte(TV_COMP_POS);
  bPScan = bEepromReadByte(TV_PSCAN_EN_POS);

  if (fgInit == FALSE) // not inited, do reset
  {
    if (bTvMode == SV_TVE_VGA)
    {
      fgEepromWriteByte(TV_COMP_POS, SV_TVE_YUV);
      bTvMode = SV_TVE_YUV;
    }

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

  vVideoPScanMode(bPScan, bTvMode);
}
  #endif /* SETUP_NO_PSCAN_CTRL */
#endif /* PSCAN_EN */

#ifdef SUPPORT_HDMI
void vSetHDMIEnable(BYTE bValue) large
{
  BYTE bResolution;
  BYTE bData;
  if(bValue == SV_ON)
  {
    bResolution = bEepromReadByte(HDMI_RES_POS);
    vSetHDMIRes(bResolution);
  }
  else
  {
    vSetSharedInfo(SI_USER_VIDEO_SETTING, VFMT_OFF);
    vSendPeriCmd(HDMI_CMD_RESOLUTION, VFMT_OFF, 0);
    bSetCompOut(0, 0);
  }
}
void vSetHDMIRes(bValue) large
{
  if(bEepromReadByte(HDMI_POS) == SV_OFF)
  {
    return;
  }
  if(bSharedInfo(SI_RESOLUTION_CHANGE_INDEX) == 1) //HDMI is still in resolution change.
  {
    return;
  }
  vSetSharedInfo(SI_RESOLUTION_CHANGE_INDEX, 1);
  if(fgTVisHDMI())
  {
    vAdspMute(1,0);
    _rHDMIAudioCtrl.bAudioChange = 1;
  }

  #if defined(MT1389_REV_HD) && defined(PSCAN_EN)
  vSetSharedInfo(SI_TV_CHG_MODE, bSharedInfo(SI_HD_MODE));
  #endif

  if((bValue == SV_480I)  || (bValue == SV_480P27) ||
     (bValue == SV_480P54)|| (bValue == SV_720P60) ||
     (bValue == SV_1080I60))
  {
    if(bSharedInfo(SI_TV_SYSTEM) != SV_NTSC)
    {
      vSetSharedInfo(SI_TV_SYSTEM, SV_NTSC);
      vNotifySharedInfo(SI_TV_SYSTEM, 0, 0);
      #ifdef PSCAN_EN /* if P-Scan is enabled, TV system must sync with menu */
      fgEepromWriteByte(TV_SYSTEM_POSITION, SV_NTSC);
      #endif
    }
  }
  else
  {
    if(bSharedInfo(SI_TV_SYSTEM) != SV_PAL)
    {
      vSetSharedInfo(SI_TV_SYSTEM, SV_PAL);
      vNotifySharedInfo(SI_TV_SYSTEM, 0, 0);
      #ifdef PSCAN_EN /* if P-Scan is enabled, TV system must sync with menu */
      fgEepromWriteByte(TV_SYSTEM_POSITION, SV_PAL);
      #endif
    }
  }
  if((bValue == SV_480I) || (bValue == SV_576I))
  {
    if (bSharedInfo(SI_PSCAN_EN) != SV_OFF)
    {
      vSetSharedInfo(SI_PSCAN_EN, SV_OFF);
      vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
    }
    #ifdef MT1389_REV_HD
    fgEepromWriteByte(TV_HD_MODE_POS, SV_HD_MODE_OFF);
    vSetSharedInfo(SI_HD_MODE,SV_HD_MODE_OFF);
    vNotifySharedInfo(SI_HD_MODE,0,0);
    #endif
    vSetSharedInfo(SI_TVE_OUT_MODE, SV_TVE_YCBCR);
    vNotifySharedInfo(SI_TVE_OUT_MODE, 0, 0);
  }
  else
  {
    if((bValue == SV_480P54) || (bValue == SV_576P54) ||
       (bValue == SV_480P27) || (bValue == SV_576P27))
    {
      vSetSharedInfo(SI_TVE_OUT_MODE, SV_TVE_YCBCR);
      vNotifySharedInfo(SI_TVE_OUT_MODE, 0, 0);
    }
    else
    {
      if(bSharedInfo(SI_HDMI_VIDEO_DOWNSAMPLE) == 0)
      {
        vSetSharedInfo(SI_TVE_OUT_MODE, SV_TVE_DIRECT);
        vNotifySharedInfo(SI_TVE_OUT_MODE, 0, 0);
      }
    }
    #ifdef MT1389_REV_HD
    if(bSharedInfo(SI_HDMI_UPSCALE) == SV_OFF)
    {
      if((bValue == SV_1080I50) || (bValue == SV_1080I60))
      {
        if (bSharedInfo(SI_PSCAN_EN) == SV_ON)
        {
          vSetSharedInfo(SI_PSCAN_EN, SV_OFF);
          vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
        }
        fgEepromWriteByte(TV_HD_MODE_POS, SV_HD_MODE_1080I);
        if(bSharedInfo(SI_HD_MODE) != SV_HD_MODE_1080I)
        {
          vSetSharedInfo(SI_HD_MODE,SV_HD_MODE_1080I);
          //vNotifySharedInfo(SI_HD_MODE,0,0);
        }
      }
      else if((bValue == SV_720P50) ||(bValue == SV_720P60))
      {
        if (bSharedInfo(SI_PSCAN_EN) != SV_ON)
        {
          vSetSharedInfo(SI_PSCAN_EN, SV_ON);
          vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
        }
        fgEepromWriteByte(TV_HD_MODE_POS, SV_HD_MODE_720P);
        if(bSharedInfo(SI_HD_MODE) != SV_HD_MODE_720P)
        {
          vSetSharedInfo(SI_HD_MODE,SV_HD_MODE_720P);
          //vNotifySharedInfo(SI_HD_MODE,0,0);
        }
      }
      else
      {
        if (bSharedInfo(SI_PSCAN_EN) != SV_ON)
        {
          vSetSharedInfo(SI_PSCAN_EN, SV_ON);
          vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
        }
        fgEepromWriteByte(TV_HD_MODE_POS, SV_HD_MODE_OFF);
        if(bSharedInfo(SI_HD_MODE) != SV_HD_MODE_OFF)
        {
          vSetSharedInfo(SI_HD_MODE,SV_HD_MODE_OFF);
          //vNotifySharedInfo(SI_HD_MODE,0,0);
        }
      }
    }
    else
    {
      if(bSharedInfo(SI_PSCAN_EN) != SV_ON)
      {
        vSetSharedInfo(SI_PSCAN_EN, SV_ON);
        vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
      }
      fgEepromWriteByte(TV_HD_MODE_POS, SV_HD_MODE_OFF);
      vSetSharedInfo(SI_HD_MODE,SV_HD_MODE_OFF);
      //vNotifySharedInfo(SI_HD_MODE,0,0);
    }
    #else
    if(bSharedInfo(SI_PSCAN_EN) != SV_ON)
    {
      vSetSharedInfo(SI_PSCAN_EN, SV_ON);
      vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
    }
    #endif //#ifdef MT1389_REV_HD
  }
 #ifdef MT1389_REV_E
  if (bSharedInfo(SI_USER_VIDEO_SETTING) != bValue);
  {
    vSetSharedInfo(SI_USER_VIDEO_SETTING, bValue);
    vNotifySharedInfo(SI_TVE_OUT_MODE, 0, 0);
  }
 #else
   vSetSharedInfo(SI_USER_VIDEO_SETTING, bValue);
 #endif
  vSendPeriCmd(HDMI_CMD_RESOLUTION, bValue, 0);
  vNotifySharedInfo(SI_HD_MODE,0,0); //don't send too much TV system change command to RISC.
}

void vSetHDMIVideo(bValue) large
{
  if(bValue == SV_RGB444)
  {
    vSetSharedInfo(SI_HDMI_OUTPUT_MODE, 0x00); //for AVI info frame
  }
  else
  {
    vSetSharedInfo(SI_HDMI_OUTPUT_MODE, 0x40); //for AVI info frame
  }
  vSendPeriCmd(HDMI_CMD_VIDEO_FORMAT, 0, 0);
}
void vSetHDMIAudio(bValue) large
{
  if(fgTVisHDMI())
  {
    //vAdspMute(1,0);
    _rHDMIAudioCtrl.bAudioChange = 1;
    _rHDMIAudioCtrl.bAudioCount = 40;
    _rHDMIAudioCtrl.bAudioMuteOK = 0;
  }
  vSetSharedInfo(SI_HDMI_AUDIO_SOURCE, bValue);
}
void vSetHDMISRC(bValue) large
{
  if(fgTVisHDMI())
  {
    //vAdspMute(1,0);
    _rHDMIAudioCtrl.bAudioChange = 1;
    _rHDMIAudioCtrl.bAudioCount = 40;
    _rHDMIAudioCtrl.bAudioMuteOK = 0;
  }
  vSetSharedInfo(SI_HDMI_SRC_CONTROL, bValue);
}
void vSetHDMIDVI(bValue) large
{
  vSetSharedInfo(SI_EDID_VSDB_EXIST, bValue);
}
#endif //#ifdef SUPPORT_HDMI

⌨️ 快捷键说明

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