From 55f19bbcf48c27ef29687d52bb113ccd0babb001 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20Paul=20K=C3=BChne?= Date: Mon, 21 Dec 2009 00:17:19 +0100 Subject: [PATCH] osx/framework: added methods to access end-user-compliant names of subtitles, audio tracks, etc. --- .../framework/Headers/Public/VLCMediaPlayer.h | 6 +- .../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 043ca1bbbf..75036725c2 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 260981013e..fe9788a617 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; -- 2.39.2