blob: 93a6acec2f3cf7fb3915df393390d38da1d4e44e (
plain)
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
|
#pragma once
#include <vector>
namespace Whisper
{
struct AudioBuffer
{
std::vector<float> mono;
std::vector<float> stereo;
void appendMono( const float* rsi, size_t countFloats );
void appendDownmixedStereo( const float* rsi, size_t countFloats );
void appendStereo( const float* rsi, size_t countFloats );
using pfnAppendSamples = void( AudioBuffer::* )( const float* rsi, size_t countFloats );
inline static pfnAppendSamples appendSamplesFunc( bool sourceMono, bool wantStereo )
{
if( sourceMono )
return &AudioBuffer::appendMono;
else if( !wantStereo )
return &AudioBuffer::appendDownmixedStereo;
else
return &AudioBuffer::appendStereo;
}
void clear()
{
mono.clear();
stereo.clear();
}
void swap( AudioBuffer& that )
{
mono.swap( that.mono );
stereo.swap( that.stereo );
}
void resize( size_t len )
{
assert( len <= mono.size() );
mono.resize( len );
if( !stereo.empty() )
stereo.resize( len * 2 );
}
};
}
|