61 lines
1.6 KiB
C++
61 lines
1.6 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//=============================================================================//
|
|
|
|
#ifndef IVAUDIO_H
|
|
#define IVAUDIO_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
class IAudioStreamEvent {
|
|
public:
|
|
// called by the stream to request more data
|
|
// seek the source to position "offset"
|
|
// -1 indicates previous position
|
|
// copy the data to pBuffer and return the number of bytes copied
|
|
// you may return less than bytesRequested if the end of the stream
|
|
// is encountered.
|
|
virtual int StreamRequestData(void *pBuffer, int bytesRequested,
|
|
int offset) = 0;
|
|
};
|
|
|
|
class IAudioStream {
|
|
public:
|
|
virtual ~IAudioStream() {}
|
|
|
|
// Decode another bufferSize output bytes from the stream
|
|
// returns number of bytes decoded
|
|
virtual int Decode(void *pBuffer, unsigned int bufferSize) = 0;
|
|
|
|
// output sampling bits (8/16)
|
|
virtual int GetOutputBits() = 0;
|
|
// output sampling rate in Hz
|
|
virtual int GetOutputRate() = 0;
|
|
// output channels (1=mono,2=stereo)
|
|
virtual int GetOutputChannels() = 0;
|
|
|
|
// seek
|
|
virtual unsigned int GetPosition() = 0;
|
|
|
|
// NOTE: BUGBUG: Only supports seeking forward currently!
|
|
virtual void SetPosition(unsigned int position) = 0;
|
|
|
|
// reset?
|
|
};
|
|
|
|
#define VAUDIO_INTERFACE_VERSION "VAudio002"
|
|
class IVAudio {
|
|
public:
|
|
virtual ~IVAudio() {}
|
|
|
|
virtual IAudioStream *CreateMP3StreamDecoder(
|
|
IAudioStreamEvent *pEventHandler) = 0;
|
|
virtual void DestroyMP3StreamDecoder(IAudioStream *pDecoder) = 0;
|
|
};
|
|
|
|
#endif // IVAUDIO_H
|