43 lines
1.2 KiB
C
43 lines
1.2 KiB
C
|
/* copyright 2006 Ben Allison */
|
||
|
#ifndef NULLSOFT_ALAC_DECODER_H
|
||
|
#define NULLSOFT_ALAC_DECODER_H
|
||
|
|
||
|
#include "alac/ALACDecoder.h"
|
||
|
#include "../Plugins/Input/in_mp4/mpeg4audio.h"
|
||
|
#include "decomp.h"
|
||
|
|
||
|
class ALACMP4Decoder : public MP4AudioDecoder
|
||
|
{
|
||
|
public:
|
||
|
ALACMP4Decoder()
|
||
|
: mpAlacDecoder(0),
|
||
|
channels(0),
|
||
|
bps(0),
|
||
|
output_bits(0),
|
||
|
use_rg(0),
|
||
|
rg(0.0)
|
||
|
{
|
||
|
}
|
||
|
int OpenMP4(MP4FileHandle mp4_file, MP4TrackId mp4_track, size_t output_bits, size_t maxChannels, bool useFloat);
|
||
|
int GetCurrentBitrate(unsigned int *bitrate);
|
||
|
int AudioSpecificConfiguration(void *buffer, size_t buffer_size); // reads ASC block from mp4 file
|
||
|
void Flush();
|
||
|
void Close();
|
||
|
int GetOutputProperties(unsigned int *sampleRate, unsigned int *channels, unsigned int *bitsPerSample);
|
||
|
int DecodeSample(void *inputBuffer, size_t inputBufferBytes, void *outputBuffer, size_t *outputBufferBytes);
|
||
|
int OutputFrameSize(size_t *frameSize);
|
||
|
const char *GetCodecInfoString();
|
||
|
int CanHandleCodec(const char *codecName);
|
||
|
int SetGain(float gain);
|
||
|
unsigned char setinfo_sample_size = 0x10;
|
||
|
private:
|
||
|
ALACDecoder *mpAlacDecoder;
|
||
|
int channels;
|
||
|
int bps;
|
||
|
int output_bits;
|
||
|
bool use_rg;
|
||
|
float rg;
|
||
|
protected:
|
||
|
RECVS_DISPATCH;
|
||
|
};
|
||
|
#endif
|