diff options
Diffstat (limited to 'src/multimedia')
-rw-r--r-- | src/multimedia/audio/qaudiosink.cpp | 42 | ||||
-rw-r--r-- | src/multimedia/audio/qaudiosource.cpp | 40 | ||||
-rw-r--r-- | src/multimedia/platform/qplatformmediadevices.cpp | 4 |
3 files changed, 56 insertions, 30 deletions
diff --git a/src/multimedia/audio/qaudiosink.cpp b/src/multimedia/audio/qaudiosink.cpp index 6b16a71aa..c0cce2c79 100644 --- a/src/multimedia/audio/qaudiosink.cpp +++ b/src/multimedia/audio/qaudiosink.cpp @@ -123,9 +123,10 @@ QAudioSink::QAudioSink(const QAudioDevice &audioDevice, const QAudioFormat &form QObject(parent) { d = QPlatformMediaIntegration::instance()->devices()->audioOutputDevice(format, audioDevice); - if (d) { + if (d) connect(d, SIGNAL(stateChanged(QAudio::State)), SIGNAL(stateChanged(QAudio::State))); - } + else + qWarning() << ("No audio device detected"); } /*! @@ -144,7 +145,7 @@ QAudioSink::~QAudioSink() */ QAudioFormat QAudioSink::format() const { - return d->format(); + return d ? d->format() : QAudioFormat(); } /*! @@ -163,6 +164,8 @@ QAudioFormat QAudioSink::format() const */ void QAudioSink::start(QIODevice* device) { + if (!d) + return; d->elapsedTime.restart(); d->start(device); } @@ -186,6 +189,8 @@ void QAudioSink::start(QIODevice* device) */ QIODevice* QAudioSink::start() { + if (!d) + return nullptr; d->elapsedTime.restart(); return d->start(); } @@ -198,7 +203,8 @@ QIODevice* QAudioSink::start() */ void QAudioSink::stop() { - d->stop(); + if (d) + d->stop(); } /*! @@ -207,7 +213,8 @@ void QAudioSink::stop() */ void QAudioSink::reset() { - d->reset(); + if (d) + d->reset(); } /*! @@ -218,7 +225,8 @@ void QAudioSink::reset() */ void QAudioSink::suspend() { - d->suspend(); + if (d) + d->suspend(); } /*! @@ -231,7 +239,8 @@ void QAudioSink::suspend() */ void QAudioSink::resume() { - d->resume(); + if (d) + d->resume(); } /*! @@ -242,7 +251,7 @@ void QAudioSink::resume() */ qsizetype QAudioSink::bytesFree() const { - return d->bytesFree(); + return d ? d->bytesFree() : 0; } /*! @@ -255,7 +264,8 @@ qsizetype QAudioSink::bytesFree() const */ void QAudioSink::setBufferSize(qsizetype value) { - d->setBufferSize(value); + if (d) + d->setBufferSize(value); } /*! @@ -269,7 +279,7 @@ void QAudioSink::setBufferSize(qsizetype value) */ qsizetype QAudioSink::bufferSize() const { - return d->bufferSize(); + return d ? d->bufferSize() : 0; } /*! @@ -278,7 +288,7 @@ qsizetype QAudioSink::bufferSize() const */ qint64 QAudioSink::processedUSecs() const { - return d->processedUSecs(); + return d ? d->processedUSecs() : 0; } /*! @@ -287,7 +297,7 @@ qint64 QAudioSink::processedUSecs() const */ qint64 QAudioSink::elapsedUSecs() const { - return d->state() == QAudio::StoppedState ? 0 : d->elapsedTime.nsecsElapsed()/1000; + return state() == QAudio::StoppedState ? 0 : d->elapsedTime.nsecsElapsed()/1000; } /*! @@ -295,7 +305,7 @@ qint64 QAudioSink::elapsedUSecs() const */ QAudio::Error QAudioSink::error() const { - return d->error(); + return d ? d->error() : QAudio::OpenError; } /*! @@ -303,7 +313,7 @@ QAudio::Error QAudioSink::error() const */ QAudio::State QAudioSink::state() const { - return d->state(); + return d ? d->state() : QAudio::StoppedState; } /*! @@ -324,6 +334,8 @@ QAudio::State QAudioSink::state() const */ void QAudioSink::setVolume(qreal volume) { + if (!d) + return; qreal v = qBound(qreal(0.0), volume, qreal(1.0)); d->setVolume(v); } @@ -333,7 +345,7 @@ void QAudioSink::setVolume(qreal volume) */ qreal QAudioSink::volume() const { - return d->volume(); + return d ? d->volume() : 1.0; } /*! diff --git a/src/multimedia/audio/qaudiosource.cpp b/src/multimedia/audio/qaudiosource.cpp index a5f6de89d..4c2fb50b3 100644 --- a/src/multimedia/audio/qaudiosource.cpp +++ b/src/multimedia/audio/qaudiosource.cpp @@ -135,6 +135,9 @@ QAudioSource::QAudioSource(const QAudioDevice &audioDevice, const QAudioFormat & d = QPlatformMediaIntegration::instance()->devices()->audioInputDevice(format, audioDevice); if (d) connect(d, SIGNAL(stateChanged(QAudio::State)), SIGNAL(stateChanged(QAudio::State))); + else + qWarning() << ("No audio device detected"); + } /*! @@ -163,6 +166,8 @@ QAudioSource::~QAudioSource() void QAudioSource::start(QIODevice* device) { + if (!d) + return; d->elapsedTime.start(); d->start(device); } @@ -187,6 +192,8 @@ void QAudioSource::start(QIODevice* device) QIODevice* QAudioSource::start() { + if (!d) + return nullptr; d->elapsedTime.start(); return d->start(); } @@ -197,7 +204,7 @@ QIODevice* QAudioSource::start() QAudioFormat QAudioSource::format() const { - return d->format(); + return d ? d->format() : QAudioFormat(); } /*! @@ -209,7 +216,8 @@ QAudioFormat QAudioSource::format() const void QAudioSource::stop() { - d->stop(); + if (d) + d->stop(); } /*! @@ -218,7 +226,8 @@ void QAudioSource::stop() void QAudioSource::reset() { - d->reset(); + if (d) + d->reset(); } /*! @@ -230,7 +239,8 @@ void QAudioSource::reset() void QAudioSource::suspend() { - d->suspend(); + if (d) + d->suspend(); } /*! @@ -244,7 +254,8 @@ void QAudioSource::suspend() void QAudioSource::resume() { - d->resume(); + if (d) + d->resume(); } /*! @@ -259,7 +270,8 @@ void QAudioSource::resume() void QAudioSource::setBufferSize(qsizetype value) { - d->setBufferSize(value); + if (d) + d->setBufferSize(value); } /*! @@ -274,7 +286,7 @@ void QAudioSource::setBufferSize(qsizetype value) qsizetype QAudioSource::bufferSize() const { - return d->bufferSize(); + return d ? d->bufferSize() : 0; } /*! @@ -290,7 +302,7 @@ qsizetype QAudioSource::bytesAvailable() const -If not ActiveState|IdleState, return 0 -return amount of audio data available to read */ - return d->bytesReady(); + return d ? d->bytesReady() : 0; } /*! @@ -309,6 +321,8 @@ qsizetype QAudioSource::bytesAvailable() const */ void QAudioSource::setVolume(qreal volume) { + if (!d) + return; qreal v = qBound(qreal(0.0), volume, qreal(1.0)); d->setVolume(v); } @@ -321,7 +335,7 @@ void QAudioSource::setVolume(qreal volume) */ qreal QAudioSource::volume() const { - return d->volume(); + return d ? d->volume() : 1.0; } /*! @@ -331,7 +345,7 @@ qreal QAudioSource::volume() const qint64 QAudioSource::processedUSecs() const { - return d->processedUSecs(); + return d ? d->processedUSecs() : 0; } /*! @@ -343,7 +357,7 @@ qint64 QAudioSource::processedUSecs() const qint64 QAudioSource::elapsedUSecs() const { - return d->state() == QAudio::StoppedState ? 0 : d->elapsedTime.nsecsElapsed()/1000; + return state() == QAudio::StoppedState ? 0 : d->elapsedTime.nsecsElapsed()/1000; } /*! @@ -352,7 +366,7 @@ qint64 QAudioSource::elapsedUSecs() const QAudio::Error QAudioSource::error() const { - return d->error(); + return d ? d->error() : QAudio::OpenError; } /*! @@ -361,7 +375,7 @@ QAudio::Error QAudioSource::error() const QAudio::State QAudioSource::state() const { - return d->state(); + return d ? d->state() : QAudio::StoppedState; } /*! diff --git a/src/multimedia/platform/qplatformmediadevices.cpp b/src/multimedia/platform/qplatformmediadevices.cpp index 4ac1ec14c..fcedfe6ac 100644 --- a/src/multimedia/platform/qplatformmediadevices.cpp +++ b/src/multimedia/platform/qplatformmediadevices.cpp @@ -85,7 +85,7 @@ QPlatformAudioSource* QPlatformMediaDevices::audioInputDevice(const QAudioFormat if (info.isNull()) info = audioInputs().value(0); - QPlatformAudioSource* p = createAudioSource(info); + QPlatformAudioSource* p = !info.isNull() ? createAudioSource(info) : nullptr; if (p) p->setFormat(format); return p; @@ -97,7 +97,7 @@ QPlatformAudioSink* QPlatformMediaDevices::audioOutputDevice(const QAudioFormat if (info.isNull()) info = audioOutputs().value(0); - QPlatformAudioSink* p = createAudioSink(info); + QPlatformAudioSink* p = !info.isNull() ? createAudioSink(info) : nullptr; if (p) p->setFormat(format); return p; |