Detailed changes v1.2.1.2 v1.2.2

From AlsaProject
Revision as of 16:43, 19 February 2020 by Perex (talk | contribs) (1 revision)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Detailed changelog between 1.2.1.2 and 1.2.2 releases

Changelog between 1.1.7 and 1.2.2 releases

alsa-lib

Core

- Release v1.2.2 - github build.yml: cosmetic changes - github: create test workflow for fedora and ubuntu - do not set close-on-exec flag on descriptor if it was already set

There is no need to set this again if O_CLOEXEC is supported.

- configure.ac: remove an unnecessary libtool fix

This code was added in commit 75d393a563efb578c79364a277087c6326267f52
without explaining why. I assume it was a mistake, since it looks like
the libtool problem should have gone away a long time ago. The referenced
wiki page https://wiki.debian.org/RpathIssue says:

    Since libtool 1.5.2 (released 2004-01-25), on Linux libtool no
    longer sets RPATH for any directories in the dynamic linker search
    path, so this should no longer be an issue unless upstream used a
    really old version of libtool when creating their distribution
    tarball.

This code caused problems in OpenEmbedded, where the libtool script is
named "x86_64-oe-linux-libtool" or similar rather than just "libtool",
so the sed command failed with a file not found error. Rather than
adapting the code to OpenEmbedded's peculiarities, it seems best to just
remove the unnecessary code altogether.

Note: The rpath is set (hardcoded) for 'make' but it is corrected
for 'make install' by libtool.

- Update the attributes.m4 macro file from xine

This file was imported from the xine project. Update it to the current
revision, which resolves the "no AC_LANG_SOURCE call detected in body"
warnings with Autoconf 2.68 or later.

- Fix alsa/sound/*.h for external programs

The recent update of sound/*.h to sync with the latest Linus uapi
files broke the build of alsa-tools programs.  These files used to be
a modified version of Linux sound/* header files, so that they could
be built without Linux headers.  The special prefix like __user and
other things were worked around there.

We may do that again, but a better approach is to fix those things in
Linux kernel uapi side, while we keep the minimal workaround in
alsa-lib such as the __u16 and co type definitions.

This patch is such an attempt, namely:
- Keep the original $LINUX/uapi/sound/*.h in include/sound/uapi
  directory
- The "fixes" are applied to some uapi headers, so that they don't
  contain Linux-specific prefix and use of opaque struct like
  snd_ctl_elem_id
- The uapi headers are included indirectly from include/sound/*.h
- Some headers have inclusion of type_compat.h for the Linux variable
  types and prefixes
- type_compat.h tries to use <linux/types.h> when __linux__ is
  defined, instead of the own conflicting definitions

The last type might need a bit more adjustment depending on the
compiler, but it can be fixed locally without disturbing else.

Control API

- control: Remove access to the deprecated dimen fields

The dimen fields of control element has been deprecated, and it's
finally dropped in kernel 5.6 ABI definition.  Remove the
corresponding accesses in alsa-lib code.

As of this patch, it's disabled via ifdef, just to be sure.  The
disabled code should be removed in a later stage as a cleanup.

- namehint: improve the previous patch (check the returned value) - namehint: correct the @args check

BugLink: https://github.com/alsa-project/alsa-plugins/issues/3

Mixer API

- mixer: Fix memory leak for more than 16 file descriptor case

Topology API

- topology: Drop SNDRV_CTL_ELEM_ACCESS_TIMESTAMP access

SNDRV_CTL_ELEM_ACCESS_TIMESTAMP is removed from 5.6 kernel ABI as the
ctl timestamp field has been never used and deprecated.
Drop the corresponding access from the topology code, too.

- topology: remove MAX_FILE definition and use correct PATH_MAX - topology: cosmetic changes (functions) - topology: tplg_dbg() cleanups

- remove newline at the end

- topology: unify the log mechanism - topology: move the elem->list delete to tplg_elem_free()

The tplg_elem_free() is called in the error path from many places
and it is expected that the element object will be unregistered
from the tplg structure, too.

- topology: implement snd_tplg_decode - topology: fix the wrong memory access (object realloc) - topology: fix the ops parser (accept integer/hexa values) - topology: fix the TPLG_DEBUG compilation - topology: implement shorter hexa uuid 00:00 parser - topology: fix the unitialized tuples - topology: dapm - fix the SNDERR() - Undefined - topology: cleanup the SNDERR() calls

- remove the wrong new lines
- remove error/warning prefixes (error is error)

- topology: add snd_tplg_version() function - topology: add snd_tplg_create() with flags

Add SND_TPLG_CREATE_VERBOSE and SND_TPLG_CREATE_DAPM_NOSORT
flags for the special operations.

- topology: add snd_tplg_save() - topology: add parser to the tplg_table - topology: move the topology element table from builder to elem

- use offsetof() for the lists
- add other info to describe the elements
- use the table in the element constructor

- topology: add snd_tplg_load() remove snd_tplg_build_bin_file() - topology: parser - recode tplg_parse_config() - topology: add binary output from the builder

- snd_tplg_build_bin()
- snd_tplg_build_bin_file()

- topology: convert builder to use the mallocated memory - topology: add tplg_get_unsigned() function - topology: fix tplg_get_integer() - handle errno == ERANGE - topology: use snd_config_get_bool() instead own implementation - topology: avoid to use the atoi() directly when expected - Fix alsa/sound/*.h for external programs

The recent update of sound/*.h to sync with the latest Linus uapi
files broke the build of alsa-tools programs.  These files used to be
a modified version of Linux sound/* header files, so that they could
be built without Linux headers.  The special prefix like __user and
other things were worked around there.

We may do that again, but a better approach is to fix those things in
Linux kernel uapi side, while we keep the minimal workaround in
alsa-lib such as the __u16 and co type definitions.

This patch is such an attempt, namely:
- Keep the original $LINUX/uapi/sound/*.h in include/sound/uapi
  directory
- The "fixes" are applied to some uapi headers, so that they don't
  contain Linux-specific prefix and use of opaque struct like
  snd_ctl_elem_id
- The uapi headers are included indirectly from include/sound/*.h
- Some headers have inclusion of type_compat.h for the Linux variable
  types and prefixes
- type_compat.h tries to use <linux/types.h> when __linux__ is
  defined, instead of the own conflicting definitions

The last type might need a bit more adjustment depending on the
compiler, but it can be fixed locally without disturbing else.

- topology: more coding fixes - topology: dapm - merge identical index blocks like for other elems - topology: dapm - coding fixes - topology: use list_insert() macro in tplg_elem_insert() - topology: make vebose output more nice - topology: merge write_block to tplg_write_data - topology: use size_t for calc_block_size() - topology: use an array describing blocks for the main build loop - topology: file position and size cleanups

- try to use size_t/ssize_t
- track the position in own variable, do not use lseek

- topology: remove vendor_fd/name from snd_tplg structure - not used

Use Case Manager API

- ucm: parser - add error message to verb_dev_list_add() - ucm: fill missing device entries (conflicting / supported)

It is not necessary to maintain this information in sync in the configuration
files. Fill the missing entries to the complementary devices.

- ucm: implement RenameDevice and RemoveDevice verb management

With the conditionals, it may be useful to define the devices
in the included configuration files. To satisfy the specification
requirements (device naming) those device names might require
to be renamed or deleted wrong references from the conflicting
or supported lists.

- ucm: the ucm2/ subdirectory is driver name based - ucm: parser - use correct filename in parser_master_file() - ucm: parser - cosmetic fixes in the comments - ucm: remove MAX_FILE definition and use correct PATH_MAX - ucm: split conf_file_name and conf_dir_name

With ucm2, the file name might differ from the directory
name. Also, allocate those fields.

- ucm: fix the configuration directory (longname) for ucm2

The new ucm2 expects that the longname directory is shared with
the driver directory. Fix that for 'Syntax 2'.

- ucm: setup conf_format after getting ALSA_CONFIG_UCM_VAR successfully

Set the conf_format to 1 after getting ALSA_CONFIG_UCM_VAR successfully.
Otherwise, the conf_format is not set in this scenario.

- ucm: docs - remove MixerCopy values, add Priority for verb, improve priority docs - ucm: docs - add note about the sequences and device split - ucm: docs - change the Mic description to simple Microphone Device - ucm: docs - remove DigitalMic, it does not have sense - ucm: docs - add Mic/DigitalMic and multiple devices comments - src/ucm/main.c: fix build without mixer

Commit 4ce38a5ff466d18039b2606938f866ea3a6c9f3c breaks the build without
mixer on:

  CCLD     libasound.la
/home/buildroot/autobuild/instance-1/output-1/host/lib/gcc/xtensa-buildroot-linux-uclibc/8.3.0/../../../../xtensa-buildroot-linux-uclibc/bin/ld: ucm/.libs/libucm.a(main.o): in function `snd_use_case_set':
main.c:(.text+0x185c): undefined reference to `snd_mixer_selem_id_parse'

- ucm: Do not fail to parse configs on cards with an empty CardComponents lists

Since the UCM profiles for all Bay- and Cherry-Trail SST cards have been
moved over to UCM2, parsing them fails with:

ALSA lib ucm_subs.c:220:(uc_mgr_get_substituted_value) variable '${CardComponents}' is not defined in this context!

This completely breaks audio support on all Bay- and Cherry-Trail devices.

This is caused by these non-SOF ASoC using cards having an empty
CardComponents list. Which in itself is fine, but is rejected by
the ucm_subs.c code. This commit changes the ucm_subs code to accept
an empty string as a valid value for CardComponents restoring audio
functionality on these boards.

- ucm: docs - add JackCTL, rearrange JackControl and JackDev - use-case: docs - add PlaybackMixerCopy and CaptureMixerCopy - ucm: docs - allow spaces in device names for JackHWMute - ucm: add _identifiers list - ucm: return always at least NULL if no list is available in snd_use_case_get_list() - ucm: Use strncmp to avoid access-out-of-boundary

If the length of the identifier is less than the length of the prefix,
access-out-of-boundary will occur in memcmp().

Configuration

- Quote strings containing [ or ] when saving an alsa config - topology: add snd_tplg_save() - alsa-lib: fix the array parser (unique compound keys)

The code from the old import may merge arrays wrongly and
the result is a compound with same keys like:

Input:

        lines [
                "SSP0.OUT, , BUF1.3"
        ]
        lines [
                "BUF2.0, , SSP0.IN"
        ]

Parsed contents:

        lines {
                0 'SSP0.OUT, , BUF1.3'
                0 'BUF2.0, , SSP0.IN'
        }

Proper parsed contents (create+merge mode):

        lines {
                0 'SSP0.OUT, , BUF1.3'
                1 'BUF2.0, , SSP0.IN'
        }

Documentation

- README.md: add build status badge

Kernel Headers

- uapi: Sync with 5.6 kernel ABI

This is a sync with 5.6-rc1 kernel headers.  The copy is performed
from the sanitized headers installed via make headers_install.

- uapi: Move typedefs from uapi to sound/*

For keeping uapi/*.h cleaner.

- type_compat: Add missing __s64 and __u64 definitions for non-Linux

Just for the case without Linux-compatible definitions.

- Fix alsa/sound/*.h for external programs

The recent update of sound/*.h to sync with the latest Linus uapi
files broke the build of alsa-tools programs.  These files used to be
a modified version of Linux sound/* header files, so that they could
be built without Linux headers.  The special prefix like __user and
other things were worked around there.

We may do that again, but a better approach is to fix those things in
Linux kernel uapi side, while we keep the minimal workaround in
alsa-lib such as the __u16 and co type definitions.

This patch is such an attempt, namely:
- Keep the original $LINUX/uapi/sound/*.h in include/sound/uapi
  directory
- The "fixes" are applied to some uapi headers, so that they don't
  contain Linux-specific prefix and use of opaque struct like
  snd_ctl_elem_id
- The uapi headers are included indirectly from include/sound/*.h
- Some headers have inclusion of type_compat.h for the Linux variable
  types and prefixes
- type_compat.h tries to use <linux/types.h> when __linux__ is
  defined, instead of the own conflicting definitions

The last type might need a bit more adjustment depending on the
compiler, but it can be fixed locally without disturbing else.

Utils

- alsa.m4: another fix to not link all binaries with -latopology

Preserve LIBS when the -latopology is tested. It's added later.

- alsa.m4: another try to fix the libatopology detection

alsa-ucm-conf

Core

- github: create validate workflow

Configuration

- broadwell-rt286: more conformance and other fixes

Remove JackHWMute, because the hardware does not forcibly shut off
the internal speakers or microphone when the jack is in use.

The CaptureMixerElem and CaptureMasterElem devices were swapped. Do
not manually set the "ADC0 Capture Switch" when disabling a capture
device; it will be set automatically instead.

Correct "Handset" to "Headset". Apply maximum gain to the headset
microphone ("AMIC Volume") when in use, based on testing.

- ucm2: treewide - remove Playback and Capture channels=2 assignments

The value 2 is the default.

- sof-hda-dsp: corrections and fixes - bytcht-es8316: corrections and fixes - bytcr-rt5640: corrections and fixes - kblrt5660: corrections and fixes - PandaBoardES: corrections and fixes - PandaBoard: corrections and fixes - SDP4430: corrections and fixes - PAZ00: corrections and fixes - GoogleNyan: corrections and fixes - chtrt5645: corrections and fixes - SDP4430: corrections and fixes - VEYRON-I2S: corrections and fixes - GoogleNyan: comment CaptureControl, what is this? - broadwell-rt286: add correct prefix to Priority field names - sof-hda-dsp: fix typo (PlaybackMixerMaster -> PlaybackMasterElem) - SDP4430: corrections and fixes - skylake-rt286: fixes and corrections - chtnau8824: fixes and corrections - cht-bsw-rt5672: fixes and corrections - HDA-Intel/HiFi-dual: fixes and corrections - Dell-WD15-Dock: cleaups and corrections - DB820c: cleanups and corrections - DB410c: cleanups and corrections - DAISY-I2S: added back PCM devices - bytcht-es8316: cleanups and corrections - bytcht-cx2072x: cleanups and corrections - bytcr-rt5651: cleanups and corrections - bytcr-rt5640: cleanups and corrections - broxton-rt298: corrections, cleanups - broadwell-rt286: add support for hardware volume, conformance fixes - ucm2: fix the verb path in chtrt5645/chtrt5645-dmic2.conf - bytcht-es8316: Fix missing including of HeadPhones.conf after ucm2 conversion

The conversion to ucm2 format missed adding an include for:

codecs/es8316/HeadPhones.conf

Leading to no sound on the headphones output, this commit adds the missing
include fixing this.

- sof-hda-dsp: Use more strict names according latest use-case.h

Also remove ConflictinDevice section from the digital microphone.
Those paths are independent.

BugLink: https://github.com/alsa-project/alsa-ucm-conf/pull/7

- sof-hda-dsp: Fix the Dmic0 CaptureMixerElem for v1.4.1 firmware

Description

- README.md: add build status badge - README: remove topologies note

Detailed changelog between 1.1.8 and 1.2.2 releases

Changelog between 1.1.7 and 1.2.2 releases

tinycompress

Core

- Release v1.2.2 - fcplay: initial addition

This tool was forked from tinycompress cplay. The fork was required due
to this linking against libavcodec which is GPL. This uses libav APIs to
parse the compressed files and send the audio stream to compressed
device using tinycompress APIs

Right now it supports only playback on MP3 (no problems now not finding
sync word) and flac files.

Tested-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

- tinycompress: Add pc file

Add pc file for the users of this lib

/Makefile.am

- tinycompress: Add pc file

Add pc file for the users of this lib

/src/utils-lgpl/Makefile.am

- fcplay: initial addition

This tool was forked from tinycompress cplay. The fork was required due
to this linking against libavcodec which is GPL. This uses libav APIs to
parse the compressed files and send the audio stream to compressed
device using tinycompress APIs

Right now it supports only playback on MP3 (no problems now not finding
sync word) and flac files.

Tested-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

Header files

- sound: update header for FLAC

Utilities

- fcplay: initial addition

This tool was forked from tinycompress cplay. The fork was required due
to this linking against libavcodec which is GPL. This uses libav APIs to
parse the compressed files and send the audio stream to compressed
device using tinycompress APIs

Right now it supports only playback on MP3 (no problems now not finding
sync word) and flac files.

Tested-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

pkg-config

- tinycompress: Add pc file

Add pc file for the users of this lib

Detailed changelog between 1.2.1 and 1.2.2 releases

Changelog between 1.1.7 and 1.2.2 releases

alsa-utils

Core

- Release v1.2.2 - configure: fix the inverted libatopology check - github workflow: try to fix the empty version - github build.yml: try to fix the tag fetch issue (private working dirs) - README.md: add build status badge - github: create test workflow for fedora and ubuntu - configure: fix new libatopology check - configure: Fix linking of alsatplg with the older libs

BugLink: https://github.com/alsa-project/alsa-utils/issues/33

ALSA Control (alsactl)

- Use %lli for long long in printf

The `L` length modifier only applies to floating-point conversion
specifiers, and `ll` is used for `long long` integers.

Although glibc accepts %Li, musl does not and returns EINVAL.

- Use __func__ instead of __FUNCTION__

They are equivalent, but __func__ is in C99. __FUNCTION__ exists only
for backwards compatibility with old gcc versions.

Reviewd-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>

- alsactl: fix --sched-idle (set it really to SCHED_IDLE) - alsactl: sysfs - add /sys/kernel/uevent_seqnum check to init - treewide: Fix printf formats

Found with cppcheck

ALSA RawMidi Utility (amidi)

- Avoid empty initializer list

To zero-initialize an object, use `{0}` instead.

- treewide: sys/poll to poll

Fixes warning on musl:

warning redirecting incorrect #include <sys/poll.h> to <poll.h>

Audio Transfer utility

- Avoid pointer arithmetic on `void *`

The pointer operand to the binary `+` operator must be to a complete
object type.

- treewide: Fix wrong formats on 32-bit

uint64_t evaluates to unsigned long long on 32-bit, not unsigned long.
Use the proper formats.

alsa-info.sh

- alsa-info.sh: Warn after actual upload failure; do not ping server

Check the return value of wget to determine if the upload actually
failed. If so, display the message about upload failure, then exit.

Do not ping the web server; the result does not indicate whether a
file upload will succeed or not.

- alsa-info.sh: Perform test for wget earlier

If wget is not present, do not ask about uploading the information.

- alsa-info.sh: Condense nested commands for formatting upload result - alsa-info.sh: Condense nested commands for file upload - alsa-info.sh: Remove progress spinner during upload without dialog

The spinner did not actually provide information about the status
of the file upload, and caused other problems: it would repeatedly
spawn new pgrep processes (without a delay between them), and it
blocked the script if any wget process was running on the system.

- alsa-info.sh: Replace gauge with infobox for upload dialog

The gauge did not actually show the upload progress; in fact, the
dialog did not even appear until after the upload was completed.

Use an infobox instead, which will be displayed while wget runs.

- alsa-info.sh: Exit script after writing information to stdout

The '--stdout' option is mutually exclusive with uploading the file.

- alsa-info.sh: Use existing function to print ALSA configuration files - alsa-info.sh: Simplify iteration over cards when calling amixer

Read card names directly from individual procfs files, and pass them
to amixer using the '-c' option.

- alsa-info.sh: Read from /proc/modules and sort the result

Sorting the list of loaded modules makes it much easier to compare
two alsa-info.txt files, even if they are both from the same system
(since the order actually changes after each reboot).

lsmod just formats the contents of /proc/modules. After this script
calls lsmod, it strips everything but module names from the output.
This same result can be obtained just as easily by reading directly
from /proc/modules; then there is no need to remove the header line
printed by lsmod before sorting the output.

- alsa-info.sh: Consolidate PCI device output

Include numeric IDs and subsystem info in the PCI device output,
without placing them in a separate section.

alsaloop

- treewide: Fix printf formats

Found with cppcheck

alsamixer

- Avoid empty initializer list

To zero-initialize an object, use `{0}` instead.

alsatplg (topology)

- alsatplg: add documentation for -z,--dapm-nosort (-h) - alsatplg: add decode command - alsatplg: add -V,--version option - alsatplg: rewrite to use the new libatopology functions

Add '-u,--dump' operation.
Add '-g,--group' and '-x,--nocheck' modifiers.
Add '-z,--dapm-nosort' modifier.
Allow to operate with stdin/stdout for the file input/output.

- alsatplg: fix another small leak in normalize_config() - alsatplg: add -s,--sort and fix memory leaks - alsatplg: add -n,--normalize option

This function loads and parses the topology file and
saves back the structured output in the alsa-lib's format
without comments.

alsaucm

- alsaucm: add usecase.h to noinst_HEADERS for packaging - alsaucm: dump - fix the prefixed " - alsaucm: add json dump command - alsaucm: add text dump command - alsaucm: use the first sound card (use case name 'hw:CARDNO') as default

amixer

- Use %lli for long long in printf

The `L` length modifier only applies to floating-point conversion
specifiers, and `ll` is used for `long long` integers.

Although glibc accepts %Li, musl does not and returns EINVAL.

- treewide: Fix printf formats

Found with cppcheck

- treewide: sys/poll to poll

Fixes warning on musl:

warning redirecting incorrect #include <sys/poll.h> to <poll.h>

aplay/arecord

- Avoid pointer arithmetic on `void *`

The pointer operand to the binary `+` operator must be to a complete
object type.

- Use __func__ instead of __FUNCTION__

They are equivalent, but __func__ is in C99. __FUNCTION__ exists only
for backwards compatibility with old gcc versions.

Reviewd-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>

- aplay: Limit VUMeter progress bar to 100 for negative as well

While the progress bar cannot be negative, GCC concludes that it can be
and assumes tmp can be written past the end. Fixes this GCC warning:

aplay.c:1747:18: warning: '%02d' directive writing between 2 and 11 bytes
 into a region of size 4 [-Wformat-overflow=]
 1747 |    sprintf(tmp, "%02d%%", maxperc[c]);

- aplay: Adjust buffer sizes to fix snprintf warnings

It also reduces compiled size slightly.

aplay.c: In function 'capture':
aplay.c:3055:34: error: '-01' directive output may be truncated writing 3
bytes into a region of size between 1 and 4097 [-Werror=format-truncation=
]
 3055 |    snprintf(namebuf, namelen, "%s-01", buf);
      |                                  ^~~
aplay.c:3055:4: note: 'snprintf' output between 4 and 4100 bytes into a
destination of size 4097
 3055 |    snprintf(namebuf, namelen, "%s-01", buf);
      |    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
aplay.c:3053:34: error: '-01.' directive output may be truncated writing 4
bytes into a region of size between 1 and 4097 [-Werror=format-truncation=
]
 3053 |    snprintf(namebuf, namelen, "%s-01.%s", buf, s);
      |                                  ^~~~
aplay.c:3053:4: note: 'snprintf' output 5 or more bytes (assuming 4101)
into a destination of size 4097
 3053 |    snprintf(namebuf, namelen, "%s-01.%s", buf, s);
      |    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
aplay.c:3065:34: error: '%02i' directive output may be truncated writing
between 2 and 10 bytes into a region of size between 0 and 4096 [-Werror=
format-truncation=]
 3065 |   snprintf(namebuf, namelen, "%s-%02i", buf, filecount);
      |                                  ^~~~
aplay.c:3065:30: note: directive argument in the range [1, 2147483647]
 3065 |   snprintf(namebuf, namelen, "%s-%02i", buf, filecount);
      |                              ^~~~~~~~~
aplay.c:3065:3: note: 'snprintf' output between 4 and 4108 bytes into a
destination of size 4097
 3065 |   snprintf(namebuf, namelen, "%s-%02i", buf, filecount);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
aplay.c:3063:34: error: '%02i' directive output may be truncated writing
between 2 and 10 bytes into a region of size between 0 and 4096 [-Werror=
format-truncation=]
 3063 |   snprintf(namebuf, namelen, "%s-%02i.%s", buf, filecount, s);
      |                                  ^~~~
aplay.c:3063:30: note: directive argument in the range [1, 2147483647]
 3063 |   snprintf(namebuf, namelen, "%s-%02i.%s", buf, filecount, s);
      |                              ^~~~~~~~~~~~
aplay.c:3063:3: note: 'snprintf' output 5 or more bytes (assuming 4109)
into a destination of size 4097
 3063 |   snprintf(namebuf, namelen, "%s-%02i.%s", buf, filecount, s);

- treewide: Fix printf formats

Found with cppcheck

- treewide: sys/poll to poll

Fixes warning on musl:

warning redirecting incorrect #include <sys/poll.h> to <poll.h>

aplaymidi/arecordmidi

- Avoid empty initializer list

To zero-initialize an object, use `{0}` instead.

- treewide: sys/poll to poll

Fixes warning on musl:

warning redirecting incorrect #include <sys/poll.h> to <poll.h>

aseqdump

- Avoid empty initializer list

To zero-initialize an object, use `{0}` instead.

bat (basic audio tester)

- Avoid pointer arithmetic on `void *`

The pointer operand to the binary `+` operator must be to a complete
object type.

alsa-plugins

Core

- Release v1.2.2 - Update the attributes.m4 macro file from xine

This file was imported from the xine project. Update it to the current
revision, which resolves the "no AC_LANG_SOURCE call detected in body"
warnings with Autoconf 2.68 or later.

Automatic upmix / downmix plugins

- upmix: generalize format, code cleanup

The main purpose of this change is to be able to change the format to
e.g. S32 instead of S16 by changing only two lines on the top of the source.
So a new symbol UPMIX_PCM_FORMAT is added to hide the actual format,
and a special type upmix_sample_t marks the sample type, instead of
fixed short.

The average_copy function was expecting the nchns parameter to be 2,
this parameter is now a local constant.

The variable i is renamed to channel as it denotes the channel index
in every case.

The behavior of the plugin remains identical.

Detailed changelog between 1.1.7 and 1.2.2 releases

Changelog between 1.1.7 and 1.2.2 releases

alsa-tools

Core

- Release v1.2.2

hdspmixer

- hdspmixer: Use __u32 and __u64 for RMS array types

Some variable types are referring to the field in ioctl struct, which
are actually __u32 or __u64 instead of uint32_t or uint64_t.
This inconsistency may result in the compile error.