58 lines
2.1 KiB
C++
Executable File
58 lines
2.1 KiB
C++
Executable File
#ifndef APE_HEADER_H
|
|
#define APE_HEADER_H
|
|
|
|
/*****************************************************************************************
|
|
APE header that all APE files have in common (old and new)
|
|
*****************************************************************************************/
|
|
struct APE_COMMON_HEADER
|
|
{
|
|
char cID[4]; // should equal 'MAC '
|
|
uint16 nVersion; // version number * 1000 (3.81 = 3810)
|
|
};
|
|
|
|
/*****************************************************************************************
|
|
APE header structure for old APE files (3.97 and earlier)
|
|
*****************************************************************************************/
|
|
struct APE_HEADER_OLD
|
|
{
|
|
char cID[4]; // should equal 'MAC '
|
|
uint16 nVersion; // version number * 1000 (3.81 = 3810)
|
|
uint16 nCompressionLevel; // the compression level
|
|
uint16 nFormatFlags; // any format flags (for future use)
|
|
uint16 nChannels; // the number of channels (1 or 2)
|
|
uint32 nSampleRate; // the sample rate (typically 44100)
|
|
uint32 nHeaderBytes; // the bytes after the MAC header that compose the WAV header
|
|
uint32 nTerminatingBytes; // the bytes after that raw data (for extended info)
|
|
uint32 nTotalFrames; // the number of frames in the file
|
|
uint32 nFinalFrameBlocks; // the number of samples in the final frame
|
|
};
|
|
|
|
struct APE_FILE_INFO;
|
|
class CIO;
|
|
|
|
/*****************************************************************************************
|
|
CAPEHeader - makes managing APE headers a little smoother (and the format change as of 3.98)
|
|
*****************************************************************************************/
|
|
class CAPEHeader
|
|
{
|
|
|
|
public:
|
|
|
|
CAPEHeader(CIO * pIO);
|
|
~CAPEHeader();
|
|
|
|
int Analyze(APE_FILE_INFO * pInfo);
|
|
|
|
protected:
|
|
|
|
int AnalyzeCurrent(APE_FILE_INFO * pInfo);
|
|
int AnalyzeOld(APE_FILE_INFO * pInfo);
|
|
|
|
int FindDescriptor(BOOL bSeek);
|
|
|
|
CIO * m_pIO;
|
|
};
|
|
|
|
#endif // #ifndef APE_HEADER_H
|
|
|