bpmdetect 0.8.11
Automatic BPM detection tool
Loading...
Searching...
No Matches
dlgtestbpmplayer.h
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-3.0-or-later
3#pragma once
4
5#include <QtCore/QThread>
6#include <QtMultimedia/QAudioBuffer>
7#include <QtMultimedia/QAudioDecoder>
8#include <QtMultimedia/QAudioFormat>
9
10#include "utils.h"
11
12class QAudioSink;
13class QIODevice;
14
16class DlgTestBpmPlayer : public QThread {
18#ifdef TESTING
19 friend class DlgTestBpmPlayerTest;
20#endif
21public:
30 DlgTestBpmPlayer(const QString file,
31 unsigned int nBeats,
32 bpmtype bpm,
33 qint64 posUs = 0,
34 QObject *parent = nullptr);
35 ~DlgTestBpmPlayer() override;
37 auto lengthUs() {
38 return lengthUs_;
39 }
40
41 void stop();
47 void update(unsigned int nBeats, qint64 posUs = 0);
49 void setBpm(bpmtype bpm);
51 Q_SIGNAL void audioError(QAudio::Error error);
54
55protected:
56 void run() override;
58 QAudioSink *audioSinkFactory(const QAudioFormat &format);
59
60protected Q_SLOTS:
62 void decodeError(QAudioDecoder::Error error);
64 void finishedDecoding();
66 void handleStateChange(QAudio::State state);
68 void readBuffer();
69
70private:
71 QAudioBuffer lastBuffer_;
72 QAudioFormat format_;
73 QByteArray buffer_;
74 QAudioDecoder *decoder_ = nullptr;
75 QAudioSink *output_ = nullptr;
76 QIODevice *dev_ = nullptr;
77 char *data_ = nullptr;
78 char *startptr_ = nullptr;
79 qint64 lengthUs_ = 0;
80 qint64 posUS_ = 0;
81 qint64 dataRemaining_;
82 qint64 originalSize_;
83 unsigned int nBeats_ = 4;
84 bpmtype bpm_;
85 bool readyToPlay_ = false;
86 bool error_ = false;
87};
Q_SIGNAL void hasLengthUs(qint64 length)
void update(unsigned int nBeats, qint64 posUs=0)
Definition dlgtestbpmplayer.cpp:111
void setBpm(bpmtype bpm)
Definition dlgtestbpmplayer.cpp:137
void decodeError(QAudioDecoder::Error error)
Definition dlgtestbpmplayer.cpp:44
Q_SIGNAL void audioError(QAudio::Error error)
auto lengthUs()
Definition dlgtestbpmplayer.h:37
void readBuffer()
Definition dlgtestbpmplayer.cpp:38
void handleStateChange(QAudio::State state)
Definition dlgtestbpmplayer.cpp:65
DlgTestBpmPlayer(const QString file, unsigned int nBeats, bpmtype bpm, qint64 posUs=0, QObject *parent=nullptr)
Definition dlgtestbpmplayer.cpp:12
void stop()
Definition dlgtestbpmplayer.cpp:105
void finishedDecoding()
Definition dlgtestbpmplayer.cpp:53
QAudioSink * audioSinkFactory(const QAudioFormat &format)
Definition dlgtestbpmplayer.cpp:49
QObject(QObject *parent)
Q_OBJECTQ_OBJECT
Q_SIGNALQ_SIGNAL
Q_SLOTSQ_SLOTS
QObject * parent() const const
QThread(QObject *parent)
virtual void run()
long long qint64
double bpmtype
Definition utils.h:24