diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2014-06-09 10:03:06 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2014-06-09 10:03:06 +0300 |
commit | 954201b67e0eb1f7fa71a2d3043a25076705a3ac (patch) | |
tree | 11096593d1bf958c549088034d1056e7444c7d1c /examples/datavisualization/audiolevels/audiolevels.cpp | |
parent | ee94aedb7447ddf7a779f7188fd1cd2ae44d675e (diff) | |
parent | e9dc0f74f5cc06eb5edc3c16a63c9e6e89422584 (diff) |
Merge remote-tracking branch 'origin/develop'
Change-Id: Ifd19ce18255c35a1c8776e890e4ac832537e205c
Diffstat (limited to 'examples/datavisualization/audiolevels/audiolevels.cpp')
-rw-r--r-- | examples/datavisualization/audiolevels/audiolevels.cpp | 50 |
1 files changed, 34 insertions, 16 deletions
diff --git a/examples/datavisualization/audiolevels/audiolevels.cpp b/examples/datavisualization/audiolevels/audiolevels.cpp index 81059460..672e4984 100644 --- a/examples/datavisualization/audiolevels/audiolevels.cpp +++ b/examples/datavisualization/audiolevels/audiolevels.cpp @@ -25,6 +25,7 @@ #include <QtDataVisualization/q3dcamera.h> #include <QtDataVisualization/qbar3dseries.h> #include <QtDataVisualization/q3dtheme.h> +#include <QtDataVisualization/qcustom3dlabel.h> #include <QtMultimedia/QAudioDeviceInfo> #include <QtMultimedia/QAudioInput> @@ -59,31 +60,48 @@ AudioLevels::AudioLevels(Q3DBars *graph, QObject *parent) //! [0] QAudioDeviceInfo inputDevice = QAudioDeviceInfo::defaultInputDevice(); - QAudioFormat formatAudio; - formatAudio.setSampleRate(inputDevice.supportedSampleRates().at(0)); - formatAudio.setChannelCount(inputDevice.supportedChannelCounts().at(0)); - formatAudio.setSampleSize(inputDevice.supportedSampleSizes().at(0)); - formatAudio.setCodec(inputDevice.supportedCodecs().at(0)); - formatAudio.setByteOrder(QAudioFormat::LittleEndian); - formatAudio.setSampleType(QAudioFormat::UnSignedInt); + if (inputDevice.supportedSampleRates().size() > 0 + && inputDevice.supportedChannelCounts().size() > 0 + && inputDevice.supportedSampleSizes().size() > 0 + && inputDevice.supportedCodecs().size() > 0) { + QAudioFormat formatAudio; + formatAudio.setSampleRate(inputDevice.supportedSampleRates().at(0)); + formatAudio.setChannelCount(inputDevice.supportedChannelCounts().at(0)); + formatAudio.setSampleSize(inputDevice.supportedSampleSizes().at(0)); + formatAudio.setCodec(inputDevice.supportedCodecs().at(0)); + formatAudio.setByteOrder(QAudioFormat::LittleEndian); + formatAudio.setSampleType(QAudioFormat::UnSignedInt); - m_audioInput = new QAudioInput(inputDevice, formatAudio, this); + m_audioInput = new QAudioInput(inputDevice, formatAudio, this); #ifdef Q_OS_MAC - // Mac seems to wait for entire buffer to fill before calling writeData, so use smaller buffer - m_audioInput->setBufferSize(256); + // Mac seems to wait for entire buffer to fill before calling writeData, so use smaller buffer + m_audioInput->setBufferSize(256); #else - m_audioInput->setBufferSize(1024); + m_audioInput->setBufferSize(1024); #endif - m_device = new AudioLevelsIODevice(m_graph->seriesList().at(0)->dataProxy(), this); - m_device->open(QIODevice::WriteOnly); + m_device = new AudioLevelsIODevice(m_graph->seriesList().at(0)->dataProxy(), this); + m_device->open(QIODevice::WriteOnly); - m_audioInput->start(m_device); + m_audioInput->start(m_device); + } else { + // No graph content can be shown, so add a custom warning label + QCustom3DLabel *titleLabel = new QCustom3DLabel("No valid audio input device found", + QFont(), + QVector3D(0.2f, 0.2f, 0.0f), + QVector3D(1.0f, 1.0f, 0.0f), + QQuaternion()); + titleLabel->setPositionAbsolute(true); + titleLabel->setFacingCamera(true); + m_graph->addCustomItem(titleLabel); + } //! [0] } AudioLevels::~AudioLevels() { - m_audioInput->stop(); - m_device->close(); + if (m_audioInput) + m_audioInput->stop(); + if (m_device) + m_device->close(); } |