Detailed changes v1.0.27.2 v1.0.28
Jump to navigation
Jump to search
Detailed changelog between 1.0.25 and 1.0.28 releases
alsa-oss
Core
- - Release v1.0.28
- - Modernize configure.ac
- - Add AM_MAINTAINER_MODE([enable]) to configure.in.
PCM Emulation
- - Workaround for aoss + dmix with unaligned rates
- When an OSS stream is setup (e.g. two periods) with a rate that
- doesn't align with the fixed rate of the slave PCM, dmix can't
- establish the hw_params properly. As a dirty workaround, set either
- only min or max periods so that they don't conflict with each other.
- Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=874342
- - Fix the argument passed to snd_pcm_dump_setup()
- Although it's currently disabled via ifdef, better to fix it so that
- any other people won't fall into the same hole like me.
aoss script
- - Revert "Fix path to libaoss.so."
- This reverts commit 53e8f2dace57cd428e046059ac7172e58d206429.
- This breaks the multi-arch usage. The original code uses ${exec_prefix}
- intentionally together with \$LIB (note the backslash here), so that
- ld.so itself expands the right path for both 32 and 64bit archs.
- Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=874331
- - Fix path to libaoss.so.
- Fix path to libaoss.so using ${libdir} instead of ${exec_prefix}.
- ${libdir} has the value given at configure time and works with Debian's
- Multiarch implementation.
Detailed changelog between 1.0.27 and 1.0.28 releases
alsa-tools
Core
- - Release v1.0.28
Digigram Echo Mixer
- - Modernize configure.ac
- - Add AM_MAINTAINER_MODE([enable]) macro to all configure scripts.
Envy24 Control
- - Modernize configure.ac
- - Add AM_MAINTAINER_MODE([enable]) macro to all configure scripts.
HDA Jack Retask
- - hdajackretask: Make sure codecs do not show up twice under 3.15 kernel
- On a 3.15 based kernel, both "hdaudioC*D*" and "hwC*D*" shows up under
- /sys/class/sound, and pointing to the same object. Make sure we only
- match on the hwC*D* name to avoid duplicate entries.
- - hdajackretask: Fix killing PulseAudio on newer PulseAudio versions
- The standard configuration directory for PulseAudio has changed,
- I think since 3.0. Adjust the directory lookup mechanism to match.
as10k1 (EMU10K1+ DSP Assembler)
- - Modernize configure.ac
- - Add AM_MAINTAINER_MODE([enable]) macro to all configure scripts.
- - Add a distclean target to example Makefile.
hda-verb
- - Fix spelling of “successfully”.
- [additionally fixed a typo of "Crative" -- tiwai]
hdspmixer
- - hdspmixer: Add support for RME AIO AEB boards
- AIO allows to connect Analogue Extension Boards (4in/4out).
- Provide those channels in hdspmixer, too.
- The channel maps were copied from the driver, hence the changed casing
- in the comments.
ld10k1 (EMU10K1+ DSP Code Loader)
- - Fix build errors caused by -Werror=format-security.
- When compiled with hardening-flags enabled, ld10k1 fails to build due to
- a pair of unsafe printf usages that trigger -Werror=format-security.
- - Fix bashisms.
- The “function” builtin is a bashism that can be simply omitted with
- no behaviour change, if parentheses are supplied.
qlo10k1
- - qlo10k1: packing fix (configure.ac)
sb16_csp
- - Fix spelling of “successfully”.
- [additionally fixed a typo of "Crative" -- tiwai]
alsa-firmware
Core
- - Release v1.0.28
- - Modernize configure.ac
- - Add cs46xx entry to the main configure and Makefile.am
Cirrus Logic CS46xx Firmware
- - Add cs46xx firmware files
- These are just copied from 3.12 kernel tree and compiled to the binary
- files from C header files, so that they can be read via f/w loader.
Wavefront Firmware
- - wavefront: fix the warning: missing initializer for field ‘data’
alsa-plugins
Core
- - Release v1.0.28
- - Modernize configure.ac
- - Add AM_MAINTAINER_MODE([enable]) to configure.in.
- - Check for and include libavutil.h to avoid unresolved symbols.
- The a52 plugin uses av_free(), but does not check for libavutil
- availability. Patch configure.in to check for the module, and include
- libavutil.h.
A52 Output plugin
- - a52: switch to AV_CODEC_ID identifiers
- Fixes build with latest libavcodec versions.
- - a52: Propagate errors from hw
- Several callbacks returned 0 even though the hw was failing, leading
- applications to believe everything was fine when it wasn't.
- - a52: Add chmap support
- - a52: Fix build error with the recent version
- The version check for USE_AVCODEC_FRAME wasn't done correctly, and it
- failed to build with version 54.x or later.
- - Check for and include libavutil.h to avoid unresolved symbols.
- The a52 plugin uses av_free(), but does not check for libavutil
- availability. Patch configure.in to check for the module, and include
- libavutil.h.
Automatic upmix / downmix plugins
- - upmix: Add chmap support
- - vdownmix: Add chmap support
Jack PCM plugin
- - jack: fix polling and recovering
- This patch fixes polling in alsa-to-jack plugin.
- It makes poll()+_poll_revents() return correct values
- when there's something to read/write.
- It also makes jack pcm survive snd_pcm_recover(-EPIPE).
- - jack: Use jack_client_open instead of deprecated jack_client_new.
- - jack: Allow to specify a client name as parameters
- The current jack client name contains the process id of the application
- providing the audio samples. This leads to unpredictable jack client
- names which makes handling of the connections by a controlling
- application very hard.
- This modification now, allows to specify a client name as parameters
- in the configuration file. The implementation is backward
- compatible and simply adds a new configuration option to the plugin.
- [reformatted and small refactoring by tiwai]
Detailed changelog between 1.0.27.2 and 1.0.28 releases
alsa-lib
Core
- - Release v1.0.28
- - autotools: update style
- - rename configure.in to configure.ac
- - replace INCLUDES with AM_CPPFLAGS
- - modernize AM_INIT_AUTOMAKE invocation
- - Portability fix: look for sys/endian.h as well as endian.h
- - define __BYTE_ORDER and friends.
- - adjust asoundlib.h accordingly.
- - alsa-lib: heavy pcm atomics cleanup
- The following patch comes from the realization that at least ARM code
- for atomics is quite broken and nobody has cared for a decade.
- A quick dive shows that only snd_atomic_{read,write}_{begin,end}
- appear to be used widely. These are implemented using wmb/rmb.
- Only other use of atomic functions is in pcm_meter.c.
- The #SND_PCM_TYPE_METER plugin type appears rarely, if ever, used.
- I presume these days anyone who wants a meter/scope will do in pulseaudio
- layer instead of alsa.
- It would seem better fit to have pcm_meter in alsa-plugins instead
- of alsa-lib, but I guess that would be an ABI break...
- So instead, I'm proposing here
- 1. Removal of all hand-crafted atomics from iatomic.h apart from barriers,
- which are used in snd_atomic_{read,write}_{begin,end}.
- 2. Using __sync_synchronize as the default fallback for barriers. This
- has been available since gcc 4.1, so it shouldn't be a problem.
- 3. Defining the few atomics used by pcm_meter.c withing pcm_meter.c
- itself, using gcc atomic builtins[1].
- 4. Since gcc atomic builtins are available only since gcc 4.7, add a check for
- that in gcc configure.in, and don't build pcm meter plugin if using
- older gcc.
- The last point has the impact, that if there actually is someone who 1)
- uses the meter plugin 2) wants to upgrade to 2014 alsa-lib 3) but
- does not want to use a 2012+ gcc - that someone will be inconvenienced.
- Finally remove the unneeded configure check for cpu type. We can
- trust the gcc to set right flags for us.
- [1] http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html
- - include/global.h - don't define timeval and timespec structures for !glibc
- On request from John Spencer <maillist-alsa@barfooze.de> .
- - local.h: include sys/types.h to fix issues with pcm.h
- sys/types.h is required for the u_int_XX types used by pcm.h.
- since a change in pcm.h is not desired, we add the inclusion
- to the header that includes pcm.h during build.
- - remove unnecessary/obsolete compat/hsearch_r.c
- The usage of hsearch functions where removed long time
- ago in commit 273d115de05574251bdd661747ecb68449a5cf1d.
- This patch highly increases portability for non-glibc systems.
- Remove the complete compat directory as requested by
- Takashi Iwai.
- - Update iatomic.h functions definitions for mips
- Functions atomic_add(s) and atomic_sub(s) are defined with 'extern
- __inline__' that may cause compile fails when cross compile for mips.
- The error message looks like:
- | pcm/.libs/libpcm.a(pcm_meter.o): In function `snd_pcm_meter_update_scope':
- | .../alsa-lib-1.0.27.2/src/pcm/pcm_meter.c:139: undefined reference to `atomic_sub'
- Replace the 'extern __inline__' with 'static __inline__' to fix this
- issue.
- - local.h: use __kernel_off_t from <linux/types.h>
- Also, make the empty definitions __user and __force conditional.
Control API
- - control_hw: fix potential memory leak
- - snd_tlv_convert_from_dB: fix decreasing gain across entries
- Currently, for a TLV consisting of TLV_DB_SCALE_ITEMs, if e.g. alsamixer
- calls snd_mixer_selem_set_playback_dB() with a value that is in-between
- two TLV_DB_SCALE_ITEMs, and xdir is negative, the selected raw hardware
- value is the minimum in the first range above that value, rather than the
- maximum in the last range below that value.
- The user-visible symptom is that in alsamixer, pressing the down key to
- reduce the value sticks at certain points, and cannot be incrementally
- reduced any further, although directly selecting a much lower value (e.g.
- by pressing 0..9) works as expected. This is triggered e.g. by
- sound/soc/codec/max98090.c's max98090_hp_tlv[].
- Fix this by checking whether xdir is positive or not, rather than
- checking whether it has a non-zero value. The code to select the previous
- range's max value is already present. This matches how xdir is used in
- other parts of the code.
- - Fix access of freed memory in namehints
- Sometimes a hook manipulates the config tree, which makes currently
- running iterators point to freed memory. As a workaround, make two
- copies, one for the iterators and another for the hooks.
- BugLink: https://bugs.launchpad.net/bugs/1008600
PCM API
- - alsa-lib: pcm_plug: fix float conversion for user specified ttable
- Move custom ttable with equal channels case from a separate ttable_last
- exception into a common plugins insertion loop.
- Fixes plug with ttable for float pcms (jack, ladspa).
- Example: aplay -fFLOAT_LE /dev/zero
- pcm.!default {
- type plug
- slave.pcm { type null }
- ttable.0.0 1
- }
- - pcm: rate plugin - remove the rewind/forward implementation
- - pcm: rate: add rewindable and forwardable callbacks
- This commit does not fix nonsense values returned by the rewind and
- forward callbacks. E.g., with period_size = 1024 and buffer_size = 4096,
- an attempt to rewind 1024 samples from the nearly-full buffer returns
- 4090.
- Due to these nonsense values, the current rate plugin should be treated
- as non-rewindable. That's why the new callbacks return 0.
- - pcm: null plugin - fix the avail count
- The automatic threshold start is not activated when the wrong avail
- count is returned in the prepared state.
- - pcm: null: add rewindable and forwardable callbacks
- Dirty, but consistent with avail_update.
- - pcm: multi: implement rewindable and forwardable callbacks
- - pcm:file: add the missing htimestamp callback
- - pcm: Fix channel map query when there are lots of maps
- On most HDA Intel HDMI devices, the channel map list is approx. 500 ints
- in size, making the 256-sized buffer used by
- snd_pcm_query_chmaps_from_hw() too small and causing the query to fail
- (NULL result to caller, ENOMEM).
- Bump the buffer size to 2048 ints.
- - pcm: route: Correctly close slave pcm when no matching chmap is found
- This patch fixes a bug where the slave pcm was not correctly closed
- on some error conditions, such as not finding a matching chmap.
- Reported-by: Raymond Yau <superquad.vortex2@gmail.com>
- - pcm: Fix forward/rewind support in iec958 plugin
- When forwarding or rewinding, the frame counter was not updated. This
- could result in corrupted channel status words or misplaced Z-type
- preamble.
- - pcm: rate: Don't return negative frame count on success in rewind
- snd_pcm_rewind is documented to return <0 on failure and >=0 on
- success.
- - pcm: ladspa: Delay LADSPA plugin activate call
- Some LADSPA Plugins rely on connected control ports on activate call.
- While this is not okay by spec, the spec also encourages the activate
- call happening as late as possible.
- - Revert "pcm: route: Don't handle no matching chmap as a serious error"
- This reverts commit 5b72e3d5305930bffc300aa4f2545ba95992c144.
- With the previous fixes, it's no longer needed as a workaround for
- regression with PulseAudio.
- - route: Fix invalid pointer access
- An uninitialized chmap pointer value is assigned in
- _snd_pcm_route_open(). Add NULL initializations appropriately, and
- also avoid the possible invalid access of NULL pcmp pointer.
- - route: Return NULL in case of zero found channels in determine_chmap
- This should fix the problem where the old route syntax can no longer
- be opened.
- - pcm: route: Don't handle no matching chmap as a serious error
- When find_matching_chmap() returns an error for the non-matching
- chmap, the caller, snd_pcm_route_open(), also returns an error
- although it shouldn't be handled as the fatal error. This results in
- the probe error with PulseAudio and it gives no real output in the
- end.
- - pcm: Wrap hw_ptr to boundary in pcm_ioplug
- The function snd_pcm_ioplug_hw_ptr_update() always increased the hw_ptr
- by delta, without wrapping it to the boundary. This would lead to
- problems when after many hours, the hw_ptr would overflow.
- - pcm: route: Select slave chmap based on ttable information
- It means we need to initialize this order:
- 1) Read the ttable to figure out which channels are present
- 2) Open slave pcm and find a matching chmap
- 3) Determine size of ttable (this can now depend on the chmap)
- 4) Read ttable coefficients
- 5) At prepare time, select the matching chmap
- - pcm: route: Allow chmap syntax for slave channels in ttable
- Instead of writing e g "0" and "1", one can now write "FL" and "FR" instead.
- E g:
- ttable.0.FL 1
- ttable.1.FR 1
- ttable.2.LFE 1
- - pcm: Insert linear-to-float conversion when rate or channel count is incorrect
- This fixes a bug where snd_pcm_plug_insert_plugins fails when both
- client and slave use format float, but the rate or channel count does
- not match. I also removed some redundant code.
- - Portability fix: look for sys/endian.h as well as endian.h
- - define __BYTE_ORDER and friends.
- - adjust asoundlib.h accordingly.
- - alsa-lib: heavy pcm atomics cleanup
- The following patch comes from the realization that at least ARM code
- for atomics is quite broken and nobody has cared for a decade.
- A quick dive shows that only snd_atomic_{read,write}_{begin,end}
- appear to be used widely. These are implemented using wmb/rmb.
- Only other use of atomic functions is in pcm_meter.c.
- The #SND_PCM_TYPE_METER plugin type appears rarely, if ever, used.
- I presume these days anyone who wants a meter/scope will do in pulseaudio
- layer instead of alsa.
- It would seem better fit to have pcm_meter in alsa-plugins instead
- of alsa-lib, but I guess that would be an ABI break...
- So instead, I'm proposing here
- 1. Removal of all hand-crafted atomics from iatomic.h apart from barriers,
- which are used in snd_atomic_{read,write}_{begin,end}.
- 2. Using __sync_synchronize as the default fallback for barriers. This
- has been available since gcc 4.1, so it shouldn't be a problem.
- 3. Defining the few atomics used by pcm_meter.c withing pcm_meter.c
- itself, using gcc atomic builtins[1].
- 4. Since gcc atomic builtins are available only since gcc 4.7, add a check for
- that in gcc configure.in, and don't build pcm meter plugin if using
- older gcc.
- The last point has the impact, that if there actually is someone who 1)
- uses the meter plugin 2) wants to upgrade to 2014 alsa-lib 3) but
- does not want to use a 2012+ gcc - that someone will be inconvenienced.
- Finally remove the unneeded configure check for cpu type. We can
- trust the gcc to set right flags for us.
- [1] http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html
- - pcm: use CLOCK_REALTIME for non-monotonic ts
- gettimeofday() is the same than clock_gettime(CLOCK_REALTIME)
- except for the loss of precision and the double unnecessary
- conversion timespec <-> timeval.
- - pcm: initialize monotonic field for dshare and dsnoop, too
- Just like the previous fix for dmix, we need update for dshare and
- dsnoop plugins.
- - pcm: initialize pcm_dmix monotonic field
- not doing so, leaves the pcm object in an inconsistent state since
- 'info' field is copied from the slave which is then used when
- snd_pcm_hw_params_is_monotonic() is called.
- For instance, when using dmix with aplay and an underrun is occuring, the following
- info is returned:
- underrun!!! (at least 1248687948.256 ms long)
- Status:
- state : XRUN
- trigger_time: 1390347762.628483000
- tstamp : 1390347766.184350000
- delay : -635
- avail : 15687
- avail_max : 15675
- now is computed from CLOCK_MONOTONIC while pcm status tstamps are from gettimeofday().
- After the fix, underruns are still occuring on my setup but at least the displayed info
- is correct:
- underrun!!! (at least 7630.409 ms long)
- Status:
- state : XRUN
- trigger_time: 7652.739201431
- tstamp : 7660.369600636
- delay : -624
- avail : 15676
- avail_max : 15664
- - alsa-lib: minor typo in pcm doc
- Added a missing 'f' in the word 'diferent'
- - minor malloc changes
- replace malloc + memset with calloc since calloc may skip the memset if
- returned memory comes directly from sbrk()
- use malloc instead of malloc if first thing done with allocated memory is
- to flip all bits to 1.
- - dmix: Don't use assert() and abort()
- We seem to still have some races at closing a dmix stream, but
- aborting is the worst option. Let's make not melt down.
- Reference: https://bugzilla.novell.com/show_bug.cgi?id=852446
- - pcm_file: document new argument to snd_pcm_file_open().
- Document function argument, added in commit
- 4081be0b87ab9fa53a8906e66bc240f18a7a9a54.
- - pcm_file: don't touch infile on playback and output file on capture.
- Commit 1d80c5b901baf7e1b7998dfa518532fbd64e4283 message describes
- behaviour in case of specified infile option as
- 'No file writes will take place in this case'.
- But this is clearly not the case as output file gets truncated while
- running `arecord -Dtestin >/dev/null`, where "testin" is defined as
- pcm.testin {
- type file
- slave.pcm null
- file "/tmp/qqqq.out"
- infile "/tmp/qqqq.in"
- format "raw"
- }
- Besides that, the existing behaviour is rather counterintuitive,
- requiring both output and input files to exist and making access to them
- regardless of playback or capture intention.
- Also, it's very confusing to get output file truncated while trying to
- just capture from the device.
- Current changeset introduces the following behaviour:
- - output file ("file" option) is only (p)open()'ed for writing
- only on playback to the device
- - any data is written to the output file descriptor
- (provided with "file" option) only on playback to the device
- - input file ("infile" option) is only open()'ed for reading only on
- capture from the device
- - any data is read from the input file descriptor
- (provided with the "infile" option) only on capture from the device
- - pcm_file: fixed memory leak.
- Valgrind report for this leak was:
- Command: aplay -Dfile:'/tmp/qqq',raw qqq.wav
- 14 bytes in 1 blocks are definitely lost in loss record 1 of 2
- at 0x402BF5C: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
- by 0x40D7557: snd_pcm_file_hw_params (in /usr/lib/libasound.so.2.0.0)
- by 0x40BA093: _snd_pcm_hw_params_internal (in /usr/lib/libasound.so.2.0.0)
- by 0x40AB831: snd_pcm_hw_params (in /usr/lib/libasound.so.2.0.0)
- by 0x804C523: ??? (in /usr/bin/aplay)
- by 0x804E5B7: ??? (in /usr/bin/aplay)
- by 0x804FC8C: ??? (in /usr/bin/aplay)
- by 0x80520FB: ??? (in /usr/bin/aplay)
- by 0x4184942: (below main) (libc-start.c:226)
- - pcm_file: fix SEGFAULT if file option is missing while infile is not.
- Commit 5c5f1358123af69155267463a0b6254ad9cbecc4 requires both file and
- infile options to be missing to report a failure.
- In fact, only file option is mandatory and should be checked there.
- Otherwise, NULL file triggers segfault in
- snd_pcm_file_replace_fname() called from
- snd_pcm_file_open_output_file().
- infile option is optional, so don't report fatal error if it's missing.
- - pcm: Fix a wrong value shown in the error message in rate plugin
Use Case Manager API
- - UCM: Document some standard values
- Playback/CaptureChannels has been around for a bit. Playback/CaptureRate
- is new and is intended to be used to specify the sample rate at which
- the Playback/CapturePCM should be opened.
/Makefile.am
- - autotools: update style
- - rename configure.in to configure.ac
- - replace INCLUDES with AM_CPPFLAGS
- - modernize AM_INIT_AUTOMAKE invocation
/alsalisp/Makefile.am
- - autotools: update style
- - rename configure.in to configure.ac
- - replace INCLUDES with AM_CPPFLAGS
- - modernize AM_INIT_AUTOMAKE invocation
/src/Makefile.am
- - remove unnecessary/obsolete compat/hsearch_r.c
- The usage of hsearch functions where removed long time
- ago in commit 273d115de05574251bdd661747ecb68449a5cf1d.
- This patch highly increases portability for non-glibc systems.
- Remove the complete compat directory as requested by
- Takashi Iwai.
ALSA Lisp
- - minor malloc changes
- replace malloc + memset with calloc since calloc may skip the memset if
- returned memory comes directly from sbrk()
- use malloc instead of malloc if first thing done with allocated memory is
- to flip all bits to 1.
ALSA Server
- - autotools: update style
- - rename configure.in to configure.ac
- - replace INCLUDES with AM_CPPFLAGS
- - modernize AM_INIT_AUTOMAKE invocation
Compatibility routines
- - remove unnecessary/obsolete compat/hsearch_r.c
- The usage of hsearch functions where removed long time
- ago in commit 273d115de05574251bdd661747ecb68449a5cf1d.
- This patch highly increases portability for non-glibc systems.
- Remove the complete compat directory as requested by
- Takashi Iwai.
Configuration
- - Loopback.conf: fix the comment
- - src/conf/cards: Add missing entry for Loopback.conf
- - conf: Allow 2.1 surround to use different number of channels
- This way, cards that support LFE on four channels (e g laptop with
- internal subwoofer) can do that, and other cards on a six channel setup
- can use that as well.
- Well, note that there is still a reference to "pcm.surround51" left here.
- In practice, for HDA Intel sound cards this does not matter as both
- surround51 and surround40 reference the same definition.
- (And that's the only card I currently know of that actually does
- surround2.1 over four channels.)
- - conf: Add surround 2.1 support to all cards
- All cards that support 4.1 surround now also support 2.1 surround,
- because they both have surround 5.1 as slave.
- - conf: Add basic infrastructure for 2.1 surround sound
- For now, we do 2.1 over 5.1, because that's what ALSA allows per default.
- - conf.c: use portable way to initialize recursive mutex
- PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not in POSIX, as _NP
- (non-portable) suggests.
- exposing such a symbol in musl libc would lock in the ABI for all
- times and makes it impossible to do future changes to the under-
- lying struct without hideous symbol versioning hacks.
- use the portable way instead: pthread_once was designed for such
- cases.
- Tested-by: John Spencer <maillist-alsa@barfooze.de>
- - HDA-Intel: present up to 8 HDMI/DP outputs via "hdmi" device
- Some new AMD cards have HDA codecs presenting 6 connected HDMI/DP pin
- nodes (plus 1 unconnected pin node) according to the ALSA card database.
- Example:
- http://www.alsa-project.org/db/?f=de3ced7af41de0ed54d218650e5e2f16c511787b
- Bump the maximum number of presented HDMI outputs per card via the
- "hdmi" PCM from 4 to 8 (so that the last possible device is DEV=7).
- Note that HDMI PCM devices DEV=4..7 use shared PCM device numbers, so
- HDA cards that have over 4 audio PCM devices or multiple S/PDIF or modem
- devices will have their remaining PCM devices misrepresented as HDMI
- devices.
- - conf/cards: add Audio Advantage Micro II
- With related kernel chnages add extended suport for:
- - AES bits controls (via device suffix AESn= or tools like iecset)
- - SPDIF switch control, turning on/off the optical transmitter (via alsamixer tool)
Documentation
- - autotools: update style
- - rename configure.in to configure.ac
- - replace INCLUDES with AM_CPPFLAGS
- - modernize AM_INIT_AUTOMAKE invocation
Kernel Headers
- - hdspm.h: Update LTC ioctl to use struct hdspm_ltc
- Use struct hdspm_ltc to query the LTC, using a mixer struct was just
- plain wrong.
- Due to the wrong struct, this ioctl was never working, so we're free to
- fix it without breaking userspace compatibility.
Test/Example code
- - Add -lm to test programs to fix build failure.
- Add -lm to test programs that use sin(), to fix a build failure with recent
- binutils.
- - test/chmap: Add missing usage text for -s option
alsa-utils
Core
- - Release v1.0.28
- - alsactl: Do not run udev rule before datadir/sbindir are both mounted
- Sometimes 90-alsa-restore.rules is run before /usr is mounted,
- and alsactl restore depends on /usr/share/alsa being present.
- If /usr/share/alsa is not present, we're so early in the boot
- process that alsa-restore.service (or upstart equivalent) will
- run later on.
- BugLink: https://bugs.launchpad.net/bugs/1289730
- - configure.ac: cosmetic change
- - Modernize configure.ac
- - configure.in -> configure.ac rename
- - Makefiles - use AM_CPPFLAGS instead INCLUDES
- - configure: add --with-lock-dir option
- - configure: detect udevdir via pkg-config, fallback to /lib/udev/rules.d
/include/Makefile.am
- - configure.in -> configure.ac rename
ALSA Control (alsactl)
- - alsactl: Fixup test for mydatadir/sbindir
- Use the "mydatadir" name consistently.
- - alsactl: Do not run udev rule before datadir/sbindir are both mounted
- Sometimes 90-alsa-restore.rules is run before /usr is mounted,
- and alsactl restore depends on /usr/share/alsa being present.
- If /usr/share/alsa is not present, we're so early in the boot
- process that alsa-restore.service (or upstart equivalent) will
- run later on.
- BugLink: https://bugs.launchpad.net/bugs/1289730
- - alsactl: add -L (no-lock) and change -D (lock-dir) to -O (state-lock-file)
- - configure: add --with-lock-dir option
- - alsactl: Store lockfile in /var/lock, add -D option to specify the lock dir
- It can not be generally assumed that the directories in which asound.state
- resides are writable. Use /var/lock and allow users to alter this path.
- - alsa-restore.rules: refer to correct attr
- $attr{number} in the RUN rule is an empty expansion. This makes sense,
- because the path doesn't exist -- i.e., it refers to the path:
- /sys/devices/pci0000:00/foo/bar/sound/card0/controlC0/number
- Instead, refer to $attr{device/number}, which does exist.
- - alsactl: Fix the va_list initialization in cerror_() and dbg_()
- The <ap> argument for syslog_() was uninitialized.
- - alsactl: monitor all cards as default
- - alsactl: Fix REMOVE event handling in monitor command
- SND_CTL_EVENT_MASK_REMOVE has to be checked at first and ignore the
- rest if it matches. Suggested by Clemens.
- - alsactl: Add monitor command
- With monitor command, you can monitor the events received from the
- given control device.
- - alsactl: alsa-state.service - fix typo (rkill -> kill)
ALSA RawMidi Utility (amidi)
- - Makefiles - use AM_CPPFLAGS instead INCLUDES
Speaker Test
- - speaker-test: update man page for new -X arg, also consistency fixes
- - speaker-test: add --force-frequency option to allow hz outside range
- - speaker-test: Show out-of-chmap channels as Unknown
- Currently speaker-test falls back to ALSA default channel names for
- channels out-of-chmap.
- This causes e.g. the 4th channel of
- $ speaker-test -c4 -Dhdmi -m "FR,FL,FC"
- to be shown as "Rear Right".
- Change the code to show such channels as Unknown instead, similar to
- when snd_pcm_chmap_long_name() does not know the name.
- - speaker-test: Always show chmap channel names if available
- Currently speaker-test only uses channel names retrieved by
- snd_pcm_chmap_long_name() when a channel map has been manually set.
- However, the device may provide a default (or fixed) channel map that
- differs from the traditional ALSA map, in which case wrong channel names
- are shown.
- Fix that by always using the name from the channel map when a channel
- map is present.
- Note that the names retrieved by snd_pcm_chmap_long_name() are not
- currently localized via gettext.
- Also note that Linux kernel HDMI driver reported wrong default channel
- maps before 56cac413dd6d43af8355f5d1f90a199b540f73fc ("ALSA: hda - hdmi:
- Fix reported channel map on common default layouts").
- - speaker-test: Fix chmapped channel selection without specified chmap
- The channel selection currently does not work properly when there is a
- driver-provided non-ALSA-traditional channel map but no manual channel
- map was explicitely requested with "-m".
- For example, the CEA/HDMI 8ch map is FL,FR,RLC,RRC,FC,LFE,RL,RR. Note
- that it is otherwise the same as the traditional ALSA channel map,
- except that the traditional rear speakers are considered
- rear-center speakers and the traditional side speakers are considered
- rear speakers.
- Speaker-test tries to play back channels in this following order:
- 0, /* Front Left */
- 4, /* Center */
- 1, /* Front Right */
- 7, /* Side Right */
- 3, /* Rear Right */
- 2, /* Rear Left */
- 6, /* Side Left */
- 5, /* LFE */
- When it is the time to play back Side Left/Right, speaker-test tries to
- look for SL/SR in the chmap, but doesn't find it, so it just plays back
- channels 6/7 (which indeed are the side speakers, or RL/RR in this
- channel map - so the correct channels are selected).
- When it becomes the time to playback Rear Left/Right, speaker-test again
- tries to find RL/RR in the chmap, and this time it does find them in the
- chmap positions 6/7.
- So the channels 6/7 are tested twice and 2/3 are never tested.
- To fix this, define a generic playback order channel_order[] to be used
- when the channel map is present (but not user-defined) and generate a
- (speaker/playback number => channel number) mapping with the channels
- ordered in the following order:
- 1. regular channels found in channel_order[] in the defined order,
- 2. channels not found in channel_order[] ordered by channel number.
- 3. UNKNOWN channels ordered by channel number.
- 4. NA channels ordered by channel number.
- For channels outside the channel map just use their channel numbers (so
- they will be last after all of the above).
- For example, if the playback device has a fictional default channel map
- of FR,FL,UNKNOWN1,FOO,BAR,RR,RL,UNKNOWN2, the playback order will be
- FL,FR,RR,RL,FOO,BAR,UNKNOWN1,UNKNOWN2(,any_extra_channels).
- When the channel mapping is specified manually, the specified order is
- used for playback as before.
aconnect
- - fix aconnect -l option
- aconnect -l would just print usage.
- This fix makes it do what usage says it should do.
alsaconf
- - alsaconf: update gentoo to use modprobe.d method as everyone else
- We migrated off modules.d a long time ago.
- - alsaconf: support newer m-i-t and kmod
- The m-i-t package made it up to 3.10 versions before ending, so update
- the glob to handle those too.
- Most distros are moving on to kmod, so we also want to handle the version
- string that package outputs.
alsaloop
- - Makefiles - use AM_CPPFLAGS instead INCLUDES
- - alsaloop: pcmjob.c: use portable way to initialize recursive mutex
- PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP is not in POSIX, as _NP
- (non-portable) suggests.
- exposing such a symbol in musl libc would lock in the ABI for all
- times and makes it impossible to do future changes to the under-
- lying struct without hideous symbol versioning hacks.
- use the portable way instead: pthread_once was designed for such
- cases.
- Tested-by: John Spencer <maillist-alsa@barfooze.de>
- - alsaloop: add -z,--syslog option to use syslog for errors
- - alsaloop: fix wrong alias for signal.h
- in POSIX, there is no <sys/signal.h>.
- it's merely a legacy alias used by glibc, and the header does nothing
- else than including <signal.h>.
- so let's do the right thing and use the right name, which works everywhere.
alsamixer
- - Makefiles - use AM_CPPFLAGS instead INCLUDES
alsaucm
- - Makefiles - use AM_CPPFLAGS instead INCLUDES
amixer
- - Makefiles - use AM_CPPFLAGS instead INCLUDES
- - amixer: fix indentation when printing container TLV contents
- decode_tlv() adds indentation in the beginning, with the expectation
- that the TLV will be printed on the line afterwards in a switch-case.
- However, in the case of a container TLV the switch-case simply adds
- another level of indentation and calls decode_tlv() for the inner TLVs.
- This causes the first inner TLV to be printed with too much indentation
- and double '|'.
- Fix that by printing "container" and a newline for container TLVs, so
- that the result is as follows:
- : values=0,0,0,0,0,0,0,0
- | container
- | chmap-variable=FL,FR
- | chmap-variable=FL,FR,LFE
- | chmap-variable=FL,FR,FC
- - amixer: actually print all TLVs in a container TLV
- Due to a wrong indexing of tlv[] decode_tlv() always skips to the end of
- the container TLV since the used tlv[1] contains the container TLV size
- instead of the intended element size.
- This causes, for example, only the first HDMI channel map TLV to be
- shown.
- Fix the indexing to actually use the element size.
aplay/arecord
- - aplay: Fix VU-meter stdout/stderr mess
- Commit 6bbeb78d forgot to change some of VU-meter output to stderr.
- This patch makes the output of `aplay -vvv` consistent again.
- - aplay/arecord: Add more in_aborting checks to read/write loops
- Reported-by: Sergey <sergemp@mail.ru>
- - aplay: fix timespec to msec conversion
- There is 1M nsec in a msec.
- - aplay: fix pcm_read() return value
- Because of the way the pcm_read() functions are currently used, returning
- rcount or result is equivalent but I feel it is more accurate to
- return 'result'.
- - aplay: fix two off by one errors
- Attached patch for aplay fixes two off-by-one errors preventing usage
- of the last available sample format.
gitcompile
- - configure.in -> configure.ac rename