You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.5 KiB
64 lines
1.5 KiB
//========= 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
|
|
|