Update OpenAL-Soft to 1.22.0

This commit is contained in:
Alex Szpakowski
2022-04-30 21:02:11 -03:00
parent 4f72a5e5d9
commit 2b15394df5
229 changed files with 30602 additions and 7654 deletions
@@ -28,6 +28,9 @@ static const struct {
#ifdef HAVE_JACK
{ "jack", "JACK" },
#endif
#ifdef HAVE_PIPEWIRE
{ "pipewire", "PipeWire" },
#endif
#ifdef HAVE_PULSEAUDIO
{ "pulse", "PulseAudio" },
#endif
@@ -80,8 +83,7 @@ static const struct NameValuePair {
{ "Mono", "mono" },
{ "Stereo", "stereo" },
{ "Quadraphonic", "quad" },
{ "5.1 Surround (Side)", "surround51" },
{ "5.1 Surround (Rear)", "surround51rear" },
{ "5.1 Surround", "surround51" },
{ "6.1 Surround", "surround61" },
{ "7.1 Surround", "surround71" },
@@ -122,18 +124,21 @@ static const struct NameValuePair {
{ "Default", "" },
{ "Pan Pot", "panpot" },
{ "UHJ", "uhj" },
{ "Binaural", "hrtf" },
{ "", "" }
}, ambiFormatList[] = {
{ "Default", "" },
{ "AmbiX (ACN, SN3D)", "ambix" },
{ "ACN, N3D", "acn+n3d" },
{ "Furse-Malham", "fuma" },
{ "ACN, N3D", "acn+n3d" },
{ "ACN, FuMa", "acn+fuma" },
{ "", "" }
}, hrtfModeList[] = {
{ "1st Order Ambisonic", "ambi1" },
{ "2nd Order Ambisonic", "ambi2" },
{ "3rd Order Ambisonic", "ambi3" },
{ "Default (Full)", "" },
{ "Full", "full" },
@@ -200,7 +205,11 @@ static QStringList getAllDataPaths(const QString &append)
QString paths = qgetenv("XDG_DATA_DIRS");
if(paths.isEmpty())
paths = "/usr/local/share/:/usr/share/";
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
list += paths.split(QChar(':'), Qt::SkipEmptyParts);
#else
list += paths.split(QChar(':'), QString::SkipEmptyParts);
#endif
#endif
QStringList::iterator iter = list.begin();
while(iter != list.end())
@@ -445,8 +454,11 @@ MainWindow::MainWindow(QWidget *parent) :
connect(ui->pulseFixRateCheckBox, &QCheckBox::stateChanged, this, &MainWindow::enableApplyButton);
connect(ui->pulseAdjLatencyCheckBox, &QCheckBox::stateChanged, this, &MainWindow::enableApplyButton);
connect(ui->pwireAssumeAudioCheckBox, &QCheckBox::stateChanged, this, &MainWindow::enableApplyButton);
connect(ui->jackAutospawnCheckBox, &QCheckBox::stateChanged, this, &MainWindow::enableApplyButton);
connect(ui->jackConnectPortsCheckBox, &QCheckBox::stateChanged, this, &MainWindow::enableApplyButton);
connect(ui->jackRtMixCheckBox, &QCheckBox::stateChanged, this, &MainWindow::enableApplyButton);
connect(ui->jackBufferSizeSlider, &QSlider::valueChanged, this, &MainWindow::updateJackBufferSizeEdit);
connect(ui->jackBufferSizeLine, &QLineEdit::editingFinished, this, &MainWindow::updateJackBufferSizeSlider);
@@ -635,6 +647,8 @@ void MainWindow::loadConfig(const QString &fname)
ui->channelConfigCombo->setCurrentIndex(0);
if(channelconfig.isEmpty() == false)
{
if(channelconfig == "surround51rear")
channelconfig = "surround51";
QString str{getNameFromValue(speakerModeList, channelconfig)};
if(!str.isEmpty())
{
@@ -735,8 +749,7 @@ void MainWindow::loadConfig(const QString &fname)
}
}
bool hqmode{settings.value("decoder/hq-mode", true).toBool()};
ui->decoderHQModeCheckBox->setChecked(hqmode);
ui->decoderHQModeCheckBox->setChecked(getCheckState(settings.value("decoder/hq-mode")));
ui->decoderDistCompCheckBox->setCheckState(getCheckState(settings.value("decoder/distance-comp")));
ui->decoderNFEffectsCheckBox->setCheckState(getCheckState(settings.value("decoder/nfc")));
double refdelay{settings.value("decoder/nfc-ref-delay", 0.0).toDouble()};
@@ -760,11 +773,9 @@ void MainWindow::loadConfig(const QString &fname)
QString hrtfmode{settings.value("hrtf-mode").toString().trimmed()};
ui->hrtfmodeSlider->setValue(2);
ui->hrtfmodeLabel->setText(hrtfModeList[2].name);
/* The "basic" mode name is no longer supported, and "ambi3" is temporarily
* disabled. Use "ambi2" instead.
*/
if(hrtfmode == "basic" || hrtfmode == "ambi3")
ui->hrtfmodeLabel->setText(hrtfModeList[3].name);
/* The "basic" mode name is no longer supported. Use "ambi2" instead. */
if(hrtfmode == "basic")
hrtfmode = "ambi2";
for(int i = 0;hrtfModeList[i].name[0];i++)
{
@@ -917,8 +928,12 @@ void MainWindow::loadConfig(const QString &fname)
ui->pulseFixRateCheckBox->setCheckState(getCheckState(settings.value("pulse/fix-rate")));
ui->pulseAdjLatencyCheckBox->setCheckState(getCheckState(settings.value("pulse/adjust-latency")));
ui->pwireAssumeAudioCheckBox->setCheckState(settings.value("pipewire/assume-audio").toBool()
? Qt::Checked : Qt::Unchecked);
ui->jackAutospawnCheckBox->setCheckState(getCheckState(settings.value("jack/spawn-server")));
ui->jackConnectPortsCheckBox->setCheckState(getCheckState(settings.value("jack/connect-ports")));
ui->jackRtMixCheckBox->setCheckState(getCheckState(settings.value("jack/rt-mix")));
ui->jackBufferSizeLine->setText(settings.value("jack/buffer-size", QString()).toString());
updateJackBufferSizeSlider();
@@ -998,9 +1013,7 @@ void MainWindow::saveConfig(const QString &fname) const
settings.setValue("output-limiter", getCheckValue(ui->outputLimiterCheckBox));
settings.setValue("dither", getCheckValue(ui->outputDitherCheckBox));
settings.setValue("decoder/hq-mode",
ui->decoderHQModeCheckBox->isChecked() ? QString{/*"true"*/} : QString{"false"}
);
settings.setValue("decoder/hq-mode", getCheckValue(ui->decoderHQModeCheckBox));
settings.setValue("decoder/distance-comp", getCheckValue(ui->decoderDistCompCheckBox));
settings.setValue("decoder/nfc", getCheckValue(ui->decoderNFEffectsCheckBox));
double refdelay = ui->decoderNFRefDelaySpinBox->value();
@@ -1127,8 +1140,12 @@ void MainWindow::saveConfig(const QString &fname) const
settings.setValue("pulse/fix-rate", getCheckValue(ui->pulseFixRateCheckBox));
settings.setValue("pulse/adjust-latency", getCheckValue(ui->pulseAdjLatencyCheckBox));
settings.setValue("pipewire/assume-audio", ui->pwireAssumeAudioCheckBox->isChecked()
? QString{"true"} : QString{/*"false"*/});
settings.setValue("jack/spawn-server", getCheckValue(ui->jackAutospawnCheckBox));
settings.setValue("jack/connect-ports", getCheckValue(ui->jackConnectPortsCheckBox));
settings.setValue("jack/rt-mix", getCheckValue(ui->jackRtMixCheckBox));
settings.setValue("jack/buffer-size", ui->jackBufferSizeLine->text());
settings.setValue("alsa/device", ui->alsaDefaultDeviceLine->text());
@@ -62,7 +62,7 @@
<rect>
<x>110</x>
<y>50</y>
<width>76</width>
<width>80</width>
<height>31</height>
</rect>
</property>
@@ -111,7 +111,7 @@ float and converted to the output sample type as needed.</string>
<rect>
<x>110</x>
<y>20</y>
<width>76</width>
<width>80</width>
<height>31</height>
</rect>
</property>
@@ -129,7 +129,7 @@ to stereo output.</string>
<rect>
<x>380</x>
<y>20</y>
<width>96</width>
<width>100</width>
<height>31</height>
</rect>
</property>
@@ -437,12 +437,15 @@ frames needed for each mixing update.</string>
</property>
<property name="toolTip">
<string>Pan Pot uses standard amplitude panning (aka
pair-wise, stereo pair, etc) between -30 and +30
degrees, while UHJ creates a stereo-compatible
two-channel UHJ mix, which encodes some
surround sound information into stereo output
that can be decoded with a surround sound
receiver.</string>
pair-wise, stereo pair, etc).
UHJ creates a stereo-compatible two-channel
UHJ mix, which encodes some surround sound
information into stereo output that can be
decoded with a surround sound receiver.
Binaural applies HRTF filters to create a sense
of 3D space with headphones.</string>
</property>
</widget>
<widget class="QLabel" name="label_19">
@@ -632,6 +635,9 @@ appropriate speaker configuration you intend to use.</string>
<property name="text">
<string>High Quality Mode:</string>
</property>
<property name="tristate">
<bool>true</bool>
</property>
</widget>
<widget class="QCheckBox" name="decoderDistCompCheckBox">
<property name="geometry">
@@ -1219,6 +1225,11 @@ application or system to determine if it should be used.</string>
<string>PulseAudio</string>
</property>
</item>
<item>
<property name="text">
<string>PipeWire</string>
</property>
</item>
<item>
<property name="text">
<string>JACK</string>
@@ -1421,6 +1432,26 @@ drop-outs.</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="page_8">
<widget class="QCheckBox" name="pwireAssumeAudioCheckBox">
<property name="geometry">
<rect>
<x>20</x>
<y>10</y>
<width>161</width>
<height>21</height>
</rect>
</property>
<property name="toolTip">
<string>Assumes PipeWire has support for audio, allowing
the backend to initialize even when no audio devices
are reported.</string>
</property>
<property name="text">
<string>Assume audio support</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="page_7">
<widget class="QCheckBox" name="jackAutospawnCheckBox">
<property name="geometry">
@@ -1442,7 +1473,7 @@ drop-outs.</string>
<property name="geometry">
<rect>
<x>10</x>
<y>70</y>
<y>110</y>
<width>401</width>
<height>80</height>
</rect>
@@ -1450,7 +1481,8 @@ drop-outs.</string>
<property name="toolTip">
<string>The update buffer size, in samples, that the backend
will keep buffered to handle the server's real-time
processing requests. Must be a power of 2.</string>
processing requests. Must be a power of 2. Ignored
when Real-time Mixing is used.</string>
</property>
<property name="title">
<string>Buffer Size</string>
@@ -1516,6 +1548,30 @@ processing requests. Must be a power of 2.</string>
<bool>true</bool>
</property>
</widget>
<widget class="QCheckBox" name="jackRtMixCheckBox">
<property name="geometry">
<rect>
<x>20</x>
<y>70</y>
<width>141</width>
<height>21</height>
</rect>
</property>
<property name="toolTip">
<string>Renders samples directly in the real-time
processing callback. This allows for lower
latency and less overall CPU utilization, but
can increase the risk of underruns when
increasing the amount of processing the
mixer needs to do.</string>
</property>
<property name="text">
<string>Real-time Mixing</string>
</property>
<property name="tristate">
<bool>true</bool>
</property>
</widget>
</widget>
<widget class="QWidget" name="page_3">
<widget class="QLabel" name="label_17">
@@ -2317,7 +2373,7 @@ added by the ALC_EXT_DEDICATED extension.</string>
<rect>
<x>160</x>
<y>20</y>
<width>131</width>
<width>135</width>
<height>31</height>
</rect>
</property>