Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 7142fe0f84882867703a90ce525fb3f06af2c1e7
  • master par défaut protégée
2 résultats

addComment.class.php

Blame
  • Bifurcation depuis Nassim YAICI / projet_web
    Le projet source a une visibilité limitée.
    AudioVisualizer.hh 1,20 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:
        AudioContext::StreamPtr audioStream;
    
    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, AudioContext::StreamPtr) noexcept;
    };
    
    }
    
    #endif // VIVY_AUDIOVISUALIZER_H