瀏覽代碼

Revert "VLCPlaybackController: Fix restoration of audio and subtitle track(closes #19351)"

This reverts commit d468160670144f83ac52afdfd330e10733dc0438.
for now till we have a new VLCKit version
Carola Nitz 7 年之前
父節點
當前提交
4995cd45c4
共有 1 個文件被更改,包括 37 次插入44 次删除
  1. 37 44
      Sources/VLCPlaybackController.m

+ 37 - 44
Sources/VLCPlaybackController.m

@@ -706,52 +706,36 @@ typedef NS_ENUM(NSUInteger, VLCAspectRatio) {
 {
     VLCMediaPlayerState currentState = _mediaPlayer.state;
 
-    switch (currentState) {
-        case VLCMediaPlayerStateBuffering: {
-            /* attach delegate */
-            _mediaPlayer.media.delegate = self;
-
-            /* on-the-fly values through hidden API */
-            NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
-            [_mediaPlayer performSelector:@selector(setTextRendererFont:) withObject:[defaults objectForKey:kVLCSettingSubtitlesFont]];
-            [_mediaPlayer performSelector:@selector(setTextRendererFontSize:) withObject:[defaults objectForKey:kVLCSettingSubtitlesFontSize]];
-            [_mediaPlayer performSelector:@selector(setTextRendererFontColor:) withObject:[defaults objectForKey:kVLCSettingSubtitlesFontColor]];
-            [_mediaPlayer performSelector:@selector(setTextRendererFontForceBold:) withObject:[defaults objectForKey:kVLCSettingSubtitlesBoldFont]];
-        } break;
-
-        case VLCMediaPlayerStateError: {
-            APLog(@"Playback failed");
-            dispatch_async(dispatch_get_main_queue(),^{
-                [[NSNotificationCenter defaultCenter] postNotificationName:VLCPlaybackControllerPlaybackDidFail object:self];
-            });
+    if (currentState == VLCMediaPlayerStateBuffering) {
+        /* attach delegate */
+        _mediaPlayer.media.delegate = self;
+
+        /* on-the-fly values through hidden API */
+        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+        [_mediaPlayer performSelector:@selector(setTextRendererFont:) withObject:[defaults objectForKey:kVLCSettingSubtitlesFont]];
+        [_mediaPlayer performSelector:@selector(setTextRendererFontSize:) withObject:[defaults objectForKey:kVLCSettingSubtitlesFontSize]];
+        [_mediaPlayer performSelector:@selector(setTextRendererFontColor:) withObject:[defaults objectForKey:kVLCSettingSubtitlesFontColor]];
+        [_mediaPlayer performSelector:@selector(setTextRendererFontForceBold:) withObject:[defaults objectForKey:kVLCSettingSubtitlesBoldFont]];
+    } else if (currentState == VLCMediaPlayerStateError) {
+        APLog(@"Playback failed");
+        dispatch_async(dispatch_get_main_queue(),^{
+            [[NSNotificationCenter defaultCenter] postNotificationName:VLCPlaybackControllerPlaybackDidFail object:self];
+        });
+        _sessionWillRestart = NO;
+        [self stopPlayback];
+    } else if (currentState == VLCMediaPlayerStateEnded || currentState == VLCMediaPlayerStateStopped) {
+        [_listPlayer.mediaList lock];
+        NSUInteger listCount = _listPlayer.mediaList.count;
+        if ([_listPlayer.mediaList indexOfMedia:_mediaPlayer.media] == listCount - 1 && self.repeatMode == VLCDoNotRepeat) {
+            [_listPlayer.mediaList unlock];
             _sessionWillRestart = NO;
             [self stopPlayback];
-        } break;
-        case VLCMediaPlayerStateEnded:
-        case VLCMediaPlayerStateStopped: {
-            [_listPlayer.mediaList lock];
-            NSUInteger listCount = _listPlayer.mediaList.count;
-            if ([_listPlayer.mediaList indexOfMedia:_mediaPlayer.media] == listCount - 1 && self.repeatMode == VLCDoNotRepeat) {
-                [_listPlayer.mediaList unlock];
-                _sessionWillRestart = NO;
-                [self stopPlayback];
-                return;
-            } else if (listCount > 1) {
-                [_listPlayer.mediaList unlock];
-                [_listPlayer next];
-            } else
-                [_listPlayer.mediaList unlock];
-        } break;
-        case VLCMediaPlayerStateESAdded: {
-            MLFile *item = [MLFile fileForURL:_mediaPlayer.media.url].firstObject;
-
-            if (item) {
-                _mediaPlayer.currentAudioTrackIndex = item.lastAudioTrack.intValue;
-                _mediaPlayer.currentVideoSubTitleIndex = item.lastSubtitleTrack.intValue;
-            }
-        } break;
-        default:
-            break;
+            return;
+        } else if (listCount > 1) {
+            [_listPlayer.mediaList unlock];
+            [_listPlayer next];
+        } else
+            [_listPlayer.mediaList unlock];
     }
 
     if ([self.delegate respondsToSelector:@selector(mediaPlayerStateChanged:isPlaying:currentMediaHasTrackToChooseFrom:currentMediaHasChapters:forPlaybackController:)])
@@ -1095,6 +1079,15 @@ typedef NS_ENUM(NSUInteger, VLCAspectRatio) {
 - (void)_recoverLastPlaybackStateOfItem:(MLFile *)item
 {
     if (item) {
+        if (_mediaPlayer.numberOfAudioTracks > 2) {
+            if (item.lastAudioTrack.intValue > 0)
+                _mediaPlayer.currentAudioTrackIndex = item.lastAudioTrack.intValue;
+        }
+        if (_mediaPlayer.numberOfSubtitlesTracks > 2) {
+            if (item.lastSubtitleTrack.intValue > 0)
+                _mediaPlayer.currentVideoSubTitleIndex = item.lastSubtitleTrack.intValue;
+        }
+
         CGFloat lastPosition = .0;
         NSInteger duration = 0;