« src/bot.rs » n'existait pas sur « b2efbd8a331e9464cde600cc2e1e7346b0b9d6f3 »
Sélectionner une révision Git
AudioVisualizer.hh 1,13 Kio
#ifndef VIVY_AUDIOVISUALIZER_H
#define VIVY_AUDIOVISUALIZER_H
#ifndef __cplusplus
#error "This is a C++ header"
#endif
#include "TimingView.hh"
#include "TimingParams.hh"
#include "../../Lib/Audio.hh"
namespace Vivy
{
class AudioVisualizer final : public QWidget {
Q_OBJECT
private:
static constexpr inline auto fftSampleDeleter = [](FFTSample *ptr) noexcept -> void {
if (ptr)
av_free(ptr);
};
static constexpr inline auto rdftContextDeleter = [](RDFTContext *ptr) noexcept -> void {
if (ptr)
av_rdft_end(ptr);
};
static constexpr inline auto pixelsDeleter = [](void *ptr) noexcept -> void {
if (ptr)
delete[](reinterpret_cast<uchar *>(ptr));
};
using FFTSamplePtr = std::unique_ptr<FFTSample[], decltype(fftSampleDeleter)>;
using RDFTContextPtr = std::unique_ptr<RDFTContext, decltype(rdftContextDeleter)>;
public:
explicit AudioVisualizer(AudioContext::StreamPtr, QWidget *parent = nullptr);
~AudioVisualizer() noexcept override = default;
public slots:
void printSpectrum(QImage, quint64) noexcept;
};
}
#endif // VIVY_AUDIOVISUALIZER_H