Detailed changes v1.2.3 v1.2.3.1

From AlsaProject
Revision as of 13:10, 19 June 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.3 and 1.2.3.1 releases

Changelog between 1.2.3 and 1.2.3.1 releases

alsa-lib

Core

- Release v1.2.3.1

Control API

- control: ctlparse - use type-specific bound on element count

Using a fixed bound of 128 means that too many values may be set for an
INTEGER64 type and that any elements past 128 are out of reach for BYTE
type controls.

Derive the maximum number of elements from the type so that the full
range is parsed for all types.

PCM API

- pcm: copy extplug timestamp type from the slave pcm

The extplug sets incorrectly the timestamping type to
gettimeofday. Copy the timestamp type from the slave pcm
as other plugins do.

The problem is visible when the
  "pcm: dmix: fix sw_params handling of timestamp types in direct plugins"
patch was applied for the direct plugins.

BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1847508

- pcm: dmic: assembly: add x32 support.

x32 is the x86_64 ABI that uses 32-bit pointers, so requires loading
addresses into edi/esi/ebx rather than rdi/rsi/rbx.

Note that instructions such as movl %eax, (%rdi) do not require
updating, as loading an address into %edi zeroes the high bits, causing
the full %rdi register to hold a valid address.

- pcm: direct: correctly apply existing interval settings

Feature 'variable periodsize' allows to extend user period size up to
buffer_size/2 independent of slave period. On enlargement of the settings
for period_time.max and period_size.max the setting for openmax
was not updated.

This lead to the effect, that if the slave period itself had openmax
set it was still set on the extended size. Configuration of a period
matching half buffer size was thus rejected.

Example for failure: period size of 384 (half buffer size) is requested
which is rejected and rounded down to 352:

PERIOD_SIZE: [32 352]
BUFFER_SIZE: [64 768]

When correctly applying the openmax setting:

PERIOD_SIZE: [32 384]
BUFFER_SIZE: [64 768]

Use Case Manager API

- ucm: implement CardNumberByName substitution

The syntax is ${CardNumberByName:CARDNAME[#INDEX]}.

The CARDNAME is the ALSA's soundcard name (short form).
The INDEX is the instance (0 = first, 1 = second etc.).

Example: ${CardNumberByName:HDA Intel PCH}
(which is identical to ${CardNumberByName:HDA Intel PCH#0})

- ucm: allow to use the defined variables in the substitution argument

Example (set variable 'Module' to the kernel module name for the given card):

  Define.SysfsPath "class/sound/card${CardNumber}/device/driver"
  Define.Module "${sys:$SysfsPath}"

- ucm: allow to ignore errors for the value substitution

It may be useful to ignore the errors where the environment
or sysfs values are not defined for the specific hardware.

Enhance substitution for 'syntax 3' so $${} substitution
means ignore the errors (return an empty string).

- ucm: include - fix compound_merge for arrays

There is a case where the original array has already new indexes
(the merged array is placed before the original nodes).

Set the temporary index string identifiers to unique strings.

- ucm: fix use-after-free in parse_component_seq()

Configuration

- conf: make some strings more compact in alsa.conf

Dynamic Loader helpers

- dlsym: fix the race when snd_libdir_origin is freed

snd_dlobj_cache_cleanup() function frees snd_libdir_origin, but
the pointer may be used again in snd_dlpath().

BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1847508

- dlmisc.c: fix uclibc build

RTLD_DL_LINKMAP & RTLD_DI_ORIGIN, are unsupported on uClibc:
https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/tree/include/dlfcn.h#n106

This patch adds detection for uClibc because uClibc also defines
__GLIBC__:
https://lists.gnu.org/archive/html/bug-gnulib/2010-11/msg00280.html

BugLink: https://github.com/alsa-project/alsa-lib/pull/58