alsa-utils.git
4 days agoalsactl: Only start restore service when asoundrc file exists master
Ikey Doherty [Tue, 12 Dec 2017 13:32:34 +0000 (13:32 +0000)]
alsactl: Only start restore service when asoundrc file exists

This solves the chicken and egg problem on fresh installations whereby
the alsa state file does not yet exist, and alsa-restore unit attempted
to launch without first having a state file.

Signed-off-by: Ikey Doherty <ikey@solus-project.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

11 days agoaplay: Adjust sample rate limits to support newer hardware
Jussi Laako [Thu, 7 Dec 2017 11:57:14 +0000 (13:57 +0200)]
aplay: Adjust sample rate limits to support newer hardware

There are number of devices that support up to 384 kHz sampling rate and
some devices up to 768 kHz sampling rate. This patch increases sanity
check limit to 768k in order to support testing of such hardware.

Signed-off-by: Jussi Laako <jussi@sonarnerd.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

4 weeks agoChange FSF address (Franklin Street)
Jaroslav Kysela [Tue, 14 Nov 2017 13:28:51 +0000 (14:28 +0100)]
Change FSF address (Franklin Street)

Signed-off-by: Jaroslav Kysela <perex@perex.cz>

4 weeks agoRelease v1.1.5 v1.1.5
Jaroslav Kysela [Tue, 14 Nov 2017 07:52:09 +0000 (08:52 +0100)]
Release v1.1.5

Signed-off-by: Jaroslav Kysela <perex@perex.cz>

2 months agoalsactl: Move systemd unit start-up from basic.target to sound.target
Chris Mayo [Tue, 26 Sep 2017 18:36:12 +0000 (19:36 +0100)]
alsactl: Move systemd unit start-up from basic.target to sound.target

Ensures soundcard is ready before restoring state.

sound.target added to systemd in v18:
https://cgit.freedesktop.org/systemd/systemd/commit/?id=88dfa2938af

Simplify dependencies:
 - After=alsa-state.service is not needed because both units test for
   @daemonswitch@ with opposite outcomes.

 - After=sysinit.target is automatically added by systemd.

First proposed by Tom Yan.

Signed-off-by: Chris Mayo <aklhfex@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

3 months agoalsabat: fix one uninitialized warning issue
Zhang Keqiao [Wed, 30 Aug 2017 01:26:16 +0000 (09:26 +0800)]
alsabat: fix one uninitialized warning issue

Fix a variable uninitialized issue, adding the initialized assignment to fix it.

Signed-off-by: Zhang Keqiao <keqiaox.k.zhang@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

4 months agoaplay: Fix playback for small raw files
Daniel Baluta [Tue, 8 Aug 2017 22:06:00 +0000 (01:06 +0300)]
aplay: Fix playback for small raw files

This fixes a bug when trying to play files with size
smaller than maximum supported header size.

Lets have a look at the following example:

$ aplay -s 2 sample.raw

-> playback_go(fd = 10, loaded = 26, count = 2, name="sample.raw")
--> l = loaded = 26
--> c = count - written = 2
--> c -= l = 2 - 26 = -24
---> r = safe_read(fd, audiobuf + 26, -24)
---> r = -1, EXIT_FAILURE

In this case we have already 'loaded' from the input file more
bytes that we need to send to pcm device. So, we need to adjust
the number of bytes loaded and avoid reading a negative number
of bytes.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

4 months agoaplay: Refactor playback code
Daniel Baluta [Tue, 8 Aug 2017 22:05:59 +0000 (01:05 +0300)]
aplay: Refactor playback code

This introduces read_header function which tries
to read the header of an audio file in order to determine
its type.

This has the following effects:
(1) makes code easier to read
(2) don't abort if file size is less than expected header

(2), allows us to play small files with size smaller than any
supported audio file headers.

Suggested-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

4 months agoaplay: Add samples argument for playing/recording a given number of samples
Ion-Horia Petrisor [Tue, 8 Aug 2017 22:05:58 +0000 (01:05 +0300)]
aplay: Add samples argument for playing/recording a given number of samples

-s --samples allows aplay to be used for playback/capture a given
number of samples per channel

Signed-off-by: Ion-Horia Petrisor <ion-horia.petrisor@nxp.com>
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

5 months agoaplay: interrupt streaming via signal in voc_pcm_write
Srikanth Krishnakar [Mon, 19 Dec 2016 08:34:39 +0000 (14:04 +0530)]
aplay: interrupt streaming via signal in voc_pcm_write

aplay/arecord (alsa-utils v1.1.2) cannot interrupt streaming
via CTRL-C. Fixed the issue by properly handling 'in_aborting'
flag in appropriate functions.

Signed-off-by: Anant Agrawal <Anant_Agrawal@mentor.com>
Signed-off-by: Mikhail Durnev <mikhail_durnev@mentor.com>
Signed-off-by: Srikanth Krishnakar <Srikanth_Krishnakar@mentor.com>
Signed-off-by: Timo Wischer <twischer@de.adit-jv.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

5 months agoaplay: Fix --max-file-time option 32 bits overflow
Scott Gilliland [Fri, 23 Jun 2017 18:35:03 +0000 (18:35 +0000)]
aplay: Fix --max-file-time option 32 bits overflow

Fix bug in arecord --max-file-time where the file size could overflow
32 bits.

Signed-off-by: Scott Gilliland <scott.gilliland@gatech.edu>
Acked-by: John Sauter <John_Sauter@systemeyescomputerstore.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

6 months agoalsatplg: fix topology compiler long option parsing
Liam Girdwood [Wed, 14 Jun 2017 11:25:33 +0000 (12:25 +0100)]
alsatplg: fix topology compiler long option parsing

verbose, compile and output options all have a parameter.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

6 months agotopology: delete output file if parsing fails.
Liam Girdwood [Fri, 9 Jun 2017 15:33:42 +0000 (16:33 +0100)]
topology: delete output file if parsing fails.

Currently the binary output file is left when parsing fails. This confuses
GNU Make if the parsing fails and causes the compilation to partially
complete.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

7 months agoRelease v1.1.4 v1.1.4
Jaroslav Kysela [Fri, 12 May 2017 08:01:46 +0000 (10:01 +0200)]
Release v1.1.4

Signed-off-by: Jaroslav Kysela <perex@perex.cz>

8 months agoaplay: Introduce and use xwrite helper
Daniel Baluta [Mon, 10 Apr 2017 07:04:33 +0000 (10:04 +0300)]
aplay: Introduce and use xwrite helper

Write can return less then requested bytes, but we treat this as
an error thus ending up with confusing error messages.

Fix this by introducing xwrite helper, which makes sure all bytes
are written or an error is returned.

With this patch an usecase where disk is filled by recording will
print:
$ /mnt/msc/audio.wav: No space left on device

instead of random messages like:

$/mnt/msc/audio.wav: No such file or directory

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

9 months agoamidi: optarg might be NULL, fix 't' argument parsing
Jaroslav Kysela [Mon, 27 Feb 2017 08:04:08 +0000 (09:04 +0100)]
amidi: optarg might be NULL, fix 't' argument parsing

11 months agoalsa-info: add ACPI device status
Pierre-Louis Bossart [Tue, 10 Jan 2017 00:32:24 +0000 (18:32 -0600)]
alsa-info: add ACPI device status

BIOS vendors typically reuse the same definitions between different
platforms and expose the relevant hardware by changing the value of
the _STA method.

For example on the Asus T100HA, there are 3 HID values for audio
codecs in the DSDT table but two have a zero status and will be
ignored by the ACPI subsystem.

$ more /sys/bus/acpi/devices/10EC*/status
::::::::::::::
/sys/bus/acpi/devices/10EC3270:00/status
::::::::::::::
15
::::::::::::::
/sys/bus/acpi/devices/10EC5640:00/status
::::::::::::::
0
::::::::::::::
/sys/bus/acpi/devices/10EC5648:00/status
::::::::::::::
0

This information is very useful to figure out which HIDs/quirks need
to be supported. Add log to alsa-info.sh to only expose non-zero
results of the ACPI _STA method, e.g.

!!ACPI Device Status Information
!!---------------

/sys/bus/acpi/devices/10EC3270:00/status   15

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

11 months agoalsa-info: provide more DMI information
Pierre-Louis Bossart [Tue, 10 Jan 2017 00:32:23 +0000 (18:32 -0600)]
alsa-info: provide more DMI information

Some manufacturers don't provide useful information for Manufacturer
and Product Name but instead use Board Vendor and Board Name fields,
add them to alsa-info log

Example on Intel NUC:

!!DMI Information
!!---------------

Manufacturer:
Product Name:
Product Version:
Firmware Version:  KYSKLi70.86A.0042.2016.0929.1933
Board Vendor:      Intel Corporation
Board Name:        NUC6i7KYB

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

11 months agoalsactl: Remove standard output definition in systemd unit
Paul Menzel [Tue, 8 Jul 2014 07:23:06 +0000 (07:23 +0000)]
alsactl: Remove standard output definition in systemd unit

`/lib/systemd/system/alsa-restore.service` specifies
`StandardOutput=syslog`. This overrides the `DefaultStandardOutput`
setting from `/etc/systemd/system.conf`, which the system administrator
can use to specify how output gets logged. In particular, the sysadmin
may want output to go to the journal, or to syslog, or nowhere at all [1].

This patch removes the definition entirely, so the units can use the
system default.

Upstream the patch from the Debian package [2].

[1] https://bugs.debian.org/741123
    "systemd services should not use StandardOutput=syslog; should rely
     on DefaultStandardOutput"
[2] https://sources.debian.net/src/alsa-utils/1.1.2-1/debian/patches/systemd_standardoutput.patch/

Signed-off-by: Paul Menzel <paulepanter@users.sourceforge.net>
CC: Jordi Mallach <jordi@debian.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

11 months agoalsaucm: Add alsaucm.rst to EXTRA_DIST
Takashi Iwai [Wed, 28 Dec 2016 14:58:51 +0000 (15:58 +0100)]
alsaucm: Add alsaucm.rst to EXTRA_DIST

Otherwise it's missing in the tarball.

Signed-off-by: Takashi Iwai <tiwai@suse.de>

11 months agoRelease v1.1.3 v1.1.3
Jaroslav Kysela [Tue, 20 Dec 2016 09:12:29 +0000 (10:12 +0100)]
Release v1.1.3

Signed-off-by: Jaroslav Kysela <perex@perex.cz>

12 months agoalsactl: Fix potential NULL dereferences in daemon mode
Takashi Iwai [Fri, 9 Dec 2016 16:28:47 +0000 (17:28 +0100)]
alsactl: Fix potential NULL dereferences in daemon mode

The code releasing the each card object may access to NULL when a
bogus count is given.  Add a NULL check just to make sure.

Signed-off-by: Takashi Iwai <tiwai@suse.de>

12 months agoINSTALL: document how to configure a build for installation in a local dir
Antonio Ospite [Fri, 9 Dec 2016 13:02:32 +0000 (14:02 +0100)]
INSTALL: document how to configure a build for installation in a local dir

Signed-off-by: Antonio Ospite <ao2@ao2.it>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

12 months agoAdd alsaucm.1 to .gitignore
Takashi Iwai [Fri, 9 Dec 2016 16:24:14 +0000 (17:24 +0100)]
Add alsaucm.1 to .gitignore

Signed-off-by: Takashi Iwai <tiwai@suse.de>

12 months agoalsaucm: add a man page, generated from reStructuredText
Antonio Ospite [Fri, 9 Dec 2016 13:02:31 +0000 (14:02 +0100)]
alsaucm: add a man page, generated from reStructuredText

Signed-off-by: Antonio Ospite <ao2@ao2.it>
Acked-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

12 months agoconfigure.ac: add a check for rst2man, a reStructuredText man page generator
Antonio Ospite [Fri, 9 Dec 2016 13:02:30 +0000 (14:02 +0100)]
configure.ac: add a check for rst2man, a reStructuredText man page generator

Define a USE_RST2MAN conditional so that, when available, rst2man can be
used to generate man pages from reStructuredText source files.

The code follows what is done to check for xmlto.

On Debian system, the rst2man executable is provided by python-docutils
or python3-docutils.

Signed-off-by: Antonio Ospite <ao2@ao2.it>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

12 months agoconfigure.ac: fix the check for xmlto availability
Antonio Ospite [Fri, 9 Dec 2016 13:02:29 +0000 (14:02 +0100)]
configure.ac: fix the check for xmlto availability

The same $xmlto variable is used both in AC_ARG_ENABLE and
AC_CHECK_PROG, but the latter is not setting a value to it when the
program is not found.

These two facts result in the "yes" value from the AC_ARG_ENABLE macro
to be still kept in the variable when the program is not found by
AC_CHECK_PROG, causing USE_XMLTO to be always set, finally resulting in
a build failure in case the xmlto program is not actually in the PATH.

As possible fix could have been to set "no" as a value in AC_CHECK_PROG
when program is not found.

However using two separate variables is more explicit, so fix the issue
this way.

Signed-off-by: Antonio Ospite <ao2@ao2.it>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

12 months agoalsaucm: mention the "list1" command in the usage output
Antonio Ospite [Fri, 9 Dec 2016 13:02:28 +0000 (14:02 +0100)]
alsaucm: mention the "list1" command in the usage output

Signed-off-by: Antonio Ospite <ao2@ao2.it>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

12 months agospeaker-test: Fix chmap wav file selection.
Arnaud Pouliquen [Wed, 7 Dec 2016 16:44:26 +0000 (17:44 +0100)]
speaker-test: Fix chmap wav file selection.

The channel selection currently does not work properly when a channel
map control is provided but no manual channel map was explicitly
requested with "-m".

For example, the CEA/HDMI 6ch (surround 5.1) map is:
 FL, FR, LFE, FC, RL, RR.

Tested command: speaker-test -D hdmi -c 6 -t wav

Speaker-test tries to play channels in this following order:
 0 - Front Left
 3 - Front Center
 1 - Front Right
 5 - Rear Right
 4 - Rear Left
 2 - LFE

But wav file played on associated speakers are not aligned. Here are
the real files played:
 0- /usr/share/sounds/alsa/Front_Left.wav => OK
 3- /usr/share/sounds/alsa/Rear_Right.wav  => OK
 1- /usr/share/sounds/alsa/Front_Right.wav  => OK
 5- /usr/share/sounds/alsa/Rear_Center.wav => KO
 4- found file /usr/share/sounds/alsa/Front_Center.wav => KO
 2- /usr/share/sounds/alsa/Rear_Left.wav  => KO

Issue is that associated wav files ordering is reworked only if
channel_map_set variable is set.

Fix consists in allowing wavs re-ordering if a channel mapping as been
get or set, i.e. channel_map is not null.

Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@st.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

12 months agoaplay: Fix to handle pause when system is suspended/Resumed
Jeeja KP [Mon, 28 Nov 2016 16:32:00 +0000 (22:02 +0530)]
aplay: Fix to handle pause when system is suspended/Resumed

If PCM is paused and then we do system supend-resume, the stream throws
error(EBADF) when stream is paused released.

Check the pcm state before pause/release and if stream is suspended,
call snd_pcm_resume to resume the stream.

Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Jeeja KP <jeeja.kp@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

14 months agoalsaloop: try adapt avail_min for playback to avoid 100% CPU usage
Jaroslav Kysela [Tue, 18 Oct 2016 11:57:19 +0000 (13:57 +0200)]
alsaloop: try adapt avail_min for playback to avoid 100% CPU usage

15 months agoamidi: add sysex-interval option
Felipe F. Tonello [Tue, 30 Aug 2016 16:02:48 +0000 (17:02 +0100)]
amidi: add sysex-interval option

This patch adds a new option to amidi tool: sysex-interval.

It adds a delay (in milliseconds) in between each SysEx message - it searches
for a 0xF7 byte.

This is very useful when sending firmware updates to a remote device via SysEx
or any other use that requires this delay in between SysEx messages.

`amidi' manual was updated with an example usage as well.

Signed-off-by: Felipe F. Tonello <eu@felipetonello.com>
Acked-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

15 months agoalsabat: add system power management S3 test
Keqiao, Zhang [Fri, 26 Aug 2016 15:37:55 +0000 (23:37 +0800)]
alsabat: add system power management S3 test

Support audio pause/resume for playback and capture. The user can
pause alsabat playback/capture threads by sending a signal. The patch
provides a method for QA to quick test audio during system s3.

Signed-off-by: Keqiao, Zhang <keqiao.zhang@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

15 months agoalsabat: fix alsabat -86 error
Keqiao, Zhang [Fri, 26 Aug 2016 15:37:54 +0000 (23:37 +0800)]
alsabat: fix alsabat -86 error

alsabat reports -86 error when system suspend and resume. Check the
return value of read_to_pcm() and write_to_pcm(), when -x8 err is
detected, do resume and wait for read/write to pcm to complete.

Write PCM device error: Streams pipe error(-86)
Read PCM device error: Streams pipe error(-86)
*** Error in alsabat: double free or corruption (out): 0x00007fb438001810 ***

Signed-off-by: Keqiao, Zhang <keqiao.zhang@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

15 months agoalsabat: add amixer config files
Focus Luo [Mon, 22 Aug 2016 16:16:50 +0000 (00:16 +0800)]
alsabat: add amixer config files

This patch includes the reference asound.state config files
on Intel Skylake, Broadwell and Hsawell platforms

Signed-off-by: Focus Luo <focus.luo@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

15 months agoalsabat: automation test scripts
Focus Luo [Mon, 22 Aug 2016 16:16:49 +0000 (00:16 +0800)]
alsabat: automation test scripts

This patch includes automated test scripts for linux audio driver
based on alsa-lib interface by using alsabat as test tool.
It supports analog and display(HDMI/DP) audio test.
The package needs the alsa-utils, alsa-lib installed environment.

Signed-off-by: Focus Luo <focus.luo@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

15 months agoamidi: fix timeout handling
Clemens Ladisch [Sat, 13 Aug 2016 14:41:58 +0000 (16:41 +0200)]
amidi: fix timeout handling

The timeout is not supposed to expire when ignored messages are
received.  This cannot be handled with the poll() timeout, so add
a separate timer.

Reported-by: Martin Tarenskeen <m.tarenskeen@gmail.com>
Reviewd-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Tested-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

15 months agoamidi: ignore not only Active Sensing but also Clock bytes
Clemens Ladisch [Sat, 13 Aug 2016 14:41:23 +0000 (16:41 +0200)]
amidi: ignore not only Active Sensing but also Clock bytes

Active Sensing messages are sent by many devices in the background and
would only interfere with the actual messages that amidi is supposed to
capture.  Therefore, amidi ignores them by default.  However, there are
also devices that send Clock messages with the same problem, so it is
a better idea to filter them out, too.

Reported-by: Martin Tarenskeen <m.tarenskeen@gmail.com>
Reviewd-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Tested-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

16 months agoRelease v1.1.2 v1.1.2
Jaroslav Kysela [Tue, 2 Aug 2016 17:09:45 +0000 (19:09 +0200)]
Release v1.1.2

Signed-off-by: Jaroslav Kysela <perex@perex.cz>

16 months agoalsabat: make snr_is_valid static
Vinod Koul [Tue, 19 Jul 2016 09:05:09 +0000 (14:35 +0530)]
alsabat: make snr_is_valid static

The compilation fails due to multiple defination of snr_is_valid

common.o: In function `snr_is_valid':
bat/common.h:99: multiple definition of `snr_is_valid'
bat.o:bat/common.h:99: first defined here

signal.o: In function `snr_is_valid':
bat/common.h:99: multiple definition of `snr_is_valid'
bat.o:bat/common.h:99: first defined here

latencytest.o: In function `snr_is_valid':
bat/common.h:99: multiple definition of `snr_is_valid'
bat.o:bat/common.h:99: first defined here

analyze.o: In function `snr_is_valid':
bat/common.h:99: multiple definition of `snr_is_valid'
bat.o:bat/common.h:99: first defined here

alsa.o: In function `snr_is_valid':
bat/common.h:99: multiple definition of `snr_is_valid'
bat.o:bat/common.h:99: first defined here

Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

18 months agoalsabat: fix a missing break in switch
Lu, Han [Sun, 12 Jun 2016 10:17:00 +0000 (18:17 +0800)]
alsabat: fix a missing break in switch

Add the break line for OPT_ROUNDUPLATENCY case.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

18 months agoalsabat: add noise detection
Lu, Han [Wed, 8 Jun 2016 19:42:49 +0000 (03:42 +0800)]
alsabat: add noise detection

Alsabat reports error when noise above threshold be detected.
Use either of the options below to designate the threshold. (e.g.
if the ratio of noise to signal is 5%, the snr is about 26dB.)
    --snr-db <value in dB>
    --snr-pc <value in %>

The noise detection is performed in time domain. On each period
of the sine wave being analyzed, alsabat substracts a clean sine
wave from the source, calculates the RMS value of the residual,
and compares the result with the threshold. At last, alsabat
returns the number of periods with noise above threshold. 0 is
returned when the source is clean.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

18 months agoalsabat: add a single channel sine wave generator
Lu, Han [Wed, 8 Jun 2016 19:42:48 +0000 (03:42 +0800)]
alsabat: add a single channel sine wave generator

Add function generate_sine_wave_raw_mono(). It serves as a single
channel sine wave generator, to provide data for calculation (e.g.
for noise analysis).
The function is similar to generate_sine_wave(), but a lite revision.
It has no dependency on bat channels and target frequency, no malloc
inside, no data conversion from float to integer samples, and supports
one channel only.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

18 months agoalsabat: add channels parameter for adjust_waveform()
Lu, Han [Wed, 8 Jun 2016 19:42:47 +0000 (03:42 +0800)]
alsabat: add channels parameter for adjust_waveform()

The function adjust_waveform() is a component of generate_sine_wave(),
and depended on bat->channels parameter. Add parameter "channels" to
remove the dependency, and then adjust_waveform() can be applied on
other use cases, e.g. a single channel sine wave generator.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

18 months agoalsabat: align the data type on float
Lu, Han [Wed, 8 Jun 2016 19:42:46 +0000 (03:42 +0800)]
alsabat: align the data type on float

Aligning the data type of fftw analyzer, sample converter and other
components on float, because:
  1. avoid unnecessary data type conversion;
  2. using float is more efficient than using double;
  3. the extra double accuracy is not required.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

18 months agoalsabat: add round trip audio latency test
vivian,zhang [Fri, 3 Jun 2016 02:05:08 +0000 (10:05 +0800)]
alsabat: add round trip audio latency test

Audio latency is the time delay as an audio signal passes through
a system. There are many kinds of audio latency metrics. One useful
metric is the round trip latency, which is the sum of output latency
and input latency.

The measurement step works like below:
1. Listen and measure the average loudness of the environment for
one second;
2. Create a threshold value 16 decibels higher than the average
loudness;
3. Begin playing a ~1000 Hz sine wave and start counting the samples
elapsed;
4. Stop counting and playing if the input's loudness is higher than
the threshold, as the output wave is probably coming back;
5. Calculate the audio latency value in milliseconds.

Signed-off-by: Zhang Vivian <vivian.zhang@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

18 months agoalsabat: fix a possible memory leak
Lu, Han [Wed, 1 Jun 2016 08:54:28 +0000 (16:54 +0800)]
alsabat: fix a possible memory leak

Fix a possible memory leak in generate_sine_wave(). Memory free was
ignored when the function return an error.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

18 months agoalsabat: add buffer size and period size settings
vivian,zhang [Tue, 31 May 2016 07:31:32 +0000 (15:31 +0800)]
alsabat: add buffer size and period size settings

Add buffer size and period size settings in alsabat.
With -E and -B options, alsabat performs the test with
specified buffer size and period size

Signed-off-by: Zhang Vivian <vivian.zhang@intel.com>
Acked-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

20 months agoalsabat: add terminate status check for capture thread
Lu, Han [Sun, 17 Apr 2016 01:26:45 +0000 (09:26 +0800)]
alsabat: add terminate status check for capture thread

In loopback test, alsabat use pthread_join(pthread_t thread, **retval)
to wait for the capture thread to terminate. If the capture thread was
canceled, PTHREAD_CANCELED is placed in *retval, and the access to the
**retval will fail. Add status check to prevent illegal access to the
**retval.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

20 months agoaplay: fix lurking capture file overwrite bug
David Fries [Thu, 14 Apr 2016 04:32:46 +0000 (23:32 -0500)]
aplay: fix lurking capture file overwrite bug

If -d was given to arecord while commit
8aa13eec80eac312e4b99423909387660fb99b8f (now reverted) was in effect,
the last read would be shorter than the chunk size, but pcm_read would
read and return the chunk size, the samples were discarded, and
capture() continued in a loop because count never reached 0.  arecord
opens a new file each loop iteration, if arecord is dynamically naming
files, --use-strftime option or beyond the wave 2GB limit, this will
generate a series of header only wave files.  If the file is unique
the originally recorded data is lost and it will continue overwriting
the same file with a header only wave file.

While the current pcm_read can't fail (it can exit), it is better to
just fix this lurking bug in case it is "fixed" again.

Signed-off-by: Takashi Iwai <tiwai@suse.de>

20 months agoRelease v1.1.1 v1.1.1
Jaroslav Kysela [Thu, 31 Mar 2016 14:37:02 +0000 (16:37 +0200)]
Release v1.1.1

Signed-off-by: Jaroslav Kysela <perex@perex.cz>

20 months agoalsa-info: add alsa-info.sh.1 to EXTRA_DIST
Jaroslav Kysela [Thu, 31 Mar 2016 14:35:26 +0000 (16:35 +0200)]
alsa-info: add alsa-info.sh.1 to EXTRA_DIST

20 months agoalsabat: add tinyalsa support
Lu, Han [Wed, 23 Mar 2016 07:52:47 +0000 (15:52 +0800)]
alsabat: add tinyalsa support

Use "configure --enable-alsabat-backend-tiny" for alsabat to use
tinyalsa as backend lib. On a system that has both ALSA and tinyalsa
installed, alsabat will use ALSA library by default.
The intention is for alsabat to run on tinyalsa platforms such as
Android or some Internet of Things(IoT) devices.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

20 months agoalsabat: move alsa process to a single block
Lu, Han [Wed, 23 Mar 2016 07:52:46 +0000 (15:52 +0800)]
alsabat: move alsa process to a single block

Move all alsa callings to a single block (alsa.c), so other blocks
such as the main structure, the signal process and the data analysis
modules will be independent to alsa, and new modules such as a
tinyalsa interface can be easily embedded into alsabat.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

20 months agoalsabat: use general data generator function
Lu, Han [Wed, 23 Mar 2016 07:52:45 +0000 (15:52 +0800)]
alsabat: use general data generator function

Use general data generator to replace local function, so other
modules can reuse the data generator rather than re-implement it.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

20 months agoalsabat: clean return value for playback and capture threads
Lu, Han [Wed, 23 Mar 2016 07:52:44 +0000 (15:52 +0800)]
alsabat: clean return value for playback and capture threads

Remove unnecessary prints in playback and capture threads, and replace
the return value "0" with error code for convenience of maintaining.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

20 months agoalsabat: use general function for wav header update
Lu, Han [Wed, 23 Mar 2016 07:52:43 +0000 (15:52 +0800)]
alsabat: use general function for wav header update

In playback thread, use general function update_wav_header()
to replace a bunch of code, so the structure is cleaner and
no need to define variable "wav".

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

20 months agoalsabat: refactoring alsa capture thread
Lu, Han [Wed, 23 Mar 2016 07:52:42 +0000 (15:52 +0800)]
alsabat: refactoring alsa capture thread

Refactoring ALSA capture thread:
  1. Move file open/seek operations to sub function, so all file
  processes are now on a single function (read_from_pcm_loop()), so
  the structure is more reasonable, the function API is simplified
  and no need file cleanup in thread loop.
  2. Replace the wav header processing lines with a general function
  (update_wav_header()), which can be reused in other sections.
  3. Add pthread_exit() for thread to exit safely in single line mode,
  and correct comment.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

20 months agoalsactl: init/ca0106, init/hda - use CTL{values} instead CTL{value}
Jaroslav Kysela [Tue, 22 Mar 2016 15:53:30 +0000 (16:53 +0100)]
alsactl: init/ca0106, init/hda - use CTL{values} instead CTL{value}

Signed-off-by: Jaroslav Kysela <perex@perex.cz>

20 months agoalsactl: remove debug line in set_ctl_values()
Jaroslav Kysela [Tue, 22 Mar 2016 15:50:31 +0000 (16:50 +0100)]
alsactl: remove debug line in set_ctl_values()

Signed-off-by: Jaroslav Kysela <perex@perex.cz>

20 months agoalsabat: use variable for thread return value
Lu, Han [Mon, 21 Mar 2016 11:05:49 +0000 (19:05 +0800)]
alsabat: use variable for thread return value

Use variable instead of 0/1 to indicate the return value of
playback and capture threads.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

20 months agoalsabat: fix fopen and messages
Lu, Han [Mon, 21 Mar 2016 11:05:48 +0000 (19:05 +0800)]
alsabat: fix fopen and messages

All files should be opened in either "rb" or "wb" in current
usage.
Remove incorrect and unneccesary prints.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

20 months agoalsabat: fix misusing of errno
Lu, Han [Mon, 21 Mar 2016 11:05:47 +0000 (19:05 +0800)]
alsabat: fix misusing of errno

Preserve errno value before use, since the value might be
changed by another library call.
Add "#include <errno.h>" and remove redundant include.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

21 months agoalsabat: add bash test script
Lu, Han [Tue, 15 Mar 2016 03:18:54 +0000 (11:18 +0800)]
alsabat: add bash test script

Add bash script for alsabat feature test. It covers basic alsabat
features, including waveform and wav file generate, playback,
capture and analysis with configurable parameters under different
work modes. (loopback, single line, standalone and local mode)
Usage examples:
        alsabat-test.sh
        alsabat-test.sh plughw:1,0
        alsabat-test.sh plughw:1,0 plughw:1,0

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

21 months agoalsabat: add standalone mode
Lu, Han [Tue, 15 Mar 2016 03:18:53 +0000 (11:18 +0800)]
alsabat: add standalone mode

Add support for standalone mode where alsabat will run on a
different machine to the one being tested.
In standalone mode, the alsabat just generates, playback and
capture sound data like in normal mode, but does not analyze.
The alsabat being built without libfftw3 support is always work
in standalone mode.
The alsabat in normal mode can also bypass data analysis using
option "--standalone".

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

21 months agoalsabat: add default device name for playback and capture
Lu, Han [Tue, 15 Mar 2016 03:18:52 +0000 (11:18 +0800)]
alsabat: add default device name for playback and capture

Add default name for the playback and capture devices, in case
they were not set by user through '-D', '-P' or '-C' options.
Previously, if no device be specified, the alsabat will start
a playback thread and a capture thread, and then exit the
threads with error log.
If only one of playback and capture is specified, the alsabat
will work on single line mode as before, where only one thread
(playback or capture) will be started.
The patch was tested on Ubuntu and Chrome OS.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

21 months agoaplay/arecord: handle parsing errors of parameter values
erwin [Fri, 11 Mar 2016 11:40:30 +0000 (11:40 +0000)]
aplay/arecord: handle parsing errors of parameter values

when a user enters a command, he expects his command to be executed
as specified or aborted if it is impossible to fulfill his request

right now a command like "arecord -d hw:1,0 --max-file-time 1h recording.wav"
will happily record something and exit without error status while the resulting
recording contains definitely not what the user requested

to fix this, the patch handles the number parsing function's error channel
and checks whether the parsed number has any trailing characters

Signed-off-by: erwin <nebelbank@posteo.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

21 months agoaconnect: Show sequencer sound card numer/PID via aconnect
Martin Koegler [Tue, 8 Mar 2016 22:06:47 +0000 (23:06 +0100)]
aconnect: Show sequencer sound card numer/PID via aconnect

rawmidi devices expose the card number via IOCTLs, which allows to
find the corresponding device in sysfs.

The sequencer provides no identifing data. Chromium works around this
issue by scanning rawmidi as well as sequencer devices and matching
them by using assumtions, how the kernel register sequencer devices.

This patch adds support for displaying the sound card number/PID to
aconnect.

Signed-off-by: Martin Koegler <martin.koegler@chello.at>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

21 months agoalsabat: truncate sample frames for faster FFT analysis
Lu, Han [Mon, 29 Feb 2016 02:33:45 +0000 (10:33 +0800)]
alsabat: truncate sample frames for faster FFT analysis

Truncate the sample frames to powers of 2, since the FFTW algorithm
runs especially fast in this case, and other sizes may be computed
by means of a slow, general-purpose algorithm.
In my test environment applying the patch, a sound clip of 33072
frames is cut off to 32768 frames before analysis, and the time
cost is reduced from 6.128s to 0.224s.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

22 months agoUpdate .gitignore
Takashi Iwai [Wed, 3 Feb 2016 07:50:28 +0000 (08:50 +0100)]
Update .gitignore

bat was renamed to alsabat.

Signed-off-by: Takashi Iwai <tiwai@suse.de>

22 months agoalsabat: rename to avoid naming conflict
Lu, Han [Wed, 3 Feb 2016 06:20:33 +0000 (14:20 +0800)]
alsabat: rename to avoid naming conflict

alsa-utils as well as bareos-bat (as well a some Bacula packages)
all contain a program called /usr/bin/bat, which causes conflicts on
various distributions ("basic audio tester" vs "bareos administration
tool"("bacula administration tool")).
Rename to avoid conflict.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

22 months agoamixer: skip showing asoc tlv byte controls
Vinod Koul [Thu, 28 Jan 2016 08:32:18 +0000 (14:02 +0530)]
amixer: skip showing asoc tlv byte controls

ASoC TLV Byte controls are very large size controls so we should add new
options for these. So skip dumping contents for these.

$amixer -c0 cget numid=16
numid=16,iface=MIXER,name='mdl params'
  ; type=BYTES,access=-----RW-,values=30336
  ; ASoC TLV Byte control, skipping bytes dump

Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

23 months agoalsa-info.sh: add man page
Jaroslav Kysela [Wed, 13 Jan 2016 08:46:31 +0000 (09:46 +0100)]
alsa-info.sh: add man page

2 years agobat: Don't pass incompatible function pointers to pthread_cleanup_push()
Takashi Iwai [Mon, 9 Nov 2015 13:09:50 +0000 (14:09 +0100)]
bat: Don't pass incompatible function pointers to pthread_cleanup_push()

pthread_cleanup_push() takes a function pointer for void (void *).
Although it may work in most cases, we shouldn't pass an incompatible
function pointer there, as some old gcc complains:
  alsa.c:560: warning: initialization from incompatible pointer type
  alsa.c:562: warning: initialization from incompatible pointer type

Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agobat: Avoid local signal.h file
Takashi Iwai [Mon, 9 Nov 2015 13:04:11 +0000 (14:04 +0100)]
bat: Avoid local signal.h file

The local header file named as "signal.h" causes mysterious compile
error when built with an old glibc.
 signal.h:27: error: conflicting types for 'sin_generator_init'
 ./signal.h:27: error: previous declaration of 'sin_generator_init' was here
 signal.h:28: error: conflicting types for 'sin_generator_next_sample'
 ./signal.h:28: error: previous declaration of 'sin_generator_next_sample' was here
 ....

This turned out to be the conflict of signal.h; namely, pthread.h that
is included before our local signal.h also includes "pthread.h".
Since our local "signal.h" has a higher priority, it gets loaded
instead of the expected pthread's one.  Then we load it again, and it
screws up.

Although it's basically a bug of pthread, it's anyway not good to have
a header file conflicting with the standard header file.  So, let's
name it more explicitly as specific to BAT, bat-signal.h, for avoiding
such a conflict.

Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoRelease v1.1.0 v1.1.0
Jaroslav Kysela [Tue, 27 Oct 2015 16:34:26 +0000 (17:34 +0100)]
Release v1.1.0

Signed-off-by: Jaroslav Kysela <perex@perex.cz>

2 years agobat: add all headers to noinst_HEADERS
Jaroslav Kysela [Tue, 27 Oct 2015 16:32:51 +0000 (17:32 +0100)]
bat: add all headers to noinst_HEADERS

Signed-off-by: Jaroslav Kysela <perex@perex.cz>

2 years agobat: don't link all binaries with fftw library, add missing header
Jaroslav Kysela [Tue, 27 Oct 2015 16:15:58 +0000 (17:15 +0100)]
bat: don't link all binaries with fftw library, add missing header

Signed-off-by: Jaroslav Kysela <perex@perex.cz>

2 years agoconfigure.ac: check for fftw3/m(sqrtf)/pthread only when BAT is enabled
Jaroslav Kysela [Tue, 27 Oct 2015 15:09:30 +0000 (16:09 +0100)]
configure.ac: check for fftw3/m(sqrtf)/pthread only when BAT is enabled

2 years agoBAT: Add missing locale.h header
Caleb Crome [Fri, 23 Oct 2015 17:46:09 +0000 (17:46 +0000)]
BAT: Add missing locale.h header

Missing include became apparent when -O3 was not specified.
Added the header to remove error messages during debug compile.

Signed-off-by: Caleb Crome <caleb@crome.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoBAT: Add man page
Lu, Han [Wed, 21 Oct 2015 06:53:27 +0000 (14:53 +0800)]
BAT: Add man page

Add more information about BAT utility, including design intent,
principles, use mode, hardware connection, options, example and
return value.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoBAT: Use dynamic temp file
Lu, Han [Tue, 20 Oct 2015 08:45:48 +0000 (16:45 +0800)]
BAT: Use dynamic temp file

Use dynamic temp file instead of fixed temp file to store recorded
wav data, for better security.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoBAT: Change comments and interface of usage()
Lu, Han [Tue, 20 Oct 2015 08:45:47 +0000 (16:45 +0800)]
BAT: Change comments and interface of usage()

1. Change comment strings to make the descriptions more clear;
2. Add indent for option lines that have no indent;
3. Use a const string instead of argv[0] as program name.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoBAT: Use colon instead of comma for separation
Lu, Han [Tue, 20 Oct 2015 08:45:46 +0000 (16:45 +0800)]
BAT: Use colon instead of comma for separation

Use colon instead of comma to separate frequency parameters, for
in several locale comma may be handled as decimal point.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoBAT: Remove redundant message strings
Lu, Han [Tue, 20 Oct 2015 08:45:45 +0000 (16:45 +0800)]
BAT: Remove redundant message strings

Cutting down 6 message strings to 2, as translators need to work
on each different variant.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agobuild: Do not try to detect cross-compiler
Mike Frysinger [Thu, 8 Oct 2015 16:14:05 +0000 (12:14 -0400)]
build: Do not try to detect cross-compiler

cross compilers are passed via path may not be a gcc based cross
compiler in such cases this check fails and try's to force gcc based
cross compiler detection, This code is a convenience that limits the
build system.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoAdd bat binary to .gitignore
Takashi Iwai [Fri, 2 Oct 2015 10:47:25 +0000 (12:47 +0200)]
Add bat binary to .gitignore

Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoAdd compile to .gitignore
Takashi Iwai [Fri, 2 Oct 2015 10:47:03 +0000 (12:47 +0200)]
Add compile to .gitignore

Another junk.

Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoBAT: Add Makefile and configures
Lu, Han [Wed, 23 Sep 2015 07:48:55 +0000 (15:48 +0800)]
BAT: Add Makefile and configures

Add Makefile and configures that enable BAT on alsa-utils

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Liam Girdwood <liam.r.girdwood@intel.com>
Signed-off-by: Bernard Gautier <bernard.gautier@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoBAT: Add spectrum analysis functions
Lu, Han [Wed, 23 Sep 2015 07:48:54 +0000 (15:48 +0800)]
BAT: Add spectrum analysis functions

Add functions that detecting signal frequency through spectrum
analyzing.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Liam Girdwood <liam.r.girdwood@intel.com>
Signed-off-by: Bernard Gautier <bernard.gautier@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoBAT: Add converting functions
Lu, Han [Wed, 23 Sep 2015 07:48:53 +0000 (15:48 +0800)]
BAT: Add converting functions

Add functions that converting audio samples to double data for analysis,
and functions that converting float data to audio samples for playback.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Liam Girdwood <liam.r.girdwood@intel.com>
Signed-off-by: Bernard Gautier <bernard.gautier@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoBAT: Add signal generator
Lu, Han [Wed, 23 Sep 2015 07:48:52 +0000 (15:48 +0800)]
BAT: Add signal generator

Add function that generates sine waveform through math lib.
The waveform can be used as source for playback or analysis.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Liam Girdwood <liam.r.girdwood@intel.com>
Signed-off-by: Bernard Gautier <bernard.gautier@intel.com>
Signed-off-by: Caleb Crome <caleb@crome.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoBAT: Add playback and record functions
Lu, Han [Wed, 23 Sep 2015 07:48:51 +0000 (15:48 +0800)]
BAT: Add playback and record functions

Add functions as main loop of playback thread and record thread.
The functions access pcm hardware through ALSA APIs.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Liam Girdwood <liam.r.girdwood@intel.com>
Signed-off-by: Bernard Gautier <bernard.gautier@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoBAT: Add common definitions and functions
Lu, Han [Wed, 23 Sep 2015 07:48:50 +0000 (15:48 +0800)]
BAT: Add common definitions and functions

Add common definitions of macros and data structures; Add functions
that used by multiple components, such as wav file reading and writing.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Liam Girdwood <liam.r.girdwood@intel.com>
Signed-off-by: Bernard Gautier <bernard.gautier@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoBAT: Add initial functions
Lu, Han [Wed, 23 Sep 2015 07:48:49 +0000 (15:48 +0800)]
BAT: Add initial functions

Add main entrance, command line parsing, parameter initiating and
thread initiating functions for BAT.

Signed-off-by: Lu, Han <han.lu@intel.com>
Signed-off-by: Liam Girdwood <liam.r.girdwood@intel.com>
Signed-off-by: Bernard Gautier <bernard.gautier@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoalsactl: Manage both save and restore in a single unit
Takashi Iwai [Tue, 29 Sep 2015 15:26:34 +0000 (17:26 +0200)]
alsactl: Manage both save and restore in a single unit

With RemainAfterExit=true, we can manage both save and restore of the
card state in a single unit file.  This will fix also the case where
systemd reloads the service; with two individual units, it will
restore the previous state before saving, and may lead to inconsistent
state suddenly.

Also fix alsa-state.service as well to make both start and stop
working in a simpler way.

Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=929619
Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoaplay: fix VU meter for S24_LE etc formats
Ricard Wanderlof [Tue, 15 Sep 2015 11:10:00 +0000 (13:10 +0200)]
aplay: fix VU meter for S24_LE etc formats

When recording or playing back audio in a format where the number of
significant bits is less than the physical width (e.g. S24_LE), the VU
meter code needs to consider the number of significant bits in the samples
rather than the physical sample width (e.g. 24 vs 32 bits). Otherwise the
resulting VU meter display will be far too low and it will just indicate
0% all the time.

Tested with a device supporting the S24_LE format.

Signed-off-by: Ricard Wanderlof <ricardw@axis.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agoarecord: Remove only regular files
Alexander Volkov [Mon, 21 Sep 2015 13:05:57 +0000 (16:05 +0300)]
arecord: Remove only regular files

arecord removes a file before writing into it. It's not
appropriate in some cases. For example, if you a pass
a symlink to a file, then the symlink will be removed
while the user expects to record into the symlink's target.
Another case is recording into the device file. Some
modems provide a tty device file as a voice device.
And it's not possible to write into it under root with
arecord, because it removes the device file.

So check the type of a file before writing into it and
remove only regular files.

Signed-off-by: Alexander Volkov <a.volkov@rusbitech.ru>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

2 years agospeaker-test: fix option ordering
Ken Benoit [Thu, 17 Sep 2015 19:06:38 +0000 (15:06 -0400)]
speaker-test: fix option ordering

The -c and -s options needed to be provided in a specific order for the -s option to work correctly.

This pulls the speaker option check outside of the option parsing so that all the options have been parsed before checking to see if the parameter to -s is correct.

Signed-off-by: Ken Benoit <kbenoit@redhat.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>

2 years agoalsactl: Add path condition to alsa-store and alsa-restore services
Takashi Iwai [Mon, 10 Aug 2015 12:42:24 +0000 (14:42 +0200)]
alsactl: Add path condition to alsa-store and alsa-restore services

With alsa-restore.service and alsa-store.service, systemd invokes
alsactl at boot and shutdown times.  When this is invoked on a system
without sound cards, it results in an ugly error message from alsact

  /usr/sbin/alsactl: save_state:1590: No soundcards found...
  return code is "19"

Add ConditionPathExistsGlob checks of /dev/snd/control* devices for
avoiding unnecessary invocations of alsactl on such a system.

Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=940950
Signed-off-by: Takashi Iwai <tiwai@suse.de>