Don't set device explicitly when capturing

Also update openal to 1.20.1 since it has pulseaudio.allow-moves by default

Fix playback devices enumerating
This commit is contained in:
Ilya Fedin 2020-03-02 11:31:04 +04:00 committed by John Preston
parent fdd841e5c4
commit afc902a5cb
4 changed files with 10 additions and 16 deletions

View File

@ -323,7 +323,7 @@ jobs:
run: | run: |
cd $LibrariesPath cd $LibrariesPath
git clone -b openal-soft-1.19.1 --depth=1 $GIT/kcat/openal-soft.git git clone -b openal-soft-1.20.1 --depth=1 $GIT/kcat/openal-soft.git
cd openal-soft/build cd openal-soft/build
cmake -D LIBTYPE:STRING=STATIC .. cmake -D LIBTYPE:STRING=STATIC ..
make -j$(nproc) make -j$(nproc)

View File

@ -82,7 +82,7 @@ bool PlaybackErrorHappened() {
void EnumeratePlaybackDevices() { void EnumeratePlaybackDevices() {
auto deviceNames = QStringList(); auto deviceNames = QStringList();
auto devices = alcGetString(nullptr, ALC_DEVICE_SPECIFIER); auto devices = alcGetString(nullptr, ALC_ALL_DEVICES_SPECIFIER);
Assert(devices != nullptr); Assert(devices != nullptr);
while (*devices != 0) { while (*devices != 0) {
auto deviceName8Bit = QByteArray(devices); auto deviceName8Bit = QByteArray(devices);
@ -92,7 +92,7 @@ void EnumeratePlaybackDevices() {
} }
LOG(("Audio Playback Devices: %1").arg(deviceNames.join(';'))); LOG(("Audio Playback Devices: %1").arg(deviceNames.join(';')));
if (auto device = alcGetString(nullptr, ALC_DEFAULT_DEVICE_SPECIFIER)) { if (auto device = alcGetString(nullptr, ALC_DEFAULT_ALL_DEVICES_SPECIFIER)) {
LOG(("Audio Playback Default Device: %1").arg(QString::fromLocal8Bit(device))); LOG(("Audio Playback Default Device: %1").arg(QString::fromLocal8Bit(device)));
} else { } else {
LOG(("Audio Playback Default Device: (null)")); LOG(("Audio Playback Default Device: (null)"));

View File

@ -62,16 +62,12 @@ Instance::Instance() : _inner(new Inner(&_thread)) {
void Instance::check() { void Instance::check() {
_available = false; _available = false;
if (auto defaultDevice = alcGetString(0, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER)) { if (auto device = alcCaptureOpenDevice(nullptr, kCaptureFrequency, AL_FORMAT_MONO16, kCaptureFrequency / 5)) {
if (auto device = alcCaptureOpenDevice(defaultDevice, kCaptureFrequency, AL_FORMAT_MONO16, kCaptureFrequency / 5)) { auto error = ErrorHappened(device);
auto error = ErrorHappened(device); alcCaptureCloseDevice(device);
alcCaptureCloseDevice(device); _available = !error;
_available = !error;
} else {
LOG(("Audio Error: Could not open capture device!"));
}
} else { } else {
LOG(("Audio Error: No capture device found!")); LOG(("Audio Error: Could not open capture device!"));
} }
} }
@ -177,9 +173,7 @@ void Instance::Inner::onInit() {
void Instance::Inner::onStart() { void Instance::Inner::onStart() {
// Start OpenAL Capture // Start OpenAL Capture
const ALCchar *dName = alcGetString(0, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER); d->device = alcCaptureOpenDevice(nullptr, kCaptureFrequency, AL_FORMAT_MONO16, kCaptureFrequency / 5);
DEBUG_LOG(("Audio Info: Capture device name '%1'").arg(dName));
d->device = alcCaptureOpenDevice(dName, kCaptureFrequency, AL_FORMAT_MONO16, kCaptureFrequency / 5);
if (!d->device) { if (!d->device) {
LOG(("Audio Error: capture device not present!")); LOG(("Audio Error: capture device not present!"));
emit error(); emit error();

View File

@ -198,7 +198,7 @@ Go to ***BuildPath*** and run
git clone git://repo.or.cz/openal-soft.git git clone git://repo.or.cz/openal-soft.git
cd openal-soft cd openal-soft
git checkout openal-soft-1.19.1 git checkout openal-soft-1.20.1
cd build cd build
if [ `uname -p` == "i686" ]; then if [ `uname -p` == "i686" ]; then
cmake -D LIBTYPE:STRING=STATIC -D ALSOFT_UTILS:BOOL=OFF .. cmake -D LIBTYPE:STRING=STATIC -D ALSOFT_UTILS:BOOL=OFF ..