65 lines
1.5 KiB
C++
65 lines
1.5 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
|