Decompress Microsoft ADPCM format. More...
Public Member Functions | |
const Burger::StaticRTTI * | get_StaticRTTI (void) const noexcept override |
Get the description to the class. | |
DecompressMicrosoftADPCM () | |
Default constructor. | |
eError | Reset (void) override |
Resets the MAC6 decompresser to defaults. | |
eError | Process (void *pOutput, uintptr_t uOutputChunkSize, const void *pInput, uintptr_t uInputChunkLength) override |
Decompress audio data using Microsoft ADPCM compression. | |
void | SetBlockSize (uint_t uBlockSize) |
Set the block size for decompressing ADPCM data. | |
void | SetSamplesPerBlock (uint_t uSamplesPerBlock) |
Set the number of samples in a block of ADPCM data. | |
void | SetMonoDecoder (const void *pInput) |
Obtain the coefficients from the ADPCM stream. | |
void | SetStereoDecoder (const void *pInput) |
Obtain the coefficients from the ADPCM stream. | |
uint_t | ADPCMDecodeBlock (int16_t *pOutput, const uint8_t *pInput, uintptr_t uInputLength) |
Decode the a block of ADPCM samples. | |
Public Member Functions inherited from Burger::DecompressAudio | |
SoundManager::eDataType | GetDataType (void) const |
Returns the uncompressed data type this codec will output. | |
void | SetMono (void) |
Alert the decompression codec to create a single audio channel. | |
void | SetStereo (void) |
Alert the decompression codec to create stereo channels. | |
uint_t | IsStereo (void) const |
Obtain the stereo/mono state of the decompresser. | |
Public Member Functions inherited from Burger::Decompress | |
Decompress (void) | |
Default constructor. | |
uintptr_t | GetTotalInputSize (void) const noexcept |
Get the total processed input data in bytes. | |
uintptr_t | GetTotalOutputSize (void) const noexcept |
Get the total processed output data in bytes. | |
uintptr_t | GetProcessedInputSize (void) const noexcept |
Get the total processed output data in bytes from the last process pass. | |
uintptr_t | GetProcessedOutputSize (void) const noexcept |
Get the total processed output data in bytes from the last process pass. | |
uint32_t | GetSignature (void) const noexcept |
Return the signature for this decompressor. | |
Public Member Functions inherited from Burger::Base | |
const char * | get_class_name (void) const noexcept |
Get the name of the class. | |
virtual | ~Base () noexcept=default |
Destructor. | |
Static Public Member Functions | |
static DecompressMicrosoftADPCM * | New (void) |
Allocate and initialize a DecompressMicrosoftADPCM. | |
Static Public Attributes | |
static const Burger::StaticRTTI | g_StaticRTTI |
The global description of the class. | |
static const uint32_t | Signature = 0x4D50434D |
'MPCM' | |
Static Public Attributes inherited from Burger::DecompressAudio | |
static const Burger::StaticRTTI | g_StaticRTTI |
The global description of the class. | |
Static Public Attributes inherited from Burger::Decompress | |
static const Burger::StaticRTTI | g_StaticRTTI |
The global description of the class. | |
Static Public Attributes inherited from Burger::Base | |
static const Burger::StaticRTTI | g_StaticRTTI |
The global description of the class. | |
Protected Types | |
enum | eState { STATE_INIT , STATE_INITMONO , STATE_GETDECODERMONO , STATE_WRITESAMPLESMONO , STATE_WRITINGSAMPLESMONO , STATE_INITSTEREO , STATE_GETDECODERSTEREO , STATE_WRITESAMPLESSTEREO , STATE_WRITINGSAMPLESSTEREO , STATE_FILLINGCACHE , STATE_CACHEFULL } |
Protected Attributes | |
ADPCMState_t | m_Decoders [2] |
Decoders for left and right channels. | |
uint_t | m_uCacheCount |
Number of valid bytes in m_Cache. | |
uint_t | m_uCacheSize |
Maximum size of byte of m_Cache. | |
uint_t | m_uBlockSize |
Size of each compressed block (wBlockAlign) | |
uint_t | m_uSamplesPerBlock |
Number of samples to decompress per block (wSamplesPerBlock) | |
uint_t | m_uSamplesRemaining |
Number of samples left to decompress from a block in progress. | |
eState | m_eState |
State of the decompression. | |
eState | m_eNextState |
Pending state of the decompression after a cache fill/flush is performed. | |
uint8_t | m_Cache [32] |
Data cache. | |
Protected Attributes inherited from Burger::DecompressAudio | |
SoundManager::eDataType | m_eDataType |
Data type the decompresser will create. | |
uint_t | m_bStereo |
TRUE if data is stereo | |
Protected Attributes inherited from Burger::Decompress | |
uintptr_t | m_uTotalInput |
Total number of bytes processed for input. | |
uintptr_t | m_uTotalOutput |
Total number of bytes processed for output. | |
uintptr_t | m_uInputLength |
Number of input bytes processed from the last call to Process() | |
uintptr_t | m_uOutputLength |
Number of output bytes processed from the last call to Process() | |
uint32_t | m_uSignature |
4 character code to identify this decompresser | |
Additional Inherited Members | |
Protected Member Functions inherited from Burger::DecompressAudio | |
DecompressAudio (SoundManager::eDataType uDataType) | |
Constructor. | |
Decompress Microsoft ADPCM format.
Decompress audio data in Microsoft ADPCM format
|
protected |
Burger::DecompressMicrosoftADPCM::DecompressMicrosoftADPCM | ( | ) |
Default constructor.
Initializes the defaults
uint_t BURGER_API Burger::DecompressMicrosoftADPCM::ADPCMDecodeBlock | ( | int16_t * | pOutput, |
const uint8_t * | pInput, | ||
uintptr_t | uInputLength ) |
Decode the a block of ADPCM samples.
Function that will process a buffer of ADPCM samples and stores them into the output buffer.
pOutput | Buffer to get the decompressed sound data |
pInput | Pointer to ADPCM data |
uInputLength | Number of bytes of ADPCM data |
|
overridevirtualnoexcept |
Get the description to the class.
This virtual function will pull the pointer to the StaticRTTI instance that has the name of the class. Due to it being virtual, it will be the name of the most derived class.
Reimplemented from Burger::DecompressAudio.
|
static |
Allocate and initialize a DecompressMicrosoftADPCM.
|
overridevirtual |
Decompress audio data using Microsoft ADPCM compression.
Using the Microsoft version of ADPCM compression algorithm, decompress the audio data data
pOutput | Pointer to the buffer to accept the decompressed data |
uOutputChunkLength | Number of bytes in the output buffer |
pInput | Pointer to data to compress |
uInputChunkLength | Number of bytes in the data to decompress |
Implements Burger::Decompress.
|
overridevirtual |
Resets the MAC6 decompresser to defaults.
Implements Burger::Decompress.
|
inline |
Set the block size for decompressing ADPCM data.
uBlockSize | Size, in bytes, of each ADPCM block |
void BURGER_API Burger::DecompressMicrosoftADPCM::SetMonoDecoder | ( | const void * | pInput | ) |
Obtain the coefficients from the ADPCM stream.
From a stream of 7 bytes, initialize the coefficient tables for mono ADPCM decoding
pInput | Pointer to a stream of 7 bytes to extract the coefficients from |
|
inline |
Set the number of samples in a block of ADPCM data.
When decompressing ADPCM data, it's necessary to have the samples per block value since this value is not stored in the data stream.
uSamplesPerBlock | Number of audio samples in a block |
void BURGER_API Burger::DecompressMicrosoftADPCM::SetStereoDecoder | ( | const void * | pInput | ) |
Obtain the coefficients from the ADPCM stream.
From a stream of 14 bytes, initialize the coefficient tables for stereo ADPCM decoding
pInput | Pointer to a stream of 14 bytes to extract the coefficients from |
|
static |
The global description of the class.
This record contains the name of this class and a reference to the parent
|
protected |
Data cache.
|
protected |
Decoders for left and right channels.
|
protected |
Pending state of the decompression after a cache fill/flush is performed.
|
protected |
State of the decompression.
|
protected |
Size of each compressed block (wBlockAlign)
|
protected |
Number of valid bytes in m_Cache.
|
protected |
Maximum size of byte of m_Cache.
|
protected |
Number of samples to decompress per block (wSamplesPerBlock)
|
protected |
Number of samples left to decompress from a block in progress.
|
static |
'MPCM'