bool CDVDInputStreamNavigator::SeekChapter(int iChapter) { bool enabled = IsSubtitleStreamEnabled(); int audio = GetActiveAudioStream(); int subtitle = GetActiveSubtitleStream(); if (iChapter == (m_iPart + 1)) { if (m_dll.dvdnav_next_pg_search(m_dvdnav) == DVDNAV_STATUS_ERR) { CLog::Log(LOGERROR, "dvdnav: dvdnav_next_pg_search( %s )", m_dll.dvdnav_err_to_string(m_dvdnav)); return false; } } else if (iChapter == (m_iPart - 1)) { if (m_dll.dvdnav_prev_pg_search(m_dvdnav) == DVDNAV_STATUS_ERR) { CLog::Log(LOGERROR, "dvdnav: dvdnav_prev_pg_search( %s )", m_dll.dvdnav_err_to_string(m_dvdnav)); return false; } } else if (m_dll.dvdnav_part_play(m_dvdnav, m_iTitle, iChapter) == DVDNAV_STATUS_ERR) { CLog::Log(LOGERROR, "dvdnav: dvdnav_part_play failed( %s )", m_dll.dvdnav_err_to_string(m_dvdnav)); return false; } SetActiveSubtitleStream(subtitle); SetActiveAudioStream(audio); EnableSubtitleStream(enabled); return true; }
bool CDVDInputStreamNavigator::SeekChapter(int iChapter) { if (!m_dvdnav) return false; // cannot allow to return true in case of buttons (overlays) because otherwise back in DVDPlayer FlushBuffers will remove menu overlays // therefore we just skip the request in case there are buttons and return false if (IsInMenu() && GetTotalButtons() > 0) { CLog::Log(LOGDEBUG, "%s - Seeking chapter is not allowed in menu set with buttons", __FUNCTION__); return false; } bool enabled = IsSubtitleStreamEnabled(); int audio = GetActiveAudioStream(); int subtitle = GetActiveSubtitleStream(); if (iChapter == (m_iPart + 1)) { if (m_dll.dvdnav_next_pg_search(m_dvdnav) == DVDNAV_STATUS_ERR) { CLog::Log(LOGERROR, "dvdnav: dvdnav_next_pg_search( %s )", m_dll.dvdnav_err_to_string(m_dvdnav)); return false; } } else if (iChapter == (m_iPart - 1)) { if (m_dll.dvdnav_prev_pg_search(m_dvdnav) == DVDNAV_STATUS_ERR) { CLog::Log(LOGERROR, "dvdnav: dvdnav_prev_pg_search( %s )", m_dll.dvdnav_err_to_string(m_dvdnav)); return false; } } else if (m_dll.dvdnav_part_play(m_dvdnav, m_iTitle, iChapter) == DVDNAV_STATUS_ERR) { CLog::Log(LOGERROR, "dvdnav: dvdnav_part_play failed( %s )", m_dll.dvdnav_err_to_string(m_dvdnav)); return false; } SetActiveSubtitleStream(subtitle); SetActiveAudioStream(audio); EnableSubtitleStream(enabled); return true; }