beeping-core 2.0.0
C++20 library for encoding and decoding data over sound
Loading...
Searching...
No Matches
DecoderAudibleMultiTone.h
1#ifndef __DECODERAUDIBLEMULTITONE__
2#define __DECODERAUDIBLEMULTITONE__
3
4#include <Decoder.h>
5
6#include <vector>
7
8#define MAX_DECODE_STRING_SIZE 30 // max decoded string size is 30
9
10namespace BEEPING {
11class SpectralAnalysis;
12class ReedSolomon;
13// class Decoder;
14
15class DecoderAudibleMultiTone : public Decoder {
16 public:
17 DecoderAudibleMultiTone(const BeepingConfig& config, float sr, int buffsize,
18 int windowSize);
19 ~DecoderAudibleMultiTone(void);
20
21 int* mIdxs;
22
23 int* mBlockEnergyRatiosMaxToneIdx;
24 int* mBlockEnergyRatiosSecondToneIdx;
25 int* mToneRepetitions;
26
27 int* idxTonesFrontDoorToken1;
28 int* idxTonesFrontDoorToken2;
29
30 int DecodeAudioBuffer(float* audioBuffer, int size);
31 int GetDecodedData(char* stringDecoded);
32
33 int GetSpectrum(float* spectrumBuffer);
34
35 int AnalyzeStartTokens(float* audioBuffer);
36 int AnalyzeToken(float* audioBuffer);
37
38 int ComputeStatsStartTokens(void);
39 int ComputeStats(void);
40
41 int getSizeFilledFrameCircularBuffer();
42 int getSizeFilledBlockCircularBuffer();
43
44 float ComputeBlockMagSpecSumsCurrentToken(int midFreqBin, int width,
45 int nbins,
46 std::vector<float>& sumPerFrame);
47 float ComputeBlockMagSpecSumsLastToken(int midFreqBin, int width, int nbins,
48 std::vector<float>& sumPerFrame);
49};
50} // namespace BEEPING
51
52#endif //__DECODERAUDIBLEMULTITONE__