source-engine/public/vaudio/ivaudio.h

65 lines
1.5 KiB
C
Raw Normal View History

2020-04-22 16:56:21 +00:00
//========= 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