VulcanoLE/headers/VulcanoLE/Audio/AudioGrabber.h

43 lines
1.0 KiB
C
Raw Normal View History

2021-02-20 18:13:51 +01:00
#pragma once
#include <unistd.h>
#include <string>
#include <fstream>
#include <memory>
#include <mutex>
#include <VUtils/Environment.h>
#include <VulcanoLE/Audio/FFT.h>
#include <VulcanoLE/Audio/Types.h>
2021-12-30 18:06:04 +01:00
#include <VulcanoLE/Audio/Filter.h>
2021-02-20 18:13:51 +01:00
class AudioGrabber {
public:
enum class ReqMode {
FFT = 0,
RMS = 1,
PEAK = 2,
2021-12-30 18:06:04 +01:00
FILTER = 3,
ALL = 4
2021-02-20 18:13:51 +01:00
};
AudioGrabber();
~AudioGrabber();
bool read(stereoSample *buffer, uint32_t bufferSize);
2021-02-20 18:13:51 +01:00
static AudioGrabber* createAudioGrabber();
void init();
2021-12-30 18:06:04 +01:00
Audio::FilterHelper& getFilter();
2021-02-20 18:13:51 +01:00
FFT fft;
ReqMode requestMode = ReqMode::FFT;
stereoSampleFrame loudness = {0.0, 0.0};
stereoSampleFrame getLoudness();
bool work();
2021-02-20 18:13:51 +01:00
VUtils::Environment *env = nullptr;
2021-12-30 18:06:04 +01:00
double getBass();
2021-02-20 18:13:51 +01:00
private:
std::mutex m_mtx;
stereoSample *m_buffer{};
void calculateRMS(stereoSample *pFrame);
void calculatePEAK(stereoSample *pFrame);
2021-02-20 18:13:51 +01:00
double m_scale = 1.0;
2021-05-02 17:25:03 +02:00
int availableData = 0;
2021-12-30 18:06:04 +01:00
Audio::FilterHelper m_filter;
2021-02-20 18:13:51 +01:00
};