This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
2020-08-04 13:13:01 -04:00

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