[gentoo-commits] repo/gentoo:master commit in: dev-qt/qtmultimedia/, dev-qt/qtmultimedia/files/, profiles/base/
commit: a531b45362dc7f478d5d449307df33c32ba4a41c Author: Aliaksei Urbanski gmail com> AuthorDate: Thu Jun 20 02:33:54 2024 + Commit: Ionen Wolkens gentoo org> CommitDate: Thu Jun 20 07:58:46 2024 + URL:https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a531b453 dev-qt/qtmultimedia: fix build with [gstreamer,-v4l] Closes: https://bugs.gentoo.org/934582 Signed-off-by: Aliaksei Urbanski gmail.com> Closes: https://github.com/gentoo/gentoo/pull/37221 Signed-off-by: Ionen Wolkens gentoo.org> .../files/qtmultimedia-6.7.2-gstreamer-no-v4l.patch | 20 dev-qt/qtmultimedia/qtmultimedia-6.7.2.ebuild| 4 profiles/base/package.use.force | 5 - 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/dev-qt/qtmultimedia/files/qtmultimedia-6.7.2-gstreamer-no-v4l.patch b/dev-qt/qtmultimedia/files/qtmultimedia-6.7.2-gstreamer-no-v4l.patch new file mode 100644 index ..0f61539b00d2 --- /dev/null +++ b/dev-qt/qtmultimedia/files/qtmultimedia-6.7.2-gstreamer-no-v4l.patch @@ -0,0 +1,20 @@ +# https://bugs.gentoo.org/934582 + +--- a/src/plugins/multimedia/gstreamer/mediacapture/qgstreamercamera.cpp b/src/plugins/multimedia/gstreamer/mediacapture/qgstreamercamera.cpp +@@ -718,6 +718,7 @@ int QGstreamerCamera::getV4L2Parameter(quint32 id) const + return control.value; + }); + } ++#endif // QT_CONFIG(linux_v4l) + + QGstreamerCustomCamera::QGstreamerCustomCamera(QCamera *camera) + : QGstreamerCameraBase{ +@@ -766,6 +767,4 @@ void QGstreamerCustomCamera::setActive(bool active) + emit activeChanged(active); + } + +-#endif +- + QT_END_NAMESPACE + diff --git a/dev-qt/qtmultimedia/qtmultimedia-6.7.2.ebuild b/dev-qt/qtmultimedia/qtmultimedia-6.7.2.ebuild index 99d03b1ca8be..25d6f40c49e6 100644 --- a/dev-qt/qtmultimedia/qtmultimedia-6.7.2.ebuild +++ b/dev-qt/qtmultimedia/qtmultimedia-6.7.2.ebuild @@ -53,6 +53,10 @@ DEPEND=" " BDEPEND="~dev-qt/qtshadertools-${PV}:6" +PATCHES=( + "${FILESDIR}"/${P}-gstreamer-no-v4l.patch +) + CMAKE_SKIP_TESTS=( # unimportant and expects all backends to be available (bug #928420) tst_backends diff --git a/profiles/base/package.use.force b/profiles/base/package.use.force index bcae6b1e7b1d..eba34cff8088 100644 --- a/profiles/base/package.use.force +++ b/profiles/base/package.use.force @@ -1,11 +1,6 @@ # Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -# Ionen Wolkens (2024-06-18) -# Disabling currently breaks build with USE=gstreamer, so forcing as -# a quick workaround until this is more closely looked at (bug #934582) ->=dev-qt/qtmultimedia-6.7.2 v4l - # Sam James (2024-06-03) # Poor rendering performance otherwise (bug #931215). kde-plasma/kwin caps
[gentoo-commits] repo/gentoo:master commit in: dev-qt/qtmultimedia/, dev-qt/qtmultimedia/files/
commit: 3872ab8d795358f253d71927783d0b7b7f646812 Author: Andreas Sturmlechner gentoo org> AuthorDate: Fri Sep 17 08:14:42 2021 + Commit: Andreas Sturmlechner gentoo org> CommitDate: Wed Sep 22 20:01:30 2021 + URL:https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3872ab8d dev-qt/qtmultimedia: Drop obsolete dev-qt/qtopengl dependency Thanks-to: Davide Pesavento gentoo.org> Package-Manager: Portage-3.0.23, Repoman-3.0.3 Signed-off-by: Andreas Sturmlechner gentoo.org> .../files/qtmultimedia-5.15.2-no-qtopengl.patch| 14 ++ dev-qt/qtmultimedia/qtmultimedia-5.15.2-r2.ebuild | 3 ++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/dev-qt/qtmultimedia/files/qtmultimedia-5.15.2-no-qtopengl.patch b/dev-qt/qtmultimedia/files/qtmultimedia-5.15.2-no-qtopengl.patch new file mode 100644 index 000..471bfabcce8 --- /dev/null +++ b/dev-qt/qtmultimedia/files/qtmultimedia-5.15.2-no-qtopengl.patch @@ -0,0 +1,14 @@ +Widgets were ported away from QtOpenGL in 5.15.0 but bogus dependency +remained: https://bugreports.qt.io/browse/QTBUG-81902 + +--- a/src/multimediawidgets/multimediawidgets.pro b/src/multimediawidgets/multimediawidgets.pro +@@ -2,8 +2,6 @@ + TARGET = QtMultimediaWidgets + QT = core gui multimedia widgets-private + QT_PRIVATE += multimedia-private +-qtHaveModule(opengl): \ +- QT_PRIVATE += opengl + + PRIVATE_HEADERS += \ + qvideowidget_p.h \ diff --git a/dev-qt/qtmultimedia/qtmultimedia-5.15.2-r2.ebuild b/dev-qt/qtmultimedia/qtmultimedia-5.15.2-r2.ebuild index 46226e53182..8148aa4f31b 100644 --- a/dev-qt/qtmultimedia/qtmultimedia-5.15.2-r2.ebuild +++ b/dev-qt/qtmultimedia/qtmultimedia-5.15.2-r2.ebuild @@ -31,7 +31,6 @@ RDEPEND=" openal? ( media-libs/openal ) ) widgets? ( - =dev-qt/qtopengl-${QT5_PV}* =dev-qt/qtwidgets-${QT5_PV}*[gles2-only=] media-libs/libglvnd ) @@ -40,6 +39,8 @@ DEPEND="${RDEPEND} gstreamer? ( x11-base/xorg-proto ) " +PATCHES=( "${FILESDIR}/${PN}-5.15.2-no-qtopengl.patch" ) + src_prepare() { sed -i -e '/CONFIG\s*+=/ s/optimize_full//' \ src/multimedia/multimedia.pro || die
[gentoo-commits] repo/gentoo:master commit in: dev-qt/qtmultimedia/, dev-qt/qtmultimedia/files/
commit: 79b01c63e8883b87f27772a20e07116f6af97d15 Author: Andreas Sturmlechner gentoo org> AuthorDate: Tue Jun 9 19:14:47 2020 + Commit: Andreas Sturmlechner gentoo org> CommitDate: Wed Jun 10 17:52:30 2020 + URL:https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=79b01c63 dev-qt/qtmultimedia: Gstreamer: fix stream buffering Package-Manager: Portage-2.3.100, Repoman-2.3.22 Signed-off-by: Andreas Sturmlechner gentoo.org> .../qtmultimedia-5.14.2-gstreamer-buffering.patch | 38 dev-qt/qtmultimedia/qtmultimedia-5.14.2-r1.ebuild | 72 ++ 2 files changed, 110 insertions(+) diff --git a/dev-qt/qtmultimedia/files/qtmultimedia-5.14.2-gstreamer-buffering.patch b/dev-qt/qtmultimedia/files/qtmultimedia-5.14.2-gstreamer-buffering.patch new file mode 100644 index 000..5d17b079613 --- /dev/null +++ b/dev-qt/qtmultimedia/files/qtmultimedia-5.14.2-gstreamer-buffering.patch @@ -0,0 +1,38 @@ +From d8d072417b08dd75734b3f0aa86c3a49db934770 Mon Sep 17 00:00:00 2001 +From: Roman Valov +Date: Mon, 13 Apr 2020 12:54:09 + +Subject: [PATCH] Gstreamer: fix stream buffering + +Gstreamer client should handle GST_MESSAGE_BUFFERING to play and pause +streams based on buffer-percent value and Qt does it properly. +However `updateSessionState` of QGstreamerPlayerControl was implemented +to go back into playing state each time session state becomes paused. +That behavior resulted into choppy stream playback. +Fix with condition to un-pause playback only if it's already buffered. + +Fixes: QTBUG-83417 +Change-Id: Ida4a9e2e196de00050bdc64725fa818c7e939785 +Reviewed-by: VaL Doroshchuk +--- + src/gsttools/qgstreamerplayercontrol.cpp | 6 -- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/gsttools/qgstreamerplayercontrol.cpp b/src/gsttools/qgstreamerplayercontrol.cpp +index 165978288..d65102e2f 100644 +--- a/src/gsttools/qgstreamerplayercontrol.cpp b/src/gsttools/qgstreamerplayercontrol.cpp +@@ -439,8 +439,10 @@ void QGstreamerPlayerControl::updateSessionState(QMediaPlayer::State state) + } + m_pendingSeekPosition = -1; + +-if (m_currentState == QMediaPlayer::PlayingState) +-m_session->play(); ++if (m_currentState == QMediaPlayer::PlayingState) { ++if (m_mediaStatus == QMediaPlayer::BufferedMedia) ++m_session->play(); ++} + } + + updateMediaStatus(); +-- +2.16.3 diff --git a/dev-qt/qtmultimedia/qtmultimedia-5.14.2-r1.ebuild b/dev-qt/qtmultimedia/qtmultimedia-5.14.2-r1.ebuild new file mode 100644 index 000..57c260a9bee --- /dev/null +++ b/dev-qt/qtmultimedia/qtmultimedia-5.14.2-r1.ebuild @@ -0,0 +1,72 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +inherit qt5-build + +DESCRIPTION="Multimedia (audio, video, radio, camera) library for the Qt5 framework" + +if [[ ${QT5_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86" +fi + +IUSE="alsa gles2-only gstreamer openal pulseaudio qml widgets" + +RDEPEND=" + ~dev-qt/qtcore-${PV} + ~dev-qt/qtgui-${PV}[gles2-only=] + ~dev-qt/qtnetwork-${PV} + alsa? ( media-libs/alsa-lib ) + gstreamer? ( + dev-libs/glib:2 + media-libs/gstreamer:1.0 + media-libs/gst-plugins-bad:1.0 + media-libs/gst-plugins-base:1.0 + ) + pulseaudio? ( media-sound/pulseaudio[glib] ) + qml? ( + ~dev-qt/qtdeclarative-${PV} + gles2-only? ( ~dev-qt/qtgui-${PV}[egl] ) + openal? ( media-libs/openal ) + ) + widgets? ( + ~dev-qt/qtopengl-${PV} + ~dev-qt/qtwidgets-${PV}[gles2-only=] + ) +" +DEPEND="${RDEPEND} + gstreamer? ( x11-base/xorg-proto ) +" + +PATCHES=( + "${FILESDIR}/${P}-gstreamer-buffering.patch" # QTBUG-83417 +) + +src_prepare() { + sed -i -e '/CONFIG\s*+=/ s/optimize_full//' \ + src/multimedia/multimedia.pro || die + + qt_use_disable_config openal openal \ + src/imports/imports.pro + + qt_use_disable_mod qml quick \ + src/src.pro \ + src/plugins/plugins.pro + + qt_use_disable_mod widgets widgets \ + src/src.pro \ + src/gsttools/gsttools.pro \ + src/plugins/gstreamer/common.pri + + qt5-build_src_prepare +} + +src_configure() { + local myqmakeargs=( + -- + $(qt_use alsa) + $(qt_use gstreamer) + $(qt_use pulseaudio) + ) + qt5-build_src_configure +}
[gentoo-commits] repo/gentoo:master commit in: dev-qt/qtmultimedia/, dev-qt/qtmultimedia/files/
commit: bb3337783ed47ebf099beeb28e378c2651ddc0ec Author: Andreas Sturmlechner gentoo org> AuthorDate: Sat Nov 16 10:49:23 2019 + Commit: Andreas Sturmlechner gentoo org> CommitDate: Wed Nov 20 21:20:41 2019 + URL:https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bb333778 dev-qt/qtmultimedia: Fix crash if video sink is used when destroyed Package-Manager: Portage-2.3.79, Repoman-2.3.17 Signed-off-by: Andreas Sturmlechner gentoo.org> .../qtmultimedia-5.13.2-gstreamer-crash.patch | 40 + dev-qt/qtmultimedia/qtmultimedia-5.13.2-r1.ebuild | 70 ++ 2 files changed, 110 insertions(+) diff --git a/dev-qt/qtmultimedia/files/qtmultimedia-5.13.2-gstreamer-crash.patch b/dev-qt/qtmultimedia/files/qtmultimedia-5.13.2-gstreamer-crash.patch new file mode 100644 index 000..ffcdc89c1d3 --- /dev/null +++ b/dev-qt/qtmultimedia/files/qtmultimedia-5.13.2-gstreamer-crash.patch @@ -0,0 +1,40 @@ +From 4d251f072c6f97b4cf4618103e4e857e499c5ed7 Mon Sep 17 00:00:00 2001 +From: VaL Doroshchuk +Date: Tue, 5 Nov 2019 13:39:55 +0100 +Subject: [PATCH] GStreamer: Fix crash when video sink is used when it has been + destroyed + +When custom pipeline is requested, all playbin related elements must be cleared. + +Also when QMediaPlayer is destroying, it disables showing preroll frames, +property of the video sink, which was already destroyed. + +Destroying of m_videoOutputBin decreases refcounter for m_videoSink, +since the video sink is owned by m_videoOutputBin. + +Fixes: QTBUG-79753 +Change-Id: I2fcbd19372caf46adf2ae1ed2e5a7d0ee70040ad +Reviewed-by: Timur Pocheptsov +--- + src/gsttools/qgstreamerplayersession.cpp | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/gsttools/qgstreamerplayersession.cpp b/src/gsttools/qgstreamerplayersession.cpp +index c0998d7ae..05e419b10 100644 +--- a/src/gsttools/qgstreamerplayersession.cpp b/src/gsttools/qgstreamerplayersession.cpp +@@ -252,8 +252,11 @@ void QGstreamerPlayerSession::resetElements() + resetGstObject(m_nullVideoSink); + resetGstObject(m_videoOutputBin); + ++m_audioSink = nullptr; + m_volumeElement = nullptr; + m_videoIdentity = nullptr; ++m_pendingVideoSink = nullptr; ++m_videoSink = nullptr; + } + + GstElement *QGstreamerPlayerSession::playbin() const +-- +2.16.3 + diff --git a/dev-qt/qtmultimedia/qtmultimedia-5.13.2-r1.ebuild b/dev-qt/qtmultimedia/qtmultimedia-5.13.2-r1.ebuild new file mode 100644 index 000..767ac97515a --- /dev/null +++ b/dev-qt/qtmultimedia/qtmultimedia-5.13.2-r1.ebuild @@ -0,0 +1,70 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +inherit qt5-build + +DESCRIPTION="Multimedia (audio, video, radio, camera) library for the Qt5 framework" + +if [[ ${QT5_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86" +fi + +IUSE="alsa gles2 gstreamer openal pulseaudio qml widgets" + +RDEPEND=" + ~dev-qt/qtcore-${PV} + ~dev-qt/qtgui-${PV}[gles2=] + ~dev-qt/qtnetwork-${PV} + alsa? ( media-libs/alsa-lib ) + gstreamer? ( + dev-libs/glib:2 + media-libs/gstreamer:1.0 + media-libs/gst-plugins-bad:1.0 + media-libs/gst-plugins-base:1.0 + ) + pulseaudio? ( media-sound/pulseaudio[glib] ) + qml? ( + ~dev-qt/qtdeclarative-${PV} + gles2? ( ~dev-qt/qtgui-${PV}[egl] ) + openal? ( media-libs/openal ) + ) + widgets? ( + ~dev-qt/qtopengl-${PV} + ~dev-qt/qtwidgets-${PV}[gles2=] + ) +" +DEPEND="${RDEPEND} + gstreamer? ( x11-base/xorg-proto ) +" + +PATCHES=( "${FILESDIR}/${P}-gstreamer-crash.patch" ) # QTBUG-79753 + +src_prepare() { + sed -i -e '/CONFIG\s*+=/ s/optimize_full//' \ + src/multimedia/multimedia.pro || die + + qt_use_disable_config openal openal \ + src/imports/imports.pro + + qt_use_disable_mod qml quick \ + src/src.pro \ + src/plugins/plugins.pro + + qt_use_disable_mod widgets widgets \ + src/src.pro \ + src/gsttools/gsttools.pro \ + src/plugins/gstreamer/common.pri + + qt5-build_src_prepare +} + +src_configure() { + local myqmakeargs=( + -- + $(qt_use alsa) + $(qt_use gstreamer) + $(qt_use pulseaudio) + ) + qt5-build_src_configure +}
[gentoo-commits] repo/gentoo:master commit in: dev-qt/qtmultimedia/, dev-qt/qtmultimedia/files/
commit: 46fa9a3fbb5f9727a44ac42c5ac6e82725446e3e Author: Davide Pesavento gentoo org> AuthorDate: Fri Jan 22 22:47:47 2016 + Commit: Davide Pesavento gentoo org> CommitDate: Fri Jan 22 22:49:40 2016 + URL:https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=46fa9a3f dev-qt/qtmultimedia: backport alsa detection patch to Qt4 Gentoo-Bug: 572426 Package-Manager: portage-2.2.27 ...4.8.6-Relax-ALSA-version-checks-for-1.1.x.patch | 155 + dev-qt/qtmultimedia/qtmultimedia-4.8.6-r1.ebuild | 3 +- dev-qt/qtmultimedia/qtmultimedia-4.8.7.ebuild | 1 + 3 files changed, 158 insertions(+), 1 deletion(-) diff --git a/dev-qt/qtmultimedia/files/qtmultimedia-4.8.6-Relax-ALSA-version-checks-for-1.1.x.patch b/dev-qt/qtmultimedia/files/qtmultimedia-4.8.6-Relax-ALSA-version-checks-for-1.1.x.patch new file mode 100644 index 000..6a040b2 --- /dev/null +++ b/dev-qt/qtmultimedia/files/qtmultimedia-4.8.6-Relax-ALSA-version-checks-for-1.1.x.patch @@ -0,0 +1,155 @@ +From 7737e5f851fdf33ea3e8e60cf7856f47565f09d3 Mon Sep 17 00:00:00 2001 +From: Davide Pesavento+Date: Fri, 22 Jan 2016 23:17:16 +0100 +Subject: [PATCH] Relax ALSA version checks for alsa-lib >= 1.1.0 + +Backport of qtmultimedia/3b322323d036ae2fc9f685bfc74d1ebcd5532159 +--- + config.tests/unix/alsa/alsatest.cpp | 2 +- + src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp | 16 + src/multimedia/audio/qaudiodeviceinfo_alsa_p.h | 2 +- + src/multimedia/audio/qaudioinput_alsa_p.cpp | 4 ++-- + src/multimedia/audio/qaudiooutput_alsa_p.cpp | 4 ++-- + 5 files changed, 14 insertions(+), 14 deletions(-) + +diff --git a/config.tests/unix/alsa/alsatest.cpp b/config.tests/unix/alsa/alsatest.cpp +index ac5f1e1..8d78f95 100644 +--- a/config.tests/unix/alsa/alsatest.cpp b/config.tests/unix/alsa/alsatest.cpp +@@ -40,7 +40,7 @@ + / + + #include +-#if(!(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 10)) ++#if (!(SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 10))) + #error "Alsa version found too old, require >= 1.0.10" + #endif + +diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp +index 973cbab..a09dcf6 100644 +--- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp +@@ -63,7 +63,7 @@ QAudioDeviceInfoInternal::QAudioDeviceInfoInternal(QByteArray dev, QAudio::Mode + device = QLatin1String(dev); + this->mode = mode; + +-#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + checkSurround(); + #endif + } +@@ -159,13 +159,13 @@ bool QAudioDeviceInfoInternal::open() + QList devices = availableDevices(mode); + + if(dev.compare(QLatin1String("default")) == 0) { +-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + dev = QLatin1String(devices.first().constData()); + #else + dev = QLatin1String("hw:0,0"); + #endif + } else { +-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + dev = device; + #else + int idx = 0; +@@ -212,13 +212,13 @@ bool QAudioDeviceInfoInternal::testSettings(const QAudioFormat& format) const + QList devices = QAudioDeviceInfoInternal::availableDevices(QAudio::AudioOutput); + + if(dev.compare(QLatin1String("default")) == 0) { +-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + dev = QLatin1String(devices.first().constData()); + #else + dev = QLatin1String("hw:0,0"); + #endif + } else { +-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + dev = device; + #else + int idx = 0; +@@ -396,7 +396,7 @@ void QAudioDeviceInfoInternal::updateLists() + } + channelz.append(1); + channelz.append(2); +-#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + if (surround40) channelz.append(4); + if (surround51) channelz.append(6); + if (surround71) channelz.append(8); +@@ -419,7 +419,7 @@ QList QAudioDeviceInfoInternal::availableDevices(QAudio::Mode mode) + QList devices; + QByteArray filter; + +-#if(SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) ++#if (SND_LIB_MAJOR == 1 && (SND_LIB_MINOR > 0 || SND_LIB_SUBMINOR >= 14)) + // Create a list of all current audio devices that support mode +