libPCM.codecs

Undocumented in source.

Members

Aliases

CommonDecoderFuncPtr
alias CommonDecoderFuncPtr = short function(ubyte* inputStream, DecoderWorkpad* workpad)

Alias for function pointer for codec interchangeability

Functions

blockDecodeXAADPCM
void blockDecodeXAADPCM(ubyte* inputStream, short* outputStream, int channels, XAADPCMDecoderWorkpad* workpad)

Decodes a whole block of XA ADPCM, which outputs (8-channels)*28 samples for each channel.

blockEncodeXAADPCM
void blockEncodeXAADPCM(short* inputStream, ubyte* outputStream, int channels, XAADPCMEncoderWorkpad* workpad, bool vl)

Encodes a block of 16 bit PCM stream into XA ADPCM.

decodeStream8BitPCMUnsigned
void decodeStream8BitPCMUnsigned(ubyte* inputStream, short* outputStream, uint length)

Decodes a preexisting stream automatically.

decodeStreamALawPCM
void decodeStreamALawPCM(ubyte* inputStream, short* outputStream, uint length)

Decodes a preexisting stream automatically.

decodeStreamDialogicADPCM
void decodeStreamDialogicADPCM(ubyte* inputStream, short* outputStream, uint length)

Decodes a preexisting stream automatically.

decodeStreamIMAADPCM
void decodeStreamIMAADPCM(ubyte* inputStream, short* outputStream, uint length)

Decodes a preexisting stream automatically.

decodeStreamMuLawPCM
void decodeStreamMuLawPCM(ubyte* inputStream, short* outputStream, uint length)

Decodes a preexisting stream automatically.

decodeStreamXAADPCM
void decodeStreamXAADPCM(ubyte* inputStream, short* outputStream, uint length, int channels)

Decodes a preexisting stream automatically.

decodeStreamYamahaADPCMA
void decodeStreamYamahaADPCMA(ubyte* inputStream, short* outputStream, uint length)

Decodes a preexisting stream automatically.

dynamicDecode12BitPCMSigned
short dynamicDecode12BitPCMSigned(ubyte* inputStream, DecoderWorkpad* workpad)
Undocumented in source. Be warned that the author may not have intended to support it.
dynamicDecode12BitPCMUnsigned
short dynamicDecode12BitPCMUnsigned(ubyte* inputStream, DecoderWorkpad* workpad)
Undocumented in source. Be warned that the author may not have intended to support it.
dynamicDecode8BitPCMUnsigned
short dynamicDecode8BitPCMUnsigned(ubyte* inputStream, DecoderWorkpad* workpad)

Appends 8 bit unsigned PCM to 16 bit signed PCM. Workpad is 16 bytes long.

dynamicDecodeALawPCM
short dynamicDecodeALawPCM(ubyte* inputStream, DecoderWorkpad* workpad)

Dinamically decodes an A-Law stream

dynamicDecodeDialogicADPCM
short dynamicDecodeDialogicADPCM(ubyte* inputStream, DecoderWorkpad* workpad)

Dinamically decodes an Dialogic ADPCM stream.

dynamicDecodeIMAADPCM
short dynamicDecodeIMAADPCM(ubyte* inputStream, DecoderWorkpad* workpad)

Dinamically decodes an IMA ADPCM stream.

dynamicDecodeMuLawPCM
short dynamicDecodeMuLawPCM(ubyte* inputStream, DecoderWorkpad* workpad)

Dinamically decodes a Mu-Law stream

dynamicDecodeYamahaADPCMA
short dynamicDecodeYamahaADPCMA(ubyte* inputStream, DecoderWorkpad* workpad)

Dynamically decodes a Yamaha ADPCM A stream. Workpad is 16 bytes long.

dynamicEncode8BitPCMUnsigned
void dynamicEncode8BitPCMUnsigned(short* inputStream, ubyte* outputStream, void* workpad)

Dinamically encodes 16 bit stream into 8 bit. Workpad is 32 bytes long, inputStream and outputStream always points to the first byte.

dynamicEncodeALawPCM
void dynamicEncodeALawPCM(short* inputStream, ubyte* outputStream, EncoderWorkpad* workpad)

Dinamically encodes a stream with A-Law PCM.

dynamicEncodeDialogicADPCM
void dynamicEncodeDialogicADPCM(short* inputStream, ubyte* outputStream, EncoderWorkpad* workpad)

Dinamically encodes a stream with Dialogic ADPCM. Workpad is 32 bytes long, inputStream and outputStream always points to the first byte.

dynamicEncodeIMAADPCM
void dynamicEncodeIMAADPCM(short* inputStream, ubyte* outputStream, EncoderWorkpad* workpad)

Dinamically encodes a stream with IMA ADPCM. Workpad is 32 bytes long, inputStream and outputStream always points to the first byte.

dynamicEncodeMuLawPCM
void dynamicEncodeMuLawPCM(short* inputStream, ubyte* outputStream, EncoderWorkpad* workpad)

Dinamically encodes a stream with Mu-Law PCM.

dynamicEncodeYamahaADPCMA
void dynamicEncodeYamahaADPCMA(short* inputStream, ubyte* outputStream, EncoderWorkpad* workpad)

Dinamically encodes a stream with Yamaha ADPCM A. Workpad is 32 bytes long, inputStream and outputStream always points to the first byte.

encodeStream8BitPCMUnsigned
void encodeStream8BitPCMUnsigned(short* inputStream, ubyte* outputStream, uint length)

Encodes a preexisting stream automatically.

encodeStreamALawPCM
void encodeStreamALawPCM(short* inputStream, ubyte* outputStream, uint length)

Encodes a preexisting stream automatically.

encodeStreamDialogicADPCM
void encodeStreamDialogicADPCM(short* inputStream, ubyte* outputStream, uint length)

Encodes a preexisting stream automatically.

encodeStreamIMAADPCM
void encodeStreamIMAADPCM(short* inputStream, ubyte* outputStream, uint length)

Encodes a preexisting stream automatically.

encodeStreamMuLawPCM
void encodeStreamMuLawPCM(short* inputStream, ubyte* outputStream, uint length)

Encodes a preexisting stream automatically.

encodeStreamXAADPCM
void encodeStreamXAADPCM(short* inputStream, ubyte* outputStream, uint length, int channels)

Encodes a stream of XA ADPCM automatically with multi-channel support

encodeStreamYamahaADPCMA
void encodeStreamYamahaADPCMA(short* inputStream, ubyte* outputStream, uint length)

Encodes a preexisting stream automatically.

encodeXAADPCM
double encodeXAADPCM(int unit, XAADPCMEncoderWorkpad* workpad, byte[2] inputCoEff, short* inputStream, ubyte* outputStream, int iostep, int channels, bool vl)

Encodes a unit of XA ADPCM

initializeDialogicADPCMDecoderWorkpad
DecoderWorkpad initializeDialogicADPCMDecoderWorkpad()

Initializes the index at 16 for Dialogic ADPCM codecs.

initializeDialogicADPCMEncoderWorkpad
EncoderWorkpad initializeDialogicADPCMEncoderWorkpad()

Initializes the index at 16 for Dialogic ADPCM codecs.

unitDecodeXAADPCM
void unitDecodeXAADPCM(ubyte* inputStream, short* outputStream, int channels, XAADPCMDecoderWorkpad* workpad, int filter, int shift, int unit)

Decodes a single unit of XA ADPCM.

Static variables

ADPCM_IndexTable
byte[16] ADPCM_IndexTable;

For IMA and Dialogic ADPCM

ADPCM_IndexTable_2Bit
byte[4] ADPCM_IndexTable_2Bit;

Very rare, mostly experimental Very low quality

ADPCM_IndexTable_3Bit
byte[8] ADPCM_IndexTable_3Bit;

Very rare, mostly experimental

ADPCM_IndexTable_5Bit
byte[32] ADPCM_IndexTable_5Bit;

Very rare, mostly experimental Supposedly has better quality sound than 4bit implementations.

A_Law_DecodeTable
short[256] A_Law_DecodeTable;
Undocumented in source.
A_Law_EncodeTable
ubyte[128] A_Law_EncodeTable;
Undocumented in source.
DIALOGIC_ADPCM_StepTable
ushort[49] DIALOGIC_ADPCM_StepTable;

Most OKI and Yamaha chips seems to use this step-table

IMA_ADPCM_StepTable
ushort[89] IMA_ADPCM_StepTable;

Most common ADPCM steptable

MU_Law_DecodeTable
short[256] MU_Law_DecodeTable;
Undocumented in source.
MU_Law_EncodeTable
ubyte[256] MU_Law_EncodeTable;
Undocumented in source.
XA_ADPCM_Table
byte[2][5] XA_ADPCM_Table;
Undocumented in source.
Yamaha_ADPCM_A_IndexTable
byte[16] Yamaha_ADPCM_A_IndexTable;

For the Yamaha ADPCM A found in YM2610 and probably other chips

Yamaha_ADPCM_DiffLookup
byte[16] Yamaha_ADPCM_DiffLookup;

Used rarely, couldn't find more info about this codec

Yamaha_ADPCM_IndexScale
ushort[16] Yamaha_ADPCM_IndexScale;
Undocumented in source.

Structs

ADPCMDataPacket3Bit
struct ADPCMDataPacket3Bit

For easy access of 3bit ADPCM nibbles

ADPCMDataPacket5Bit
struct ADPCMDataPacket5Bit

For easy access of 5bit ADPCM nibbles

DecoderWorkpad
struct DecoderWorkpad

A note on workpads: Dynamic decode functions use 16 bytes of workpad, consisting of 4 32 bit integers, which is the recommended initialization method to avoid misaligned integers. For looping an audio sample, you need to back up the workpad at the start of the loop, monitor the third integer (which is the position), then replace the current workpad's data with the backed up one. This is extremly important with ADPCM as they depend on many local values. Dynamic encode functions use 32 bytes. In these cases, the 3rd and 6th integers need to be set to zero if working on a fixed length buffer. Functions meant to be used on a fixed length buffer coming soon.

EncoderWorkpad
struct EncoderWorkpad
Undocumented in source.
XAADPCMDecoderWorkpad
struct XAADPCMDecoderWorkpad

Workpad for XA ADPCM decoders

XAADPCMEncoderWorkpad
struct XAADPCMEncoderWorkpad

Keeper values fo XAADPCM encoding.

Meta