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.
97 lines
2.4 KiB
97 lines
2.4 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
// |
|
//=============================================================================// |
|
#ifndef SOUND_H |
|
#define SOUND_H |
|
#pragma once |
|
|
|
class CAudioMixer; |
|
|
|
class CAudioInput |
|
{ |
|
public: |
|
// factory to create a suitable audio input for this system |
|
static CAudioInput *Create( void ); |
|
|
|
// base class needs virtual destructor |
|
virtual ~CAudioInput( void ) {} |
|
|
|
// ------------------- interface ------------------------ |
|
|
|
// Returns the current count of available samples |
|
virtual int SampleCount( void ) = 0; |
|
|
|
// returns the size of each sample in bytes |
|
virtual int SampleSize( void ) = 0; |
|
|
|
// returns the sampling rate of the data |
|
virtual int SampleRate( void ) = 0; |
|
|
|
// returns a pointer to the available data |
|
virtual void *SampleData( void ) = 0; |
|
|
|
// release the available data (mark as done) |
|
virtual void SampleRelease( void ) = 0; |
|
|
|
// returns the mono/stereo status of this device (true if stereo) |
|
virtual bool IsStereo( void ) = 0; |
|
|
|
// begin sampling |
|
virtual void Start( void ) = 0; |
|
|
|
// stop sampling |
|
virtual void Stop( void ) = 0; |
|
}; |
|
|
|
class CAudioSource; |
|
|
|
class CAudioOutput |
|
{ |
|
public: |
|
// factory to create a suitable audio output for this system |
|
static CAudioOutput *Create( void ); |
|
|
|
// base class needs virtual destructor |
|
virtual ~CAudioOutput( void ) {} |
|
|
|
// ------------------- interface ------------------------ |
|
|
|
// returns the size of each sample in bytes |
|
virtual int SampleSize( void ) = 0; |
|
|
|
// returns the sampling rate of the data |
|
virtual int SampleRate( void ) = 0; |
|
|
|
// returns the mono/stereo status of this device (true if stereo) |
|
virtual bool IsStereo( void ) = 0; |
|
|
|
// move up to time (time is absolute) |
|
virtual void Update( float dt ) = 0; |
|
|
|
virtual void Flush( void ) = 0; |
|
|
|
// Hook up a filter to the input channel |
|
virtual void AddSource( CAudioMixer *pSource ) = 0; |
|
|
|
virtual void StopSounds( void ) = 0; |
|
|
|
virtual void FreeChannel( int channel ) = 0; |
|
|
|
virtual int FindSourceIndex( CAudioMixer *pSource ) = 0; |
|
|
|
virtual float GetAmountofTimeAhead( void ) = 0; |
|
|
|
virtual int GetNumberofSamplesAhead( void ) = 0; |
|
|
|
virtual CAudioMixer *GetMixerForSource( CAudioSource *pDevice ) = 0; |
|
}; |
|
|
|
|
|
int AudioResample( void *pInput, int inCount, int inSize, bool inStereo, int inRate, |
|
void *pOutput, int outCount, int outSize, bool outStereo, int outRate ); |
|
|
|
#endif // SOUND_H
|
|
|