X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=projects%2Fmacosx%2Fframework%2FSources%2FVLCLibrary.m;h=4a58f5c02affffe0d59a8bd7d2a5b9b6fe6549a6;hb=4c1a614be06811db86dac6abc68c155e3c6af538;hp=8e6467e569f124a8e044d7759648ece17c44bc8e;hpb=f7f6282f0105598153d03fed83e6d29a2c2d8723;p=vlc diff --git a/projects/macosx/framework/Sources/VLCLibrary.m b/projects/macosx/framework/Sources/VLCLibrary.m index 8e6467e569..4a58f5c02a 100644 --- a/projects/macosx/framework/Sources/VLCLibrary.m +++ b/projects/macosx/framework/Sources/VLCLibrary.m @@ -42,36 +42,13 @@ void __catch_exception( void * e, const char * function, const char * file, int NSException* libvlcException = [NSException exceptionWithName:@"LibVLCException" reason:[NSString stringWithFormat:@"libvlc has thrown us an error: %s (%s:%d %s)", - libvlc_exception_get_message( ex ), file, line_number, function] + libvlc_errmsg(), file, line_number, function] userInfo:nil]; libvlc_exception_clear( ex ); @throw libvlcException; } } -void * CreateSharedLibraryOnStartup( void ) -{ - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - /* This library is not loaded for no reason, so let's create - * a VLCLibrary instance. */ - [VLCLibrary sharedLibrary]; - - [pool release]; - - return NULL; -} - -void * DestroySharedLibraryAtExit( void ) -{ - /* Release the global object that may have been alloc-ed - * in -[VLCLibrary init] */ - [sharedLibrary release]; - sharedLibrary = nil; - - return NULL; -} - @implementation VLCLibrary + (VLCLibrary *)sharedLibrary { @@ -90,21 +67,50 @@ void * DestroySharedLibraryAtExit( void ) libvlc_exception_t ex; libvlc_exception_init( &ex ); - const char * lib_vlc_params[] = { - "-I", "dummy", "--vout=opengllayer", - "--no-video-title-show", "--no-sout-keep", "--ignore-config" - //, "--control=motion", "--motion-use-rotate", "--video-filter=rotate" - }; - + NSArray *vlcParams = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"VLCParams"]; + if (!vlcParams) { + NSMutableArray *defaultParams = [NSMutableArray array]; + [defaultParams addObject:@"-I macosx_dialog_provider"]; // No actual interface, just dialogs and nagging + [defaultParams addObject:@"--no-video-title-show"]; // Don't show the title on overlay when starting to play + [defaultParams addObject:@"--no-sout-keep"]; + [defaultParams addObject:@"--ignore-config"]; // Don't read and write VLC config files + [defaultParams addObject:@"--vout=macosx"]; + [defaultParams addObject:@"--text-renderer=quartztext"]; // our CoreText-based renderer + [defaultParams addObject:@"--verbose=-1"]; // Don't polute the log + [defaultParams addObject:@"--no-color"]; + [defaultParams addObject:@"--no-media-library"]; + [defaultParams addObject:@"--play-and-pause"]; + vlcParams = defaultParams; + } + + NSUInteger paramNum = 0; + NSUInteger count = [vlcParams count]; + const char *lib_vlc_params[count]; + while (paramNum < count) { + NSString *vlcParam = [vlcParams objectAtIndex:paramNum]; + lib_vlc_params[paramNum] = [vlcParam cStringUsingEncoding:NSASCIIStringEncoding]; + paramNum++; + } instance = (void *)libvlc_new( sizeof(lib_vlc_params)/sizeof(lib_vlc_params[0]), lib_vlc_params, &ex ); catch_exception( &ex ); - + NSAssert(instance, @"libvlc failed to initialize"); + // Assignment unneeded, as the audio unit will do it for us /*audio = */ [[VLCAudio alloc] initWithLibrary:self]; } return self; } +- (NSString *)version +{ + return [NSString stringWithUTF8String:libvlc_get_version()]; +} + +- (NSString *)changeset +{ + return [NSString stringWithUTF8String:libvlc_get_changeset()]; +} + - (void)dealloc { if( instance )