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

📄 metanav.cpp

📁 这是DVD中伺服部分的核心代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
        default:
            break;
        }
    }

    return (ulNavState);
}

ULONG cMetaNav::GetActiveMediaFormat(void)
{
    return (m_MediaFormat);
}

int32 cMetaNav::GetPlayRate(void)
{
    PE_ISTREAMCTRL_PLAYRATE playrate;
    int32 lRate = 0;

    /* Get play time from active nav */
    switch (m_MediaFormat)
    {
#ifdef CDDA_ENABLE
    case MEDIA_FORMAT_CDDA:
        lRate = CddaAppGetPlayRate();
        break;
#endif
#ifdef BDROM_ENABLE
    case MEDIA_FORMAT_BDROM:
        lRate = BDROMAppGetPlayRate();
        break;
#endif
    case MEDIA_FORMAT_DVD_V:
        lRate = DvdAppGetPlayRate();
        break;
    default:
        /* Get playrate from PE */
        if (PEiStreamCtrlGetRate(m_PE, &playrate) != PE_SUCCESS)
        {
            DBGPRINT(DBG_ON(DBG_ERROR), ("cMetaNav::GetPlayRate -- PEiStreamCtrlGetRate() failed!\n"));
            return (0);
        }
        lRate = ((int32)playrate.rate * ((playrate.direction == PE_ISTREAMCTRL_DIRECTION_BACKWARD) ? -1 : 1));
        break;
    }

    return (lRate);
}

ULONG cMetaNav::GetChapterTime(ULONG ulChapterNumber)
{
    ULONG ulTime = 0;

    /* Get play time from active nav */
    switch (m_MediaFormat)
    {

    case MEDIA_FORMAT_CDDA:
        ulTime = (ULONG)CddaAppGetChapterTotalTime(ulChapterNumber);
        break;
    default:
        break;
    }

    return (ulTime);
}

ULONG cMetaNav::GetPlayTime(ULONG ulTimeMode)
{
    ULONG ulTime = 0;

    /* Get play time from active nav */
    switch (m_MediaFormat)
    {
    case MEDIA_FORMAT_DVD_A:
    case MEDIA_FORMAT_DVD_V:
        ulTime = DvdAppGetPlayTime( (BYTE)(ulTimeMode) );
        break;

#ifdef VR_ENABLE
    case MEDIA_FORMAT_VR:
        break;
#endif

#ifdef VCD_ENABLE
    case MEDIA_FORMAT_VCD:
    case MEDIA_FORMAT_SVCD:
        ulTime = (ULONG)VcdAppGetPlayTime( (BYTE)(ulTimeMode) );
        break;
#endif

#ifdef CDDA_ENABLE
    case MEDIA_FORMAT_CDDA:
        ulTime = (ULONG)CddaAppGetPlayTime(ulTimeMode);
        break;
#endif

#ifdef BDROM_ENABLE
    case MEDIA_FORMAT_BDROM:
        ulTime = (ULONG)BDROMAppGetPlayTime( (BYTE)(ulTimeMode) );
        break;
#endif

    default:
        break;
    }

    return (ulTime);
}

ULONG  cMetaNav::GetCurrentTitle(void)
{
    ULONG ulTitle = 0;

    /* Get current title number from active nav */
    switch (m_MediaFormat)
    {
    case MEDIA_FORMAT_DVD_A:
    case MEDIA_FORMAT_DVD_V:
        ulTitle = (ULONG)DvdAppGetCurrentTitle();
        break;

#ifdef VR_ENABLE
    case MEDIA_FORMAT_VR:
        break;
#endif

#ifdef VCD_ENABLE
    case MEDIA_FORMAT_VCD:
    case MEDIA_FORMAT_SVCD:
        break;
#endif

#ifdef CDDA_ENABLE
    case MEDIA_FORMAT_CDDA:
        break;
#endif

#ifdef BDROM_ENABLE
    case MEDIA_FORMAT_BDROM:
        ulTitle = (ULONG)BDROMAppGetCurrentTitle();
        break;
#endif

    default:
        break;
    }

    return (ulTitle);
}

ULONG  cMetaNav::GetTitleInfo(void)
{
    ULONG ulTitleInfo = VDVD_TITLE_UNKNOWN;

    /* Get title info from active nav */
    switch (m_MediaFormat)
    {
    case MEDIA_FORMAT_DVD_A:
    case MEDIA_FORMAT_DVD_V:
        break;

#ifdef VR_ENABLE
    case MEDIA_FORMAT_VR:
        break;
#endif

#ifdef VCD_ENABLE
    case MEDIA_FORMAT_VCD:
    case MEDIA_FORMAT_SVCD:
        break;
#endif

#ifdef CDDA_ENABLE
    case MEDIA_FORMAT_CDDA:
        break;
#endif
#ifdef BDROM_ENABLE
    case MEDIA_FORMAT_BDROM:
        ulTitleInfo = BDROMAppGetTitleInfo();
        break;
#endif
    default:
        break;
    }

    return (ulTitleInfo);
}

ULONG  cMetaNav::GetNumberOfTitles(void)
{
    ULONG ulTitle = 0;

    /* Get number of titles from active nav */
    switch (m_MediaFormat)
    {
    case MEDIA_FORMAT_DVD_A:
    case MEDIA_FORMAT_DVD_V:
        ulTitle = (ULONG)DvdAppGetNumberOfTitles();
        break;

#ifdef VR_ENABLE
    case MEDIA_FORMAT_VR:
        break;
#endif

#ifdef VCD_ENABLE
    case MEDIA_FORMAT_VCD:
    case MEDIA_FORMAT_SVCD:
        break;
#endif

#ifdef CDDA_ENABLE
    case MEDIA_FORMAT_CDDA:
        break;
#endif
#ifdef BDROM_ENABLE
    case MEDIA_FORMAT_BDROM:
        ulTitle = (ULONG)BDROMAppGetNumberOfTitles();
        break;
#endif
    default:
        break;
    }

    return (ulTitle);
}

ULONG  cMetaNav::GetCurrentChapter(void)
{
    ULONG ulChapter = 0;

    /* Get current chapter number from active nav */
    switch (m_MediaFormat)
    {
    case MEDIA_FORMAT_DVD_A:
    case MEDIA_FORMAT_DVD_V:
        ulChapter = (ULONG)DvdAppGetCurrentChapter();
        break;

#ifdef VCD_ENABLE
    case MEDIA_FORMAT_VCD:
    case MEDIA_FORMAT_SVCD:
        break;
#endif

#ifdef CDDA_ENABLE
    case MEDIA_FORMAT_CDDA:
        ulChapter = CddaAppGetCurrentTrack();
        break;
#endif

#ifdef BDROM_ENABLE
    case MEDIA_FORMAT_BDROM:
        ulChapter = (ULONG)BDROMAppGetCurrentChapter();
        break;
#endif

    default:
        break;
    }

    return (ulChapter);
}

ULONG  cMetaNav::GetNumberOfChapters(void)
{
    ULONG ulChapter = 0;

    /* Get number of chapters from active nav */
    switch (m_MediaFormat)
    {
    case MEDIA_FORMAT_DVD_A:
    case MEDIA_FORMAT_DVD_V:

        ulChapter = (ULONG)DvdAppGetNumberOfChapters();
        break;

#ifdef VR_ENABLE
    case MEDIA_FORMAT_VR:
        break;
#endif

#ifdef VCD_ENABLE
    case MEDIA_FORMAT_VCD:
    case MEDIA_FORMAT_SVCD:
        break;
#endif

#ifdef CDDA_ENABLE
    case MEDIA_FORMAT_CDDA:
        ulChapter = (ULONG)CddaAppGetNumberOfTracks();
        break;
#endif

#ifdef BDROM_ENABLE
    case MEDIA_FORMAT_BDROM:
        ulChapter = (ULONG)BDROMAppGetNumberOfChapters();
        break;
#endif

    default:
        break;
    }

    return (ulChapter);
}

ULONG  cMetaNav::GetNumberOfSubtitleStreams(void)
{
    ULONG ulNumberOfSubtitles = 0;

    /* Get number of subtitles available from active nav */
    switch (m_MediaFormat)
    {
    case MEDIA_FORMAT_DVD_A:
    case MEDIA_FORMAT_DVD_V:
        ulNumberOfSubtitles = (ULONG)DvdAppGetNumberOfSubtitles();
        break;

#ifdef VR_ENABLE
    case MEDIA_FORMAT_VR:
        break;
#endif

#ifdef VCD_ENABLE
    case MEDIA_FORMAT_VCD:
    case MEDIA_FORMAT_SVCD:
        break;
#endif

#ifdef CDDA_ENABLE
    case MEDIA_FORMAT_CDDA:
        break;
#endif

#ifdef BDROM_ENABLE
    case MEDIA_FORMAT_BDROM:
        ulNumberOfSubtitles = BDROMAppGetNumberOfSubtitles();
        break;
#endif

    default:
        break;
    }

    return (ulNumberOfSubtitles);
}

/**
 * IsPopupOn -- Return the Popup Menu On/Off State.
 *
 * @param
 *      None
 *
 * @retval
 *      FALSE - Pop up is OFF
 *      TRUE  - Pop up is ON
 */
BOOLEAN cMetaNav::IsPopupOn(void)
{
#ifdef BDROM_ENABLE
    if (m_MediaFormat == MEDIA_FORMAT_BDROM)
    {
        return (BDROMAppIsPopupOn());
    }
#endif

    return (FALSE);
}

BOOLEAN cMetaNav::IsSubtitleStreamOn(void)
{
    BOOLEAN fSubtitleOn = FALSE;

    /* Get currently selected subtitle stream number from active nav */
    switch (m_MediaFormat)
    {
    case MEDIA_FORMAT_DVD_A:
    case MEDIA_FORMAT_DVD_V:
        fSubtitleOn = DvdAppIsSubtitleOn();
        break;

#ifdef VR_ENABLE
    case MEDIA_FORMAT_VR:
        break;
#endif

#ifdef VCD_ENABLE
    case MEDIA_FORMAT_VCD:
    case MEDIA_FORMAT_SVCD:
        break;
#endif

#ifdef CDDA_ENABLE
    case MEDIA_FORMAT_CDDA:
        break;
#endif

#ifdef BDROM_ENABLE
    case MEDIA_FORMAT_BDROM:
        fSubtitleOn = BDROMAppIsSubtitleOn();
        break;
#endif

    default:
        break;
    }

    return (fSubtitleOn);
}

ULONG  cMetaNav::GetSelectedSubtitleStream(void)
{
    ULONG ulSubtitleStream = 0;

    /* Get currently selected subtitle stream number from active nav */
    switch (m_MediaFormat)
    {
    case MEDIA_FORMAT_DVD_A:
    case MEDIA_FORMAT_DVD_V:
        ulSubtitleStream = (ULONG)DvdAppGetCurrentSubtitleStream();
        break;

#ifdef VR_ENABLE
    case MEDIA_FORMAT_VR:
        break;
#endif

#ifdef VCD_ENABLE
    case MEDIA_FORMAT_VCD:
    case MEDIA_FORMAT_SVCD:
        break;
#endif

#ifdef CDDA_ENABLE
    case MEDIA_FORMAT_CDDA:
        break;
#endif

#ifdef BDROM_ENABLE
    case MEDIA_FORMAT_BDROM:
        ulSubtitleStream = BDROMAppGetCurrentSubtitleStream();
        break;
#endif

    default:
        break;
    }

    return (ulSubtitleStream);
}

/**
 * GetNumberOfSubtitleUserStyles -- Get the number of available text subtitle user styles.
 * This is a blu-ray specific api.
 *
 * @param
 *      NONE
 *
 * @retval
 *      Number of available user styles
 */
ULONG  cMetaNav::GetNumberOfSubtitleUserStyles(void)
{
    ULONG ulNumberOfUserStyles;

    /* Get number of text subtitle user styles available from pe */
    switch (m_MediaFormat)
    {
#ifdef BDROM_ENABLE
    case MEDIA_FORMAT_BDROM:
        ulNumberOfUserStyles = BDROMAppGetNumberOfTextSubtitleStyles();
        break;
#endif

    default:
        ulNumberOfUserStyles = 0;
        break;
    }

    return (ulNumberOfUserStyles);
}

/**
 * GetSelect

⌨️ 快捷键说明

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