QAudioDeviceInfo::availableDevices() не возвращает все доступные устройства, вместо этого возвращает только одно из трех реально существующих устройств вывода звука. Почему?

Вопрос:

1. QAudioDeviceInfo::availableDevices(QAudio::AudioOutput)) возвращает только одно аудиоустройство (устройство по умолчанию) из трех аудиоустройств. Зачем? Всего доступно три аудиовыхода, и при проверке с устройствами ALSA проверял вывод с помощью утилиты tinyplay из командной строки. Но QAudioDeviceInfo::availableDevices() не возвращает эти три устройства, он возвращает только одно устройство (по умолчанию).

Примечание: Использовал пример кода на сэмплах qt для аудио выхода. Вернулось только одно устройство.

m_deviceBox->addItem(defaultDeviceInfo.deviceName(), qVariantFromValue(defaultDeviceInfo));
foreach (const QAudioDeviceInfo &deviceInfo, QAudioDeviceInfo::availableDevices(QAudio::AudioOutput)) {
if (deviceInfo != defaultDeviceInfo) {
 m_deviceBox->addItem(deviceInfo.deviceName(), qVariantFromValue(deviceInfo));
}
}

2. Как установить конкретное устройство ALSA (например, card0, device 0) в качестве аудиоустройства по умолчанию? В этом случае QAudioDeviceInfo::defaultOutputDevice() устанавливается как устройство 0 на звуковой карте2.

Детали смотрите ниже........

Настройка системы:

Целевая плата: iMX6Q Sabre AI

ОС: Android M6

Qt: QT 5.8

Android NDK r10

Android SDK: 25.2.5

Доступные звуковые карты:

root @ sabreauto_6q: / # cat / proc / asound / cards

0 [cs42888audio]: cs42888-audio - cs42888-audio cs42888-audio 1 [imxspdif]: imx-spdif - imx-spdif imx-spdif 2 [imxhdmisoc]: imx-hdmi-soc - imx-hdmi-soc imx-hdmi- Soc

Доступные звуковые устройства:

root @ sabreauto_6q: / # cat / proc / asound / card0 / id pcm0c / pcm0p / pcm1c / pcm1p /

root @ sabreauto_6q: / # cat / proc / asound / card1 / id pcm0c /

root @ sabreauto_6q: / # cat / proc / asound / card2 / id pcm0p /

Примечание. Всего имеется 3 звуковые карты и 3 аудио (ALSA) устройства.

Попытки проверить аудио устройства:

Использование утилиты tinyplay для вывода звука проверено для всех драйверов аудио выхода.

tinyplay test.wav -D 0 -d 0 -> Звук проверен. Примечание: устройство ALSA 0 на звуковой карте 0 работает для вывода звука.

tinyplay test.wav -D 0 -d 1 -> Звук проверен.

tinyplay test.wav -D 2 -d 0 -> Звук проверен.

0 ответов

Другие вопросы по тегам