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
|
// MARK: Equatable
|
||||||
|
|
||||||
extension VideoPlayerViewModel: Equatable {
|
extension VideoPlayerViewModel: Equatable {
|
||||||
|
|
|
@ -754,7 +754,7 @@ extension LiveTVPlayerViewController: VLCMediaPlayerDelegate {
|
||||||
}
|
}
|
||||||
|
|
||||||
// If needing to fix subtitle streams during playback
|
// If needing to fix subtitle streams during playback
|
||||||
if vlcMediaPlayer.currentVideoSubTitleIndex != viewModel.selectedSubtitleStreamIndex &&
|
if vlcMediaPlayer.currentVideoSubTitleIndex != viewModel.videoSubtitleStreamIndex(of: viewModel.selectedSubtitleStreamIndex) &&
|
||||||
viewModel.subtitlesEnabled
|
viewModel.subtitlesEnabled
|
||||||
{
|
{
|
||||||
didSelectSubtitleStream(index: viewModel.selectedSubtitleStreamIndex)
|
didSelectSubtitleStream(index: viewModel.selectedSubtitleStreamIndex)
|
||||||
|
@ -792,7 +792,7 @@ extension LiveTVPlayerViewController: PlayerOverlayDelegate {
|
||||||
func didSelectSubtitleStream(index: Int) {
|
func didSelectSubtitleStream(index: Int) {
|
||||||
|
|
||||||
viewModel.subtitlesEnabled = true
|
viewModel.subtitlesEnabled = true
|
||||||
vlcMediaPlayer.currentVideoSubTitleIndex = Int32(index)
|
vlcMediaPlayer.currentVideoSubTitleIndex = viewModel.videoSubtitleStreamIndex(of: index)
|
||||||
|
|
||||||
viewModel.sendProgressReport()
|
viewModel.sendProgressReport()
|
||||||
|
|
||||||
|
@ -809,7 +809,7 @@ extension LiveTVPlayerViewController: PlayerOverlayDelegate {
|
||||||
|
|
||||||
func didToggleSubtitles(newValue: Bool) {
|
func didToggleSubtitles(newValue: Bool) {
|
||||||
if newValue {
|
if newValue {
|
||||||
vlcMediaPlayer.currentVideoSubTitleIndex = Int32(viewModel.selectedSubtitleStreamIndex)
|
vlcMediaPlayer.currentVideoSubTitleIndex = viewModel.videoSubtitleStreamIndex(of: viewModel.selectedSubtitleStreamIndex)
|
||||||
} else {
|
} else {
|
||||||
vlcMediaPlayer.currentVideoSubTitleIndex = -1
|
vlcMediaPlayer.currentVideoSubTitleIndex = -1
|
||||||
}
|
}
|
||||||
|
|
|
@ -754,7 +754,7 @@ extension VLCPlayerViewController: VLCMediaPlayerDelegate {
|
||||||
}
|
}
|
||||||
|
|
||||||
// If needing to fix subtitle streams during playback
|
// If needing to fix subtitle streams during playback
|
||||||
if vlcMediaPlayer.currentVideoSubTitleIndex != viewModel.selectedSubtitleStreamIndex &&
|
if vlcMediaPlayer.currentVideoSubTitleIndex != viewModel.videoSubtitleStreamIndex(of: viewModel.selectedSubtitleStreamIndex) &&
|
||||||
viewModel.subtitlesEnabled
|
viewModel.subtitlesEnabled
|
||||||
{
|
{
|
||||||
didSelectSubtitleStream(index: viewModel.selectedSubtitleStreamIndex)
|
didSelectSubtitleStream(index: viewModel.selectedSubtitleStreamIndex)
|
||||||
|
@ -791,7 +791,7 @@ extension VLCPlayerViewController: PlayerOverlayDelegate {
|
||||||
func didSelectSubtitleStream(index: Int) {
|
func didSelectSubtitleStream(index: Int) {
|
||||||
|
|
||||||
viewModel.subtitlesEnabled = true
|
viewModel.subtitlesEnabled = true
|
||||||
vlcMediaPlayer.currentVideoSubTitleIndex = Int32(index)
|
vlcMediaPlayer.currentVideoSubTitleIndex = viewModel.videoSubtitleStreamIndex(of: index)
|
||||||
|
|
||||||
viewModel.sendProgressReport()
|
viewModel.sendProgressReport()
|
||||||
|
|
||||||
|
@ -808,7 +808,7 @@ extension VLCPlayerViewController: PlayerOverlayDelegate {
|
||||||
|
|
||||||
func didToggleSubtitles(newValue: Bool) {
|
func didToggleSubtitles(newValue: Bool) {
|
||||||
if newValue {
|
if newValue {
|
||||||
vlcMediaPlayer.currentVideoSubTitleIndex = Int32(viewModel.selectedSubtitleStreamIndex)
|
vlcMediaPlayer.currentVideoSubTitleIndex = viewModel.videoSubtitleStreamIndex(of: viewModel.selectedSubtitleStreamIndex)
|
||||||
} else {
|
} else {
|
||||||
vlcMediaPlayer.currentVideoSubTitleIndex = -1
|
vlcMediaPlayer.currentVideoSubTitleIndex = -1
|
||||||
}
|
}
|
||||||
|
|
|
@ -823,7 +823,7 @@ extension LiveTVPlayerViewController: VLCMediaPlayerDelegate {
|
||||||
}
|
}
|
||||||
|
|
||||||
// If needing to fix subtitle streams during playback
|
// If needing to fix subtitle streams during playback
|
||||||
if vlcMediaPlayer.currentVideoSubTitleIndex != viewModel.selectedSubtitleStreamIndex,
|
if vlcMediaPlayer.currentVideoSubTitleIndex != viewModel.videoSubtitleStreamIndex(of: viewModel.selectedSubtitleStreamIndex),
|
||||||
viewModel.subtitlesEnabled
|
viewModel.subtitlesEnabled
|
||||||
{
|
{
|
||||||
didSelectSubtitleStream(index: viewModel.selectedSubtitleStreamIndex)
|
didSelectSubtitleStream(index: viewModel.selectedSubtitleStreamIndex)
|
||||||
|
@ -859,7 +859,7 @@ extension LiveTVPlayerViewController: PlayerOverlayDelegate {
|
||||||
/// Do not call when setting to index -1
|
/// Do not call when setting to index -1
|
||||||
func didSelectSubtitleStream(index: Int) {
|
func didSelectSubtitleStream(index: Int) {
|
||||||
viewModel.subtitlesEnabled = true
|
viewModel.subtitlesEnabled = true
|
||||||
vlcMediaPlayer.currentVideoSubTitleIndex = Int32(index)
|
vlcMediaPlayer.currentVideoSubTitleIndex = viewModel.videoSubtitleStreamIndex(of: index)
|
||||||
|
|
||||||
viewModel.sendProgressReport()
|
viewModel.sendProgressReport()
|
||||||
|
|
||||||
|
@ -877,7 +877,7 @@ extension LiveTVPlayerViewController: PlayerOverlayDelegate {
|
||||||
|
|
||||||
func didToggleSubtitles(newValue: Bool) {
|
func didToggleSubtitles(newValue: Bool) {
|
||||||
if newValue {
|
if newValue {
|
||||||
vlcMediaPlayer.currentVideoSubTitleIndex = Int32(viewModel.selectedSubtitleStreamIndex)
|
vlcMediaPlayer.currentVideoSubTitleIndex = viewModel.videoSubtitleStreamIndex(of: viewModel.selectedSubtitleStreamIndex)
|
||||||
} else {
|
} else {
|
||||||
vlcMediaPlayer.currentVideoSubTitleIndex = -1
|
vlcMediaPlayer.currentVideoSubTitleIndex = -1
|
||||||
}
|
}
|
||||||
|
|
|
@ -961,7 +961,7 @@ extension VLCPlayerViewController: VLCMediaPlayerDelegate {
|
||||||
}
|
}
|
||||||
|
|
||||||
// If needing to fix subtitle streams during playback
|
// If needing to fix subtitle streams during playback
|
||||||
if vlcMediaPlayer.currentVideoSubTitleIndex != viewModel.selectedSubtitleStreamIndex,
|
if vlcMediaPlayer.currentVideoSubTitleIndex != viewModel.videoSubtitleStreamIndex(of: viewModel.selectedSubtitleStreamIndex),
|
||||||
viewModel.subtitlesEnabled
|
viewModel.subtitlesEnabled
|
||||||
{
|
{
|
||||||
didSelectSubtitleStream(index: viewModel.selectedSubtitleStreamIndex)
|
didSelectSubtitleStream(index: viewModel.selectedSubtitleStreamIndex)
|
||||||
|
@ -997,7 +997,7 @@ extension VLCPlayerViewController: PlayerOverlayDelegate {
|
||||||
/// Do not call when setting to index -1
|
/// Do not call when setting to index -1
|
||||||
func didSelectSubtitleStream(index: Int) {
|
func didSelectSubtitleStream(index: Int) {
|
||||||
viewModel.subtitlesEnabled = true
|
viewModel.subtitlesEnabled = true
|
||||||
vlcMediaPlayer.currentVideoSubTitleIndex = Int32(index)
|
vlcMediaPlayer.currentVideoSubTitleIndex = viewModel.videoSubtitleStreamIndex(of: index)
|
||||||
|
|
||||||
viewModel.sendProgressReport()
|
viewModel.sendProgressReport()
|
||||||
|
|
||||||
|
@ -1015,7 +1015,7 @@ extension VLCPlayerViewController: PlayerOverlayDelegate {
|
||||||
|
|
||||||
func didToggleSubtitles(newValue: Bool) {
|
func didToggleSubtitles(newValue: Bool) {
|
||||||
if newValue {
|
if newValue {
|
||||||
vlcMediaPlayer.currentVideoSubTitleIndex = Int32(viewModel.selectedSubtitleStreamIndex)
|
vlcMediaPlayer.currentVideoSubTitleIndex = viewModel.videoSubtitleStreamIndex(of: viewModel.selectedSubtitleStreamIndex)
|
||||||
} else {
|
} else {
|
||||||
vlcMediaPlayer.currentVideoSubTitleIndex = -1
|
vlcMediaPlayer.currentVideoSubTitleIndex = -1
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue