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

📄 play_dvd.c

📁 MTK 1389E SOURCE CODE
💻 C
📖 第 1 页 / 共 5 页
字号:
          else
          {
            vSendUopCmd(UOP_PTT_PLAY, _rNumInStateCtx.wNum, SV_PTT_PLAY_NORMAL, 0);
          }
        }
      }
      else /* input cancelled */
      {
        if (_rSearchStateCtx.bType == SEARCH_DVD_CH)
        {
          vOsdShowChapterTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
        }
        else
        {
          vOsdShowChapterSearch(0, 0, OSD_SEARCH_CLEAR, 0, 0, 0);
        }

        vSetExitInputState();
        _rSearchStateCtx.bType = SEARCH_NONE;
        vOsdShowError(SV_ERR_INPUT_INVALID, OSD_TIMEOUT_SHORT);
      }
    }
    else /* not complete yet! */
    {
      /* update OSD only */
      if (_rSearchStateCtx.bType == SEARCH_DVD_CH)
      {
        vOsdShowChapterTimeSearch(_rNumInStateCtx.wNum, bChNs, (OSD_DVD_CH_SEARCH | 1), 0);
      }
      else
      {
          if (bDiscType == SV_DVD_AUDIO)
          {
            vOsdShowChapterSearch(bSharedInfo(SI_GRP_NO), bSharedInfo(SI_GRP_NS), 1,
                                  _rNumInStateCtx.wNum, bChNs, OSD_NO_DISAPPEAR);
          }
          else
          {
            vOsdShowChapterSearch(bSharedInfo(SI_TT_NO), bSharedInfo(SI_TT_NS), 1,
                                  _rNumInStateCtx.wNum, bChNs, OSD_NO_DISAPPEAR);
          }
      }

      vIrSetTimeOut(IR_TIMEOUT_SEARCH);
    }
  }
  else /* the key is not grabed, assume exit input state */
  {
    vSetExitInputState();

    if (_rSearchStateCtx.bType == SEARCH_DVD_CH)
    {
      vOsdShowChapterTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
    }
    else
    {
      vOsdShowChapterSearch(0, 0, OSD_SEARCH_CLEAR, 0, 0, 0);
    }

    if ((_bIRKey == IR_LEFT) || (_bIRKey == IR_RIGHT))
    {
      if (_rSearchStateCtx.bType == SEARCH_DVD_CH)
      {
        _rSearchStateCtx.bType = SEARCH_DVD_TIME;
      }
      else
      {
        _rSearchStateCtx.bType = SEARCH_DVD_PTT_TTL;
      }
      _bIRKey = IR_SELECT;
    }
    else if (_bIRKey == IR_SELECT)
    {
      /* note we pass IR_SELECT to main state change search mode */
      if (_rSearchStateCtx.bType == SEARCH_DVD_CH)
      {
        _rSearchStateCtx.bType = SEARCH_DVD_PTT_TTL;
      }
      else if (_rSearchStateCtx.bType == SEARCH_DVD_TIME_CH_CHANGE)
      {
        if (fgIsTimeSearchAllow() == TRUE)
        {
          /* change to chapter time search in main state */
          _rSearchStateCtx.bType = SEARCH_DVD_TIME;
        }
        else
        {
          vOsdShowChapterTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
#ifdef SEARCH_INPUT_SHOW
          if (bDiscType == SV_DVD_AUDIO)
          {
            vOsdShowChapterTimeSearch(bSharedInfo(SI_TRACK_NO), bSharedInfo(SI_TRACK_NS),
                                      (OSD_DVD_CH_SEARCH | OSD_DVD_SEARCH_END), 0);
          }
          else
          {
            vOsdShowChapterTimeSearch(bSharedInfo(SI_CHAP_NO), bSharedInfo(SI_CHAP_NS),
                                      (OSD_DVD_CH_SEARCH | OSD_DVD_SEARCH_END), 0);
          }
#endif

          _rSearchStateCtx.bType = SEARCH_NONE;
          return (TRUE);
        }
      }
    }
    else
    {
      if (_bIRKey == IR_TIME_OUT)
      {
        fgRetValue = TRUE;
      }

      _rSearchStateCtx.bType = SEARCH_NONE;
    }
  }

  return (fgRetValue);
}



void vDVDTimeSearchInit(BYTE fgInit) large
{
  BYTE  bDiscType = bSharedInfo(SI_DISC_TYPE);

  vNumInInitState(NUM_IN_DVD_TIME, 5);

  if (_rSearchStateCtx.bType == SEARCH_DVD_TIME)
  {
    _rSearchStateCtx.bType = SEARCH_DVD_TIME_CH;
    if (bDiscType == SV_DVD_AUDIO)
    {
      vOsdShowChapterTimeSearch(bSharedInfo(SI_TRACK_NO), bSharedInfo(SI_TRACK_NS), 0, 0);
    }
    else
    {
      vOsdShowChapterTimeSearch(bSharedInfo(SI_CHAP_NO), bSharedInfo(SI_CHAP_NS), 0, 0);
    }
  }
  else
  {
    _rSearchStateCtx.bType = SEARCH_DVD_TIME;
    if (bDiscType == SV_DVD_AUDIO)
    {
      vOsdShowTitleTimeSearch(bSharedInfo(SI_GRP_NO), bSharedInfo(SI_GRP_NS), 0, 0);
    }
    else
    {
      vOsdShowTitleTimeSearch(bSharedInfo(SI_TT_NO), bSharedInfo(SI_TT_NS), 0, 0);
    }
  }

  vIrSetTimeOut(IR_TIMEOUT_SEARCH);
}

BOOL fgDVDTimeSearchState(void) large
{
  BOOL fgRetValue;
  sTimeChkInfo rTimeChk;
  BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);

  if ((_bIRKey <= IR_ADD10) || (_bIRKey == IR_CLEAR) || (_bIRKey == IR_ADD5))  // megaa ADD5
  {
    /* we accept +10 key but do no action */
    fgRetValue = fgNumInState();

    if (_rNumInStateCtx.rState.fgComplete)
    {
      vSetExitInputState();

      rTimeChk.bHH = _rNumInStateCtx.bDig[0];
      rTimeChk.bMM = _rNumInStateCtx.bDig[1] * 10 + _rNumInStateCtx.bDig[2];
      rTimeChk.bSS = _rNumInStateCtx.bDig[3] * 10 + _rNumInStateCtx.bDig[4];

      if (_rSearchStateCtx.bType == SEARCH_DVD_TIME)
      {
        //vOsdShowTitleTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0); /* clear OSD and input field */  // disabled by megaa

        rTimeChk.bType = E_TITLE_TIME;
        if ((_rNumInStateCtx.rState.fgCancel == FALSE) &&
            (fgCheckTimeValid(&rTimeChk) == TRUE))
        {
#ifdef SEARCH_INPUT_SHOW
  #ifdef SUPPORT_DVD_AUDIO
          if (bDiscType == SV_DVD_AUDIO)
          {
            vOsdShowTitleTimeSearch(bSharedInfo(SI_GRP_NO), bSharedInfo(SI_GRP_NS),
                                    OSD_DVD_SEARCH_END, _rNumInStateCtx.bDig);
          }
          else
  #endif  /* SUPPORT_DVD_AUDIO */
          {
            vOsdShowTitleTimeSearch(bSharedInfo(SI_TT_NO), bSharedInfo(SI_TT_NS),
                                    OSD_DVD_SEARCH_END, _rNumInStateCtx.bDig);
          }
#endif
          vSendUopCmd(UOP_TIME_PLAY, rTimeChk.bHH, rTimeChk.bMM, rTimeChk.bSS);
        }
        else
        {
          vOsdShowTitleTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0); /* clear OSD and input field */  // added by megaa
          vOsdShowError(SV_ERR_INPUT_INVALID, OSD_TIMEOUT_SHORT);
        }
      }
      else /* chapter tiem search */
      {
        //vOsdShowChapterTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0); /* clear OSD and input field */  // disabled by megaa
        rTimeChk.bType = E_CHAP_TIME;
        if ((_rNumInStateCtx.rState.fgCancel == FALSE) &&
            (fgCheckTimeValid(&rTimeChk) == TRUE))
        {
#ifdef SEARCH_INPUT_SHOW
  #ifdef SUPPORT_DVD_AUDIO
          if (bDiscType == SV_DVD_AUDIO)
          {
            vOsdShowChapterTimeSearch(bSharedInfo(SI_TRACK_NO), bSharedInfo(SI_TRACK_NS),
                                      OSD_DVD_SEARCH_END, _rNumInStateCtx.bDig);
          }
          else
  #endif  /* SUPPORT_DVD_AUDIO */
          {
            vOsdShowChapterTimeSearch(bSharedInfo(SI_CHAP_NO), bSharedInfo(SI_CHAP_NS),
                                      OSD_DVD_SEARCH_END, _rNumInStateCtx.bDig);
          }
#endif
          vSendUopCmd(UOP_PTT_TIME_PLAY, rTimeChk.bHH, rTimeChk.bMM, rTimeChk.bSS);
        }
        else
        {
          vOsdShowChapterTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0); /* clear OSD and input field */  // added by megaa
          vOsdShowError(SV_ERR_INPUT_INVALID, OSD_TIMEOUT_SHORT);
        }
      }

      // remember clear search type
      _rSearchStateCtx.bType = SEARCH_NONE;
    }
    else /* _rNumInStateCtx.rState.fgComplete */
    {
      if (_rSearchStateCtx.bType == SEARCH_DVD_TIME)
      {
#ifdef SUPPORT_DVD_AUDIO
        if (bDiscType == SV_DVD_AUDIO)
        {
          vOsdShowTitleTimeSearch(bSharedInfo(SI_GRP_NO), bSharedInfo(SI_GRP_NS),
                                  _rNumInStateCtx.rState.bDigNum, _rNumInStateCtx.bDig);
        }
        else
#endif  /* SUPPORT_DVD_AUDIO */
        {
          vOsdShowTitleTimeSearch(bSharedInfo(SI_TT_NO), bSharedInfo(SI_TT_NS),
                                  _rNumInStateCtx.rState.bDigNum, _rNumInStateCtx.bDig);
        }
      }
      else /* chapter tiem search */
      {
#ifdef SUPPORT_DVD_AUDIO
        if (bDiscType == SV_DVD_AUDIO)
        {
          vOsdShowChapterTimeSearch(bSharedInfo(SI_TRACK_NO), bSharedInfo(SI_TRACK_NS),
                                    _rNumInStateCtx.rState.bDigNum, _rNumInStateCtx.bDig);
        }
        else
#endif  /* SUPPORT_DVD_AUDIO */
        {
          vOsdShowChapterTimeSearch(bSharedInfo(SI_CHAP_NO), bSharedInfo(SI_CHAP_NS),
                                    _rNumInStateCtx.rState.bDigNum, _rNumInStateCtx.bDig);
        }
      }

      vIrSetTimeOut(IR_TIMEOUT_SEARCH);
    }
  }
  else /* > IR_ADD10 and not IR_CLEAR, IR_ADD5 */
  {
    if ((_bIRKey == IR_LEFT) || (_bIRKey == IR_RIGHT))
    {
      if (_rSearchStateCtx.bType == SEARCH_DVD_TIME)
      {
        /* switch to title search */
        vOsdShowTitleTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
        vSetExitInputState();

        /* pass to main state change search mode */
        _rSearchStateCtx.bType = SEARCH_DVD_TIME_TTL;
      }
      else
      {
        /* switch to chapter search */
        vOsdShowChapterTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
        vSetExitInputState();

        /* pass to main state change search mode */
        _rSearchStateCtx.bType = SEARCH_DVD_CH;
      }

      _bIRKey = IR_SELECT;
      return (FALSE);
    }
    else /* other keys */
    {
      if (_rSearchStateCtx.bType == SEARCH_DVD_TIME)
      {
        vOsdShowTitleTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
      }
      else
      {
        vOsdShowChapterTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
      }

      vSetExitInputState();

      if (_bIRKey == IR_SELECT)
      {
        /* pass to main state change search mode */
        return (FALSE);
      }
      else
      {
        /* remember clear search state */
        _rSearchStateCtx.bType = SEARCH_NONE;
      }
    } /* other keys */
  } /* > IR_ADD10 and not IR_CLEAR, IR_ADD5 */

  return(TRUE);
}

// *********************************************************************
// Title Search State Machine
// *********************************************************************
void vDVDTitleSearchInit(BYTE fgInit) large
{
  BYTE bTmp;
  BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);
  /* BYTE bDom = bSharedInfo(SI_DVD_DOM); */

  vEnableWB(WB_OVERLAY_MSG1);
  if ((_rSearchStateCtx.bType == SEARCH_DVD_PTT_TTL) ||
      (_rSearchStateCtx.bType == SEARCH_NONE))
  {
    _rSearchStateCtx.bType = SEARCH_DVD_PTT_TTL;
/*
    if (bDom == SV_VTSTT_DOM)
    {
      vOsdShowChapterSearch(0, bSharedInfo(SI_TT_NS), (OSD_DVD_TTL_SEARCH | 0),
                            bSharedInfo(SI_CHAP_NO), bSharedInfo(SI_CHAP_NS), OSD_NO_DISAPPEAR);
    }
    else
*/
    {
      if (bDiscType == SV_DVD_AUDIO)
      {
        vOsdShowChapterSearch(0, bSharedInfo(SI_GRP_NS), (OSD_DVD_TTL_SEARCH | 0),
                              0, 0, OSD_NO_DISAPPEAR);
      }
      else
      {
        vOsdShowChapterSearch(0, bSharedInfo(SI_TT_NS), (OSD_DVD_TTL_SEARCH | 0),
                              0, 0, OSD_NO_DISAPPEAR);
      }
    }
  }
  else if (_rSearchStateCtx.bType == SEARCH_DVD_TIME_TTL)
  {
    _rSearchStateCtx.bType = SEARCH_DVD_TIME_TTL;
/*
    if (bDom == SV_VTSTT_DOM)
    {
      bTmp = bSharedInfo(SI_TIME_TOTAL_HH);
      _rNumInStateCtx.bDig[0] = (bTmp & 0x0f);

      bTmp = bSharedInfo(SI_TIME_TOTAL_MM);
      _rNumInStateCtx.bDig[1] = (bTmp & 0xf0) >> 4;
      _rNumInStateCtx.bDig[2] = (bTmp & 0x0f);

      bTmp = bSharedInfo(SI_TIME_TOTAL_SS);
      _rNumInStateCtx.bDig[3] = (bTmp & 0xf0) >> 4;
      _rNumInStateCtx.bDig[4] = (bTmp & 0x0f);

      vOsdShowTitleTimeSearch(0, bSharedInfo(SI_TT_NS), (OSD_DVD_TTL_SEARCH | 0),
                              _rNumInStateCtx.bDig);
    }
    else
*/
    {
      if (bDiscType == SV_DVD_AUDIO)
      {
        vOsdShowTitleTimeSearch(0, bSharedInfo(SI_GRP_NS), (OSD_DVD_TTL_SEARCH | 0), 0);
      }
      else
      {
        vOsdShowTitleTimeSearch(0, bSharedInfo(SI_TT_NS), (OSD_DVD_TTL_SEARCH | 0), 0);
      }
    }
  }

#ifdef NO_ADD10_KEY
  vNumInInitState(NUM_IN_SEQ_WAIT, 2);
#else
  vNumInInitState(NUM_IN_TYPE_1, 1);
#endif

  vIrSetTimeOut(IR_TIMEOUT_SEARCH);
}

BOOL fgDVDTitleSearchState(void) large
{
  BOOL fgRetValue;
  BYTE bTmp;
  BYTE bDiscType = bSharedInfo(SI_DISC_TYPE);

  if ((_rSearchStateCtx.bType == SEARCH_DVD_TIME_WAIT) ||
      (_rSearchStateCtx.bType == SEARCH_DVD_PTT_WAIT))
  {
    if (_bIRKey != IR_TIME_OUT)
    {
      return (TRUE);
    }
  }

  bTmp = bSharedInfo(SI_TT_NS);

  if (_bIRKey <= IR_ADD10 || _bIRKey == IR_ADD5)  // megaa ADD5
  {
    fgRetValue = fgNumInState();

    if (_rNumInStateCtx.rState.fgComplete)
    {
      if ((_rNumInStateCtx.rState.fgCancel == FALSE) &&
          (_rNumInStateCtx.wNum <= bTmp))
      {
        if (_rSearchStateCtx.bType == SEARCH_DVD_PTT_TTL)
        {
#ifdef SUPPORT_DVD_AUDIO
          if ((bDiscType == SV_DVD_AUDIO) && (_rNumInStateCtx.wNum == bSharedInfo(SI_GRP_NS)) && 
              (bSharedInfo(SI_HIDE_HGR) == SV_ON) && 
              (bSharedInfo(SI_HIDDEN_PASSWD0) != 0) && (bSharedInfo(SI_HIDDEN_PASSWD1) != 0))
          {
            fgSetPlayPostKey(IR_HDN_PASSWORD);
            return (TRUE);
          }
          else
#endif /* SUPPORT_DVD_AUDIO */
          {
            vOsdShowChapterSearch(_rNumInStateCtx.wNum, bTmp,
                                  (OSD_DVD_TTL_SEARCH | OSD_DVD_SEARCH_END), 0, 0, OSD_NO_DISAPPEAR);
            _rSearchStateCtx.bType = SEARCH_DVD_PTT_WAIT;
          }
        }
        else if (_rSearchStateCtx.bType == SEARCH_DVD_TIME_TTL)
        {
          vOsdShowTitleTimeSearch(_rNumInStateCtx.wNum, bTmp,
                                  (OSD_DVD_TTL_SEARCH | OSD_DVD_SEARCH_END), 0);
          _rSearchStateCtx.bType = SEARCH_DVD_TIME_WAIT;
        }

        if (bDiscType == SV_DVD_AUDIO)
        {
          vSendUopCmd(UOP_GROUP_PLAY, _rNumInStateCtx.wNum, 0, 0);
        }
        else
        {
          vSendUopCmd(UOP_TITLE_PLAY, _rNumInStateCtx.wNum, TITLE_PLAY_IGNORE_UOP_BLOCK, 0);
        }
        /* the selected title/chapter will be shown by UOP return */
        vIrSetTimeOut(IR_TIMEOUT_SEARCH);
      }
      else
      {
        if (_rSearchStateCtx.bType == SEARCH_DVD_PTT_TTL)
        {
          vOsdShowChapterSearch(0, 0, OSD_SEARCH_CLEAR, 0, 0, 0);
        }
        else if (_rSearchStateCtx.bType == SEARCH_DVD_TIME_TTL)
        {
          vOsdShowTitleTimeSearch(0, 0, OSD_SEARCH_CLEAR, 0);
        }

        vSetExitInputState();
        _rSearchStateCtx.bType = SEARCH_NONE;
        vOsdShowError(SV_ERR_INPUT_INVALID, OSD_TIMEOUT_SHORT);
      }
    }
    else /* _rNumInStateCtx.rState.fgComplete */
    {
      /* check range */
      if (_rNumInStateCtx.wNum > bTmp)
      {
        _rNumInStateCtx.wNum = bTmp;
      }

      /* update OSD only */
      if (_rSearchStateCtx.bType == SEARCH_DVD_PTT_TTL)
      {
        vOsdShowChapterSearch(_rNumInStateCtx.wNum, bTmp,
                              (OSD_DVD_TTL_SEARCH | 1), 0, 0, OSD_NO_DISAPPEAR);
      }

⌨️ 快捷键说明

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