Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/libsnes/bsnes/nall/dsp/buffer.hpp
2 views
1
#ifdef NALL_DSP_INTERNAL_HPP
2
3
struct Buffer {
4
double **sample;
5
uint16_t rdoffset;
6
uint16_t wroffset;
7
unsigned channels;
8
9
void setChannels(unsigned channels) {
10
for(unsigned c = 0; c < this->channels; c++) {
11
if(sample[c]) delete[] sample[c];
12
}
13
if(sample) delete[] sample;
14
15
this->channels = channels;
16
if(channels == 0) return;
17
18
sample = new double*[channels];
19
for(unsigned c = 0; c < channels; c++) {
20
sample[c] = new double[65536]();
21
}
22
}
23
24
inline double& read(unsigned channel, signed offset = 0) {
25
return sample[channel][(uint16_t)(rdoffset + offset)];
26
}
27
28
inline double& write(unsigned channel, signed offset = 0) {
29
return sample[channel][(uint16_t)(wroffset + offset)];
30
}
31
32
inline void clear() {
33
for(unsigned c = 0; c < channels; c++) {
34
for(unsigned n = 0; n < 65536; n++) {
35
sample[c][n] = 0;
36
}
37
}
38
rdoffset = 0;
39
wroffset = 0;
40
}
41
42
Buffer() {
43
channels = 0;
44
}
45
46
~Buffer() {
47
setChannels(0);
48
}
49
};
50
51
#endif
52
53