Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qplatformaudiodecoder.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
5
6#include <QtCore/qthread.h>
7
9
10QPlatformAudioDecoder::QPlatformAudioDecoder(QAudioDecoder *parent) : q(parent) { }
11
12QPlatformAudioDecoder::~QPlatformAudioDecoder() = default;
13
14void QPlatformAudioDecoder::error(QAudioDecoder::Error error, const QString &errorString)
15{
16 if (error == m_error && errorString == m_errorString)
17 return;
18 m_error = error;
19 m_errorString = errorString;
20
21 if (m_error != QAudioDecoder::NoError) {
22 setIsDecoding(false);
23 emit q->error(m_error);
24 }
25}
26
27void QPlatformAudioDecoder::bufferAvailableChanged(bool available)
28{
29 if (m_bufferAvailable == available)
30 return;
31 m_bufferAvailable = available;
32
33 if (!q->thread()->isCurrentThread())
34 QMetaObject::invokeMethod(q, [q = this->q, available] {
35 q->bufferAvailableChanged(available);
36 }, Qt::QueuedConnection);
37 else
38 emit q->bufferAvailableChanged(available);
39}
40
41void QPlatformAudioDecoder::bufferReady()
42{
43 if (!q->thread()->isCurrentThread())
44 QMetaObject::invokeMethod(q, &QAudioDecoder::bufferReady, Qt::QueuedConnection);
45 else
46 emit q->bufferReady();
47}
48
49void QPlatformAudioDecoder::sourceChanged()
50{
51 emit q->sourceChanged();
52}
53
54void QPlatformAudioDecoder::formatChanged(const QAudioFormat &format)
55{
56 emit q->formatChanged(format);
57}
58
59void QPlatformAudioDecoder::finished()
60{
61 durationChanged(-1);
62 setIsDecoding(false);
63 emit q->finished();
64}
65
66void QPlatformAudioDecoder::positionChanged(qint64 position)
67{
68 if (m_position == position)
69 return;
70 m_position = position;
71 emit q->positionChanged(position);
72}
73
74void QPlatformAudioDecoder::durationChanged(qint64 duration)
75{
76 if (m_duration == duration)
77 return;
78 m_duration = duration;
79 emit q->durationChanged(duration);
80}
81
82QT_END_NAMESPACE
83
84#include "moc_qplatformaudiodecoder_p.cpp"
Combined button and popup list for selecting options.