Files
DrumMachine/audiodecoder.h

42 lines
874 B
C
Raw Normal View History

2020-04-26 20:49:20 +02:00
#pragma once
#include <memory>
#include <QObject>
#include <QAudioDecoder>
#include <QByteArray>
#include <QDateTime>
class QAudioBuffer;
class QIODevice;
class AudioDecoder : public QObject
{
Q_OBJECT
public:
explicit AudioDecoder(QObject *parent = nullptr);
signals:
void progress(int progress, int total);
void decodingFinished(const QAudioBuffer &buffer);
public slots:
2020-04-27 22:59:30 +02:00
void startDecodingFilename(const QString &filename);
void startDecodingDevice(std::shared_ptr<QIODevice> device);
2020-04-26 20:49:20 +02:00
private slots:
void error(const QAudioDecoder::Error error);
void finished();
void bufferReady();
void durationChanged(const qint64 duration);
private:
std::shared_ptr<QIODevice> m_device;
QAudioDecoder m_decoder;
QByteArray m_bytearray;
QDateTime m_lastProgressUpdate;
};
Q_DECLARE_METATYPE(std::shared_ptr<QIODevice>)