diff options
-rw-r--r-- | demuxer/Demuxers/LAVFDemuxer.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/demuxer/Demuxers/LAVFDemuxer.cpp b/demuxer/Demuxers/LAVFDemuxer.cpp index 7a38d95a..7c0eddf1 100644 --- a/demuxer/Demuxers/LAVFDemuxer.cpp +++ b/demuxer/Demuxers/LAVFDemuxer.cpp @@ -744,7 +744,7 @@ const CBaseDemuxer::stream *CLAVFDemuxer::SelectSubtitleStream(std::list<std::st std::deque<stream*>::iterator sit; for ( sit = checkedStreams.begin(); sit != checkedStreams.end(); ++sit ) { if (m_avFormat->streams[(*sit)->pid]->disposition & AV_DISPOSITION_DEFAULT) { - if ((subtitleMode == SUBMODE_FORCED_SUBS) == (m_avFormat->streams[(*sit)->pid]->disposition & AV_DISPOSITION_FORCED)) { + if (subtitleMode != SUBMODE_FORCED_SUBS || (m_avFormat->streams[(*sit)->pid]->disposition & AV_DISPOSITION_FORCED)) { best = *sit; break; } @@ -757,7 +757,8 @@ const CBaseDemuxer::stream *CLAVFDemuxer::SelectSubtitleStream(std::list<std::st for ( sit = checkedStreams.begin(); sit != checkedStreams.end(); ++sit ) { AVStream *pStream = m_avFormat->streams[(*sit)->pid]; // Check if the first stream qualifys for us. Forced if we want forced, not forced if we don't want forced. - if ((subtitleMode == SUBMODE_FORCED_SUBS) == (pStream->disposition & AV_DISPOSITION_FORCED)) { + if (subtitleMode == SUBMODE_FORCED_SUBS && (pStream->disposition & AV_DISPOSITION_FORCED) + || subtitleMode == SUBMODE_ALWAYS_SUBS && !(pStream->disposition & AV_DISPOSITION_FORCED) ) { best = *sit; break; } else if (subtitleMode == SUBMODE_ALWAYS_SUBS) { |