[vlc-devel] commit: osx/framework: added methods to access end-user-compliant names of subtitles, audio tracks, etc. ( Felix Paul Kühne )

git version control git at videolan.org
Mon Dec 21 01:23:47 CET 2009


vlc | branch: master | Felix Paul Kühne <fkuehne at videolan.org> | Mon Dec 21 00:17:19 2009 +0100| [55f19bbcf48c27ef29687d52bb113ccd0babb001] | committer: Felix Paul Kühne 

osx/framework: added methods to access end-user-compliant names of subtitles, audio tracks, etc.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=55f19bbcf48c27ef29687d52bb113ccd0babb001
---

 .../framework/Headers/Public/VLCMediaPlayer.h      |    6 ++-
 projects/macosx/framework/Sources/VLCMediaPlayer.m |   73 +++++++++++++++++---
 2 files changed, 68 insertions(+), 11 deletions(-)

diff --git a/projects/macosx/framework/Headers/Public/VLCMediaPlayer.h b/projects/macosx/framework/Headers/Public/VLCMediaPlayer.h
index 043ca1b..7503672 100644
--- a/projects/macosx/framework/Headers/Public/VLCMediaPlayer.h
+++ b/projects/macosx/framework/Headers/Public/VLCMediaPlayer.h
@@ -107,8 +107,9 @@ extern NSString * VLCMediaPlayerStateToString(VLCMediaPlayerState state);
 - (char *)videoAspectRatio;
 - (void)setVideoSubTitles:(int)value;
 - (int)countOfVideoSubTitles;
-- (int)currentVideoSubTitles;
 - (BOOL)openVideoSubTitlesFromFile:(NSString *)path;
+- (int)currentVideoSubTitles;
+- (NSArray *)videoSubTitles;
 
 - (void)setVideoCropGeometry:(char *)value;
 - (char *)videoCropGeometry;
@@ -163,15 +164,18 @@ extern NSString * VLCMediaPlayerStateToString(VLCMediaPlayerState state);
 - (void)setChapter:(int)value;
 - (int)currentChapter;
 - (int)countOfChapters;
+- (NSArray *)chaptersForTitle:(int)title;
 
 - (void)setCurrentTitle:(int)value;
 - (int)currentTitle;
 - (int)countOfTitles;
+- (NSArray *)titles;
 
 /* Audio Options */
 - (void)setAudioTrack:(int)value;
 - (int)currentAudioTrack;
 - (int)countOfAudioTracks;
+- (NSArray *)audioTracks;
 
 - (void)setAudioChannel:(int)value;
 - (int)audioChannel;
diff --git a/projects/macosx/framework/Sources/VLCMediaPlayer.m b/projects/macosx/framework/Sources/VLCMediaPlayer.m
index 2609810..fe9788a 100644
--- a/projects/macosx/framework/Sources/VLCMediaPlayer.m
+++ b/projects/macosx/framework/Sources/VLCMediaPlayer.m
@@ -297,16 +297,8 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     libvlc_exception_t ex;
     libvlc_exception_init( &ex );
     int result = libvlc_video_get_spu( instance, &ex );
-    if (libvlc_exception_raised(&ex))
-    {
-        libvlc_exception_clear(&ex);
-        return -1;
-    }
-    else
-    {
-        libvlc_exception_clear(&ex);
-        return result;
-    }
+    catch_exception( &ex );
+    return result;
 }
 
 - (BOOL)openVideoSubTitlesFromFile:(NSString *)path
@@ -318,6 +310,21 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     return result;
 }
 
+- (NSArray *)videoSubTitles
+{
+    libvlc_exception_t ex;
+    libvlc_exception_init( &ex );
+    libvlc_track_description_t *tracks = libvlc_video_get_spu_description( instance, &ex );
+    NSMutableArray *tempArray = [NSMutableArray array];
+    NSInteger i;
+    for (i = 0; i < [self countOfVideoSubTitles] ; i++)
+    {
+        [tempArray addObject:[NSString stringWithUTF8String: tracks->psz_name]];
+        tracks = tracks->p_next;
+    }
+    return [NSArray arrayWithArray: tempArray];
+}
+
 - (void)setVideoCropGeometry:(char *)value
 {
     libvlc_exception_t ex;
@@ -493,6 +500,21 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     catch_exception( &ex );
 }
 
+- (NSArray *)chaptersForTitle:(int)title
+{
+    libvlc_exception_t ex;
+    libvlc_exception_init( &ex );
+    libvlc_track_description_t *tracks = libvlc_video_get_chapter_description( instance, title, &ex );
+    NSMutableArray *tempArray = [NSMutableArray array];
+    NSInteger i;
+    for (i = 0; i < [self countOfChapters] ; i++)
+    {
+        [tempArray addObject:[NSString stringWithUTF8String: tracks->psz_name]];
+        tracks = tracks->p_next;
+    }
+    return [NSArray arrayWithArray: tempArray];
+}
+
 - (void)setCurrentTitle:(int)value
 {
     libvlc_exception_t ex;
@@ -519,6 +541,21 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     return result;
 }
 
+- (NSArray *)titles
+{
+    libvlc_exception_t ex;
+    libvlc_exception_init( &ex );
+    libvlc_track_description_t *tracks = libvlc_video_get_title_description( instance, &ex );
+    NSMutableArray *tempArray = [NSMutableArray array];
+    NSInteger i;
+    for (i = 0; i < [self countOfTitles] ; i++)
+    {
+        [tempArray addObject:[NSString stringWithUTF8String: tracks->psz_name]];
+        tracks = tracks->p_next;
+    }
+    return [NSArray arrayWithArray: tempArray];
+}
+
 - (void)setAudioTrack:(int)value
 {
     libvlc_exception_t ex;
@@ -545,6 +582,22 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     return result;
 }
 
+- (NSArray *)audioTracks
+{
+    libvlc_exception_t ex;
+    libvlc_exception_init( &ex );
+    libvlc_track_description_t *tracks = libvlc_audio_get_track_description( instance, &ex );
+    NSMutableArray *tempArray = [NSMutableArray array];
+    NSInteger i;
+    for (i = 0; i < [self countOfAudioTracks] ; i++)
+    {
+        [tempArray addObject:[NSString stringWithUTF8String: tracks->psz_name]];
+        tracks = tracks->p_next;
+    }
+
+    return [NSArray arrayWithArray: tempArray];
+}
+
 - (void)setAudioChannel:(int)value
 {
     libvlc_exception_t ex;




More information about the vlc-devel mailing list