Significantly simplified S_XMP_CodecReadStream. Based on my understanding of the libxmp 4.4 API documentation.

This commit is contained in:
sago007
2016-11-27 12:34:07 +01:00
parent 976ce69b41
commit e785563a21

View File

@@ -187,37 +187,14 @@ int S_XMP_CodecReadStream(snd_stream_t *stream, int bytes, void *buffer)
return 0;
}
int bytesRead = 0;
int bytesLeft = bytes;
char* bufPtr = buffer;
int yeah=xmp_play_buffer(xmpsong, buffer, bytes, 0);
// cycle until we have the requested or all available bytes read
while(-1) {
int yeah=xmp_play_buffer(xmpsong, buffer, bytesLeft, 0);
if (yeah == 0) { // if we can play it...
xmp_get_frame_info(xmpsong, &fi);
int c = fi.buffer_size;
// no more bytes are left
if(c <= 0) {
break;
}
bytesRead += c;
bytesLeft -= c;
bufPtr += c;
xmp_get_module_info(xmpsong, &mi);
// we have enough bytes
if(bytesLeft <= 0) {
break;
}
}
else { // if we can't play it JUST STOP OK
break;
}
if (yeah == 0) { // if we can play it...
xmp_get_frame_info(xmpsong, &fi);
xmp_get_module_info(xmpsong, &mi);
}
else {
return 0;
}
return bytes;