beeping-core 2.0.0
C++20 library for encoding and decoding data over sound
Loading...
Searching...
No Matches
DecoderCustomMultiTone.h
1#ifndef __DECODERCUSTOMMULTITONE__
2#define __DECODERCUSTOMMULTITONE__
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 DecoderCustomMultiTone : public Decoder {
16 public:
17 DecoderCustomMultiTone(const BeepingConfig& config, float sr, int buffsize,
18 int windowSize);
19 ~DecoderCustomMultiTone(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 float GetDecodingBeginFreq();
34 float GetDecodingEndFreq();
35
36 int GetSpectrum(float* spectrumBuffer);
37
38 int AnalyzeStartTokens(float* audioBuffer);
39 int AnalyzeToken(float* audioBuffer);
40
41 int ComputeStatsStartTokens(void);
42 int ComputeStats(void);
43
44 int getSizeFilledFrameCircularBuffer();
45 int getSizeFilledBlockCircularBuffer();
46
47 float ComputeBlockMagSpecSumsCurrentToken(int midFreqBin, int width,
48 int nbins,
49 std::vector<float>& sumPerFrame);
50 float ComputeBlockMagSpecSumsLastToken(int midFreqBin, int width, int nbins,
51 std::vector<float>& sumPerFrame);
52};
53} // namespace BEEPING
54
55#endif //__DECODERCUSTOMMULTITONE__