Browse Source

Examples for OS X: Basic Player: add spu switcher

Felix Paul Kühne 11 years ago
parent
commit
48955fa27d

+ 3 - 0
Examples_OSX/BasicPlayerWithPlaylist/Controller.h

@@ -28,6 +28,7 @@
     IBOutlet id window;
     IBOutlet id playlistOutline;
     IBOutlet id videoHolderView;
+    IBOutlet id spuPopup;
 
     VLCVideoView * videoView;
     VLCMediaList *playlist;
@@ -40,4 +41,6 @@
 - (void)play:(id)sender;
 - (void)pause:(id)sender;
 
+- (IBAction)setSPU:(id)sender;
+
 @end

+ 25 - 0
Examples_OSX/BasicPlayerWithPlaylist/Controller.m

@@ -44,6 +44,7 @@
     [playlist addObserver:self forKeyPath:@"media" options:NSKeyValueObservingOptionNew context:nil];
 
     player = [[VLCMediaPlayer alloc] initWithVideoView:videoView];
+    player.delegate = self;
     mediaIndex = -1;
 
     [playlistOutline registerForDraggedTypes:[NSArray arrayWithObjects:NSFilenamesPboardType, NSURLPboardType, nil]];
@@ -103,6 +104,30 @@
     [player pause];
 }
 
+- (void)mediaPlayerStateChanged:(NSNotification *)aNotification
+{
+    if (player.media) {
+        NSArray *spuTracks = [player videoSubTitlesNames];
+        NSArray *spuTrackIndexes = [player videoSubTitlesIndexes];
+
+        NSUInteger count = [spuTracks count];
+        [spuPopup removeAllItems];
+        if (count <= 1)
+            return;
+
+        for (NSUInteger x = 0; x < count; x++) {
+            [spuPopup addItemWithTitle:spuTracks[x]];
+            [[spuPopup lastItem] setTag:spuTrackIndexes[x]];
+        }
+    }
+}
+
+- (void)setSPU:(id)sender
+{
+    if (player.media)
+        player.currentVideoSubTitleIndex = [[spuPopup selectedItem] tag];
+}
+
 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
 {
     if ([keyPath isEqualToString:@"media"] && object == playlist)

+ 0 - 14
Examples_OSX/BasicPlayerWithPlaylist/English.lproj/MainMenu.nib/classes.nib

@@ -1,14 +0,0 @@
-{
-    IBClasses = (
-        {
-            ACTIONS = {pause = id; play = id; }; 
-            CLASS = Controller; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {playlistOutline = id; videoHolderView = id; window = id; }; 
-            SUPERCLASS = NSObject; 
-        }, 
-        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 
-        {CLASS = NSSegmentedControl; LANGUAGE = ObjC; SUPERCLASS = NSControl; }
-    ); 
-    IBVersion = 1; 
-}

File diff suppressed because it is too large
+ 2087 - 0
Examples_OSX/BasicPlayerWithPlaylist/English.lproj/MainMenu.nib/designable.nib


+ 0 - 22
Examples_OSX/BasicPlayerWithPlaylist/English.lproj/MainMenu.nib/info.nib

@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IBDocumentLocation</key>
-	<string>111 87 356 240 0 0 1440 878 </string>
-	<key>IBEditorPositions</key>
-	<dict>
-		<key>29</key>
-		<string>108 299 338 44 0 0 1440 878 </string>
-	</dict>
-	<key>IBFramework Version</key>
-	<string>446.1</string>
-	<key>IBOpenObjects</key>
-	<array>
-		<integer>29</integer>
-		<integer>21</integer>
-	</array>
-	<key>IBSystem Version</key>
-	<string>8R2218</string>
-</dict>
-</plist>

BIN
Examples_OSX/BasicPlayerWithPlaylist/English.lproj/MainMenu.nib/keyedobjects.nib