summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Blechmann <[email protected]>2025-05-29 09:57:58 +0800
committerTim Blechmann <[email protected]>2025-06-28 14:01:39 +0800
commite6d969fc3889387f0bcc136521f932fd4913927f (patch)
tree3b408af022a76c6d6c4dfe753293f3850daadf33
parent98291a2f6e2565b5834a1c740f792a30bc8a5f99 (diff)
QtAudio: promote from alias to namespaceHEADdev
We want to put more functionality into namespace QtAudio without polluting the (deprecated) QAudio namespace. * pull symbols from QAudio into QtAudio namespace * add inline constexpr variables for enum values * add shim for convertVolume as separate symbol This allows us to keep binary compatibility of the QAudio namespace, but use QtAudio for more functionality. Pick-to: 6.8 6.9 6.10 Change-Id: I286727d17b4bb6b58f6c8bec20af37269105d605 Reviewed-by: Artem Dyomin <[email protected]>
-rw-r--r--src/multimedia/audio/qaudio.h25
-rw-r--r--src/multimedia/audio/qtaudio.cpp19
-rw-r--r--tests/auto/integration/qaudiosink/tst_qaudiosink.cpp14
-rw-r--r--tests/auto/integration/qaudiosource/tst_qaudiosource.cpp14
4 files changed, 66 insertions, 6 deletions
diff --git a/src/multimedia/audio/qaudio.h b/src/multimedia/audio/qaudio.h
index c7d3eaa49..bcc75545b 100644
--- a/src/multimedia/audio/qaudio.h
+++ b/src/multimedia/audio/qaudio.h
@@ -12,7 +12,7 @@
QT_BEGIN_NAMESPACE
-// ### Qt7: Remove the QAudio namespace
+// ### Qt7: merge the QAudio namespace into QtAudio
#if defined(Q_QDOC)
namespace QtAudio
#else
@@ -48,7 +48,28 @@ Q_MULTIMEDIA_EXPORT float convertVolume(float volume, VolumeScale from, VolumeSc
} // namespace QtAudio
#if !defined(Q_QDOC)
-namespace QtAudio = QAudio;
+namespace QtAudio {
+using Error = QAudio::Error;
+using State = QAudio::State;
+using VolumeScale = QAudio::VolumeScale;
+
+inline constexpr auto NoError = QAudio::NoError;
+inline constexpr auto OpenError = QAudio::OpenError;
+inline constexpr auto IOError = QAudio::IOError;
+inline constexpr auto UnderrunError = QAudio::UnderrunError;
+inline constexpr auto FatalError = QAudio::FatalError;
+inline constexpr auto ActiveState = QAudio::ActiveState;
+inline constexpr auto SuspendedState = QAudio::SuspendedState;
+inline constexpr auto StoppedState = QAudio::StoppedState;
+inline constexpr auto IdleState = QAudio::IdleState;
+inline constexpr auto LinearVolumeScale = QAudio::LinearVolumeScale;
+inline constexpr auto CubicVolumeScale = QAudio::CubicVolumeScale;
+inline constexpr auto LogarithmicVolumeScale = QAudio::LogarithmicVolumeScale;
+inline constexpr auto DecibelVolumeScale = QAudio::DecibelVolumeScale;
+
+Q_MULTIMEDIA_EXPORT float convertVolume(float volume, VolumeScale from, VolumeScale to);
+
+} // namespace QtAudio
#endif
#ifndef QT_NO_DEBUG_STREAM
diff --git a/src/multimedia/audio/qtaudio.cpp b/src/multimedia/audio/qtaudio.cpp
index fa84e0786..3c3d6ee4b 100644
--- a/src/multimedia/audio/qtaudio.cpp
+++ b/src/multimedia/audio/qtaudio.cpp
@@ -69,11 +69,7 @@ QT_BEGIN_NAMESPACE
\sa QtAudio::convertVolume()
*/
-#if defined(Q_QDOC)
namespace QtAudio
-#else
-namespace QAudio
-#endif
{
/*!
@@ -176,8 +172,23 @@ float convertVolume(float volume, VolumeScale from, VolumeScale to)
return volume;
}
+} // namespace QtAudio
+
+#if !defined(Q_QDOC)
+
+// Qt7
+namespace QAudio {
+
+// ### Qt7 remove this implementation
+float convertVolume(float volume, VolumeScale from, VolumeScale to)
+{
+ return QtAudio::convertVolume(volume, from, to);
}
+} // namespace QAudio
+
+#endif
+
#ifndef QT_NO_DEBUG_STREAM
QDebug operator<<(QDebug dbg, QAudio::Error error)
{
diff --git a/tests/auto/integration/qaudiosink/tst_qaudiosink.cpp b/tests/auto/integration/qaudiosink/tst_qaudiosink.cpp
index b9024df72..4b66b35da 100644
--- a/tests/auto/integration/qaudiosink/tst_qaudiosink.cpp
+++ b/tests/auto/integration/qaudiosink/tst_qaudiosink.cpp
@@ -113,6 +113,8 @@ private slots:
void stop_stopsAudioSink_whenInvokedUponFirstStateChange_data();
void stop_stopsAudioSink_whenInvokedUponFirstStateChange();
+ void stateChanged_stringBasedConnect();
+
void callbackAPI();
void callbackAPI_startFailsWithWrongType();
@@ -1196,6 +1198,18 @@ void tst_QAudioSink::stop_stopsAudioSink_whenInvokedUponFirstStateChange()
QTRY_COMPARE(audioSink.state(), QtAudio::State::StoppedState);
}
+void tst_QAudioSink::stateChanged_stringBasedConnect()
+{
+ const QAudioDevice defaultAudioOutputDevice = QMediaDevices::defaultAudioOutput();
+
+ QAudioSink audiosink(defaultAudioOutputDevice);
+
+ QSignalSpy stateSignal(&audiosink, SIGNAL(stateChanged(QAudio::State)));
+
+ audiosink.start();
+ QTRY_VERIFY(!stateSignal.empty());
+}
+
void tst_QAudioSink::callbackAPI()
{
#if QT_CONFIG(thread)
diff --git a/tests/auto/integration/qaudiosource/tst_qaudiosource.cpp b/tests/auto/integration/qaudiosource/tst_qaudiosource.cpp
index 0405a67e9..24c23ab5b 100644
--- a/tests/auto/integration/qaudiosource/tst_qaudiosource.cpp
+++ b/tests/auto/integration/qaudiosource/tst_qaudiosource.cpp
@@ -83,6 +83,8 @@ private slots:
void stop_stopsAudioSource_whenInvokedUponFirstStateChange_data();
void stop_stopsAudioSource_whenInvokedUponFirstStateChange();
+ void stateChanged_stringBasedConnect();
+
private:
using FilePtr = std::shared_ptr<QFile>;
@@ -1012,6 +1014,18 @@ void tst_QAudioSource::stop_stopsAudioSource_whenInvokedUponFirstStateChange()
QTRY_COMPARE(audioSource.state(), QtAudio::State::StoppedState);
}
+void tst_QAudioSource::stateChanged_stringBasedConnect()
+{
+ const QAudioDevice defaultAudioInputDevice = QMediaDevices::defaultAudioInput();
+
+ QAudioSource audioSource(defaultAudioInputDevice);
+
+ QSignalSpy stateSignal(&audioSource, SIGNAL(stateChanged(QAudio::State)));
+
+ audioSource.start();
+ QTRY_VERIFY(!stateSignal.empty());
+}
+
QTEST_MAIN(tst_QAudioSource)
#include "tst_qaudiosource.moc"