aboutsummaryrefslogtreecommitdiff
path: root/sound/voc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sound/voc.cpp')
-rw-r--r--sound/voc.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/sound/voc.cpp b/sound/voc.cpp
index ef1741111f..f1f4fa7727 100644
--- a/sound/voc.cpp
+++ b/sound/voc.cpp
@@ -41,7 +41,7 @@ int getSampleRateFromVOCRate(int vocSR) {
}
}
-byte *readVOCFromMemory(byte *ptr, int &size, int &rate, int &loops) {
+byte *readVOCFromMemory(byte *ptr, int &size, int &rate, int &loops, int &begin_loop, int &end_loop) {
assert(memcmp(ptr, "Creative Voice File\x1A", 20) == 0);
int32 offset = READ_LE_UINT16(ptr + 20);
@@ -53,6 +53,8 @@ byte *readVOCFromMemory(byte *ptr, int &size, int &rate, int &loops) {
bool quit = false;
byte *ret_sound = 0;
size = 0;
+ begin_loop = 0;
+ end_loop = 0;
while (!quit) {
int len = READ_LE_UINT32(ptr + offset);
@@ -76,7 +78,9 @@ byte *readVOCFromMemory(byte *ptr, int &size, int &rate, int &loops) {
ret_sound = (byte *)malloc(len);
}
memcpy(ret_sound + size, ptr + offset, len);
+ begin_loop = size;
size += len;
+ end_loop = size;
} else {
warning("VOC file packing %d unsupported", packing);
}
@@ -153,8 +157,8 @@ byte *loadVOCFile(File *file, int &size, int &rate) {
}
AudioStream *makeVOCStream(byte *ptr) {
- int size, rate, loops;
- byte *data = readVOCFromMemory(ptr, size, rate, loops);
+ int size, rate, loops, begin_loop, end_loop;
+ byte *data = readVOCFromMemory(ptr, size, rate, loops, begin_loop, end_loop);
if (!data)
return 0;