blob: 0199701c5e1fd26b6473e442c33e44d4bf19fd0a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
//========= 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
|