Commit 173b89e2 authored by Pierre d'Herbemont's avatar Pierre d'Herbemont

MacOSX/Framework/VLCMedia.m: Implement mediaAsNodeWithName:.

parent af1e3b56
...@@ -122,6 +122,8 @@ extern NSString *VLCMediaMetaChanged; //< Notification message for when t ...@@ -122,6 +122,8 @@ extern NSString *VLCMediaMetaChanged; //< Notification message for when t
*/ */
+ (id)mediaWithURL:(NSURL *)anURL; + (id)mediaWithURL:(NSURL *)anURL;
+ (id)mediaWithPath:(NSString *)aPath; + (id)mediaWithPath:(NSString *)aPath;
+ (id)mediaAsNodeWithName:(NSString *)aName;
/* Initializers */ /* Initializers */
/** /**
...@@ -132,6 +134,7 @@ extern NSString *VLCMediaMetaChanged; //< Notification message for when t ...@@ -132,6 +134,7 @@ extern NSString *VLCMediaMetaChanged; //< Notification message for when t
* \return A new VLCMedia object, only if there were no errors. * \return A new VLCMedia object, only if there were no errors.
*/ */
- (id)initWithPath:(NSString *)aPath; - (id)initWithPath:(NSString *)aPath;
- (id)initAsNodeWithName:(NSString *)aName;
/** /**
* Returns an NSComparisonResult value that indicates the lexical ordering of * Returns an NSComparisonResult value that indicates the lexical ordering of
......
...@@ -102,12 +102,43 @@ static void HandleMediaDurationChanged(const libvlc_event_t *event, void *self) ...@@ -102,12 +102,43 @@ static void HandleMediaDurationChanged(const libvlc_event_t *event, void *self)
@implementation VLCMedia @implementation VLCMedia
+ (id)mediaWithPath:(NSString *)aPath; + (id)mediaWithPath:(NSString *)aPath;
{ {
return [[[VLCMedia alloc] initWithPath:(id)aPath] autorelease]; return [[[VLCMedia alloc] initWithPath:aPath] autorelease];
} }
+ (id)mediaWithURL:(NSURL *)aURL; + (id)mediaWithURL:(NSURL *)aURL;
{ {
return [[[VLCMedia alloc] initWithPath:(id)[aURL path]] autorelease]; return [[[VLCMedia alloc] initWithPath:[aURL path]] autorelease];
}
+ (id)mediaAsNodeWithName:(NSString *)aName;
{
return [[[VLCMedia alloc] initAsNodeWithName:aName] autorelease];
}
- (id)initAsNodeWithName:(NSString *)aName
{
if (self = [super init])
{
libvlc_exception_t ex;
libvlc_exception_init(&ex);
p_md = libvlc_media_descriptor_new_as_node(
[VLCLibrary sharedInstance],
[aName UTF8String],
&ex);
quit_on_exception(&ex);
url = [aName copy];
delegate = nil;
metaDictionary = [[NSMutableDictionary alloc] initWithCapacity:3];
// This value is set whenever the demuxer figures out what the length is.
// TODO: Easy way to tell the length of the movie without having to instiate the demuxer. Maybe cached info?
length = nil;
[self initInternalMediaDescriptor];
}
return self;
} }
- (id)initWithPath:(NSString *)aPath - (id)initWithPath:(NSString *)aPath
...@@ -172,7 +203,7 @@ static void HandleMediaDurationChanged(const libvlc_event_t *event, void *self) ...@@ -172,7 +203,7 @@ static void HandleMediaDurationChanged(const libvlc_event_t *event, void *self)
- (NSString *)description - (NSString *)description
{ {
NSString *result = [metaDictionary objectForKey:VLCMetaInformationTitle]; NSString *result = [metaDictionary objectForKey:VLCMetaInformationTitle];
return (result ? result : url); return [NSString stringWithFormat:@"<%@ %p> %@", [self className], self, (result ? result : url)];
} }
- (NSComparisonResult)compare:(VLCMedia *)media - (NSComparisonResult)compare:(VLCMedia *)media
...@@ -366,6 +397,7 @@ static void HandleMediaDurationChanged(const libvlc_event_t *event, void *self) ...@@ -366,6 +397,7 @@ static void HandleMediaDurationChanged(const libvlc_event_t *event, void *self)
quit_on_exception( &ex ); quit_on_exception( &ex );
libvlc_media_list_t *p_mlist = libvlc_media_descriptor_subitems( p_md, NULL ); libvlc_media_list_t *p_mlist = libvlc_media_descriptor_subitems( p_md, NULL );
if (!p_mlist) if (!p_mlist)
subitems = nil; subitems = nil;
else else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment