diff options
Diffstat (limited to 'src/multimedia/audio/qaudiosource.cpp')
-rw-r--r-- | src/multimedia/audio/qaudiosource.cpp | 98 |
1 files changed, 39 insertions, 59 deletions
diff --git a/src/multimedia/audio/qaudiosource.cpp b/src/multimedia/audio/qaudiosource.cpp index 57af98b39..1ed5e82bc 100644 --- a/src/multimedia/audio/qaudiosource.cpp +++ b/src/multimedia/audio/qaudiosource.cpp @@ -1,41 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "qaudio.h" @@ -89,7 +53,7 @@ QT_BEGIN_NAMESPACE At any point in time, QAudioSource will be in one of four states: active, suspended, stopped, or idle. These states are specified by - the QAudio::State enum. You can request a state change directly through + the QtAudio::State enum. You can request a state change directly through suspend(), resume(), stop(), reset(), and start(). The current state is reported by state(). QAudioSink will also signal you when the state changes (stateChanged()). @@ -102,8 +66,8 @@ QT_BEGIN_NAMESPACE which states the QAudioSource has been in. If an error should occur, you can fetch its reason with error(). - The possible error reasons are described by the QAudio::Error - enum. The QAudioSource will enter the \l{QAudio::}{StoppedState} when + The possible error reasons are described by the QtAudio::Error + enum. The QAudioSource will enter the \l{QtAudio::}{StoppedState} when an error is encountered. Connect to the stateChanged() signal to handle the error: @@ -132,15 +96,27 @@ QAudioSource::QAudioSource(const QAudioFormat &format, QObject *parent) QAudioSource::QAudioSource(const QAudioDevice &audioDevice, const QAudioFormat &format, QObject *parent): QObject(parent) { - d = QPlatformMediaDevices::instance()->audioInputDevice(format, audioDevice); - if (d) - connect(d, SIGNAL(stateChanged(QAudio::State)), SIGNAL(stateChanged(QAudio::State))); + d = QPlatformMediaIntegration::instance()->mediaDevices()->audioInputDevice(format, audioDevice, parent); + if (d) { + connect(d, &QPlatformAudioSource::stateChanged, this, [this](QAudio::State state) { + // if the signal has been emitted from another thread, + // the state may be already changed by main one + if (state == d->state()) + emit stateChanged(state); + }); + } else qWarning() << ("No audio device detected"); } /*! + \fn bool QAudioSource::isNull() const + + Returns \c true if the audio source is \c null, otherwise returns \c false. +*/ + +/*! Destroy this audio input. */ @@ -155,11 +131,11 @@ QAudioSource::~QAudioSource() \l{QIODevice::Append}{Append} or \l{QIODevice::ReadWrite}{ReadWrite} modes. If the QAudioSource is able to successfully get audio data, state() returns - either QAudio::ActiveState or QAudio::IdleState, error() returns QAudio::NoError + either QtAudio::ActiveState or QtAudio::IdleState, error() returns QtAudio::NoError and the stateChanged() signal is emitted. - If a problem occurs during this process, error() returns QAudio::OpenError, - state() returns QAudio::StoppedState and the stateChanged() signal is emitted. + If a problem occurs during this process, error() returns QtAudio::OpenError, + state() returns QtAudio::StoppedState and the stateChanged() signal is emitted. \sa QIODevice */ @@ -181,11 +157,11 @@ void QAudioSource::start(QIODevice* device) if you start another stream. If the QAudioSource is able to access the system's audio device, state() returns - QAudio::IdleState, error() returns QAudio::NoError + QtAudio::IdleState, error() returns QtAudio::NoError and the stateChanged() signal is emitted. - If a problem occurs during this process, error() returns QAudio::OpenError, - state() returns QAudio::StoppedState and the stateChanged() signal is emitted. + If a problem occurs during this process, error() returns QtAudio::OpenError, + state() returns QtAudio::StoppedState and the stateChanged() signal is emitted. \sa QIODevice */ @@ -210,7 +186,7 @@ QAudioFormat QAudioSource::format() const /*! Stops the audio input, detaching from the system resource. - Sets error() to QAudio::NoError, state() to QAudio::StoppedState and + Sets error() to QtAudio::NoError, state() to QtAudio::StoppedState and emit stateChanged() signal. */ @@ -233,7 +209,7 @@ void QAudioSource::reset() /*! Stops processing audio data, preserving buffered audio data. - Sets error() to QAudio::NoError, state() to QAudio::SuspendedState and + Sets error() to QtAudio::NoError, state() to QtAudio::SuspendedState and emit stateChanged() signal. */ @@ -246,9 +222,9 @@ void QAudioSource::suspend() /*! Resumes processing audio data after a suspend(). - Sets error() to QAudio::NoError. - Sets state() to QAudio::ActiveState if you previously called start(QIODevice*). - Sets state() to QAudio::IdleState if you previously called start(). + Sets error() to QtAudio::NoError. + Sets state() to QtAudio::ActiveState if you previously called start(QIODevice*). + Sets state() to QtAudio::IdleState if you previously called start(). emits stateChanged() signal. */ @@ -292,7 +268,7 @@ qsizetype QAudioSource::bufferSize() const /*! Returns the amount of audio data available to read in bytes. - Note: returned value is only valid while in QAudio::ActiveState or QAudio::IdleState + Note: returned value is only valid while in QtAudio::ActiveState or QtAudio::IdleState state, otherwise returns zero. */ @@ -364,7 +340,7 @@ qint64 QAudioSource::elapsedUSecs() const Returns the error state. */ -QAudio::Error QAudioSource::error() const +QtAudio::Error QAudioSource::error() const { return d ? d->error() : QAudio::OpenError; } @@ -373,14 +349,18 @@ QAudio::Error QAudioSource::error() const Returns the state of audio processing. */ -QAudio::State QAudioSource::state() const +QtAudio::State QAudioSource::state() const { return d ? d->state() : QAudio::StoppedState; } /*! - \fn QAudioSource::stateChanged(QAudio::State state) + \fn QAudioSource::stateChanged(QtAudio::State state) This signal is emitted when the device \a state has changed. + + \note The QtAudio namespace was named QAudio up to and including Qt 6.6. + String-based connections to this signal have to use \c{QAudio::State} as + the parameter type: \c{connect(source, SIGNAL(stateChanged(QAudio::State)), ...);} */ QT_END_NAMESPACE |