summaryrefslogtreecommitdiff
path: root/plugins/ape
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2009-08-30 22:59:29 +0200
committerGravatar waker <wakeroid@gmail.com>2009-08-30 22:59:29 +0200
commit00f8f988f064e5146610bb7e15e89bc84041aad1 (patch)
tree2666d55ce4d83a52b06f6731d18addaa069664b1 /plugins/ape
parent19dddccb75541dcb8317f73bfbef31e0a357bea5 (diff)
added comments on ape decompression
Diffstat (limited to 'plugins/ape')
-rw-r--r--plugins/ape/apewrapper.cpp26
1 files changed, 25 insertions, 1 deletions
diff --git a/plugins/ape/apewrapper.cpp b/plugins/ape/apewrapper.cpp
index 8cb46268..3d25f3b4 100644
--- a/plugins/ape/apewrapper.cpp
+++ b/plugins/ape/apewrapper.cpp
@@ -20,8 +20,32 @@ ape_decompress_destroy (void *d) {
delete dec;
}
+
+// decode process:
+// 1. get input format:
+// WAVEFORMATEX wfe;
+// GetInfo(APE_INFO_WAVEFORMATEX, (intptr_t)&wfe)
+// 2. get wav header
+// int size = GetInfo(APE_INFO_WAV_HEADER_BYTES)
+// char buf[size];
+// GetInfo (APE_INFO_WAV_HEADER_DATA, (intptr_t)buf, size);
+// 3. allocate space for readbuffer
+// int bufsize = GetInfo(APE_INFO_BLOCK_ALIGN) * BLOCKS_PER_DECODE;
+// char readbuf[bufsize];
+// 4. get total number of blocks
+// int blocksleft = GetInfo(APE_DECOMPRESS_TOTAL_BLOCKS);
+// 5. decompress
+// while (blocksleft > 0) {
+// int ndecoded;
+// GetData (readbuf, BLOCKS_PER_DECODE, &ndecoded);
+// nblocksleft -= ndecoded;
+// }
+// 6. terminate output
+// if (GetInfo(APE_INFO_WAV_TERMINATING_BYTES) > 0) {
+// GetInfo(APE_INFO_WAV_TERMINATING_DATA, (intptr_t)readbuf, GetInfo(APE_INFO_WAV_TERMINATING_BYTES));
+// }
int
-ape_decompress_info (void *d, int id) {
+ape_decompress_info_int (void *d, int id) {
IAPEDecompress *dec = (IAPEDecompress *)d;
return dec->GetInfo ((APE_DECOMPRESS_FIELDS)id);
}