lms-audio/src/audiodecoder.h
2014-07-10 01:51:29 +02:00

45 lines
1 KiB
C++

#ifndef AUDIODECODER_H
#define AUDIODECODER_H
#include <QIODevice>
#include <QAudioFormat>
#include <QAudioDecoder>
class AudioDecoder : public QIODevice
{
Q_OBJECT
public:
AudioDecoder(const QAudioFormat &format, qint64 durationUs, int sampleRate, QObject *parent);
AudioDecoder(const QAudioFormat &format, QObject *parent);
~AudioDecoder();
void start();
void stop();
qint64 readData(char *data, qint64 maxlen);
qint64 writeData(const char *data, qint64 len);
qint64 bytesAvailable() const;
void loadMedia(QString file);
void setPos(qint64 pos);
private:
void generateData(const QAudioFormat &format, qint64 durationUs, int sampleRate);
qint64 m_pos;
QByteArray m_buffer;
QAudioDecoder *m_decoder;
private slots:
void readBuffer();
void errorDecoding(QAudioDecoder::Error msg);
void decoderFinished();
void trackTimeChanged(qint64 dur);
signals:
void totalTimeChanged(qint64 dur);
void fileLoaded(QString file);
};
#endif // AUDIODECODER_H