mirror of
https://github.com/kevinbentley/Descent3.git
synced 2025-01-22 19:55:23 +00:00
43 lines
1.7 KiB
C++
43 lines
1.7 KiB
C++
#ifndef AUDIODECODE_H_
|
|
#define AUDIODECODE_H_
|
|
|
|
namespace AudioDecoder {
|
|
typedef unsigned int uint32;
|
|
typedef signed int sint32;
|
|
typedef unsigned short uint16;
|
|
typedef signed short sint16;
|
|
typedef unsigned char uint8;
|
|
typedef signed char sint8;
|
|
|
|
class IAudioDecoder {
|
|
public:
|
|
virtual ~IAudioDecoder() {}
|
|
|
|
// Read data from the audio decoder.
|
|
// pBuffer: The buffer to receive the data from
|
|
// amount: How much data to read
|
|
// Returns the number of bytes read - zero when we're at the end of the file
|
|
virtual uint32 Read(void *pBuffer, uint32 amount) = 0;
|
|
};
|
|
|
|
// Create an audio decoder
|
|
// You supply a function for reading bytes from the compressed data via a
|
|
// void* pData handle, and the handle itself (typically a FILE *).
|
|
// Create_AudioDecoder returns a new AudioDecoder which can be used to
|
|
// read uncompressed decoded data from the compressed stream,
|
|
// and also returns the number of channels (1 or 2), the sample rate
|
|
// (e.g. 22050), and the number of samples contained in the compressed file
|
|
// (in case you want to pre-allocate a buffer to load them all into memory).
|
|
typedef sint32 (*ReadDataFunction)(void *pData, void *pBuffer, unsigned int amount);
|
|
IAudioDecoder *CreateDecoder(ReadDataFunction reader, void *pData, uint32 &numChannels, uint32 &sampleRate,
|
|
uint32 &sampleCount);
|
|
|
|
// Optional interface for supplying your own malloc and free functions
|
|
// Default is to use standard malloc and free.
|
|
typedef void *(*MemoryAllocFunc)(uint32 size);
|
|
typedef void (*MemoryFreeFunc)(void *p);
|
|
void RegisterMemoryFunctions(MemoryAllocFunc memAlloc, MemoryFreeFunc memFree);
|
|
} // namespace AudioDecoder
|
|
|
|
#endif
|