32 static constexpr std::chrono::milliseconds kInvalidDuration{ -1 };
33 static constexpr std::chrono::milliseconds kInvalidPosition{ -1 };
35 virtual QUrl source()
const = 0;
36 virtual void setSource(
const QUrl &fileName) = 0;
38 virtual QIODevice* sourceDevice()
const = 0;
39 virtual void setSourceDevice(QIODevice *device) = 0;
41 virtual void start() = 0;
42 virtual void stop() = 0;
44 virtual QAudioFormat audioFormat()
const = 0;
45 virtual void setAudioFormat(
const QAudioFormat &format) = 0;
47 virtual QAudioBuffer read() = 0;
48 virtual bool bufferAvailable()
const {
return m_bufferAvailable; }
50 std::chrono::milliseconds position()
const {
return m_position; }
51 std::chrono::milliseconds duration()
const {
return m_duration; }
53 void formatChanged(
const QAudioFormat &format);
57 void error(QAudioDecoder::Error error,
const QString &errorString);
58 void clearError() { error(QAudioDecoder::NoError, QString()); }
61 void bufferAvailableChanged(
bool available);
62 void setIsDecoding(
bool running =
true) {
63 if (m_isDecoding == running)
65 m_isDecoding = running;
66 emit q->isDecodingChanged(m_isDecoding);
69 bool isDecoding()
const {
return m_isDecoding; }
71 void positionChanged(std::chrono::milliseconds);
72 void durationChanged(std::chrono::milliseconds);
74 QAudioDecoder::Error error()
const {
return m_error; }
75 QString errorString()
const {
return m_errorString; }
77 virtual bool canReadQrc()
const {
return false; }
79 ~QPlatformAudioDecoder() override;
82 explicit QPlatformAudioDecoder(QAudioDecoder *parent);
85 QAudioDecoder *q =
nullptr;
88 std::chrono::milliseconds m_duration = kInvalidDuration;
89 std::chrono::milliseconds m_position = kInvalidPosition;
90 QAudioDecoder::Error m_error = QAudioDecoder::NoError;
91 QString m_errorString;
92 bool m_isDecoding =
false;
93 bool m_bufferAvailable =
false;