Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • e7f4ec5a11978a076dc93bff12e40433c9788963
  • master par défaut
  • script
  • new-devel
  • devel
  • timingView-edit
  • fix-mpv
7 résultats

AudioVisualizer.hh

Blame
  • 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