beeping-core 2.0.0
C++20 library for encoding and decoding data over sound
Loading...
Searching...
No Matches
DecoderAllMultiTone.h
1#ifndef __DECODERALLMULTITONE__
2#define __DECODERALLMULTITONE__
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 DecoderAllMultiTone : public Decoder {
16 public:
17 DecoderAllMultiTone(const BeepingConfig& config, float sr, int buffsize,
18 int windowSize);
19
20 using Decoder::AnalyzeToken;
21 using Decoder::ComputeStats;
22 using Decoder::ComputeStatsStartTokens;
23 ~DecoderAllMultiTone(void);
24
25 int* mIdxs;
26
27 int* mBlockEnergyRatiosMaxToneIdx;
28 int* mBlockEnergyRatiosSecondToneIdx;
29 int* mToneRepetitions;
30
31 int* idxTonesFrontDoorToken1; // For single decoding mode
32 int* idxTonesFrontDoorToken2; // For single decoding mode
33 int** idxTonesFrontDoorToken1Array; // For multiple decoding mode
34 int** idxTonesFrontDoorToken2Array; // For multiple decoding mode
35
36 int DecodeAudioBuffer(float* audioBuffer, int size);
37 int GetDecodedData(char* stringDecoded);
38
39 int GetSpectrum(float* spectrumBuffer);
40
41 int AnalyzeStartTokens(float* audioBuffer);
42 int AnalyzeToken(float* audioBuffer, int mode);
43
44 int ComputeStatsStartTokens(int mode);
45 int ComputeStats(int mode);
46
47 int getSizeFilledFrameCircularBuffer();
48 int getSizeFilledBlockCircularBuffer();
49 int getSizeFilledBlockCircularBuffer(int mode);
50
51 float ComputeBlockMagSpecSumsCurrentToken(int midFreqBin, int width,
52 int nbins,
53 std::vector<float>& sumPerFrame);
54 float ComputeBlockMagSpecSumsLastToken(int midFreqBin, int width, int nbins,
55 std::vector<float>& sumPerFrame);
56};
57} // namespace BEEPING
58
59#endif //__DECODERALLMULTITONE__