#ifndef APE_WAVINPUTSOURCE_H
#define APE_WAVINPUTSOURCE_H
#include "All.h"
#include "IO.h"
#include "NoWindows.h"
#include "SmartPtr.h"
CInputSource - base input format class (allows multiple format support)
*************************************************************************************/
class CInputSource
{
public:
CInputSource(CIO * pIO, WAVEFORMATEX * pwfeSource, int * pTotalBlocks, int * pHeaderBytes, int * pTerminatingBytes, int * pErrorCode = NULL) { }
CInputSource(const char* pSourceName, WAVEFORMATEX * pwfeSource, int * pTotalBlocks, int * pHeaderBytes, int * pTerminatingBytes, int * pErrorCode = NULL) { }
virtual ~CInputSource() { }
virtual int GetData(unsigned char * pBuffer, int nBlocks, int * pBlocksRetrieved) = 0;
virtual int GetHeaderData(unsigned char * pBuffer) = 0;
virtual int GetTerminatingData(unsigned char * pBuffer) = 0;
};
CWAVInputSource - wraps working with WAV files (could be extended to any format)
*************************************************************************************/
class CWAVInputSource : public CInputSource
{
public:
CWAVInputSource(CIO * pIO, WAVEFORMATEX * pwfeSource, int * pTotalBlocks, int * pHeaderBytes, int * pTerminatingBytes, int * pErrorCode = NULL);
CWAVInputSource(const char* pSourceName, WAVEFORMATEX * pwfeSource, int * pTotalBlocks, int * pHeaderBytes, int * pTerminatingBytes, int * pErrorCode = NULL);
~CWAVInputSource();
int GetData(unsigned char * pBuffer, int nBlocks, int * pBlocksRetrieved);
int GetHeaderData(unsigned char * pBuffer);
int GetTerminatingData(unsigned char * pBuffer);
private:
int AnalyzeSource();
CSmartPtr<CIO> m_spIO;
WAVEFORMATEX m_wfeSource;
int m_nHeaderBytes;
int m_nDataBytes;
int m_nTerminatingBytes;
int m_nFileBytes;
BOOL m_bIsValid;
};
Input souce creation
*************************************************************************************/
extern "C" {
DLLEXPORT CInputSource* __stdcall CreateInputSource(const char* pSourceName, WAVEFORMATEX * pwfeSource, int * pTotalBlocks, int * pHeaderBytes, int * pTerminatingBytes, int * pErrorCode = NULL);
}
#endif