Fix external subtitles not displayed (#533)
This commit is contained in:
parent
89fc8dbbf3
commit
ad07f088bc
|
@ -646,6 +646,23 @@ extension VideoPlayerViewModel {
|
|||
}
|
||||
}
|
||||
|
||||
// MARK: Subtitle Streams
|
||||
|
||||
extension VideoPlayerViewModel {
|
||||
func videoSubtitleStreamIndex(of subtitleStreamIndex: Int) -> Int32 {
|
||||
let externalSubtitleStreams = subtitleStreams.filter { $0.isExternal == true }
|
||||
|
||||
guard let externalSubtitleStreamIndex = externalSubtitleStreams.firstIndex(where: { $0.index == subtitleStreamIndex }) else {
|
||||
return Int32(subtitleStreamIndex)
|
||||
}
|
||||
|
||||
let embeddedSubtitleStreamCount = subtitleStreams.count - externalSubtitleStreams.count
|
||||
let embeddedStreamCount = 1 + audioStreams.count + embeddedSubtitleStreamCount
|
||||
|
||||
return Int32(embeddedStreamCount + externalSubtitleStreamIndex)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Equatable
|
||||
|
||||
extension VideoPlayerViewModel: Equatable {
|
||||
|
|
|
@ -754,7 +754,7 @@ extension LiveTVPlayerViewController: VLCMediaPlayerDelegate {
|
|||
}
|
||||
|
||||
// If needing to fix subtitle streams during playback
|
||||
if vlcMediaPlayer.currentVideoSubTitleIndex != viewModel.selectedSubtitleStreamIndex &&
|
||||
if vlcMediaPlayer.currentVideoSubTitleIndex != viewModel.videoSubtitleStreamIndex(of: viewModel.selectedSubtitleStreamIndex) &&
|
||||
viewModel.subtitlesEnabled
|
||||
{
|
||||
didSelectSubtitleStream(index: viewModel.selectedSubtitleStreamIndex)
|
||||
|
@ -792,7 +792,7 @@ extension LiveTVPlayerViewController: PlayerOverlayDelegate {
|
|||
func didSelectSubtitleStream(index: Int) {
|
||||
|
||||
viewModel.subtitlesEnabled = true
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = Int32(index)
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = viewModel.videoSubtitleStreamIndex(of: index)
|
||||
|
||||
viewModel.sendProgressReport()
|
||||
|
||||
|
@ -809,7 +809,7 @@ extension LiveTVPlayerViewController: PlayerOverlayDelegate {
|
|||
|
||||
func didToggleSubtitles(newValue: Bool) {
|
||||
if newValue {
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = Int32(viewModel.selectedSubtitleStreamIndex)
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = viewModel.videoSubtitleStreamIndex(of: viewModel.selectedSubtitleStreamIndex)
|
||||
} else {
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = -1
|
||||
}
|
||||
|
|
|
@ -754,7 +754,7 @@ extension VLCPlayerViewController: VLCMediaPlayerDelegate {
|
|||
}
|
||||
|
||||
// If needing to fix subtitle streams during playback
|
||||
if vlcMediaPlayer.currentVideoSubTitleIndex != viewModel.selectedSubtitleStreamIndex &&
|
||||
if vlcMediaPlayer.currentVideoSubTitleIndex != viewModel.videoSubtitleStreamIndex(of: viewModel.selectedSubtitleStreamIndex) &&
|
||||
viewModel.subtitlesEnabled
|
||||
{
|
||||
didSelectSubtitleStream(index: viewModel.selectedSubtitleStreamIndex)
|
||||
|
@ -791,7 +791,7 @@ extension VLCPlayerViewController: PlayerOverlayDelegate {
|
|||
func didSelectSubtitleStream(index: Int) {
|
||||
|
||||
viewModel.subtitlesEnabled = true
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = Int32(index)
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = viewModel.videoSubtitleStreamIndex(of: index)
|
||||
|
||||
viewModel.sendProgressReport()
|
||||
|
||||
|
@ -808,7 +808,7 @@ extension VLCPlayerViewController: PlayerOverlayDelegate {
|
|||
|
||||
func didToggleSubtitles(newValue: Bool) {
|
||||
if newValue {
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = Int32(viewModel.selectedSubtitleStreamIndex)
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = viewModel.videoSubtitleStreamIndex(of: viewModel.selectedSubtitleStreamIndex)
|
||||
} else {
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = -1
|
||||
}
|
||||
|
|
|
@ -823,7 +823,7 @@ extension LiveTVPlayerViewController: VLCMediaPlayerDelegate {
|
|||
}
|
||||
|
||||
// If needing to fix subtitle streams during playback
|
||||
if vlcMediaPlayer.currentVideoSubTitleIndex != viewModel.selectedSubtitleStreamIndex,
|
||||
if vlcMediaPlayer.currentVideoSubTitleIndex != viewModel.videoSubtitleStreamIndex(of: viewModel.selectedSubtitleStreamIndex),
|
||||
viewModel.subtitlesEnabled
|
||||
{
|
||||
didSelectSubtitleStream(index: viewModel.selectedSubtitleStreamIndex)
|
||||
|
@ -859,7 +859,7 @@ extension LiveTVPlayerViewController: PlayerOverlayDelegate {
|
|||
/// Do not call when setting to index -1
|
||||
func didSelectSubtitleStream(index: Int) {
|
||||
viewModel.subtitlesEnabled = true
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = Int32(index)
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = viewModel.videoSubtitleStreamIndex(of: index)
|
||||
|
||||
viewModel.sendProgressReport()
|
||||
|
||||
|
@ -877,7 +877,7 @@ extension LiveTVPlayerViewController: PlayerOverlayDelegate {
|
|||
|
||||
func didToggleSubtitles(newValue: Bool) {
|
||||
if newValue {
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = Int32(viewModel.selectedSubtitleStreamIndex)
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = viewModel.videoSubtitleStreamIndex(of: viewModel.selectedSubtitleStreamIndex)
|
||||
} else {
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = -1
|
||||
}
|
||||
|
|
|
@ -961,7 +961,7 @@ extension VLCPlayerViewController: VLCMediaPlayerDelegate {
|
|||
}
|
||||
|
||||
// If needing to fix subtitle streams during playback
|
||||
if vlcMediaPlayer.currentVideoSubTitleIndex != viewModel.selectedSubtitleStreamIndex,
|
||||
if vlcMediaPlayer.currentVideoSubTitleIndex != viewModel.videoSubtitleStreamIndex(of: viewModel.selectedSubtitleStreamIndex),
|
||||
viewModel.subtitlesEnabled
|
||||
{
|
||||
didSelectSubtitleStream(index: viewModel.selectedSubtitleStreamIndex)
|
||||
|
@ -997,7 +997,7 @@ extension VLCPlayerViewController: PlayerOverlayDelegate {
|
|||
/// Do not call when setting to index -1
|
||||
func didSelectSubtitleStream(index: Int) {
|
||||
viewModel.subtitlesEnabled = true
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = Int32(index)
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = viewModel.videoSubtitleStreamIndex(of: index)
|
||||
|
||||
viewModel.sendProgressReport()
|
||||
|
||||
|
@ -1015,7 +1015,7 @@ extension VLCPlayerViewController: PlayerOverlayDelegate {
|
|||
|
||||
func didToggleSubtitles(newValue: Bool) {
|
||||
if newValue {
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = Int32(viewModel.selectedSubtitleStreamIndex)
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = viewModel.videoSubtitleStreamIndex(of: viewModel.selectedSubtitleStreamIndex)
|
||||
} else {
|
||||
vlcMediaPlayer.currentVideoSubTitleIndex = -1
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue