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

📄 osdcore.c

📁 是MTK公司新出来的DVD方案
💻 C
📖 第 1 页 / 共 3 页
字号:
#endif  
  vEnableWB(WB_NORMAL_HEAD1);
  vEnableWB(WB_NORMAL_HEAD2);
  vEnableWB(WB_NORMAL_PBC1);
  vEnableWB(WB_NORMAL_PBC2);
  vEnableWB(WB_NORMAL_VOL);
  vEnableWB(WB_OVERLAY_MSG1);

  /* set initial status */
  vSetSharedInfo(SH_OSD_LAYER1_WB, 0x7f); /* all layer 1 WB enable */
  vSetSharedInfo(SH_OSD_LAYER1_STATUS, 0x00);
  vSetSharedInfo(SH_OSD_LAYER2_WB, 0x00); /* all layer 2 WB disable */
  vSetSharedInfo(SH_OSD_LAYER2_STATUS, 0x00);

  vSetSharedInfo(SH_PAUSE_SHOW_WB,0);//init
  vSetSharedInfo(SH_PROGRAM_START,0);//init
  vSetSharedInfo(SH_BOOKMARK_PLAY,0);//init
  

  for (i = 0; i < OSD_TIMER_MAX; i++)
  {
    vSetSharedInfo(SH_OSD_TIMER_START + i, 0);
  }

  /* set OSD wb mode */
  vSetSharedInfo(SH_OSD_WB_MODE, OSD_WB_NORMAL);
  vSetSharedInfo(SH_OSD_WB_SAVED, OSD_WB_NONE);

  /* file system code page asigned */
  //vSetFsCodePage(CODE_PAGE_MENU);

  /* set OSD state to run state */
  vOsdSetSt(OSD_ST_RUN);

  //for SPECTRUM wb
#ifdef SPTM_SUPPORT
  vCreateWBEx(WB_NORMAL_SPTM);
#endif

#ifdef PLAYER_ZOOMIN_INDICATOR
  // for ZOOM IN indicator
  vCreateWBEx(WB_ZOOM_BR);
#endif

  //Fixed Me
  //WBs can't show after vOsdCoreInit besides WB_HEAD1
  //but call vOsdShowWb(OSD_WB_DISABLE) and then call vOsdShowWb(OSD_WB_RESTORE);
  //all static WBs can be showed
  vOsdShowWb(OSD_WB_DISABLE);
  vOsdShowWb(OSD_WB_RESTORE);
}
// *********************************************************************
// Function : void vOsdCoreExit(void) large
// Description :
// Parameter :
// Return    : None
// *********************************************************************
#if 0
void vOsdCoreExit(void) large
{
}
#endif

// *********************************************************************
// Function : void vOsdCoreLayer1Refresh(void)
// Description :
// Parameter :
// Return    : None
// *********************************************************************
void vOsdCoreLayer1Refresh(void) large
{
  BYTE bPbcState;

  /* for play status show */
  if (_rOsdStateCtx.fgPlayShow == TRUE)
  {
    if (bSharedInfo(SH_OSD_TIMER_PLAY_STATUS) == 0)
    {
      _rOsdStateCtx.fgPlayShow = FALSE;
      _rOsdStateCtx.bPlayType = OSD_SHOW_PLAY;
      /* update flag first then call show PBC state */
      vShowPbcState(bSharedInfo(SI_PBC_STATE));
    }
  }

  /* for audio status show */
  if (_rOsdStateCtx.fgAudioStatusRecall == TRUE)
  {
    if (bSharedInfo(SH_OSD_TIMER_AUDIO_CTRL) == 0)
    {
      _rOsdStateCtx.fgAudioStatusRecall = FALSE;

      if (_rOsdStateCtx.bAudioStatus == OSD_AUDIO_SHOW_MUTE)
      {
        vOsdShowMute(OSD_MUTE_ON);
      }
    }
  }
}

// *********************************************************************
// Function : void vOsdCoreLayer2Refresh(void)
// Description :
// Parameter :
// Return    : None
// *********************************************************************
void vOsdCoreLayer2Refresh(void) large
{
  uOsdLayer1Status uTmp1;
  uOsdLayer2Status uTmp2;
  BYTE bCnt, bIdx;
  BYTE bChanged;
  BYTE bWbMode;

  uTmp1.Byte = bSharedInfo(SH_OSD_LAYER1_STATUS);
  uTmp2.Byte = bSharedInfo(SH_OSD_LAYER2_STATUS);

  bWbMode = bSharedInfo(SH_OSD_WB_MODE);

  /* LINE 1 */
  bChanged = 0;
  bCnt = bSharedInfo(SH_OSD_TIMER_LAYER2_1);
  if (uTmp2.Bit.Line1)
  {
    if (bCnt == 0)
    {
      uTmp2.Bit.Line1 = FALSE;
      bChanged = 1;
    }
  }
  else
  {
    if (bCnt > 0)
    {
      uTmp2.Bit.Line1 = TRUE;
      bChanged = 1;
    }
  }

  if (bChanged)
  {
    if (uTmp2.Bit.Line1)
    {
      bCnt = bSharedInfo(SH_OSD_LAYER1_WB);
      bCnt &= (~(0x01 << 0x00));
      vSetSharedInfo(SH_OSD_LAYER1_WB, bCnt);
      vDisableWB(pbWbLayer1[0x00]);

      bCnt = bSharedInfo(SH_OSD_LAYER2_WB);
      bCnt |= (0x01 << 0x00);
      vSetSharedInfo(SH_OSD_LAYER2_WB, bCnt);
      if ((!fgIsInSetupMenu()) && (!fgIsScrSaverOn()) && (bWbMode != OSD_WB_FULL_SCR))
      {
        vEnableWB(pbWbLayer2[0x00]);
        /* for input state */
        if (uTmp2.Bit.Wb1Hili == TRUE)
        {
          vInMsgColEn(pbWbLayer2[0x00]);
        }
        else
        {
          vInMsgColDis(pbWbLayer2[0x00]);
        }
      }
    }
    else
    {
      bCnt = bSharedInfo(SH_OSD_LAYER2_WB);
      bCnt &= (~(0x01 << 0x00));
      vSetSharedInfo(SH_OSD_LAYER2_WB, bCnt);
      uTmp2.Bit.Wb1Hili = FALSE;
      vDisableWB(pbWbLayer2[0x00]);

      bCnt = bSharedInfo(SH_OSD_LAYER1_WB);
      bCnt |= (0x01 << 0x00);
      vSetSharedInfo(SH_OSD_LAYER1_WB, bCnt);
      if ((!fgIsInSetupMenu()) && (!fgIsScrSaverOn()) && (bWbMode != OSD_WB_FULL_SCR))
      {
        vEnableWB(pbWbLayer1[0x00]);
        /* for input state */
        if (uTmp1.Bit.Wb1Hili == TRUE)
        {
          vInMsgColEn(pbWbLayer1[0x00]);
        }
        else
        {
          vInMsgColDis(pbWbLayer1[0x00]);
        }
      }
    }
  }

  /* LINE 2 */
  bChanged = 0;
  bCnt = bSharedInfo(SH_OSD_TIMER_LAYER2_2);
  if (uTmp2.Bit.Line2)
  {
    if (bCnt == 0)
    {
      uTmp2.Bit.Line2 = FALSE;
      bChanged = 1;
    }
  }
  else
  {
    if (bCnt > 0)
    {
      uTmp2.Bit.Line2 = TRUE;
      bChanged = 1;
    }
  }

  if (bChanged)
  {
    if (uTmp2.Bit.Line2)
    {
      bCnt = bSharedInfo(SH_OSD_LAYER1_WB);
      bCnt &= (~(0x01 << 0x01));
      vSetSharedInfo(SH_OSD_LAYER1_WB, bCnt);
      vDisableWB(pbWbLayer1[0x01]);

      bCnt = bSharedInfo(SH_OSD_LAYER2_WB);
      bCnt |= (0x01 << 0x01);
      vSetSharedInfo(SH_OSD_LAYER2_WB, bCnt);
      if ((!fgIsInSetupMenu()) && (!fgIsScrSaverOn()) && (bWbMode != OSD_WB_FULL_SCR))
      {
        vEnableWB(pbWbLayer2[0x01]);
        /* for input state */
        if (uTmp2.Bit.Wb2Hili == TRUE)
        {
          vInMsgColEn(pbWbLayer2[0x01]);
        }
        else
        {
          vInMsgColDis(pbWbLayer2[0x01]);
        }
      }
    }
    else
    {
      bCnt = bSharedInfo(SH_OSD_LAYER2_WB);
      bCnt &= (~(0x01 << 0x01));
      vSetSharedInfo(SH_OSD_LAYER2_WB, bCnt);
      uTmp2.Bit.Wb2Hili = FALSE;
      vDisableWB(pbWbLayer2[0x01]);

      bCnt = bSharedInfo(SH_OSD_LAYER1_WB);
      bCnt |= (0x01 << 0x01);
      vSetSharedInfo(SH_OSD_LAYER1_WB, bCnt);
      if ((!fgIsInSetupMenu()) && (!fgIsScrSaverOn()) && (bWbMode != OSD_WB_FULL_SCR))
      {
        vEnableWB(pbWbLayer1[0x01]);
        /* for input state */
        if (uTmp1.Bit.Wb2Hili == TRUE)
        {
          vInMsgColEn(pbWbLayer1[0x01]);
        }
        else
        {
          vInMsgColDis(pbWbLayer1[0x01]);
        }
      }
    }
  }

  /* LINE 3 */
  bChanged = 0;
  bCnt = bSharedInfo(SH_OSD_TIMER_LAYER2_3);
  if (uTmp2.Bit.Line3)
  {
    if (bCnt == 0)
    {
      uTmp2.Bit.Line3 = FALSE;
      bChanged = 1;
    }
  }
  else
  {
    if (bCnt > 0)
    {
      uTmp2.Bit.Line3 = TRUE;
      bChanged = 1;
    }
  }

  if (bChanged)
  {
    if (uTmp2.Bit.Line3)
    {
      bCnt = bSharedInfo(SH_OSD_LAYER1_WB);
      bCnt &= (~(0x01 << 0x02));
      vSetSharedInfo(SH_OSD_LAYER1_WB, bCnt);
      vDisableWB(pbWbLayer1[0x02]);

      bCnt = bSharedInfo(SH_OSD_LAYER2_WB);
      bCnt |= (0x01 << 0x02);
      vSetSharedInfo(SH_OSD_LAYER2_WB, bCnt);
      if ((!fgIsInSetupMenu()) && (!fgIsScrSaverOn()) && (bWbMode != OSD_WB_FULL_SCR))
      {
        vEnableWB(pbWbLayer2[0x02]);
        /* for input state */
        if (uTmp2.Bit.Wb3Hili == TRUE)
        {
          vInMsgColEn(pbWbLayer2[0x02]);
        }
        else
        {
          vInMsgColDis(pbWbLayer2[0x02]);
        }
      }
    }
    else
    {
      bCnt = bSharedInfo(SH_OSD_LAYER2_WB);
      bCnt &= (~(0x01 << 0x02));
      vSetSharedInfo(SH_OSD_LAYER2_WB, bCnt);
      uTmp2.Bit.Wb3Hili = FALSE;
      vDisableWB(pbWbLayer2[0x02]);

      bCnt = bSharedInfo(SH_OSD_LAYER1_WB);
      bCnt |= (0x01 << 0x02);
      vSetSharedInfo(SH_OSD_LAYER1_WB, bCnt);
      if ((!fgIsInSetupMenu()) && (!fgIsScrSaverOn()) && (bWbMode != OSD_WB_FULL_SCR))
      {
        vEnableWB(pbWbLayer1[0x02]);
        /* for input state */
        if (uTmp1.Bit.Wb3Hili == TRUE)
        {
          vInMsgColEn(pbWbLayer1[0x02]);
        }
        else
        {
          vInMsgColDis(pbWbLayer1[0x02]);
        }
      }
    }
  }

  /* LINE 4 */
  bChanged = 0;
  bCnt = bSharedInfo(SH_OSD_TIMER_LAYER2_4);
  if (uTmp2.Bit.Line4)
  {
    if (bCnt == 0)
    {
      uTmp2.Bit.Line4 = FALSE;
      bChanged = 1;
    }
  }
  else
  {
    if (bCnt > 0)
    {
      uTmp2.Bit.Line4 = TRUE;
      bChanged = 1;
    }
  }

  if (bChanged)
  {
    if (uTmp2.Bit.Line4)
    {
      bCnt = bSharedInfo(SH_OSD_LAYER1_WB);
      bCnt &= (~(0x01 << 0x03));
      vSetSharedInfo(SH_OSD_LAYER1_WB, bCnt);
      vDisableWB(pbWbLayer1[0x03]);

      bCnt = bSharedInfo(SH_OSD_LAYER2_WB);
      bCnt |= (0x01 << 0x03);
      vSetSharedInfo(SH_OSD_LAYER2_WB, bCnt);
      if ((!fgIsInSetupMenu()) && (!fgIsScrSaverOn()) && (bWbMode != OSD_WB_FULL_SCR))
      {
        vEnableWB(pbWbLayer2[0x03]);
        /* for input state */
        if (uTmp2.Bit.Wb4Hili == TRUE)
        {
          vInMsgColEn(pbWbLayer2[0x03]);
        }
        else
        {
          vInMsgColDis(pbWbLayer2[0x03]);
        }
      }
    }
    else
    {
      bCnt = bSharedInfo(SH_OSD_LAYER2_WB);
      bCnt &= (~(0x01 << 0x03));
      vSetSharedInfo(SH_OSD_LAYER2_WB, bCnt);
      uTmp2.Bit.Wb4Hili = FALSE;
      vDisableWB(pbWbLayer2[0x03]);

      bCnt = bSharedInfo(SH_OSD_LAYER1_WB);
      bCnt |= (0x01 << 0x03);
      vSetSharedInfo(SH_OSD_LAYER1_WB, bCnt);
      if ((!fgIsInSetupMenu()) && (!fgIsScrSaverOn()) && (bWbMode != OSD_WB_FULL_SCR))
      {
        vEnableWB(pbWbLayer1[0x03]);
        /* for input state */
        if (uTmp1.Bit.Wb4Hili == TRUE)
        {
          vInMsgColEn(pbWbLayer1[0x03]);
        }
        else
        {
          vInMsgColDis(pbWbLayer1[0x03]);
        }
      }
    }
  }

  vSetSharedInfo(SH_OSD_LAYER1_STATUS, uTmp1.Byte);
  vSetSharedInfo(SH_OSD_LAYER2_STATUS, uTmp2.Byte);
}

// *********************************************************************
// Function : void vOsdCoreRefresh(void)
// Description : called every seconds
// Parameter :
// Return    : None
// *********************************************************************
void vOsdCoreRefresh(BOOL fgIsTimer) large
{
  BYTE bIdx;
  BYTE bTmp;

  /* if is timer beep, count down OSD timer */
  if (fgIsTimer == TRUE)
  {
    for (bIdx = 0; bIdx < OSD_TIMER_MAX; bIdx++)
    {
      bTmp = bSharedInfo(SH_OSD_TIMER_START + bIdx);
      if ((bTmp != OSD_NO_DISAPPEAR) && (bTmp != 0))
      {
        bTmp--;
        vSetSharedInfo(SH_OSD_TIMER_START + bIdx, bTmp);
      }
    }
  } /* fgIsTimer == TRUE */

  /* for error message in the layer 2 */
  if (OSD_POS_ERROR >= OSD_POS_LAYER2_LINE1)
  {
    bTmp = bSharedInfo(SH_OSD_TIMER_START + (OSD_POS_ERROR - OSD_POS_LAYER2_LINE1));
    bIdx = bSharedInfo(SH_OSD_TIMER_ERR_MSG);
    if (bTmp > bIdx)
    {
      vSetSharedInfo(SH_OSD_TIMER_ERR_MSG, 0);
    }
  }

  vOsdCoreLayer2Refresh();
  vOsdCoreLayer1Refresh();
}

// *********************************************************************
// Function : BOOL fgOsdCoreChgColEn(WORD wPosIndex, BYTE bWB)
// Description :
// Parameter :
// Return    : None
// *********************************************************************
BOOL fgOsdCoreChgColEn(WORD wPosIndex, BYTE bWB) large
{
  BOOL fgChange;
  uOsdLayer1Status uTmp1;
  uOsdLayer2Status uTmp2;

  fgChange = FALSE;
  uTmp1.Byte = bSharedInfo(SH_OSD_LAYER1_STATUS);
  uTmp2.Byte = bSharedInfo(SH_OSD_LAYER2_STATUS);

  if (fgIsLayer2(wPosIndex))
  {
    if (!fgIsInSetupMenu())
    {
      fgChange = TRUE;
    }

    if (bWB == pbWbLayer2[0])
    {
      uTmp2.Bit.Wb1Hili = TRUE;
    }
    else if (bWB == pbWbLayer2[1])
    {
      uTmp2.Bit.Wb2Hili = TRUE;
    }
    else if (bWB == pbWbLayer2[2])
    {
      uTmp2.Bit.Wb3Hili = TRUE;
    }
    else if (bWB == pbWbLayer2[3])
    {
      uTmp2.Bit.Wb4Hili = TRUE;
    }

    vSetSharedInfo(SH_OSD_LAYER2_STATUS, uTmp2.Byte);
  }
  else if (fgIsLayer1(wPosIndex))
  {
    /* the hili enable is done in layer refresh */
    if (bWB == pbWbLayer1[0])
    {
      uTmp1.Bit.Wb1Hili = TRUE;
      if (!(uTmp2.Bit.Line1 || fgIsInSetupMenu()))
      {
        fgChange = TRUE;
      }
    }
    else if (bWB == pbWbLayer1[1])
    {
      uTmp1.Bit.Wb2Hili = TRUE;
      if (!(uTmp2.Bit.Line2 || fgIsInSetupMenu()))
      {
        fgChange = TRUE;
      }
    }
    else if (bWB == pbWbLayer1[2])
    {
      uTmp1.Bit.Wb3Hili = TRUE;
      if (!(uTmp2.Bit.Line3 || fgIsInSetupMenu()))
      {
        fgChange = TRUE;
      }
    }
    else if (bWB == pbWbLayer1[3])
    {
      uTmp1.Bit.Wb4Hili = TRUE;
      if (!(uTmp2.Bit.Line4 || fgIsInSetupMenu()))
      {
        fgChange = TRUE;
      }
    }

    vSetSharedInfo(SH_OSD_LAYER1_STATUS, uTmp1.Byte);
  }
  else
  {
    fgChange = TRUE;
  }

  return (fgChange);
}

// *********************************************************************
// Function : BOOL fgOsdCoreChgColDis(WORD wPosIndex, BYTE bWB)
// Description :
// Parameter :
// Return    : None

⌨️ 快捷键说明

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