summaryrefslogtreecommitdiffstats
path: root/src/multimedia/alsa/qalsaaudiodevice.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/alsa/qalsaaudiodevice.cpp')
-rw-r--r--src/multimedia/alsa/qalsaaudiodevice.cpp71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/multimedia/alsa/qalsaaudiodevice.cpp b/src/multimedia/alsa/qalsaaudiodevice.cpp
new file mode 100644
index 000000000..893375270
--- /dev/null
+++ b/src/multimedia/alsa/qalsaaudiodevice.cpp
@@ -0,0 +1,71 @@
+// 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
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// INTERNAL USE ONLY: Do NOT use for any other purpose.
+//
+
+#include "qalsaaudiodevice_p.h"
+
+#include <alsa/version.h>
+
+QT_BEGIN_NAMESPACE
+
+QAlsaAudioDeviceInfo::QAlsaAudioDeviceInfo(const QByteArray &dev, const QString &desc, QAudioDevice::Mode mode)
+ : QAudioDevicePrivate(dev, mode)
+{
+ description = desc;
+
+ checkSurround();
+
+ minimumChannelCount = 1;
+ maximumChannelCount = 2;
+ if (surround71)
+ maximumChannelCount = 8;
+ else if (surround40)
+ maximumChannelCount = 4;
+ else if (surround51)
+ maximumChannelCount = 6;
+
+ minimumSampleRate = 8000;
+ maximumSampleRate = 48000;
+
+ supportedSampleFormats = {
+ QAudioFormat::UInt8,
+ QAudioFormat::Int16,
+ QAudioFormat::Int32,
+ QAudioFormat::Float,
+ };
+
+ preferredFormat.setChannelCount(mode == QAudioDevice::Input ? 1 : 2);
+ preferredFormat.setSampleFormat(QAudioFormat::Float);
+ preferredFormat.setSampleRate(48000);
+}
+
+QAlsaAudioDeviceInfo::~QAlsaAudioDeviceInfo() = default;
+
+void QAlsaAudioDeviceInfo::checkSurround()
+{
+ if (mode != QAudioDevice::Output)
+ return;
+
+ surround40 = false;
+ surround51 = false;
+ surround71 = false;
+
+ if (id.startsWith(QLatin1String("surround40")))
+ surround40 = true;
+ if (id.startsWith(QLatin1String("surround51")))
+ surround51 = true;
+ if (id.startsWith(QLatin1String("surround71")))
+ surround71 = true;
+}
+
+QT_END_NAMESPACE