#ifndef AUDIODECODER_H #define AUDIODECODER_H #include #include #include 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