Updated dumb plugin to use new decoder protocol.

CQTexperiment
vspader 2008-02-10 15:56:18 +00:00
parent 445797157c
commit a6c7666143
1 changed files with 6 additions and 6 deletions

View File

@ -108,7 +108,7 @@ void closeCallback(void *f)
return [NSDictionary dictionaryWithObjectsAndKeys: return [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:0], @"bitrate", [NSNumber numberWithInt:0], @"bitrate",
[NSNumber numberWithFloat:44100], @"sampleRate", [NSNumber numberWithFloat:44100], @"sampleRate",
[NSNumber numberWithDouble:length / 65.536f], @"length", [NSNumber numberWithDouble:((length / 65.536f)*44.1000)], @"totalFrames",
[NSNumber numberWithInt:16], @"bitsPerSample", //Samples are short [NSNumber numberWithInt:16], @"bitsPerSample", //Samples are short
[NSNumber numberWithInt:2], @"channels", //output from gme_play is in stereo [NSNumber numberWithInt:2], @"channels", //output from gme_play is in stereo
[NSNumber numberWithBool:[source seekable]], @"seekable", [NSNumber numberWithBool:[source seekable]], @"seekable",
@ -116,19 +116,19 @@ void closeCallback(void *f)
nil]; nil];
} }
- (int)fillBuffer:(void *)buf ofSize:(UInt32)size - (int)readAudio:(void *)buf frames:(UInt32)frames
{ {
if (duh_sigrenderer_get_position(dsr) > length) { if (duh_sigrenderer_get_position(dsr) > length) {
return 0; return 0;
} }
return 4*duh_render(dsr, 16 /* shorts */, 0 /* not unsigned */, 1.0 /* volume */, 65536.0f / 44100.0f /* 65536 hz? */, size/(2*2), buf); return duh_render(dsr, 16 /* shorts */, 0 /* not unsigned */, 1.0 /* volume */, 65536.0f / 44100.0f /* 65536 hz? */, frames, buf);
} }
- (double)seekToTime:(double)milliseconds - (long)seek:(long)frame
{ {
double pos = (double)duh_sigrenderer_get_position(dsr) / 65.536f; double pos = (double)duh_sigrenderer_get_position(dsr) / 65.536f;
double seekPos = milliseconds; double seekPos = frame/44.100;
if (seekPos < pos) { if (seekPos < pos) {
//Reset. Dumb cannot seek backwards. It's dumb. //Reset. Dumb cannot seek backwards. It's dumb.
@ -144,7 +144,7 @@ void closeCallback(void *f)
duh_sigrenderer_generate_samples(dsr, 1.0f, 65536.0f / 44100.0f, numSamples, NULL); duh_sigrenderer_generate_samples(dsr, 1.0f, 65536.0f / 44100.0f, numSamples, NULL);
return milliseconds; return frame;
} }
- (void)cleanUp - (void)cleanUp