Support GME M3U playlists.

CQTexperiment
Christopher Snowhill 2016-08-04 18:55:13 -07:00
parent 1dab2b6d27
commit a7d1853853
3 changed files with 59 additions and 0 deletions

View File

@ -63,6 +63,27 @@
ALog(@"GME: Error loading file: %@ %s", [url path], error);
return [NSArray arrayWithObject:url];
}
NSURL *m3uurl = [url URLByDeletingPathExtension];
m3uurl = [m3uurl URLByAppendingPathExtension:@"m3u"];
if ([source open:m3uurl])
{
if ([source seekable])
{
[source seek:0 whence:SEEK_END];
size = [source tell];
[source seek:0 whence:SEEK_SET];
data = malloc(size);
[source read:data amount:size];
error = gme_load_m3u_data(emu, data, size);
free(data);
ALog(@"M3U loaded: %s", error ? error : "no error");
}
}
int track_count = gme_track_count(emu);
NSMutableArray *tracks = [NSMutableArray array];

View File

@ -78,6 +78,26 @@ gme_err_t readCallback( void* data, void* out, long count )
return NO;
}
NSURL *m3uurl = [[source url] URLByDeletingPathExtension];
m3uurl = [m3uurl URLByAppendingPathExtension:@"m3u"];
id audioSourceClass = NSClassFromString(@"AudioSource");
id<CogSource> m3usrc = [audioSourceClass audioSourceForURL:m3uurl];
if ([m3usrc open:m3uurl])
{
if ([m3usrc seekable])
{
[source seek:0 whence:SEEK_END];
long size = [source tell];
[source seek:0 whence:SEEK_SET];
void *data = malloc(size);
[source read:data amount:size];
gme_load_m3u_data(emu, data, size);
free(data);
}
}
int track_num = [[[source url] fragment] intValue]; //What if theres no fragment? Assuming we get 0.
gme_info_t * info;

View File

@ -71,6 +71,24 @@
return NO;
}
NSURL *m3uurl = [url URLByDeletingPathExtension];
m3uurl = [m3uurl URLByAppendingPathExtension:@"m3u"];
if ([source open:m3uurl])
{
if ([source seekable])
{
[source seek:0 whence:SEEK_END];
long size = [source tell];
[source seek:0 whence:SEEK_SET];
void *data = malloc(size);
[source read:data amount:size];
gme_load_m3u_data(emu, data, size);
free(data);
}
}
int track_num;
if ([[url fragment] length] == 0)
track_num = 0;