openSUSE Commits
Threads by month
- ----- 2024 -----
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
June 2012
- 1 participants
- 1446 discussions
Hello community,
here is the log from the commit of package dvb for openSUSE:Factory checked in at 2012-06-01 07:19:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dvb (Old)
and /work/SRC/openSUSE:Factory/.dvb.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dvb", Maintainer is "duwe(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/dvb/dvb.changes 2012-04-02 10:29:03.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.dvb.new/dvb.changes 2012-06-01 07:20:00.000000000 +0200
@@ -1,0 +2,6 @@
+Thu May 31 09:58:04 UTC 2012 - lnussel(a)suse.de
+
+- update to 1.1.1_20120410
+ * updated scan files and some bug fixes
+
+-------------------------------------------------------------------
Old:
----
channels-fr-Gironde.patch
dvb-README.SuSE
dvb-apps-1.1.1_20100509.tar.bz2
dvb-apps-v4l-2.6.38.patch
New:
----
dvb-apps-1.1.1_20120410.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ dvb.spec ++++++
--- /var/tmp/diff_new_pack.WqTrUV/_old 2012-06-01 07:20:01.000000000 +0200
+++ /var/tmp/diff_new_pack.WqTrUV/_new 2012-06-01 07:20:01.000000000 +0200
@@ -1,7 +1,7 @@
#
# spec file for package dvb
#
-# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
%if !%{defined snapver}
-%define snapver 20100509
+%define snapver 20120410
%endif
Name: dvb
@@ -29,12 +29,12 @@
%define firmwaredir /lib/firmware
License: GPL-2.0+
Group: Hardware/TV
+Url: http://linuxtv.org/
PreReq: %fillup_prereq %insserv_prereq
Version: 1.1.1%{?snapver:_%snapver}
Release: 1
Summary: Tools for Digital (DVB) TV Cards
Source: dvb-apps-%{version}.tar.bz2
-Source1: dvb-README.SuSE
Source2: rcdvb
Source3: sysconfig.dvb
Source4: http://linuxtv.org/downloads/firmware/dvb-ttpci-01.fw-2622
@@ -42,8 +42,6 @@
Patch: dvb-apps-dvbnet.diff
Patch1: dvb-includes.diff
Patch2: cz-kojal.patch
-Patch3: dvb-apps-v4l-2.6.38.patch
-Patch4: channels-fr-Gironde.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
# This package provides the firmware for some cards supported by the
# dvb-ttpci.ko module. Add the modalias dependencies for this module:
@@ -54,19 +52,13 @@
# Generated with: extract-modaliases -i dvb-ttpci kernel-default.rpm
%description
-This package contains tools to be used with the driver for DVB cards.
-You can find further information in
-/usr/share/doc/packages/dvb/README.SuSE.
+DVB tools and transponder files useful for DVB TV Cards
%prep
%setup -q -n dvb-apps-%{version}
%patch
%patch1
%patch2 -p1
-%if 0%{?suse_version} >= 1210
-%patch3
-%endif
-%patch4 -p1
find -name .hg -type d | xargs rm -rfv
find -name .cvsignore -type f | xargs rm -fv
find -name '*.orig' -type f | xargs rm -fv
@@ -89,7 +81,6 @@
## docu
install -d -m 755 $DESTDIR%{_docdir}/dvb
install -m 644 README $DESTDIR%{_docdir}/dvb
-install -m 644 %{SOURCE1} $DESTDIR%{_docdir}/dvb/README.SuSE
#
##
make \
++++++ dvb-apps-1.1.1_20100509.tar.bz2 -> dvb-apps-1.1.1_20120410.tar.bz2 ++++++
++++ 12857 lines of diff (skipped)
++++++ sysconfig.dvb ++++++
--- /var/tmp/diff_new_pack.WqTrUV/_old 2012-06-01 07:20:02.000000000 +0200
+++ /var/tmp/diff_new_pack.WqTrUV/_new 2012-06-01 07:20:02.000000000 +0200
@@ -16,8 +16,6 @@
# frontend modules. Set to "no" to not load dvb modules.
#
# Note: this is usually only needed if you want vdr to reload
-# certain modules when VDR_RELOADDVB is set. For any other purpose
-# use YaST2 or the hwup method as described in
-# /usr/share/doc/packages/dvb/README.SuSE to load modules.
+# certain modules when VDR_RELOADDVB is set.
#
DVB_LOAD_MODULES=
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package conntrack-tools for openSUSE:Factory checked in at 2012-06-01 07:19:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/conntrack-tools (Old)
and /work/SRC/openSUSE:Factory/.conntrack-tools.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "conntrack-tools", Maintainer is "JShi(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/conntrack-tools/conntrack-tools.changes 2012-05-29 10:33:04.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.conntrack-tools.new/conntrack-tools.changes 2012-06-01 07:19:53.000000000 +0200
@@ -1,0 +2,5 @@
+Thu May 31 12:03:49 UTC 2012 - jengelh(a)inai.de
+
+- Resolve compilation failure due to missing #include
+
+-------------------------------------------------------------------
New:
----
ct-null.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ conntrack-tools.spec ++++++
--- /var/tmp/diff_new_pack.1PI8o5/_old 2012-06-01 07:19:54.000000000 +0200
+++ /var/tmp/diff_new_pack.1PI8o5/_new 2012-06-01 07:19:54.000000000 +0200
@@ -24,6 +24,7 @@
#Git-Clone: git://git.netfilter.org/conntrack-tools
Source: http://netfilter.org/projects/conntrack-tools/files/%name-%version.tar.bz2
Source2: http://netfilter.org/projects/conntrack-tools/files/%name-%version.tar.bz2.…
+Patch1: ct-null.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: bison
BuildRequires: flex >= 2.5.33
@@ -49,6 +50,7 @@
%prep
%setup -q
+%patch -P 1 -p1
%build
%configure --disable-static
++++++ ct-null.diff ++++++
[...]
CC parse.o
parse.c: In function 'msg2ct':
parse.c:258:34: error: 'NULL' undeclared (first use in this function)
parse.c:258:34: note: each undeclared identifier is reported only once for each function it appears in
parse.c: In function 'msg2exp':
parse.c:438:16: error: 'NULL' undeclared (first use in this function)
---
src/parse.c | 1 +
1 file changed, 1 insertion(+)
Index: conntrack-tools/src/parse.c
===================================================================
--- conntrack-tools.orig/src/parse.c
+++ conntrack-tools/src/parse.c
@@ -17,6 +17,7 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
+#include <stdio.h>
#include "network.h"
#include <libnetfilter_conntrack/libnetfilter_conntrack.h>
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package cifs-utils for openSUSE:Factory checked in at 2012-06-01 07:19:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cifs-utils (Old)
and /work/SRC/openSUSE:Factory/.cifs-utils.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cifs-utils", Maintainer is "SJayaraman(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/cifs-utils/cifs-utils.changes 2012-05-08 06:45:02.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.cifs-utils.new/cifs-utils.changes 2012-06-01 07:19:41.000000000 +0200
@@ -1,0 +2,6 @@
+Wed May 16 16:29:18 UTC 2012 - lmuelle(a)suse.com
+
+- BuildRequire libtalloc2-devel instead of libtalloc-devel for post 12.1
+ systems.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ cifs-utils.spec ++++++
--- /var/tmp/diff_new_pack.cG7MHF/_old 2012-06-01 07:19:43.000000000 +0200
+++ /var/tmp/diff_new_pack.cG7MHF/_new 2012-06-01 07:19:43.000000000 +0200
@@ -53,7 +53,11 @@
%else
BuildRequires: libcap-devel
%endif
+%if 0%{?suse_version} == 0 || 0%{?suse_version} > 1210
+BuildRequires: libtalloc2-devel
+%else
BuildRequires: libtalloc-devel
+%endif
%if 0%{?suse_version} > 1110
BuildRequires: fdupes
%endif
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package automake for openSUSE:Factory checked in at 2012-06-01 07:19:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/automake (Old)
and /work/SRC/openSUSE:Factory/.automake.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "automake", Maintainer is "pth(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/automake/automake-testsuite.changes 2012-04-19 08:48:39.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.automake.new/automake-testsuite.changes 2012-06-01 07:19:39.000000000 +0200
@@ -1,0 +2,78 @@
+Fri May 4 15:23:03 CEST 2012 - pth(a)suse.de
+
+- Run pre_checkin.sh manually.
+
+-------------------------------------------------------------------
+Thu Apr 26 16:32:56 CEST 2012 - pth(a)suse.de
+
+- Update to 1.12:
+ * Changes to Yacc and Lex support:
+
+ - C source and header files derived from non-distributed Yacc
+ and/or Lex sources are now removed by a simple "make clean"
+ (while they were previously removed only by "make
+ maintainer-clean").
+
+ - Slightly backward-incompatible change, relevant only for use of
+ Yacc with C++: the extensions of the header files produced by the
+ Yacc rules are now modelled after the extension of the
+ corresponding sources. For example, yacc files named "foo.y++"
+ and "bar.yy" will produce header files named "foo.h++" and
+ "bar.hh" respectively, where they would have previously produced
+ header files named simply "foo.h" and "bar.h". This change
+ offers better compatibility with 'bison -o'.
+
+ * Miscellaneous changes:
+
+ - The AM_PROG_VALAC macro now causes configure to exit with status
+ 77, rather than 1, if the vala compiler found is too old.
+
+ - The build system of Automake itself now avoids the use of make
+ recursion as much as possible.
+
+ - Automake now prefers to quote 'like this' or "like this", rather
+ than `like this', in diagnostic message and generated Makefiles,
+ to accommodate the new GNU Coding Standards recommendations.
+
+ - Automake has a new option '--print-libdir' that prints the path
+ of the directory containing the Automake-provided scripts and
+ data files.
+
+ - The 'dist' and 'dist-all' targets now can run compressors in
+ - parallel.
+
+ - The rules to create pdf, dvi and ps output from Texinfo files now
+ works better with modern 'texi2dvi' script, by explicitly passing
+ it the '--clean' option to ensure stray auxiliary files are not
+ left to clutter the build directory.
+
+ - Automake can now generate silenced rules for texinfo outputs.
+
+ - Some auxiliary files that are automatically distributed by
+ Automake (e.g., 'install-sh', or the 'depcomp' script for
+ packages compiling C sources) might now be listed in the
+ DIST_COMMON variable in many Makefile.in files, rather than in
+ the top-level one.
+
+ - Messages of types warning or error from 'automake' and 'aclocal'
+ are now prefixed with the respective type, and presence of
+ -Werror is noted.
+
+ - Automake's early configure-time sanity check now tries to avoid
+ sleeping for a second, which slowed down cached configure runs
+ noticeably. In that case, it will check back at the end of the
+ configure script to ensure that at least one second has passed,
+ to avoid time stamp issues with makefile rules rerunning
+ autotools programs.
+
+ - The warnings in the category 'extra-portability' are now enabled
+ by '-Wall'. In previous versions, one has to use
+ '-Wextra-portability' to enable them.
+
+
+ - Various minor bugfixes for recent or long-standing bugs.
+
+ For a more detailed list see the file NEWS in the package
+ documentation.
+
+-------------------------------------------------------------------
automake.changes: same change
Old:
----
automake-1.11.5.tar.xz
New:
----
automake-1.12.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ automake-testsuite.spec ++++++
--- /var/tmp/diff_new_pack.frhjed/_old 2012-06-01 07:19:41.000000000 +0200
+++ /var/tmp/diff_new_pack.frhjed/_new 2012-06-01 07:19:41.000000000 +0200
@@ -19,11 +19,19 @@
Name: automake-testsuite
BuildRequires: autoconf
BuildRequires: bison
+BuildRequires: gcc-c++
+BuildRequires: gcc-fortran
BuildRequires: help2man
BuildRequires: xz
+%if "%{name}" == "automake-testsuite"
+BuildRequires: libtool
+Requires: libtool
+BuildRequires: flex
+Requires: flex
+%endif
Requires: autoconf >= 2.62
Requires: info
-Version: 1.11.5
+Version: 1.12
Release: 0
Summary: A Program for Automatically Generating GNU-Style Makefile.in Files
License: GPL-2.0+
++++++ automake.spec ++++++
--- /var/tmp/diff_new_pack.frhjed/_old 2012-06-01 07:19:41.000000000 +0200
+++ /var/tmp/diff_new_pack.frhjed/_new 2012-06-01 07:19:41.000000000 +0200
@@ -19,11 +19,19 @@
Name: automake
BuildRequires: autoconf
BuildRequires: bison
+BuildRequires: gcc-c++
+BuildRequires: gcc-fortran
BuildRequires: help2man
BuildRequires: xz
+%if "%{name}" == "automake-testsuite"
+BuildRequires: libtool
+Requires: libtool
+BuildRequires: flex
+Requires: flex
+%endif
Requires: autoconf >= 2.62
Requires: info
-Version: 1.11.5
+Version: 1.12
Release: 0
Summary: A Program for Automatically Generating GNU-Style Makefile.in Files
License: GPL-2.0+
++++++ automake-require_file.patch ++++++
--- /var/tmp/diff_new_pack.frhjed/_old 2012-06-01 07:19:41.000000000 +0200
+++ /var/tmp/diff_new_pack.frhjed/_new 2012-06-01 07:19:41.000000000 +0200
@@ -1,20 +1,20 @@
Index: automake.in
===================================================================
---- automake.in.orig 2012-04-13 16:46:00.000000000 +0200
-+++ automake.in 2012-04-18 11:35:58.420388812 +0200
-@@ -7878,12 +7878,14 @@ sub require_file_internal ($$$@)
- my $fullfile = "$dir/$file";
- my $found_it = 0;
- my $dangling_sym = 0;
-+ my $thisdir = dirname ($fullfile);
-+ my $thisfile = basename ($fullfile);
+--- automake.in.orig 2012-04-21 16:38:05.000000000 +0200
++++ automake.in 2012-04-26 16:31:55.925021393 +0200
+@@ -7709,12 +7709,14 @@ sub required_file_check_or_copy ($$$)
+ my $fullfile = "$dir/$file";
+ my $found_it = 0;
+ my $dangling_sym = 0;
++ my $thisdir = dirname ($fullfile);
++ my $thisfile = basename ($fullfile);
- if (-l $fullfile && ! -f $fullfile)
- {
- $dangling_sym = 1;
- }
-- elsif (dir_has_case_matching_file ($dir, $file))
-+ elsif (dir_has_case_matching_file ($thisdir, $thisfile))
- {
- $found_it = 1;
- maybe_push_required_file ($dir, $file, $fullfile);
+ if (-l $fullfile && ! -f $fullfile)
+ {
+ $dangling_sym = 1;
+ }
+- elsif (dir_has_case_matching_file ($dir, $file))
++ elsif (dir_has_case_matching_file ($thisdir, $thisfile))
+ {
+ $found_it = 1;
+ }
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package alsa-utils for openSUSE:Factory checked in at 2012-06-01 07:19:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/alsa-utils (Old)
and /work/SRC/openSUSE:Factory/.alsa-utils.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "alsa-utils", Maintainer is "tiwai(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/alsa-utils/alsa-utils.changes 2012-01-27 15:16:40.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.alsa-utils.new/alsa-utils.changes 2012-06-01 07:19:37.000000000 +0200
@@ -1,0 +2,14 @@
+Tue May 29 11:25:14 CEST 2012 - tiwai(a)suse.de
+
+- backport fix patches from upstream:
+ * Some document fixes
+ * Improve xrun_sync in alsaloop
+ * Add option to dump HW parameters to aplay
+ * Add the support for mapped volumes to amixer
+ * Add option to tread any xrun as fatal to aplay/arecord
+ * configure.in fixes
+ * alsactl: Don't access other cards than specified
+ * aplay prints Vu-meter to stderr now
+ * fix the avail_min setup in alsaloop
+
+-------------------------------------------------------------------
New:
----
0001-Fix-the-examples-in-aplay.1.patch
0002-Trivial-fixes-in-INSTALL-file.patch
0004-alsaloop-Improve-xrun_sync-fill-missing-playback-sam.patch
0005-aplay-option-to-dump-HW-parameters.patch
0006-amixer-Add-the-support-for-mapped-volumes-like-alsam.patch
0007-aplay-arecord-option-to-treat-any-xrun-as-fatal.patch
0008-amixer-alsamixer-Add-description-of-volume-mapping.patch
0009-configure.in-look-for-ncurses-pkg-config-first.patch
0010-configure.in-use-AS_HELP_STRING-everywhere.patch
0011-alsactl-Do-not-access-other-cards-than-specified-for.patch
0012-aplay-print-vu-meter-to-stderr-not-stdout.patch
0013-alsaloop-fix-the-avail_min-setup.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ alsa-utils.spec ++++++
--- /var/tmp/diff_new_pack.1iQV1K/_old 2012-06-01 07:19:38.000000000 +0200
+++ /var/tmp/diff_new_pack.1iQV1K/_new 2012-06-01 07:19:38.000000000 +0200
@@ -15,6 +15,7 @@
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
+
#
%if %suse_version > 1130
%define use_systemd 1
@@ -32,7 +33,9 @@
BuildRequires: xmlto
%define package_version 1.0.25
Provides: alsa-conf
-Requires: dialog pciutils alsa
+Requires: alsa
+Requires: dialog
+Requires: pciutils
Summary: Advanced Linux Sound Architecture Utilities
License: GPL-2.0+
Group: Productivity/Multimedia/Sound/Players
@@ -40,6 +43,18 @@
Release: 0
Source: ftp://ftp.alsa-project.org/pub/utils/alsa-utils-%{package_version}.tar.bz2
# Patch: alsa-utils-git-fixes.diff
+Patch1: 0001-Fix-the-examples-in-aplay.1.patch
+Patch2: 0002-Trivial-fixes-in-INSTALL-file.patch
+Patch4: 0004-alsaloop-Improve-xrun_sync-fill-missing-playback-sam.patch
+Patch5: 0005-aplay-option-to-dump-HW-parameters.patch
+Patch6: 0006-amixer-Add-the-support-for-mapped-volumes-like-alsam.patch
+Patch7: 0007-aplay-arecord-option-to-treat-any-xrun-as-fatal.patch
+Patch8: 0008-amixer-alsamixer-Add-description-of-volume-mapping.patch
+Patch9: 0009-configure.in-look-for-ncurses-pkg-config-first.patch
+Patch10: 0010-configure.in-use-AS_HELP_STRING-everywhere.patch
+Patch11: 0011-alsactl-Do-not-access-other-cards-than-specified-for.patch
+Patch12: 0012-aplay-print-vu-meter-to-stderr-not-stdout.patch
+Patch13: 0013-alsaloop-fix-the-avail_min-setup.patch
Patch99: alsa-utils-gettext-version-removal.diff
Url: http://www.alsa-project.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -54,6 +69,18 @@
sed -i -e's/EXTRA_DIST= config.rpath /EXTRA_DIST=/' Makefile.am
# rm -f po/Makefile* po/*.gmo po/*.pot po/*.header po/stamp-*
# patch -p1
+%patch1 -p1
+%patch2 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%patch13 -p1
%if %suse_version < 1020
%patch99 -p1
%endif
++++++ 0001-Fix-the-examples-in-aplay.1.patch ++++++
>From 5b91ee7f61d9d743bb30b3dc0d98422bb0cd3092 Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex(a)perex.cz>
Date: Mon, 6 Feb 2012 14:58:03 +0100
Subject: [PATCH 01/13] Fix the examples in aplay.1
Signed-off-by: Jaroslav Kysela <perex(a)perex.cz>
---
aplay/aplay.1 | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/aplay/aplay.1 b/aplay/aplay.1
index 8ccf556..2acaed5 100644
--- a/aplay/aplay.1
+++ b/aplay/aplay.1
@@ -213,14 +213,14 @@ pcm.copy {
.fi
.TP
-\fBarecord \-t wav \-max-file_time 30 mon.wav\fP
+\fBarecord \-t wav \-\-max-file-time 30 mon.wav\fP
Record from the default audio source in monaural, 8,000 samples
per second, 8 bits per sample. Start a new file every
30 seconds. File names are mon-nn.wav, where nn increases
from 01. The file after mon-99.wav is mon-100.wav.
.TP
-\fBarecord \-f cd \-t wav \-max-file-time 3600 --use-strftime %Y/%m/%d/listen-%H-%M-%v.wav\fP
+\fBarecord \-f cd \-t wav \-\-max-file-time 3600 --use-strftime %Y/%m/%d/listen-%H-%M-%v.wav\fP
Record in stereo from the default audio source. Create a new file
every hour. The files are placed in directories based on their start dates
and have names which include their start times and file numbers.
--
1.7.9.2
++++++ 0002-Trivial-fixes-in-INSTALL-file.patch ++++++
>From d5b6ecbbd63e39acdfd1404f0085ad16a1942f19 Mon Sep 17 00:00:00 2001
From: Vikram Narayanan <vikram186(a)gmail.com>
Date: Sat, 11 Feb 2012 13:47:48 +0530
Subject: [PATCH 02/13] Trivial fixes in INSTALL file
Changed from HG->git in the INSTALL file
Signed-off-by: Vikram Narayanan <vikram186(a)gmail.com>
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
INSTALL | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/INSTALL b/INSTALL
index 202c491..544d5d2 100644
--- a/INSTALL
+++ b/INSTALL
@@ -24,11 +24,11 @@ package. The configure script from alsa-utils package probably cannot find
header file asoundlib.h in $prefix/include/alsa directory (usually in
/usr/include/alsa directory).
-Compilation from HG sources
+Compilation from git sources
---------------------------
You need also GNU packages autoconf and automake installed in your system
-to compile HG (Mercurial) sources of alsa-utils package.
+to compile git sources of alsa-utils package.
For compilation you can use these commands:
@@ -40,7 +40,7 @@ For compilation you can use these commands:
./configure
make
-The included hgcompile script does this job for you.
+The included gitcompile script does this job for you.
Note: Some automake packages have missing aclocal program. Use newer version
in the case.
--
1.7.9.2
++++++ 0004-alsaloop-Improve-xrun_sync-fill-missing-playback-sam.patch ++++++
>From 53107e1e3146e3687e571b2c31f9d271623c5411 Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex(a)perex.cz>
Date: Mon, 20 Feb 2012 16:41:19 +0100
Subject: [PATCH 04/13] alsaloop: Improve xrun_sync - fill missing playback
samples
Signed-off-by: Jaroslav Kysela <perex(a)perex.cz>
---
alsaloop/pcmjob.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/alsaloop/pcmjob.c b/alsaloop/pcmjob.c
index bfac2d3..c9b120f 100644
--- a/alsaloop/pcmjob.c
+++ b/alsaloop/pcmjob.c
@@ -949,6 +949,23 @@ static int xrun_sync(struct loopback *loop)
logit(LOG_CRIT, "%s start failed: %s\n", play->id, snd_strerror(err));
return err;
}
+ } else if (delay1 < fill) {
+ diff = (fill - delay1) / play->pitch;
+ while (diff > 0) {
+ delay1 = play->buf_size - play->buf_pos;
+ if (verbose > 6)
+ snd_output_printf(loop->output,
+ "sync: playback short, silence filling %li / buf_count=%li\n", (long)delay1, play->buf_count);
+ if (delay1 > diff)
+ delay1 = diff;
+ if ((err = snd_pcm_format_set_silence(play->format, play->buf + play->buf_pos * play->channels, delay1)) < 0)
+ return err;
+ play->buf_pos += delay1;
+ play->buf_pos %= play->buf_size;
+ play->buf_count += delay1;
+ diff -= delay1;
+ }
+ writeit(play);
}
if (verbose > 5) {
snd_output_printf(loop->output, "%s: xrun sync ok\n", loop->id);
--
1.7.9.2
++++++ 0005-aplay-option-to-dump-HW-parameters.patch ++++++
>From 2d105e0f18a82783ea69e2dbe9da7aeb7d3c1346 Mon Sep 17 00:00:00 2001
From: Pavel Hofman <pavel.hofman(a)ivitera.com>
Date: Mon, 5 Mar 2012 21:27:00 +0000
Subject: [PATCH 05/13] aplay - option to dump HW parameters
Dumping HW parameters of the current device with snd_pcm_hw_params_dump,
a new option --dump-hw-params added.
Signed-off-by: Pavel Hofman <pavel.hofman(a)ivitera.com>
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
aplay/aplay.1 | 7 +++++++
aplay/aplay.c | 18 ++++++++++++++++--
2 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/aplay/aplay.1 b/aplay/aplay.1
index 2acaed5..0195322 100644
--- a/aplay/aplay.1
+++ b/aplay/aplay.1
@@ -184,6 +184,13 @@ the month, %H hour, %M minute and %S second. In addition, %v is
the file number, starting at 1. When this option is specified,
intermediate directories for the output file are created automatically.
This option has no effect if \-\-separate\-channels is specified.
+.TP
+\fI\-\-dump\-hw\-params\fP
+Dump hw_params of the device preconfigured status to stderr. The dump
+lists capabilities of the selected device such as supported formats,
+sampling rates, numbers of channels, period and buffer bytes/sizes/times.
+For raw device hw:X this option basically lists hardware capabilities of
+the soundcard.
.SH SIGNALS
When recording, SIGINT, SIGTERM and SIGABRT will close the output
diff --git a/aplay/aplay.c b/aplay/aplay.c
index 73a9544..0633cbd 100644
--- a/aplay/aplay.c
+++ b/aplay/aplay.c
@@ -129,6 +129,7 @@ static int max_file_time = 0;
static int use_strftime = 0;
volatile static int recycle_capture_file = 0;
static long term_c_lflag = -1;
+static int dump_hw_params = 0;
static int fd = -1;
static off64_t pbrec_count = LLONG_MAX, fdcount;
@@ -223,7 +224,8 @@ _("Usage: %s [OPTION]... [FILE]...\n"
" --max-file-time=# start another output file when the old file has recorded\n"
" for this many seconds\n"
" --process-id-file write the process ID here\n"
-" --use-strftime apply the strftime facility to the output file name\n")
+" --use-strftime apply the strftime facility to the output file name\n"
+" --dump-hw-params dump hw_params of the device\n")
, command);
printf(_("Recognized sample formats are:"));
for (k = 0; k < SND_PCM_FORMAT_LAST; ++k) {
@@ -416,7 +418,8 @@ enum {
OPT_TEST_NOWAIT,
OPT_MAX_FILE_TIME,
OPT_PROCESS_ID_FILE,
- OPT_USE_STRFTIME
+ OPT_USE_STRFTIME,
+ OPT_DUMP_HWPARAMS
};
int main(int argc, char *argv[])
@@ -461,6 +464,7 @@ int main(int argc, char *argv[])
{"process-id-file", 1, 0, OPT_PROCESS_ID_FILE},
{"use-strftime", 0, 0, OPT_USE_STRFTIME},
{"interactive", 0, 0, 'i'},
+ {"dump-hw-params", 0, 0, OPT_DUMP_HWPARAMS},
{0, 0, 0, 0}
};
char *pcm_name = "default";
@@ -662,6 +666,9 @@ int main(int argc, char *argv[])
case OPT_USE_STRFTIME:
use_strftime = 1;
break;
+ case OPT_DUMP_HWPARAMS:
+ dump_hw_params = 1;
+ break;
default:
fprintf(stderr, _("Try `%s --help' for more information.\n"), command);
return 1;
@@ -1059,6 +1066,13 @@ static void set_params(void)
error(_("Broken configuration for this PCM: no configurations available"));
prg_exit(EXIT_FAILURE);
}
+ if (dump_hw_params) {
+ fprintf(stderr, _("HW Params of device \"%s\":\n"),
+ snd_pcm_name(handle));
+ fprintf(stderr, "--------------------\n");
+ snd_pcm_hw_params_dump(params, log);
+ fprintf(stderr, "--------------------\n");
+ }
if (mmap_flag) {
snd_pcm_access_mask_t *mask = alloca(snd_pcm_access_mask_sizeof());
snd_pcm_access_mask_none(mask);
--
1.7.9.2
++++++ 0006-amixer-Add-the-support-for-mapped-volumes-like-alsam.patch ++++++
>From a2b66855e69b0f1dc27dab37f24057f717359884 Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai(a)suse.de>
Date: Mon, 12 Mar 2012 10:56:22 +0100
Subject: [PATCH 06/13] amixer: Add the support for mapped volumes like
alsamixer
When -M option is given, amixer handles the volumes in percent unit
with the mapping more intuitive to human ears just like in alsamixer.
The -R option is to take the raw value as the volume percentage.
This mode is still used as default.
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
amixer/Makefile.am | 2 +-
amixer/amixer.c | 238 ++++++++++++++++++++++++++++++----------------------
2 files changed, 141 insertions(+), 99 deletions(-)
diff --git a/amixer/Makefile.am b/amixer/Makefile.am
index fcd0e81..ba67a57 100644
--- a/amixer/Makefile.am
+++ b/amixer/Makefile.am
@@ -4,7 +4,7 @@ LDADD = -lm
# CFLAGS += -g -Wall
bin_PROGRAMS = amixer
-amixer_SOURCES = amixer.c
+amixer_SOURCES = amixer.c ../alsamixer/volume_mapping.c
noinst_HEADERS = amixer.h
man_MANS = amixer.1
EXTRA_DIST = amixer.1
diff --git a/amixer/amixer.c b/amixer/amixer.c
index 9d2855d..a0a7387 100644
--- a/amixer/amixer.c
+++ b/amixer/amixer.c
@@ -29,7 +29,9 @@
#include <assert.h>
#include <alsa/asoundlib.h>
#include <sys/poll.h>
+#include <stdint.h>
#include "amixer.h"
+#include "../alsamixer/volume_mapping.h"
#define LEVEL_BASIC (1<<0)
#define LEVEL_INACTIVE (1<<1)
@@ -68,6 +70,8 @@ static int help(void)
printf(" -i,--inactive show also inactive controls\n");
printf(" -a,--abstract L select abstraction level (none or basic)\n");
printf(" -s,--stdin Read and execute commands from stdin sequentially\n");
+ printf(" -R,--raw-volume Use the raw value (default)\n");
+ printf(" -M,--mapped-volume Use the mapped volume\n");
printf("\nAvailable commands:\n");
printf(" scontrols show all mixer simple controls\n");
printf(" scontents show contents of all mixer simple controls (default command)\n");
@@ -187,9 +191,9 @@ static int convert_db_range(int val, int omin, int omax, int nmin, int nmax)
/* Fuction to convert from volume to percentage. val = volume */
-static int convert_prange(int val, int min, int max)
+static int convert_prange(long val, long min, long max)
{
- int range = max - min;
+ long range = max - min;
int tmp;
if (range == 0)
@@ -204,29 +208,6 @@ static int convert_prange(int val, int min, int max)
#define convert_prange1(val, min, max) \
ceil((val) * ((max) - (min)) * 0.01 + (min))
-static const char *get_percent(int val, int min, int max)
-{
- static char str[32];
- int p;
-
- p = convert_prange(val, min, max);
- sprintf(str, "%i [%i%%]", val, p);
- return str;
-}
-
-#if 0
-static const char *get_percent1(int val, int min, int max, int min_dB, int max_dB)
-{
- static char str[32];
- int p, db;
-
- p = convert_prange(val, min, max);
- db = convert_db_range(val, min, max, min_dB, max_dB);
- sprintf(str, "%i [%i%%] [%i.%02idB]", val, p, db / 100, abs(db % 100));
- return str;
-}
-#endif
-
static long get_integer(char **ptr, long min, long max)
{
long val = min;
@@ -288,26 +269,83 @@ struct volume_ops {
int (*get)(snd_mixer_elem_t *elem, snd_mixer_selem_channel_id_t c,
long *value);
int (*set)(snd_mixer_elem_t *elem, snd_mixer_selem_channel_id_t c,
- long value);
+ long value, int dir);
};
-enum { VOL_RAW, VOL_DB };
+enum { VOL_RAW, VOL_DB, VOL_MAP };
struct volume_ops_set {
int (*has_volume)(snd_mixer_elem_t *elem);
- struct volume_ops v[2];
+ struct volume_ops v[3];
};
static int set_playback_dB(snd_mixer_elem_t *elem,
- snd_mixer_selem_channel_id_t c, long value)
+ snd_mixer_selem_channel_id_t c, long value, int dir)
{
- return snd_mixer_selem_set_playback_dB(elem, c, value, 0);
+ return snd_mixer_selem_set_playback_dB(elem, c, value, dir);
}
static int set_capture_dB(snd_mixer_elem_t *elem,
- snd_mixer_selem_channel_id_t c, long value)
+ snd_mixer_selem_channel_id_t c, long value, int dir)
+{
+ return snd_mixer_selem_set_capture_dB(elem, c, value, dir);
+}
+
+static int set_playback_raw_volume(snd_mixer_elem_t *elem,
+ snd_mixer_selem_channel_id_t c,
+ long value, int dir)
+{
+ return snd_mixer_selem_set_playback_volume(elem, c, value);
+}
+
+static int set_capture_raw_volume(snd_mixer_elem_t *elem,
+ snd_mixer_selem_channel_id_t c,
+ long value, int dir)
+{
+ return snd_mixer_selem_set_capture_volume(elem, c, value);
+}
+
+/* FIXME: normalize to int32 space to be compatible with other types */
+#define MAP_VOL_RES (INT32_MAX / 100)
+
+static int get_mapped_volume_range(snd_mixer_elem_t *elem,
+ long *pmin, long *pmax)
+{
+ *pmin = 0;
+ *pmax = MAP_VOL_RES;
+ return 0;
+}
+
+static int get_playback_mapped_volume(snd_mixer_elem_t *elem,
+ snd_mixer_selem_channel_id_t c,
+ long *value)
+{
+ *value = (rint)(get_normalized_playback_volume(elem, c) * MAP_VOL_RES);
+ return 0;
+}
+
+static int set_playback_mapped_volume(snd_mixer_elem_t *elem,
+ snd_mixer_selem_channel_id_t c,
+ long value, int dir)
{
- return snd_mixer_selem_set_capture_dB(elem, c, value, 0);
+ return set_normalized_playback_volume(elem, c,
+ (double)value / MAP_VOL_RES, dir);
+}
+
+static int get_capture_mapped_volume(snd_mixer_elem_t *elem,
+ snd_mixer_selem_channel_id_t c,
+ long *value)
+{
+ *value = (rint)(get_normalized_capture_volume(elem, c) * MAP_VOL_RES);
+ return 0;
+}
+
+static int set_capture_mapped_volume(snd_mixer_elem_t *elem,
+ snd_mixer_selem_channel_id_t c,
+ long value, int dir)
+{
+ return set_normalized_capture_volume(elem, c,
+ (double)value / MAP_VOL_RES, dir);
}
static const struct volume_ops_set vol_ops[2] = {
@@ -315,29 +353,42 @@ static const struct volume_ops_set vol_ops[2] = {
.has_volume = snd_mixer_selem_has_playback_volume,
.v = {{ snd_mixer_selem_get_playback_volume_range,
snd_mixer_selem_get_playback_volume,
- snd_mixer_selem_set_playback_volume },
+ set_playback_raw_volume },
{ snd_mixer_selem_get_playback_dB_range,
snd_mixer_selem_get_playback_dB,
- set_playback_dB }},
+ set_playback_dB },
+ { get_mapped_volume_range,
+ get_playback_mapped_volume,
+ set_playback_mapped_volume },
+ },
},
{
.has_volume = snd_mixer_selem_has_capture_volume,
.v = {{ snd_mixer_selem_get_capture_volume_range,
snd_mixer_selem_get_capture_volume,
- snd_mixer_selem_set_capture_volume },
+ set_capture_raw_volume },
{ snd_mixer_selem_get_capture_dB_range,
snd_mixer_selem_get_capture_dB,
- set_capture_dB }},
+ set_capture_dB },
+ { get_mapped_volume_range,
+ get_capture_mapped_volume,
+ set_capture_mapped_volume },
+ },
},
};
+static int std_vol_type = VOL_RAW;
+
static int set_volume_simple(snd_mixer_elem_t *elem,
snd_mixer_selem_channel_id_t chn,
char **ptr, int dir)
{
long val, orig, pmin, pmax;
char *p = *ptr, *s;
- int invalid = 0, err = 0, vol_type = VOL_RAW;
+ int invalid = 0, percent = 0, err = 0;
+ int vol_type = std_vol_type;
+ double scale = 1.0;
+ int correct = 0;
if (! vol_ops[dir].has_volume(elem))
invalid = 1;
@@ -347,10 +398,6 @@ static int set_volume_simple(snd_mixer_elem_t *elem,
if (*p == '\0' || (!isdigit(*p) && *p != '-'))
goto skip;
- if (! invalid &&
- vol_ops[dir].v[VOL_RAW].get_range(elem, &pmin, &pmax) < 0)
- invalid = 1;
-
s = p;
val = strtol(s, &p, 10);
if (*p == '.') {
@@ -358,32 +405,37 @@ static int set_volume_simple(snd_mixer_elem_t *elem,
strtol(p, &p, 10);
}
if (*p == '%') {
- if (! invalid)
- val = (long)convert_prange1(strtod(s, NULL), pmin, pmax);
+ percent = 1;
p++;
} else if (p[0] == 'd' && p[1] == 'B') {
- if (! invalid) {
- val = (long)(strtod(s, NULL) * 100.0);
- vol_type = VOL_DB;
- if (vol_ops[dir].v[vol_type].get_range(elem, &pmin, &pmax) < 0)
- invalid = 1;
- }
+ vol_type = VOL_DB;
p += 2;
- }
+ scale = 100;
+ } else
+ vol_type = VOL_RAW;
+
+ val = (long)(strtod(s, NULL) * scale);
+ if (vol_ops[dir].v[vol_type].get_range(elem, &pmin, &pmax) < 0)
+ invalid = 1;
+ if (percent)
+ val = (long)convert_prange1(val, pmin, pmax);
if (*p == '+' || *p == '-') {
if (! invalid) {
if (vol_ops[dir].v[vol_type].get(elem, chn, &orig) < 0)
invalid = 1;
- if (*p == '+')
+ if (*p == '+') {
val = orig + val;
- else
+ correct = -1;
+ } else {
val = orig - val;
+ correct = 1;
+ }
}
p++;
}
if (! invalid) {
val = check_range(val, pmin, pmax);
- err = vol_ops[dir].v[vol_type].set(elem, chn, val);
+ err = vol_ops[dir].v[vol_type].set(elem, chn, val, correct);
}
skip:
if (*p == ',')
@@ -711,15 +763,33 @@ static int controls(int level)
return 0;
}
+static void show_selem_volume(snd_mixer_elem_t *elem,
+ snd_mixer_selem_channel_id_t chn, int dir,
+ long min, long max)
+{
+ long raw, val;
+ vol_ops[dir].v[VOL_RAW].get(elem, chn, &raw);
+ if (std_vol_type == VOL_RAW)
+ val = convert_prange(raw, min, max);
+ else {
+ vol_ops[dir].v[std_vol_type].get(elem, chn, &val);
+ val = convert_prange(val, 0, MAP_VOL_RES);
+ }
+ printf(" %li [%li%%]", raw, val);
+ if (!vol_ops[dir].v[VOL_DB].get(elem, chn, &val)) {
+ printf(" [");
+ print_dB(val);
+ printf("]");
+ }
+}
+
static int show_selem(snd_mixer_t *handle, snd_mixer_selem_id_t *id, const char *space, int level)
{
snd_mixer_selem_channel_id_t chn;
long pmin = 0, pmax = 0;
long cmin = 0, cmax = 0;
- long pvol, cvol;
int psw, csw;
int pmono, cmono, mono_ok = 0;
- long db;
snd_mixer_elem_t *elem;
elem = snd_mixer_find_selem(handle, id);
@@ -868,13 +938,7 @@ static int show_selem(snd_mixer_t *handle, snd_mixer_selem_id_t *id, const char
mono_ok = 1;
}
if (snd_mixer_selem_has_common_volume(elem)) {
- snd_mixer_selem_get_playback_volume(elem, SND_MIXER_SCHN_MONO, &pvol);
- printf(" %s", get_percent(pvol, pmin, pmax));
- if (!snd_mixer_selem_get_playback_dB(elem, SND_MIXER_SCHN_MONO, &db)) {
- printf(" [");
- print_dB(db);
- printf("]");
- }
+ show_selem_volume(elem, SND_MIXER_SCHN_MONO, 0, pmin, pmax);
}
if (snd_mixer_selem_has_common_switch(elem)) {
snd_mixer_selem_get_playback_switch(elem, SND_MIXER_SCHN_MONO, &psw);
@@ -891,13 +955,7 @@ static int show_selem(snd_mixer_t *handle, snd_mixer_selem_id_t *id, const char
if (snd_mixer_selem_has_playback_volume(elem)) {
printf(" Playback");
title = 1;
- snd_mixer_selem_get_playback_volume(elem, SND_MIXER_SCHN_MONO, &pvol);
- printf(" %s", get_percent(pvol, pmin, pmax));
- if (!snd_mixer_selem_get_playback_dB(elem, SND_MIXER_SCHN_MONO, &db)) {
- printf(" [");
- print_dB(db);
- printf("]");
- }
+ show_selem_volume(elem, SND_MIXER_SCHN_MONO, 0, pmin, pmax);
}
}
if (!snd_mixer_selem_has_common_switch(elem)) {
@@ -919,13 +977,7 @@ static int show_selem(snd_mixer_t *handle, snd_mixer_selem_id_t *id, const char
if (snd_mixer_selem_has_capture_volume(elem)) {
printf(" Capture");
title = 1;
- snd_mixer_selem_get_capture_volume(elem, SND_MIXER_SCHN_MONO, &cvol);
- printf(" %s", get_percent(cvol, cmin, cmax));
- if (!snd_mixer_selem_get_capture_dB(elem, SND_MIXER_SCHN_MONO, &db)) {
- printf(" [");
- print_dB(db);
- printf("]");
- }
+ show_selem_volume(elem, SND_MIXER_SCHN_MONO, 1, cmin, cmax);
}
}
if (!snd_mixer_selem_has_common_switch(elem)) {
@@ -946,13 +998,7 @@ static int show_selem(snd_mixer_t *handle, snd_mixer_selem_id_t *id, const char
continue;
printf("%s%s:", space, snd_mixer_selem_channel_name(chn));
if (!pmono && !cmono && snd_mixer_selem_has_common_volume(elem)) {
- snd_mixer_selem_get_playback_volume(elem, chn, &pvol);
- printf(" %s", get_percent(pvol, pmin, pmax));
- if (!snd_mixer_selem_get_playback_dB(elem, chn, &db)) {
- printf(" [");
- print_dB(db);
- printf("]");
- }
+ show_selem_volume(elem, chn, 0, pmin, pmax);
}
if (!pmono && !cmono && snd_mixer_selem_has_common_switch(elem)) {
snd_mixer_selem_get_playback_switch(elem, chn, &psw);
@@ -964,13 +1010,7 @@ static int show_selem(snd_mixer_t *handle, snd_mixer_selem_id_t *id, const char
if (snd_mixer_selem_has_playback_volume(elem)) {
printf(" Playback");
title = 1;
- snd_mixer_selem_get_playback_volume(elem, chn, &pvol);
- printf(" %s", get_percent(pvol, pmin, pmax));
- if (!snd_mixer_selem_get_playback_dB(elem, chn, &db)) {
- printf(" [");
- print_dB(db);
- printf("]");
- }
+ show_selem_volume(elem, chn, 0, pmin, pmax);
}
}
if (!snd_mixer_selem_has_common_switch(elem)) {
@@ -988,13 +1028,7 @@ static int show_selem(snd_mixer_t *handle, snd_mixer_selem_id_t *id, const char
if (snd_mixer_selem_has_capture_volume(elem)) {
printf(" Capture");
title = 1;
- snd_mixer_selem_get_capture_volume(elem, chn, &cvol);
- printf(" %s", get_percent(cvol, cmin, cmax));
- if (!snd_mixer_selem_get_capture_dB(elem, chn, &db)) {
- printf(" [");
- print_dB(db);
- printf("]");
- }
+ show_selem_volume(elem, chn, 1, cmin, cmax);
}
}
if (!snd_mixer_selem_has_common_switch(elem)) {
@@ -1927,6 +1961,8 @@ int main(int argc, char *argv[])
{"version", 0, NULL, 'v'},
{"abstract", 1, NULL, 'a'},
{"stdin", 0, NULL, 's'},
+ {"raw-volume", 0, NULL, 'R'},
+ {"mapped-volume", 0, NULL, 'M'},
{NULL, 0, NULL, 0},
};
@@ -1934,7 +1970,7 @@ int main(int argc, char *argv[])
while (1) {
int c;
- if ((c = getopt_long(argc, argv, "hc:D:qidnva:s", long_option, NULL)) < 0)
+ if ((c = getopt_long(argc, argv, "hc:D:qidnva:sRM", long_option, NULL)) < 0)
break;
switch (c) {
case 'h':
@@ -1987,6 +2023,12 @@ int main(int argc, char *argv[])
case 's':
read_stdin = 1;
break;
+ case 'R':
+ std_vol_type = VOL_RAW;
+ break;
+ case 'M':
+ std_vol_type = VOL_MAP;
+ break;
default:
fprintf(stderr, "Invalid switch or option needs an argument.\n");
morehelp++;
--
1.7.9.2
++++++ 0007-aplay-arecord-option-to-treat-any-xrun-as-fatal.patch ++++++
>From 658c3cfd5726eb1efb44472909651402c6f8fa15 Mon Sep 17 00:00:00 2001
From: Ben Gardiner <bengardiner(a)nanometrics.ca>
Date: Thu, 15 Mar 2012 23:51:02 -0400
Subject: [PATCH 07/13] aplay/arecord: option to treat any xrun as fatal
Signed-off-by: Ben Gardiner <bengardiner(a)nanometrics.ca>
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
aplay/aplay.1 | 4 ++++
aplay/aplay.c | 17 +++++++++++++++--
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/aplay/aplay.1 b/aplay/aplay.1
index 0195322..bf9b53e 100644
--- a/aplay/aplay.1
+++ b/aplay/aplay.1
@@ -191,6 +191,10 @@ lists capabilities of the selected device such as supported formats,
sampling rates, numbers of channels, period and buffer bytes/sizes/times.
For raw device hw:X this option basically lists hardware capabilities of
the soundcard.
+.TP
+\fI\-\-fatal\-errors\fP
+Disables recovery attempts when errors (e.g. xrun) are encountered; the
+aplay process instead aborts immediately.
.SH SIGNALS
When recording, SIGINT, SIGTERM and SIGABRT will close the output
diff --git a/aplay/aplay.c b/aplay/aplay.c
index 0633cbd..1ce34c4 100644
--- a/aplay/aplay.c
+++ b/aplay/aplay.c
@@ -115,6 +115,7 @@ static int stop_delay = 0;
static int monotonic = 0;
static int interactive = 0;
static int can_pause = 0;
+static int fatal_errors = 0;
static int verbose = 0;
static int vumeter = VUMETER_NONE;
static int buffer_pos = 0;
@@ -225,7 +226,8 @@ _("Usage: %s [OPTION]... [FILE]...\n"
" for this many seconds\n"
" --process-id-file write the process ID here\n"
" --use-strftime apply the strftime facility to the output file name\n"
-" --dump-hw-params dump hw_params of the device\n")
+" --dump-hw-params dump hw_params of the device\n"
+" --fatal-errors treat all errors as fatal\n")
, command);
printf(_("Recognized sample formats are:"));
for (k = 0; k < SND_PCM_FORMAT_LAST; ++k) {
@@ -419,7 +421,8 @@ enum {
OPT_MAX_FILE_TIME,
OPT_PROCESS_ID_FILE,
OPT_USE_STRFTIME,
- OPT_DUMP_HWPARAMS
+ OPT_DUMP_HWPARAMS,
+ OPT_FATAL_ERRORS,
};
int main(int argc, char *argv[])
@@ -465,6 +468,7 @@ int main(int argc, char *argv[])
{"use-strftime", 0, 0, OPT_USE_STRFTIME},
{"interactive", 0, 0, 'i'},
{"dump-hw-params", 0, 0, OPT_DUMP_HWPARAMS},
+ {"fatal-errors", 0, 0, OPT_FATAL_ERRORS},
{0, 0, 0, 0}
};
char *pcm_name = "default";
@@ -669,6 +673,9 @@ int main(int argc, char *argv[])
case OPT_DUMP_HWPARAMS:
dump_hw_params = 1;
break;
+ case OPT_FATAL_ERRORS:
+ fatal_errors = 1;
+ break;
default:
fprintf(stderr, _("Try `%s --help' for more information.\n"), command);
return 1;
@@ -1350,6 +1357,12 @@ static void xrun(void)
prg_exit(EXIT_FAILURE);
}
if (snd_pcm_status_get_state(status) == SND_PCM_STATE_XRUN) {
+ if (fatal_errors) {
+ error(_("fatal %s: %s"),
+ stream == SND_PCM_STREAM_PLAYBACK ? _("underrun") : _("overrun"),
+ snd_strerror(res));
+ prg_exit(EXIT_FAILURE);
+ }
if (monotonic) {
#ifdef HAVE_CLOCK_GETTIME
struct timespec now, diff, tstamp;
--
1.7.9.2
++++++ 0008-amixer-alsamixer-Add-description-of-volume-mapping.patch ++++++
>From 8824d0824d780d0fa503f9c9fbae46e45bbb18e7 Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai(a)suse.de>
Date: Mon, 19 Mar 2012 16:03:33 +0100
Subject: [PATCH 08/13] amixer, alsamixer: Add description of volume-mapping
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
alsamixer/alsamixer.1 | 13 +++++++++++++
amixer/amixer.1 | 17 +++++++++++++++++
2 files changed, 30 insertions(+)
diff --git a/alsamixer/alsamixer.1 b/alsamixer/alsamixer.1
index cd88404..8d34680 100644
--- a/alsamixer/alsamixer.1
+++ b/alsamixer/alsamixer.1
@@ -157,6 +157,19 @@ Quit the program with \fIALT Q\fP, or by hitting \fIESC\fP.
Please note that you might need to hit \fIESC\fP twice on some terminals
since it's regarded as a prefix key.
+.SH VOLUME MAPPING
+In \fBalsamixer\fP, the volume is mapped to a value that is more natural
+for a human ear. The mapping is designed so that the position in the
+interval is proportional to the volume as a human ear would perceive
+it, i.e. the position is the cubic root of the linear sample
+multiplication factor. For controls with a small range (24 dB or
+less), the mapping is linear in the dB values so that each step has
+the same size visually.
+
+Only for controls without dB information, a linear mapping of the
+hardware volume register values is used (this is the same algorithm as
+used in the old \fBalsamixer\fP).
+
.SH SEE ALSO
\fB
amixer(1),
diff --git a/amixer/amixer.1 b/amixer/amixer.1
index b1ac323..3ed20a9 100644
--- a/amixer/amixer.1
+++ b/amixer/amixer.1
@@ -104,10 +104,21 @@ The commands to unmatched ids are ignored without errors too.
.TP
\fI\-h\fP
Help: show syntax.
+
.TP
\fI\-q\fP
Quiet mode. Do not show results of changes.
+.TP
+\fI\-R\fP
+Use the raw value for evaluating the percentage representation.
+This is the default mode.
+
+.TP
+\fI\-M\fP
+Use the mapped volume for evaluating the percentage representation
+like \fBalsamixer\fR, to be more natural for human ear.
+
.SH EXAMPLES
.TP
@@ -134,8 +145,14 @@ will set the third soundcard's second line playback volume(s) to 40%
\fBamixer \-c 2 cset numid=34 40%\fR
will set the 34th soundcard element to 40%
+.SH SEE ALSO
+\fB
+alsamixer(1)
+\fP
+
.SH BUGS
None known.
+
.SH AUTHOR
\fBamixer\fP is by Jaroslav Kysela <perex(a)perex.cz>.
This document is by Paul Winkler <zarmzarm(a)erols.com> and Jaroslav Kysela <perex(a)perex.cz>.
--
1.7.9.2
++++++ 0009-configure.in-look-for-ncurses-pkg-config-first.patch ++++++
>From 3a25a31285ffb1dff0151c717b114fefc0b89b70 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vapier(a)gentoo.org>
Date: Wed, 18 Apr 2012 10:25:54 -0400
Subject: [PATCH 09/13] configure.in: look for ncurses pkg-config first
Newer ncurses installs pkg-config files, and these are much easier
to manage when cross-compiling, so default to searching for those.
If they can't be found, we fall back to the existing xxx-config.
Signed-off-by: Mike Frysinger <vapier(a)gentoo.org>
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
configure.in | 64 +++++++++++++++++++++++++++++++++++++---------------------
1 file changed, 41 insertions(+), 23 deletions(-)
diff --git a/configure.in b/configure.in
index 2208a95..9404df0 100644
--- a/configure.in
+++ b/configure.in
@@ -29,6 +29,7 @@ AC_PROG_INSTALL
AC_PROG_MKDIR_P
AC_PROG_LN_S
AC_PROG_SED
+PKG_PROG_PKG_CONFIG
AM_PATH_ALSA(1.0.24)
AC_CHECK_FUNC([snd_ctl_elem_add_enumerated],
, [AC_ERROR([No user enum control support in alsa-lib])])
@@ -130,34 +131,52 @@ if test x$alsamixer = xtrue; then
NCURSESLIBSUFFIX=""
CURSES_NLS="no"
if test "$curseslib" = "ncursesw" -o \( "$curseslib" = "auto" -a "$USE_NLS" = "yes" \); then
- AC_CHECK_PROG([ncursesw5_config], [ncursesw5-config], [yes])
- if test "$ncursesw5_config" = "yes"; then
- CURSESINC="<ncurses.h>"
- CURSESLIB=`ncursesw5-config --libs`
- CURSESLIBDIR=`ncursesw5-config --libdir`
- CURSES_CFLAGS=`ncursesw5-config --cflags`
- curseslib="ncursesw"
- else
- AC_CHECK_LIB(ncursesw, initscr,
- [ CURSESINC='<ncurses.h>'; CURSESLIB='-lncursesw'; curseslib="ncursesw"])
- fi
+ dnl First try out pkg-config, then fall back to old config scripts.
+ PKG_CHECK_MODULES([NCURSESW], [ncursesw], [
+ CURSESINC="<ncurses.h>"
+ CURSESLIB="${NCURSESW_LIBS}"
+ CURSESLIBDIR=
+ CURSES_CFLAGS="${NCURSESW_CFLAGS}"
+ curseslib="ncursesw"
+ ], [
+ AC_CHECK_PROG([ncursesw5_config], [ncursesw5-config], [yes])
+ if test "$ncursesw5_config" = "yes"; then
+ CURSESINC="<ncurses.h>"
+ CURSESLIB=`ncursesw5-config --libs`
+ CURSESLIBDIR=`ncursesw5-config --libdir`
+ CURSES_CFLAGS=`ncursesw5-config --cflags`
+ curseslib="ncursesw"
+ else
+ AC_CHECK_LIB(ncursesw, initscr,
+ [ CURSESINC='<ncurses.h>'; CURSESLIB='-lncursesw'; curseslib="ncursesw"])
+ fi
+ ])
if test -n "$CURSESINC"; then
NCURSESLIBSUFFIX="w"
CURSES_NLS="yes"
fi
fi
if test "$curseslib" = "ncurses" -o "$curseslib" = "auto"; then
- AC_CHECK_PROG([ncurses5_config], [ncurses5-config], [yes])
- if test "$ncurses5_config" = "yes"; then
- CURSESINC="<ncurses.h>"
- CURSESLIB=`ncurses5-config --libs`
- CURSESLIBDIR=`ncurses5-config --libdir`
- CURSES_CFLAGS=`ncurses5-config --cflags`
- curseslib="ncurses"
- else
- AC_CHECK_LIB(ncurses, initscr,
- [ CURSESINC='<ncurses.h>'; CURSESLIB='-lncurses'; curseslib="ncurses"])
- fi
+ dnl First try out pkg-config, then fall back to old config scripts.
+ PKG_CHECK_MODULES([NCURSES], [ncurses], [
+ CURSESINC="<ncurses.h>"
+ CURSESLIB="${NCURSES_LIBS}"
+ CURSESLIBDIR=
+ CURSES_CFLAGS="${NCURSES_CFLAGS}"
+ curseslib="ncurses"
+ ], [
+ AC_CHECK_PROG([ncurses5_config], [ncurses5-config], [yes])
+ if test "$ncurses5_config" = "yes"; then
+ CURSESINC="<ncurses.h>"
+ CURSESLIB=`ncurses5-config --libs`
+ CURSESLIBDIR=`ncurses5-config --libdir`
+ CURSES_CFLAGS=`ncurses5-config --cflags`
+ curseslib="ncurses"
+ else
+ AC_CHECK_LIB(ncurses, initscr,
+ [ CURSESINC='<ncurses.h>'; CURSESLIB='-lncurses'; curseslib="ncurses"])
+ fi
+ ])
fi
if test "$curseslib" = "curses" -o "$curseslib" = "auto"; then
AC_CHECK_LIB(curses, initscr,
@@ -287,7 +306,6 @@ SAVE_UTIL_VERSION
AC_SUBST(LIBRT)
dnl Check for systemd
-PKG_PROG_PKG_CONFIG
AC_ARG_WITH([systemdsystemunitdir],
AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
[], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
--
1.7.9.2
++++++ 0010-configure.in-use-AS_HELP_STRING-everywhere.patch ++++++
>From 05d3bed5cd2fc5ee494766af735f4edd0106167d Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vapier(a)gentoo.org>
Date: Wed, 18 Apr 2012 10:29:18 -0400
Subject: [PATCH 10/13] configure.in: use AS_HELP_STRING everywhere
This macro takes care of spacing for us.
Signed-off-by: Mike Frysinger <vapier(a)gentoo.org>
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
configure.in | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/configure.in b/configure.in
index 9404df0..e7bb4ca 100644
--- a/configure.in
+++ b/configure.in
@@ -76,7 +76,7 @@ CURSES_CFLAGS=""
alsamixer=
if test "$have_mixer" = "yes"; then
AC_ARG_ENABLE(alsamixer,
- [ --disable-alsamixer Disable alsamixer compilation],
+ AS_HELP_STRING([--disable-alsamixer], [Disable alsamixer compilation]),
[case "${enableval}" in
yes) alsamixer=true ;;
no) alsamixer=false ;;
@@ -87,7 +87,7 @@ AM_CONDITIONAL(ALSAMIXER, test x$alsamixer = xtrue)
dnl Disable alsaconf
AC_ARG_ENABLE(alsaconf,
- [ --disable-alsaconf Disable alsaconf packaging],
+ AS_HELP_STRING([--disable-alsaconf], [Disable alsaconf packaging]),
[case "${enableval}" in
yes) alsaconf=true ;;
no) alsaconf=false ;;
@@ -97,7 +97,7 @@ AM_CONDITIONAL(ALSACONF, test x$alsaconf = xtrue)
dnl Disable alsaloop
AC_ARG_ENABLE(alsaloop,
- [ --disable-alsaloop Disable alsaloop packaging],
+ AS_HELP_STRING([--disable-alsaloop], [Disable alsaloop packaging]),
[case "${enableval}" in
yes) alsaloop=true ;;
no) alsaloop=false ;;
@@ -124,7 +124,7 @@ dnl Checks for header files.
AC_HEADER_STDC
if test x$alsamixer = xtrue; then
AC_ARG_WITH(curses,
- [ --with-curses libname Specify the curses library to use (default=auto)],
+ AS_HELP_STRING([--with-curses=libname], [Specify the curses library to use (default=auto)]),
curseslib="$withval",
curseslib="auto")
CURSESLIBDIR=""
@@ -283,7 +283,7 @@ mydatadir="$dir/alsa"
AC_DEFINE_UNQUOTED(DATADIR, "$mydatadir", [directory containing alsa configuration])
AC_ARG_WITH(testsound,
- [ --with-testsound=file give the path of test sound file for alsaconf],
+ AS_HELP_STRING([--with-testsound=file], [give the path of test sound file for alsaconf]),
TESTSOUND="$withval",
TESTSOUND="$dir/test.wav")
AC_SUBST(TESTSOUND)
--
1.7.9.2
++++++ 0011-alsactl-Do-not-access-other-cards-than-specified-for.patch ++++++
>From f7eb87ddc7787e981e6055c9e6f770fc0cd2359a Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex(a)perex.cz>
Date: Wed, 9 May 2012 08:45:47 +0200
Subject: [PATCH 11/13] alsactl: Do not access other cards than specified for
init
When the global state does not exist, alsactl tries to
initialize all soundcards. It is not good when alsactl
is called multiple times from udev. Also, selinux can deny
access to non-existent devices.
Signed-off-by: Jaroslav Kysela <perex(a)perex.cz>
---
alsactl/state.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/alsactl/state.c b/alsactl/state.c
index a8b5bd3..fec000d 100644
--- a/alsactl/state.c
+++ b/alsactl/state.c
@@ -1646,13 +1646,23 @@ int load_state(const char *file, const char *initfile, const char *cardname,
error("Cannot open %s for reading: %s", file, snd_strerror(err));
finalerr = err;
- card = -1;
+ if (cardname) {
+ card = snd_card_get_index(cardname);
+ if (card < 0) {
+ error("Cannot find soundcard '%s'...", cardname);
+ return -ENODEV;
+ }
+ goto single;
+ } else {
+ card = -1;
+ }
/* find each installed soundcards */
- while (1) {
+ while (!cardname) {
if (snd_card_next(&card) < 0)
break;
if (card < 0)
break;
+single:
first = 0;
if (!do_init)
break;
--
1.7.9.2
++++++ 0012-aplay-print-vu-meter-to-stderr-not-stdout.patch ++++++
>From 6bbeb78dba60ffae7d6ef7e6c24de03104420d29 Mon Sep 17 00:00:00 2001
From: Jerome Carretero <cJ(a)zougloub.eu>
Date: Sat, 5 May 2012 23:10:01 -0400
Subject: [PATCH 12/13] aplay: print vu-meter to stderr, not stdout
It allows showing the vu-meter while recording to stdout, eg:
aplay -C -V stereo | oggenc - > out.ogg
Signed-off-by: Jerome Carretero <cJ(a)zougloub.eu>
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
aplay/aplay.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/aplay/aplay.c b/aplay/aplay.c
index 1ce34c4..8462484 100644
--- a/aplay/aplay.c
+++ b/aplay/aplay.c
@@ -1453,9 +1453,9 @@ static void print_vu_meter_mono(int perc, int maxperc)
sprintf(line + val, "| MAX");
else
sprintf(line + val, "| %02i%%", maxperc);
- fputs(line, stdout);
+ fputs(line, stderr);
if (perc > 100)
- printf(_(" !clip "));
+ fprintf(stderr, _(" !clip "));
}
static void print_vu_meter_stereo(int *perc, int *maxperc)
@@ -1493,7 +1493,7 @@ static void print_vu_meter_stereo(int *perc, int *maxperc)
memcpy(line + bar_length, tmp, 3);
}
line[bar_length * 2 + 6 + 2] = 0;
- fputs(line, stdout);
+ fputs(line, stderr);
}
static void print_vu_meter(signed int *perc, signed int *maxperc)
@@ -1631,9 +1631,9 @@ static void compute_max_peak(u_char *data, size_t count)
if (perc[c] > maxperc[c])
maxperc[c] = perc[c];
- putchar('\r');
+ putc('\r', stderr);
print_vu_meter(perc, maxperc);
- fflush(stdout);
+ fflush(stderr);
}
else if(verbose==3) {
printf(_("Max peak (%li samples): 0x%08x "), (long)ocount, max_peak[0]);
@@ -1642,8 +1642,8 @@ static void compute_max_peak(u_char *data, size_t count)
putchar('#');
else
putchar(' ');
- printf(" %i%%\n", perc[0]);
- fflush(stdout);
+ fprintf(stderr, " %i%%\n", perc[0]);
+ fflush(stderr);
}
}
--
1.7.9.2
++++++ 0013-alsaloop-fix-the-avail_min-setup.patch ++++++
>From b72e221aab77229f5195c15b1675de8e52db3cb0 Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex(a)perex.cz>
Date: Sun, 13 May 2012 13:24:01 +0200
Subject: [PATCH 13/13] alsaloop: fix the avail_min setup
The previous code does not work as expected for some period_size
configurations. We do not rely on the period size value, so do not
correlate the avail_min parameter with this value.
Signed-off-by: Jaroslav Kysela <perex(a)perex.cz>
---
alsaloop/pcmjob.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/alsaloop/pcmjob.c b/alsaloop/pcmjob.c
index c9b120f..139b6fd 100644
--- a/alsaloop/pcmjob.c
+++ b/alsaloop/pcmjob.c
@@ -246,15 +246,11 @@ static int setparams_set(struct loopback_handle *lhandle,
} else {
if (lhandle == lhandle->loopback->play) {
val = bufsize + bufsize / 2;
- if (val < (period_size * 3) / 4)
- val = (period_size * 3) / 4;
if (val > (buffer_size * 3) / 4)
val = (buffer_size * 3) / 4;
val = buffer_size - val;
} else {
val = bufsize / 2;
- if (val < period_size / 2)
- val = period_size / 2;
if (val > buffer_size / 4)
val = buffer_size / 4;
}
--
1.7.9.2
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package alsa for openSUSE:Factory checked in at 2012-06-01 07:19:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/alsa (Old)
and /work/SRC/openSUSE:Factory/.alsa.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "alsa", Maintainer is "tiwai(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/alsa/alsa.changes 2012-01-27 15:16:14.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.alsa.new/alsa.changes 2012-06-01 07:19:33.000000000 +0200
@@ -1,0 +2,13 @@
+Tue May 29 11:08:11 CEST 2012 - tiwai(a)suse.de
+
+- backport upstream fixes:
+ * Add support for Echo3G devices
+ * Blacklist iec958 for some USB devices
+ * Remove redundant CHECK_ENUM() from snd_mixer_selem_is_enum*()
+ * Document fixes / updates
+ * Add ability to specify TLV data to external control plugins
+ * Fix invalid long long format specifier
+ * Fix missing break in PCM non-interleaved mmap handling
+ * improve robustness of TLV raw value ranges
+
+-------------------------------------------------------------------
New:
----
0001-conf-pcm-Add-support-for-Echo3G-devices.-Thanks-to-u.patch
0002-USB-Audio-Blacklist-iec958-for-some-USB-devices.patch
0003-USB-Audio-Fixup-card-name-for-Logitech-web-camera.patch
0004-mixer-Remove-redundant-CHECK_ENUM-from-snd_mixer_sel.patch
0005-seqmid-more-descriptions-on-snd_seq_parse_address-be.patch
0006-doc-Fix-typo-in-PCM-formats.patch
0007-alsa-lib-conf-block-S-PDIF-access-for-Sennheiser-USB.patch
0008-control_external-Add-ability-to-specify-TLV-data.patch
0009-alsa-lib-conf-Add-two-more-USB-devices-to-iec958-bla.patch
0010-Fix-invalid-long-long-format-specifier.patch
0011-pcm-add-missing-break-in-switch.patch
0012-pcm_dsnoop-comment-fall-through-in-next-case.patch
0013-tlv-improve-robustness-of-raw-value-ranges.patch
0014-conf-Add-more-USB-devices-to-S-PDIF-blacklist.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ alsa.spec ++++++
--- /var/tmp/diff_new_pack.alyoqf/_old 2012-06-01 07:19:36.000000000 +0200
+++ /var/tmp/diff_new_pack.alyoqf/_new 2012-06-01 07:19:36.000000000 +0200
@@ -51,6 +51,20 @@
Source33: alsa-info.sh
Source34: alsa-init.sh
# Patch: alsa-lib-git-fixes.diff
+Patch1: 0001-conf-pcm-Add-support-for-Echo3G-devices.-Thanks-to-u.patch
+Patch2: 0002-USB-Audio-Blacklist-iec958-for-some-USB-devices.patch
+Patch3: 0003-USB-Audio-Fixup-card-name-for-Logitech-web-camera.patch
+Patch4: 0004-mixer-Remove-redundant-CHECK_ENUM-from-snd_mixer_sel.patch
+Patch5: 0005-seqmid-more-descriptions-on-snd_seq_parse_address-be.patch
+Patch6: 0006-doc-Fix-typo-in-PCM-formats.patch
+Patch7: 0007-alsa-lib-conf-block-S-PDIF-access-for-Sennheiser-USB.patch
+Patch8: 0008-control_external-Add-ability-to-specify-TLV-data.patch
+Patch9: 0009-alsa-lib-conf-Add-two-more-USB-devices-to-iec958-bla.patch
+Patch10: 0010-Fix-invalid-long-long-format-specifier.patch
+Patch11: 0011-pcm-add-missing-break-in-switch.patch
+Patch12: 0012-pcm_dsnoop-comment-fall-through-in-next-case.patch
+Patch13: 0013-tlv-improve-robustness-of-raw-value-ranges.patch
+Patch14: 0014-conf-Add-more-USB-devices-to-S-PDIF-blacklist.patch
Patch99: alsa-lib-doxygen-avoid-crash-for-11.3.diff
Url: http://www.alsa-project.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -66,9 +80,11 @@
Summary: Include Files and Libraries mandatory for Development
License: LGPL-2.1+
Group: Development/Libraries/C and C++
-Requires: glibc-devel, libasound2 = %{version}
+Requires: glibc-devel
+Requires: libasound2 = %{version}
Obsoletes: alsadev
-Provides: alsadev alsa-lib-devel
+Provides: alsa-lib-devel
+Provides: alsadev
%description devel
This package contains all necessary include files and libraries needed
@@ -99,6 +115,20 @@
%prep
%setup -q -n alsa-lib-%{package_version}
# %patch -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%patch13 -p1
+%patch14 -p1
%if %suse_version == 1130
%patch99 -p1
%endif
++++++ 0001-conf-pcm-Add-support-for-Echo3G-devices.-Thanks-to-u.patch ++++++
>From 65298d98f3b1222001283a2bfc92eecb12096def Mon Sep 17 00:00:00 2001
From: Luke Yelavich <luke.yelavich(a)canonical.com>
Date: Wed, 8 Feb 2012 15:09:55 +1100
Subject: [PATCH 01/14] conf/pcm: Add support for Echo3G devices. Thanks to
unimatrix.
BugLink: https://bugs.launchpad.net/bugs/433573
Signed-off-by: Luke Yelavich <luke.yelavich(a)canonical.com>
Signed-off-by: Jaroslav Kysela <perex(a)perex.cz>
---
src/conf/cards/Echo_Echo3G.conf | 318 +++++++++++++++++++++++++++++++++++++++
src/conf/cards/Makefile.am | 1 +
2 files changed, 319 insertions(+)
create mode 100644 src/conf/cards/Echo_Echo3G.conf
diff --git a/src/conf/cards/Echo_Echo3G.conf b/src/conf/cards/Echo_Echo3G.conf
new file mode 100644
index 0000000..766f13f
--- /dev/null
+++ b/src/conf/cards/Echo_Echo3G.conf
@@ -0,0 +1,318 @@
+#
+# Configuration for the Echo3G driver
+#
+
+<confdir:pcm/front.conf>
+Echo_Echo3G.pcm.front.0 {
+ @args [ CARD ]
+ @args.CARD {
+ type string
+ }
+ type hw
+ card $CARD
+ device 0
+ subdevice 0
+}
+
+<confdir:pcm/rear.conf>
+Echo_Echo3G.pcm.rear.0 {
+ @args [ CARD ]
+ @args.CARD {
+ type string
+ }
+ type hw
+ card $CARD
+ device 0
+ subdevice 4
+}
+
+<confdir:pcm/center_lfe.conf>
+Echo_Echo3G.pcm.center_lfe.0 {
+ @args [ CARD ]
+ @args.CARD {
+ type string
+ }
+ type hw
+ card $CARD
+ device 0
+ subdevice 2
+}
+
+<confdir:pcm/side.conf>
+Echo_Echo3G.pcm.side.0 {
+ @args [ CARD ]
+ @args.CARD {
+ type string
+ }
+ type hw
+ card $CARD
+ device 0
+ subdevice 6
+}
+
+<confdir:pcm/surround40.conf>
+Echo_Echo3G.pcm.surround40.0 {
+ @args [ CARD ]
+ @args.CARD {
+ type string
+ }
+ type multi
+ slaves [
+ {
+ pcm {
+ @func concat
+ strings [
+ "cards.Echo_Echo3G.pcm.front.0:CARD=" $CARD
+ ]
+ }
+ channels 2
+ }
+ {
+ pcm {
+ @func concat
+ strings [
+ "cards.Echo_Echo3G.pcm.rear.0:CARD=" $CARD
+ ]
+ }
+ channels 2
+ }
+ ]
+ bindings [
+ { slave 0 channel 0 }
+ { slave 0 channel 1 }
+ { slave 1 channel 0 }
+ { slave 1 channel 1 }
+ ]
+}
+
+<confdir:pcm/surround41.conf>
+Echo_Echo3G.pcm.surround41.0 {
+ @args [ CARD ]
+ @args.CARD {
+ type string
+ }
+ type multi
+ slaves [
+ {
+ pcm {
+ @func concat
+ strings [
+ "cards.Echo_Echo3G.pcm.front.0:CARD=" $CARD
+ ]
+ }
+ channels 2
+ }
+ {
+ pcm {
+ @func concat
+ strings [
+ "cards.Echo_Echo3G.pcm.rear.0:CARD=" $CARD
+ ]
+ }
+ channels 2
+ }
+ {
+ pcm {
+ @func concat
+ strings [
+ "cards.Echo_Echo3G.pcm.center_lfe.0:CARD=" $CARD
+ ]
+ }
+ channels 2
+ }
+ ]
+ bindings [
+ { slave 0 channel 0 }
+ { slave 0 channel 1 }
+ { slave 1 channel 0 }
+ { slave 1 channel 1 }
+ { slave 2 channel 0 }
+ ]
+}
+
+<confdir:pcm/surround50.conf>
+Echo_Echo3G.pcm.surround50.0 {
+ @args [ CARD ]
+ @args.CARD {
+ type string
+ }
+ type multi
+ slaves [
+ {
+ pcm {
+ @func concat
+ strings [
+ "cards.Echo_Echo3G.pcm.front.0:CARD=" $CARD
+ ]
+ }
+ channels 2
+ }
+ {
+ pcm {
+ @func concat
+ strings [
+ "cards.Echo_Echo3G.pcm.rear.0:CARD=" $CARD
+ ]
+ }
+ channels 2
+ }
+ {
+ pcm {
+ @func concat
+ strings [
+ "cards.Echo_Echo3G.pcm.center_lfe.0:CARD=" $CARD
+ ]
+ }
+ channels 2
+ }
+ ]
+ bindings [
+ { slave 0 channel 0 }
+ { slave 0 channel 1 }
+ { slave 1 channel 0 }
+ { slave 1 channel 1 }
+ { slave 2 channel 1 }
+ ]
+}
+
+<confdir:pcm/surround51.conf>
+Echo_Echo3G.pcm.surround51.0 {
+ @args [ CARD ]
+ @args.CARD {
+ type string
+ }
+ type multi
+ slaves [
+ {
+ pcm {
+ @func concat
+ strings [
+ "cards.Echo_Echo3G.pcm.front.0:CARD=" $CARD
+ ]
+ }
+ channels 2
+ }
+ {
+ pcm {
+ @func concat
+ strings [
+ "cards.Echo_Echo3G.pcm.rear.0:CARD=" $CARD
+ ]
+ }
+ channels 2
+ }
+ {
+ pcm {
+ @func concat
+ strings [
+ "cards.Echo_Echo3G.pcm.center_lfe.0:CARD=" $CARD
+ ]
+ }
+ channels 2
+ }
+ ]
+ bindings [
+ { slave 0 channel 0 }
+ { slave 0 channel 1 }
+ { slave 1 channel 0 }
+ { slave 1 channel 1 }
+ { slave 2 channel 0 }
+ { slave 2 channel 1 }
+ ]
+}
+
+<confdir:pcm/surround71.conf>
+Echo_Echo3G.pcm.surround71.0 {
+ @args [ CARD ]
+ @args.CARD {
+ type string
+ }
+ type multi
+ slaves [
+ {
+ pcm {
+ @func concat
+ strings [
+ "cards.Echo_Echo3G.pcm.front.0:CARD=" $CARD
+ ]
+ }
+ channels 2
+ }
+ {
+ pcm {
+ @func concat
+ strings [
+ "cards.Echo_Echo3G.pcm.rear.0:CARD=" $CARD
+ ]
+ }
+ channels 2
+ }
+ {
+ pcm {
+ @func concat
+ strings [
+ "cards.Echo_Echo3G.pcm.center_lfe.0:CARD=" $CARD
+ ]
+ }
+ channels 2
+ }
+ {
+ pcm {
+ @func concat
+ strings [
+ "cards.Echo_Echo3G.pcm.side.0:CARD=" $CARD
+ ]
+ }
+ channels 2
+ }
+ ]
+ bindings [
+ { slave 0 channel 0 }
+ { slave 0 channel 1 }
+ { slave 1 channel 0 }
+ { slave 1 channel 1 }
+ { slave 2 channel 0 }
+ { slave 2 channel 1 }
+ { slave 3 channel 0 }
+ { slave 3 channel 1 }
+ ]
+}
+
+<confdir:pcm/iec958.conf>
+Echo_Echo3G.pcm.iec958.0 {
+ @args [ CARD AES0 AES1 AES2 AES3 ]
+ @args.CARD {
+ type string
+ }
+ @args.AES0 {
+ type integer
+ }
+ @args.AES1 {
+ type integer
+ }
+ @args.AES2 {
+ type integer
+ }
+ @args.AES3 {
+ type integer
+ }
+ type hooks
+ slave.pcm {
+ type hw
+ card $CARD
+ device 1
+ }
+
+ hooks.0 {
+ type ctl_elems
+ hook_args [
+ {
+ interface PCM
+ name "IEC958 Playback Default"
+ preserve true
+ optional true
+ value [ $AES0 $AES1 $AES2 $AES3 ]
+ }
+ ]
+ }
+}
diff --git a/src/conf/cards/Makefile.am b/src/conf/cards/Makefile.am
index b7190e7..ee7991b 100644
--- a/src/conf/cards/Makefile.am
+++ b/src/conf/cards/Makefile.am
@@ -19,6 +19,7 @@ cfg_files = aliases.conf \
CMI8738-MC8.conf \
CMI8788.conf \
CS46xx.conf \
+ Echo_Echo3G.conf \
EMU10K1.conf \
EMU10K1X.conf \
ENS1370.conf \
--
1.7.9.2
++++++ 0002-USB-Audio-Blacklist-iec958-for-some-USB-devices.patch ++++++
>From 1a9627dfe74d373010bbd41d738eda25e03f2231 Mon Sep 17 00:00:00 2001
From: David Henningsson <david.henningsson(a)canonical.com>
Date: Fri, 9 Mar 2012 11:46:06 +0100
Subject: [PATCH 02/14] USB-Audio: Blacklist iec958 for some USB devices
Some common USB devices are analog only, so prevent the digital
devices from being opened. This simplifies probing the device
in PulseAudio.
I have a "Logitech USB Headset" myself, the "Logitech Web Camera"
was reported by Raymond Yau, and the "Blue Snowball" was reported by
Andy Whitcroft.
Cc: Andy Whitcroft <andy.whitcroft(a)canonical.com>
Cc: Raymond Yau <superquad.vortex2(a)gmail.com>
BugLink: https://bugs.launchpad.net/bugs/940145
Signed-off-by: David Henningsson <david.henningsson(a)canonical.com>
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
src/conf/cards/USB-Audio.conf | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/conf/cards/USB-Audio.conf b/src/conf/cards/USB-Audio.conf
index 0726c34..d7c121e 100644
--- a/src/conf/cards/USB-Audio.conf
+++ b/src/conf/cards/USB-Audio.conf
@@ -36,6 +36,11 @@ USB-Audio.pcm.surround40_type {
# number for the iec958 device can be changed here.
USB-Audio.pcm.iec958_device {
# "NoiseBlaster 3000" 42
+
+ # The below don't have digital in/out, so prevent them from being opened.
+ "Logitech USB Headset" 999
+ "Logitech Web Camera" 999
+ "Blue Snowball" 999
}
--
1.7.9.2
++++++ 0003-USB-Audio-Fixup-card-name-for-Logitech-web-camera.patch ++++++
>From 947d208076e3e7e7ff167833ec3335804a6b7d2a Mon Sep 17 00:00:00 2001
From: David Henningsson <david.henningsson(a)canonical.com>
Date: Fri, 9 Mar 2012 14:06:04 +0100
Subject: [PATCH 03/14] USB-Audio: Fixup card name for Logitech web camera
Reported-by: Raymond Yau <superquad.vortex2(a)gmail.com>
Signed-off-by: David Henningsson <david.henningsson(a)canonical.com>
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
src/conf/cards/USB-Audio.conf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/conf/cards/USB-Audio.conf b/src/conf/cards/USB-Audio.conf
index d7c121e..966172f 100644
--- a/src/conf/cards/USB-Audio.conf
+++ b/src/conf/cards/USB-Audio.conf
@@ -39,7 +39,7 @@ USB-Audio.pcm.iec958_device {
# The below don't have digital in/out, so prevent them from being opened.
"Logitech USB Headset" 999
- "Logitech Web Camera" 999
+ "USB Device 0x46d:0x992" 999
"Blue Snowball" 999
}
--
1.7.9.2
++++++ 0004-mixer-Remove-redundant-CHECK_ENUM-from-snd_mixer_sel.patch ++++++
>From 2ab86d96c9c9f63212eee89f92f516d537b086e1 Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai(a)suse.de>
Date: Tue, 13 Mar 2012 14:30:22 +0100
Subject: [PATCH 04/14] mixer: Remove redundant CHECK_ENUM() from
snd_mixer_selem_is_enum*()
The functions to check whether the element is an enum don't need the
extra check of the type. It should return simply 0 or 1 without error.
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
src/mixer/simple.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/mixer/simple.c b/src/mixer/simple.c
index 8079fe7..ec22a9c 100644
--- a/src/mixer/simple.c
+++ b/src/mixer/simple.c
@@ -889,7 +889,6 @@ int snd_mixer_selem_is_enumerated(snd_mixer_elem_t *elem)
int snd_mixer_selem_is_enum_playback(snd_mixer_elem_t *elem)
{
CHECK_BASIC(elem);
- CHECK_ENUM(elem);
return sm_selem_ops(elem)->is(elem, SM_PLAY, SM_OPS_IS_ENUMERATED, 1);
}
@@ -901,7 +900,6 @@ int snd_mixer_selem_is_enum_playback(snd_mixer_elem_t *elem)
int snd_mixer_selem_is_enum_capture(snd_mixer_elem_t *elem)
{
CHECK_BASIC(elem);
- CHECK_ENUM(elem);
return sm_selem_ops(elem)->is(elem, SM_CAPT, SM_OPS_IS_ENUMERATED, 1);
}
--
1.7.9.2
++++++ 0005-seqmid-more-descriptions-on-snd_seq_parse_address-be.patch ++++++
>From 193724743965d4548d632ebfde15c0c5d3c44e9d Mon Sep 17 00:00:00 2001
From: Henning Thielemann <alsa(a)henning-thielemann.de>
Date: Wed, 14 Mar 2012 18:45:02 +0100
Subject: [PATCH 05/14] seqmid - more descriptions on snd_seq_parse_address()
behavior
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
src/seq/seqmid.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/seq/seqmid.c b/src/seq/seqmid.c
index 894c3a2..2ff7e8d 100644
--- a/src/seq/seqmid.c
+++ b/src/seq/seqmid.c
@@ -378,9 +378,18 @@ int snd_seq_sync_output_queue(snd_seq_t *seq)
* \return 0 on success or negative error code
*
* This function parses the sequencer client and port numbers from the given string.
- * The client and port tokes are separated by either colon or period, e.g. 128:1.
+ * The client and port tokens are separated by either colon or period, e.g. 128:1.
* When \a seq is not NULL, the function accepts also a client name not only
* digit numbers.
+ * Actually \a arg need to be only a prefix of the wanted client.
+ * That is, if a client named "Foobar XXL Master 2012" with number 128 is available,
+ * then parsing "Foobar" will return the address 128:0.
+ * However parsing is biased towards small client numbers,
+ * thus if also a client named "Foobar" with number 129 exists,
+ * then parsing will still yield address 128:0 and not 129:0.
+ * If you want be able to access all clients by prefixes
+ * then you must write your own parser that checks for matching client names
+ * in the order of increasing name lengths.
*/
int snd_seq_parse_address(snd_seq_t *seq, snd_seq_addr_t *addr, const char *arg)
{
--
1.7.9.2
++++++ 0006-doc-Fix-typo-in-PCM-formats.patch ++++++
>From e5c4c248a1ad6a84140759bfe6a26348c222a929 Mon Sep 17 00:00:00 2001
From: Adrian Knoth <adi(a)drcomp.erfurt.thur.de>
Date: Tue, 27 Mar 2012 17:54:47 +0200
Subject: [PATCH 06/14] doc: Fix typo in PCM formats
Of course, 24bit samples are not stored in three bits, but bytes.
Signed-off-by: Adrian Knoth <adi(a)drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
src/pcm/pcm.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c
index ea1afdc..18b43b3 100644
--- a/src/pcm/pcm.c
+++ b/src/pcm/pcm.c
@@ -209,13 +209,13 @@ The device is physicaly disconnected. It does not accept any I/O calls in this s
\section pcm_formats PCM formats
The full list of formats present the #snd_pcm_format_t type.
-The 24-bit linear samples uses 32-bit physical space, but the sample is
-stored in low three bits. Some hardware does not support processing of full
+The 24-bit linear samples use 32-bit physical space, but the sample is
+stored in the lower three bytes. Some hardware does not support processing of full
range, thus you may get the significant bits for linear samples via
#snd_pcm_hw_params_get_sbits() function. The example: ICE1712
chips support 32-bit sample processing, but low byte is ignored (playback)
or zero (capture). The function snd_pcm_hw_params_get_sbits()
-returns 24 in the case.
+returns 24 in this case.
\section alsa_transfers ALSA transfers
--
1.7.9.2
++++++ 0007-alsa-lib-conf-block-S-PDIF-access-for-Sennheiser-USB.patch ++++++
>From ed0e48583fbd9dc9d86dad25bb26ac089b9e3528 Mon Sep 17 00:00:00 2001
From: David Henningsson <david.henningsson(a)canonical.com>
Date: Sat, 14 Apr 2012 01:14:09 +0200
Subject: [PATCH 07/14] alsa-lib conf: block S/PDIF access for Sennheiser USB
headset
The Sennheiser USB headset has no S/PDIF input or output, so make
sure we can't open it that way.
Signed-off-by: David Henningsson <david.henningsson(a)canonical.com>
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
src/conf/cards/USB-Audio.conf | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/conf/cards/USB-Audio.conf b/src/conf/cards/USB-Audio.conf
index 966172f..b9148e7 100644
--- a/src/conf/cards/USB-Audio.conf
+++ b/src/conf/cards/USB-Audio.conf
@@ -38,6 +38,7 @@ USB-Audio.pcm.iec958_device {
# "NoiseBlaster 3000" 42
# The below don't have digital in/out, so prevent them from being opened.
+ "Sennheiser USB headset" 999
"Logitech USB Headset" 999
"USB Device 0x46d:0x992" 999
"Blue Snowball" 999
--
1.7.9.2
++++++ 0008-control_external-Add-ability-to-specify-TLV-data.patch ++++++
>From a6c50d64d9d06cece520d0ab9b109990241af47b Mon Sep 17 00:00:00 2001
From: Dylan Reid <dgreid(a)chromium.org>
Date: Sun, 15 Apr 2012 16:59:55 -0700
Subject: [PATCH 08/14] control_external: Add ability to specify TLV data.
Allow external control plugins to provide TLV data. This allows
user-space pcms to specify dB ranges for controls.
This follows the same model as the ALSA drivers for accessing the
data. The code is based on that implementation. The control can
provide static data or a callback. The data is accessed or modified
in the new snd_ctl_ext_elem_tlv callback.
Rev bump the protocol version to enable checking if an external
control supports TLV.
Signed-off-by: Dylan Reid <dgreid(a)chromium.org>
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
include/control_external.h | 17 +++++++++++++++-
src/control/control_ext.c | 46 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 62 insertions(+), 1 deletion(-)
diff --git a/include/control_external.h b/include/control_external.h
index 7c066cf..5392ea6 100644
--- a/include/control_external.h
+++ b/include/control_external.h
@@ -60,13 +60,16 @@ typedef struct snd_ctl_ext snd_ctl_ext_t;
typedef struct snd_ctl_ext_callback snd_ctl_ext_callback_t;
/** Key to access a control pointer */
typedef unsigned long snd_ctl_ext_key_t;
+/** Callback to handle TLV commands. */
+typedef int (snd_ctl_ext_tlv_rw_t)(snd_ctl_ext_t *ext, snd_ctl_ext_key_t key, int op_flag, unsigned int numid,
+ unsigned int *tlv, unsigned int tlv_size);
/*
* Protocol version
*/
#define SND_CTL_EXT_VERSION_MAJOR 1 /**< Protocol major version */
#define SND_CTL_EXT_VERSION_MINOR 0 /**< Protocol minor version */
-#define SND_CTL_EXT_VERSION_TINY 0 /**< Protocol tiny version */
+#define SND_CTL_EXT_VERSION_TINY 1 /**< Protocol tiny version */
/**
* external plugin protocol version
*/
@@ -122,6 +125,13 @@ struct snd_ctl_ext {
* control handle filled by #snd_ctl_ext_create()
*/
snd_ctl_t *handle;
+ /**
+ * optional TLV data for the control.
+ */
+ union {
+ snd_ctl_ext_tlv_rw_t *c;
+ const unsigned int *p;
+ } tlv;
int nonblock; /**< non-block mode; read-only */
int subscribed; /**< events subscribed; read-only */
@@ -245,7 +255,12 @@ typedef enum snd_ctl_ext_access {
SND_CTL_EXT_ACCESS_WRITE = (1<<1),
SND_CTL_EXT_ACCESS_READWRITE = (3<<0),
SND_CTL_EXT_ACCESS_VOLATILE = (1<<2),
+ SND_CTL_EXT_ACCESS_TLV_READ = (1<<4),
+ SND_CTL_EXT_ACCESS_TLV_WRITE = (1<<5),
+ SND_CTL_EXT_ACCESS_TLV_READWRITE = (3<<4),
+ SND_CTL_EXT_ACCESS_TLV_COMMAND = (1<<6),
SND_CTL_EXT_ACCESS_INACTIVE = (1<<8),
+ SND_CTL_EXT_ACCESS_TLV_CALLBACK = (1<<28),
} snd_ctl_ext_access_t;
/**
diff --git a/src/control/control_ext.c b/src/control/control_ext.c
index e20d4f3..cc30766 100644
--- a/src/control/control_ext.c
+++ b/src/control/control_ext.c
@@ -324,6 +324,51 @@ static int snd_ctl_ext_elem_unlock(snd_ctl_t *handle ATTRIBUTE_UNUSED,
return -ENXIO;
}
+static int snd_ctl_ext_elem_tlv(snd_ctl_t *handle, int op_flag,
+ unsigned int numid,
+ unsigned int *tlv, unsigned int tlv_size)
+{
+ snd_ctl_ext_t *ext = handle->private_data;
+ snd_ctl_ext_key_t key;
+ int type, ret;
+ unsigned int access, count, len;
+ snd_ctl_elem_id_t id;
+
+ /* we don't support TLV on protocol ver 1.0.0 or earlier */
+ if (ext->version <= SNDRV_PROTOCOL_VERSION(1, 0, 0))
+ return -ENXIO;
+
+ snd_ctl_elem_id_clear(&id);
+ if (numid > 0) {
+ ext->callback->elem_list(ext, numid - 1, &id);
+ id.numid = numid;
+ } else
+ id.numid = 0;
+ key = ext->callback->find_elem(ext, &id);
+
+ if (key == SND_CTL_EXT_KEY_NOT_FOUND)
+ return -ENOENT;
+ ret = ext->callback->get_attribute(ext, key, &type, &access, &count);
+ if (ret < 0)
+ return ret;
+
+ if ((op_flag == 0 && (access & SND_CTL_EXT_ACCESS_TLV_READ) == 0) ||
+ (op_flag > 0 && (access & SND_CTL_EXT_ACCESS_TLV_WRITE) == 0) ||
+ (op_flag < 0 && (access & SND_CTL_EXT_ACCESS_TLV_COMMAND) == 0))
+ return -ENXIO;
+ if (access & SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK) {
+ return ext->tlv.c(ext, key, op_flag, numid, tlv, tlv_size);
+ } else {
+ if (op_flag)
+ return -ENXIO;
+ len = ext->tlv.p[1] + 2 * sizeof(unsigned int);
+ if (tlv_size < len)
+ return -ENOMEM;
+ memcpy(tlv, ext->tlv.p, len);
+ return 0;
+ }
+}
+
static int snd_ctl_ext_next_device(snd_ctl_t *handle ATTRIBUTE_UNUSED,
int *device ATTRIBUTE_UNUSED)
{
@@ -429,6 +474,7 @@ static const snd_ctl_ops_t snd_ctl_ext_ops = {
.element_write = snd_ctl_ext_elem_write,
.element_lock = snd_ctl_ext_elem_lock,
.element_unlock = snd_ctl_ext_elem_unlock,
+ .element_tlv = snd_ctl_ext_elem_tlv,
.hwdep_next_device = snd_ctl_ext_next_device,
.hwdep_info = snd_ctl_ext_hwdep_info,
.pcm_next_device = snd_ctl_ext_next_device,
--
1.7.9.2
++++++ 0009-alsa-lib-conf-Add-two-more-USB-devices-to-iec958-bla.patch ++++++
>From bb5c49fa4160ec1d819fb03fc8dfb5387dad0522 Mon Sep 17 00:00:00 2001
From: David Henningsson <david.henningsson(a)canonical.com>
Date: Mon, 23 Apr 2012 10:39:13 +0200
Subject: [PATCH 09/14] alsa-lib conf: Add two more USB devices to iec958
blacklist
Add "Logitech Wireless Headset" and "Logitech Speaker Lapdesk N700" to
the iec958 blacklist.
Also reorder the list in alphabetic order.
BugLink: https://bugs.launchpad.net/bugs/987163
Reported-by: Jean-Baptiste Lallement <jean-baptiste(a)ubuntu.com>
Signed-off-by: David Henningsson <david.henningsson(a)canonical.com>
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
src/conf/cards/USB-Audio.conf | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/conf/cards/USB-Audio.conf b/src/conf/cards/USB-Audio.conf
index b9148e7..0a0e374 100644
--- a/src/conf/cards/USB-Audio.conf
+++ b/src/conf/cards/USB-Audio.conf
@@ -38,10 +38,12 @@ USB-Audio.pcm.iec958_device {
# "NoiseBlaster 3000" 42
# The below don't have digital in/out, so prevent them from being opened.
- "Sennheiser USB headset" 999
+ "Blue Snowball" 999
+ "Logitech Speaker Lapdesk N700" 999
"Logitech USB Headset" 999
+ "Logitech Wireless Headset" 999
+ "Sennheiser USB headset" 999
"USB Device 0x46d:0x992" 999
- "Blue Snowball" 999
}
--
1.7.9.2
++++++ 0010-Fix-invalid-long-long-format-specifier.patch ++++++
>From 1d3f7975f920f47e6a8a324f547da2180e64171a Mon Sep 17 00:00:00 2001
From: John Spencer <maillist-alsa(a)barfooze.de>
Date: Tue, 24 Apr 2012 12:58:48 +0200
Subject: [PATCH 10/14] Fix invalid long long format specifier
Per POSIX:
L Specifies that a following a, A, e, E, f, F, g, or G conversion
specifier applies to a long double argument.
L is only intended to be used with long doubles, not long long ints.
the proper way is to use "ll" instead.
Signed-off-by: John Spencer <maillist-alsa(a)barfooze.de>
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
src/conf.c | 6 +++---
test/midiloop.c | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/conf.c b/src/conf.c
index 5b1b5a6..32446a2 100644
--- a/src/conf.c
+++ b/src/conf.c
@@ -496,7 +496,7 @@ static int safe_strtoll(const char *str, long long *val)
if (!*str)
return -EINVAL;
errno = 0;
- if (sscanf(str, "%Li%n", &v, &endidx) < 1)
+ if (sscanf(str, "%lli%n", &v, &endidx) < 1)
return -EINVAL;
if (str[endidx])
return -EINVAL;
@@ -1378,7 +1378,7 @@ static int _snd_config_save_node_value(snd_config_t *n, snd_output_t *out,
snd_output_printf(out, "%ld", n->u.integer);
break;
case SND_CONFIG_TYPE_INTEGER64:
- snd_output_printf(out, "%Ld", n->u.integer64);
+ snd_output_printf(out, "%lld", n->u.integer64);
break;
case SND_CONFIG_TYPE_REAL:
snd_output_printf(out, "%-16g", n->u.real);
@@ -2630,7 +2630,7 @@ int snd_config_get_ascii(const snd_config_t *config, char **ascii)
{
char res[32];
int err;
- err = snprintf(res, sizeof(res), "%Li", config->u.integer64);
+ err = snprintf(res, sizeof(res), "%lli", config->u.integer64);
if (err < 0 || err == sizeof(res)) {
assert(0);
return -ENOMEM;
diff --git a/test/midiloop.c b/test/midiloop.c
index ee2e563..d6548b5 100644
--- a/test/midiloop.c
+++ b/test/midiloop.c
@@ -175,7 +175,7 @@ int main(int argc, char** argv)
printf("output.status.xruns = %zi\n", snd_rawmidi_status_get_xruns(ostat));
diff = timediff(end, start);
- printf("Time diff: %Liusec (%Li bytes/sec)\n", diff, ((long long)opos * 1000000) / diff);
+ printf("Time diff: %lliusec (%lli bytes/sec)\n", diff, ((long long)opos * 1000000) / diff);
if (verbose) {
fprintf(stderr,"Closing\n");
--
1.7.9.2
++++++ 0011-pcm-add-missing-break-in-switch.patch ++++++
>From b7334b1a81994bf3005a8999dd779c85683f86c0 Mon Sep 17 00:00:00 2001
From: Antonio Borneo <borneo.antonio(a)gmail.com>
Date: Sun, 13 May 2012 00:06:23 +0800
Subject: [PATCH 11/14] pcm: add missing "break" in "switch"
A missing "break" in procedure snd_pcm_write_mmap() causes
execution of "case SND_PCM_ACCESS_MMAP_NONINTERLEAVED" to
fall through next "default" case of the "switch" statement.
Since "default" handles error cases, the procedure returns
error.
The error fixed by this patch blocks transfer of capture
data from kernel to application. Execution get stuck in
alsa-lib, that discards all received data.
Signed-off-by: Antonio Borneo <borneo.antonio(a)gmail.com>
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
src/pcm/pcm_mmap.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/pcm/pcm_mmap.c b/src/pcm/pcm_mmap.c
index 6b44050..83e74e5 100644
--- a/src/pcm/pcm_mmap.c
+++ b/src/pcm/pcm_mmap.c
@@ -622,6 +622,7 @@ snd_pcm_sframes_t snd_pcm_read_mmap(snd_pcm_t *pcm, snd_pcm_uframes_t offset,
err = _snd_pcm_readn(pcm->fast_op_arg, bufs, frames);
if (err >= 0)
frames = err;
+ break;
}
default:
SNDMSG("invalid access type %d", pcm->access);
--
1.7.9.2
++++++ 0012-pcm_dsnoop-comment-fall-through-in-next-case.patch ++++++
>From afaffe80d9f18bd4e85e665bb078be9511855d51 Mon Sep 17 00:00:00 2001
From: Antonio Borneo <borneo.antonio(a)gmail.com>
Date: Mon, 14 May 2012 23:56:34 +0800
Subject: [PATCH 12/14] pcm_dsnoop: comment fall-through in next "case"
Signed-off-by: Antonio Borneo <borneo.antonio(a)gmail.com>
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
src/pcm/pcm_dsnoop.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/pcm/pcm_dsnoop.c b/src/pcm/pcm_dsnoop.c
index 988f1f4..bacb4ae 100644
--- a/src/pcm/pcm_dsnoop.c
+++ b/src/pcm/pcm_dsnoop.c
@@ -223,6 +223,7 @@ static int snd_pcm_dsnoop_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delayp)
err = snd_pcm_dsnoop_sync_ptr(pcm);
if (err < 0)
return err;
+ /* Fall through */
case SNDRV_PCM_STATE_PREPARED:
case SNDRV_PCM_STATE_SUSPENDED:
*delayp = snd_pcm_mmap_capture_hw_avail(pcm);
--
1.7.9.2
++++++ 0013-tlv-improve-robustness-of-raw-value-ranges.patch ++++++
>From 70b958f460a253f2cbdfd9773d54d489d3dcc4ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Th=C3=A9baudeau?=
<benoit.thebaudeau(a)advansee.com>
Date: Wed, 23 May 2012 01:53:01 +0200
Subject: [PATCH 13/14] tlv: improve robustness of raw value ranges
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
snd_tlv_convert_from_dB() relies on rangemin/max blindly.
Since this function is exported, it is better for robustness and
consistency to parse the range properly, which this patch does.
Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau(a)advansee.com>
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
src/control/tlv.c | 36 ++++++++++++++++--------------------
1 file changed, 16 insertions(+), 20 deletions(-)
diff --git a/src/control/tlv.c b/src/control/tlv.c
index f7c9976..6b0b9f4 100644
--- a/src/control/tlv.c
+++ b/src/control/tlv.c
@@ -291,41 +291,37 @@ int snd_tlv_convert_from_dB(unsigned int *tlv, long rangemin, long rangemax,
{
switch (tlv[0]) {
case SND_CTL_TLVT_DB_RANGE: {
- long dbmin, dbmax, prev_rangemax;
+ long dbmin, dbmax, prev_submax;
unsigned int pos, len;
len = int_index(tlv[1]);
- if (len > MAX_TLV_RANGE_SIZE)
- return -EINVAL;
- if (snd_tlv_get_dB_range(tlv, rangemin, rangemax,
- &dbmin, &dbmax))
+ if (len < 6 || len > MAX_TLV_RANGE_SIZE)
return -EINVAL;
- if (db_gain <= dbmin) {
- *value = rangemin;
- return 0;
- } else if (db_gain >= dbmax) {
- *value = rangemax;
- return 0;
- }
pos = 2;
- prev_rangemax = 0;
+ prev_submax = 0;
while (pos + 4 <= len) {
- rangemin = (int)tlv[pos];
- rangemax = (int)tlv[pos + 1];
+ long submin, submax;
+ submin = (int)tlv[pos];
+ submax = (int)tlv[pos + 1];
+ if (rangemax < submax)
+ submax = rangemax;
if (!snd_tlv_get_dB_range(tlv + pos + 2,
- rangemin, rangemax,
+ submin, submax,
&dbmin, &dbmax) &&
db_gain >= dbmin && db_gain <= dbmax)
return snd_tlv_convert_from_dB(tlv + pos + 2,
- rangemin, rangemax,
+ submin, submax,
db_gain, value, xdir);
else if (db_gain < dbmin) {
- *value = xdir ? rangemin : prev_rangemax;
+ *value = xdir || pos == 2 ? submin : prev_submax;
return 0;
}
- prev_rangemax = rangemax;
+ prev_submax = submax;
+ if (rangemax == submax)
+ break;
pos += int_index(tlv[pos + 3]) + 4;
}
- return -EINVAL;
+ *value = prev_submax;
+ return 0;
}
case SND_CTL_TLVT_DB_SCALE: {
int min, step, max;
--
1.7.9.2
++++++ 0014-conf-Add-more-USB-devices-to-S-PDIF-blacklist.patch ++++++
>From e4d9c348304880399e622d99d0177f434a517d88 Mon Sep 17 00:00:00 2001
From: David Henningsson <david.henningsson(a)canonical.com>
Date: Wed, 23 May 2012 09:59:50 +0200
Subject: [PATCH 14/14] conf: Add more USB devices to S/PDIF blacklist
These devices don't have digital in/out, so prevent them from being
opened.
Signed-off-by: David Henningsson <david.henningsson(a)canonical.com>
Signed-off-by: Takashi Iwai <tiwai(a)suse.de>
---
src/conf/cards/USB-Audio.conf | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/conf/cards/USB-Audio.conf b/src/conf/cards/USB-Audio.conf
index 0a0e374..177a7af 100644
--- a/src/conf/cards/USB-Audio.conf
+++ b/src/conf/cards/USB-Audio.conf
@@ -42,6 +42,10 @@ USB-Audio.pcm.iec958_device {
"Logitech Speaker Lapdesk N700" 999
"Logitech USB Headset" 999
"Logitech Wireless Headset" 999
+ "Plantronics GameCom 780" 999
+ "Plantronics USB Headset" 999
+ "Plantronics Wireless Audio" 999
+ "SB WoW Headset" 999
"Sennheiser USB headset" 999
"USB Device 0x46d:0x992" 999
}
--
1.7.9.2
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0