19#include <QCoreApplication>
32 #include <libavutil/tx.h>
42 VisualNode(
short *l,
short *r,
unsigned long n, std::chrono::milliseconds timecode)
64 explicit VisualBase(
bool screensaverenable =
false);
78 virtual bool draw( QPainter *,
const QColor & ) = 0;
79 virtual void resize(
const QSize &size ) = 0;
84 static void drawWarning(QPainter *
p,
const QColor &
back, QSize size,
const QString& warning,
int fontsize = 28);
99 virtual const QString &
name(
void)
const = 0;
118 void resize(
const QSize &size )
override;
120 bool draw( QPainter *
p,
const QColor &
back )
override;
138 bool draw( QPainter *
p,
const QColor &
back )
override;
155 bool draw( QPainter *
p,
const QColor &
back )
override;
181 explicit LogScale(
int maxscale = 0,
int maxrange = 0);
200 explicit MelScale(
int maxscale = 0,
int maxrange = 0,
int maxfreq = 0);
205 void setMax(
int maxscale,
int maxrange,
int maxfreq);
206 static double hz2mel(
double hz) {
return 1127 *
log(1 + (hz / 700)); }
207 static double mel2hz(
double mel) {
return 700 * (exp(mel / 1127) - 1); }
216 = {
"C",
".",
"D",
".",
"E",
"F",
".",
"G",
".",
"A",
".",
"B"};
235 void resize(
const QSize &size)
override;
239 bool draw(QPainter *
p,
const QColor &
back = Qt::black)
override;
246 static inline double clamp(
double cur,
double max,
double min);
280 void resize(
const QSize &size)
override;
283 bool draw(QPainter *
p,
const QColor &
back = Qt::black)
override;
286 static inline double clamp(
double cur,
double max,
double min);
319 void resize (
const QSize &newsize)
override;
320 bool draw(QPainter *
p,
const QColor &
back = Qt::black)
override;
323 void drawRect(QPainter *
p, QRect *rect,
int i,
int c,
int w,
int h);
338#define piano_audio float
339#define goertzel_data float
363 void resize(
const QSize &size)
override;
371 bool draw(QPainter *
p,
const QColor &
back = Qt::black)
override;
374 static inline double clamp(
double cur,
double max,
double min);
402 void resize(
const QSize &size)
override;
404 bool draw(QPainter *
p,
const QColor &
back = Qt::black)
override;
428 void resize(
const QSize &size)
override;
430 bool draw(QPainter *
p,
const QColor &
back = Qt::black)
override;
void resize(const QSize &size) override
~AlbumArt() override=default
void findFrontCover(void)
bool draw(QPainter *p, const QColor &back=Qt::black) override
bool process(VisualNode *node=nullptr) override
void handleKeyPress(const QString &action) override
Q_DECLARE_TR_FUNCTIONS(AlbumArt)
MusicMetadata * m_currentMetadata
ImageType m_currImageType
bool draw(QPainter *p, const QColor &back=Qt::black) override
void resize(const QSize &size) override
bool process(VisualNode *node=nullptr) override
~Blank() override=default
LogScale(int maxscale=0, int maxrange=0)
int operator[](int index) const
std::vector< int > m_indices
void setMax(int maxscale, int maxrange)
std::vector< int > m_indices
MelScale(int maxscale=0, int maxrange=0, int maxfreq=0)
void setMax(int maxscale, int maxrange, int maxfreq)
static double hz2mel(double hz)
std::array< QString, 12 > m_notes
std::array< int, 126 > m_pixels
std::array< int, 126 > m_freqs
int operator[](int index)
static double mel2hz(double mel)
~MonoScope() override=default
bool draw(QPainter *p, const QColor &back) override
bool process(VisualNode *node) override
static constexpr goertzel_data kPianoMinVol
static constexpr unsigned int kPianoNumKeys
static constexpr unsigned long kPianoAudioSize
static constexpr double kPianoSpectrumSmoothing
unsigned long getDesiredSamples(void) override
piano_audio * m_audioData
std::chrono::milliseconds m_offsetProcessed
std::vector< double > m_magnitude
bool draw(QPainter *p, const QColor &back=Qt::black) override
bool processUndisplayed(VisualNode *node) override
bool process(VisualNode *node) override
static double clamp(double cur, double max, double min)
static constexpr double kPianoRmsNegligible
QColor m_blackTargetColor
QColor m_whiteTargetColor
void resize(const QSize &size) override
std::vector< QRect > m_rects
bool process_all_types(VisualNode *node, bool this_will_be_displayed)
static constexpr double kPianoKeypressTooLight
piano_key_data * m_pianoData
bool process(VisualNode *node) override
static constexpr int kSGAudioSize
void FFT(VisualNode *node)
unsigned long getDesiredSamples(void) override
bool draw(QPainter *p, const QColor &back=Qt::black) override
void handleKeyPress(const QString &action) override
static constexpr float kTxScale
std::array< int, 256 *6 > m_blue
void resize(const QSize &size) override
bool processUndisplayed(VisualNode *node) override
static double clamp(double cur, double max, double min)
AVTXContext * m_rdftContext
std::array< int, 256 *6 > m_green
std::array< int, 256 *6 > m_red
void resize(const QSize &size) override
bool process(VisualNode *node) override
QVector< float > m_magnitudes
QVector< QRect > m_rectsL
bool processUndisplayed(VisualNode *node) override
AVTXContext * m_rdftContext
QVector< QRect > m_rectsR
static constexpr float kTxScale
bool draw(QPainter *p, const QColor &back=Qt::black) override
static double clamp(double cur, double max, double min)
bool draw(QPainter *p, const QColor &back=Qt::black) override
~Squares() override=default
void resize(const QSize &newsize) override
void drawRect(QPainter *p, QRect *rect, int i, int c, int w, int h)
bool process(VisualNode *node) override
bool draw(QPainter *p, const QColor &back) override
std::vector< double > m_magnitudes
~StereoScope() override=default
void resize(const QSize &size) override
static VisFactory * g_pVisFactories
virtual VisualBase * create(MainVisual *parent, const QString &pluginName) const =0
virtual uint plugins(QStringList *list) const =0
const VisFactory * next() const
virtual ~VisFactory()=default
VisFactory * m_pNextVisFactory
virtual const QString & name(void) const =0
static const VisFactory * VisFactories()
virtual bool draw(QPainter *, const QColor &)=0
VisualBase(bool screensaverenable=false)
static void drawWarning(QPainter *p, const QColor &back, QSize size, const QString &warning, int fontsize=28)
virtual ~VisualBase(void)
bool m_xscreensaverenable
virtual bool process(VisualNode *node)=0
virtual bool processUndisplayed(VisualNode *)
virtual void handleKeyPress(const QString &action)
virtual unsigned long getDesiredSamples(void)
virtual int getDesiredFPS(void)
virtual void resize(const QSize &size)=0
VisualNode(short *l, short *r, unsigned long n, std::chrono::milliseconds timecode)
std::chrono::milliseconds m_offset
None log(str msg, int level=LOGDEBUG)
goertzel_data max_magnitude_seen
int samples_process_before_display_update
static constexpr uint16_t SAMPLES_DEFAULT_SIZE