Detailed changes v1.1.4.1 v1.1.5
Jump to navigation
Jump to search
Detailed changelog between 1.1.4.1 and 1.1.5 releases
Changelog between 1.1.4 and 1.1.5 releases
alsa-lib
Core
- - Release v1.1.5
- - conf/ucm: rt5651: Add UCM config for bytcr-rt5651
- Add a UCM configuration for the rt5651 codec on Intel's Cherry-Trail
- platform. Adapted from [0].
- [0] https://github.com/plbossart/UCM/tree/master/bytcr-rt5651
- - snd_user_file: avoid use wordexp
- As suggested in POSIX[1], wordexp might execute the shell. If the libc
- implementation does so, it will break the firefox sandbox which does
- not allow exec. This happened on Alpine Linux with musl libc[2].
- Since we cannot guarantee that the system wordexp implementation does
- not execute shell, we cannot really use it, and need to implement the
- ~/ expansion ourselves.
- We provide a configure option --with-wordexp for users that still may
- need it, but we leave this off by default because wordexp is a large
- attack vector and it is better to avoid it.
- [1]: http://pubs.opengroup.org/onlinepubs/9699919799/functions/wordexp.html#tag_16_684_08
- [2]: http://bugs.alpinelinux.org/issues/7454#note-2
- - cleanup: fix poll.h includes
- According POSIX[1] and linux manpage[2] the include is poll.h, not
- sys/poll.h.
- This fixes the he following compiler warning when build with musl libc:
- /usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]
- #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
- ^~~~~~~
Control API
- - ctl: deprecate APIs of dimensional information
- In ALSA control interface in asound.h, 'struct snd_ctl_elem_info' has
- 'dimen' member to deliver information for multi-dimensional array, however
- there's no common way to handle the member. As a result, drivers can
- force userspace applications to handle the information by inconsistent
- ways.
- This issue was reported by a commit 51db452df07b ('Revert "ALSA: echoaudio:
- purge contradictions between dimension matrix members and total number of
- members"') to Linux kernel. As a result of discussion at Linux
- miniconference 2017, usage of 'dimen' member of 'struct snd_ctl_elem_info'
- is going to be deprecated for future removal.
- A removal of kernel interface can cause regression issues. However no ALSA
- driver in kernel land except for 'echoaudio' series utilizes this feature.
- Actually it's reasonable to assume that 'echomixer' program is an unique
- consumer of the interface in user land and the removal rarely brings any
- impact to user land.
- This commit deprecates some APIs corresponding to the kernel interface. The
- kernel interface is kept till Linux kernel v4.20 at least, but actual
- timing of removal is not fixed yet. After that, these APIs may also be
- removed at a reasonable timing.
- - ctl: ext: Fail with error code if snd_ctl_ext_callback::read_event() callback is not defined
- The snd_ctl_ext_callback::read_event() callback is only optional
- if no poll descriptor was given via
- snd_ctl_ext_t::poll_fd
- or
- snd_ctl_ext_callback::snd_ctl_ext_poll_descriptors().
- If a poll descriptor is given the
- snd_ctl_ext_callback::read_event()
- callback has also to be defined
- because there is no minigful default behavior.
- This callback will be called when ever the poll() on
- the file descriptor indicates that there is an event pending.
- Therefore returning a 0 which indicates that there is no event makes no
- sense.
- - cleanup: fix poll.h includes
- According POSIX[1] and linux manpage[2] the include is poll.h, not
- sys/poll.h.
- This fixes the he following compiler warning when build with musl libc:
- /usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]
- #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
- ^~~~~~~
PCM API
- - pcm: softvol: add support for S24_LE
- Tested with the Wolfson WM8524 DAC on a i.MX6UL board and the following
- ALSA configuration file using the pcm test utility from alsa-lib:
- """
- $ cat /etc/asound.conf
- pcm.!default {
- type plug
- slave.pcm "softvol"
- }
- pcm.softvol {
- type softvol
- slave {
- pcm "hw:0"
- }
- control {
- name "Master"
- card 0
- }
- }
- ctl.!default {
- type hw
- card 0
- }
- ctl.softvol {
- type hw
- card 0
- }
- $ pcm -D softvol -o S24_LE -c 2 -r 48000
- """
- The data in the Synchronous Audio Interface (SAI) of the i.MX6UL is
- aligned the following way:
- """
- 31 30 29 28 | 27 26 25 24 | 23 22 21 20 | .. | 3 2 1 0
- ## ## ## ## ## ## ## ## [ DATA[23:0] ]
- """
- - cleanup: Use uint*_t instead of u_int*_t everythwere
- Use the standard uint{8,16,32,64}_t everywhere instead of the
- non-standard u_int{8,16,32,64}_t.
- This changes the types in the public headers and removes the u_int*_t
- defines. This may break things. However, indentifiers ending with _t are
- reserved by POSIX[1]; defining those can lead to undefined behavior.
- So if you rely on alsa-lib defining those for you, then you want the
- compiler to error so things can be fixed properly.
- [1]: http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_02_02
- - cleanup: fix poll.h includes
- According POSIX[1] and linux manpage[2] the include is poll.h, not
- sys/poll.h.
- This fixes the he following compiler warning when build with musl libc:
- /usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]
- #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
- ^~~~~~~
- - pcm: hw: remove superfluous code to call of SNDRV_PCM_IOCTL_SYNC_PTR in snd_pcm_hw_forward()
- SNDRV_PCM_IOCTL_SYNC_PTR command was introduced to PCM protocol/interface
- in its version 2.0.7, however this command is used in a branch for the
- newer version protocol/interface in snd_pcm_hw_forward().
- This commit removes the superfluous code as a part of work for code
- refactoring.
- Fixes: eafb4925124b ("- added SYNC_PTR ioctl support for pcm_hw plugin")
- - pcm: hw: add a helper function to issue avail_min without side-effects
- At present, applications can change avail_min parameter of PCM substream
- by two ways; via mapped control data, and by executing ioctl(2) with
- SNDRV_PCM_IOCTL_SYNC_PTR. The former is available in a case that the
- applications map the data successfully.
- When utilizing alsa-lib API, the above is done by a call of
- 'snd_pcm_sw_params()' to hw PCM plugin. In current implementation, this
- call has an side-effect to issue appl_ptr unexpectedly.
- This commit adds a helper function to issue avail_min without the
- side-effect.
- - pcm: hw: add a helper function to issue appl_ptr without side-effects
- After starting, PCM substream shift its state to running and applications
- can move appl_ptr by several ways. When status and control data of runtime
- of the PCM substream is not mapped, the applications should issue appl_ptr
- to kernel land. In this case, when any PCM frames is handled by mmap
- operation, the applications should issue appl_ptr to update.
- This commit adds a helper function for this purpose. To avoid unexpected
- change of avail_min, this commit uses a flag just to update appl_ptr.
- - pcm: hw: add a helper function to request hwsync without side-effects
- SNDRV_PCM_IOCTL_SYNC_PTR command for ioctl(2) with
- SNDRV_PCM_SYNC_PTR_HWSYNC flag has an effect to update hw_ptr.
- This is an alternative of SNDRV_PCM_IOCTL_HWSYNC but caller can get
- current status simultaneously.
- This commit adds a helper function just to issue hwsync. To avoid
- side-effect to change appl_ptr and avail_min, this commit uses
- SNDRV_PCM_SYNC_PTR_APPL and SNDRV_PCM_SYNC_PTR_AVAIL_MIN flags.
- - pcm: hw: add a helper function just to query status data
- When mapping status data successfully, mapped page includes status data
- for applications. In this case, applications have no need to call ioctl(2)
- with SNDRV_PCM_IOCTL_SYNC_PTR. However, in current implementation, when
- map of control data is unavailable, applications execute the ioctl(2).
- This is inconvenient for some cases that applications require to query
- status only.
- This commit adds a helper function to query status data without issuing
- the control in fallback mode from failure of status mmap.
- - pcm: hw: add a helper function to query status/control data
- When executing ioctl(2) with some commands, applications can request
- ALSA PCM core to change appl_ptr in kernel space. Below is a list of
- such operations:
- - SNDRV_PCM_IOCTL_PREPARE
- - SNDRV_PCM_IOCTL_RESET
- - SNDRV_PCM_IOCTL_REWIND
- - SNDRV_PCM_IOCTL_FORWARD
- - SNDRV_PCM_IOCTL_WRITEI_FRAMES
- - SNDRV_PCM_IOCTL_WRITEN_FRAMES
- - SNDRV_PCM_IOCTL_READI_FRAMES
- - SNDRV_PCM_IOCTL_READN_FRAMES
- After these operations, the value of appl_ptr should be synchronized
- between kernel/user spaces.
- This commit adds a helper function to query status and control data
- without issuing the control data just in fallback from failure of control
- mapping.
- - pcm: hw: minor refactoring for initialization of control data
- At failure of control data mapping, alsa-lib goes to fallback mode. In
- this mode, a buffer is kept in user space and executes ioctl(2) with
- SNDRV_PCM_IOCTL_SYNC_PTR for the buffer to synchronize the control data.
- In current implementation, no helper function is used for initialize
- the control data. This commit use an proper helper function instead of
- a direct call of ioctl(2).
- - pcm: hw: fix to initialize function local variable
- This commit is to fix below warning.
- pcm_hw.c: In function ‘snd1_pcm_hw_open_fd’:
- pcm_hw.c:955:33: warning: ‘mmap_control’ may be used uninitialized in this function [-Wmaybe-uninitialized]
- if (mmap_control == MAP_FAILED || mmap_control == NULL) {
- ^
- pcm_hw.c:946:31: note: ‘mmap_control’ was declared here
- struct snd_pcm_mmap_control *mmap_control;
- ^~~~~~~~~~~~
- - pcm: hw: Call USER_PVERSION ioctl at open
- Up from the new PCM protocol 2.0.14, user-space can inform the
- protocol version it supports to kernel, so that the kernel may switch
- its behavior depending on it. Add this ioctl call in the PCM hw
- plugin at opening.
- The patch contains also the addition of SNDRV_PCM_INFO_SYNC_APPLPTR
- carried from the upstream kernel commit 42f945970af9 ("ALSA: pcm: Add
- the explicit appl_ptr sync support"), as well as the trivial change
- (an addition of comma) to sync with the kernel asound.h.
- Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
- Tested-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
- - pcm: hw: maintain fallback mode for control data mapping independently
- Currently, failures of status/control data mapping are handled dependently.
- However, it's not sure that one of the operations is failed when another
- is failed.
- This commit adds a member into private data structure to maintain fallback
- mode for control data mapping, independently of status data mapping. As a
- result, we have four cases to handle status/control data:
- 1. both of status/control data are mapped.
- Nothing changed. A structure with alias of 'snd_pcm_hw_t' already has two
- members to point the mapped area and in application runtime they're used
- to refer/set status/control data. No need to call ioctl(2) with
- SNDRV_PCM_IOCTL_SYNC_PTR to issue/query the data.
- 2. both of status/control data are unmapped.
- The two members point to allocated memory for fallback buffer. In
- application runtime, the buffer is given as an argument for ioctl(2) with
- SNDRV_PCM_IOCTL_SYNC_PTR to issue/query the data.
- 3. status data is mapped only.
- One of the two members is used to point the mapped area. Another points to
- allocated memory for fallback buffer. In application runtime, the buffer
- is used as an argument to execute ioctl(2) with SNDRV_PCM_IOCTL_SYNC_PTR
- for the latter data, but the former data is already synchronized.
- 4. control data is mapped only.
- The same as the above.
- In design of ALSA PCM interface, userspace applications are not expected
- to map the status data as writable. On the other hand, expected to map
- the control data as writable. In a focus on the differences, we could
- achieve to reduce calls of the ioctl(2) in a case that one of the
- status/control data is successfully mapped and another is failed (case 3
- and 4). Especially, in current alsa-lib implementation, application
- runtime queries state of runtime of PCM substream so often.
- - pcm: hw: maintain fallback mode for status data mapping
- In current implementation, results to map status/control data are not
- maintained separately. It's handled as a fatal error that mapping of status
- data is successful and mapping of control data is failed. However, it's
- possible to handle this case by utilizing fallback buffer.
- This commit adds a member into a local structure to maintain fallback mode
- just for the mapping of status data as a preparation of later commit, in
- which mapping results are maintained separately for each of status/control
- data.
- - pcm: hw: allocate fallback buffer in advance of trials of mapping
- When allowing failure of map operation for both of status/control data
- for runtime of PCM substream, applications need to use fallback buffer
- for an alternative ioctl. However, in current implementation, status
- mapping is dominant to the allocation.
- This commit moves code for the allocation outside of the mapping
- operation for status data.
- - pcm: hw: deallocate fallback buffer when trials of unmapping finished
- In current implementation, deallocation of fallback buffer is done at
- several places.
- This commit unifies these deallocations in one place.
- - pcm: hw: add an arrangement for initialization of appl_ptr/avail_min
- Regardless of success/failure mapping of control/status data for runtime of
- PCM substream, appl_ptr/avail_min parameters are initialized. In current
- implementation, they are initialized in case-dependent, different places.
- It's possible to collect them to one place.
- This commit unifies relevant code in a place after all of trials for the
- mappings are finished.
- - pcm: hw: add helper functions to map/unmap status/control data for runtime of PCM substream
- Handling mapping operation for status/control data includes some
- supplemental operations for fallback mode. It's better to have helper
- functions for this purpose.
- This commit adds the helper functions.
- - pcm: hw: Remove superfluous call of snd_pcm_set_appl_ptr()
- There is a call of snd_pcm_set_appl_ptr() in snd_pcm_hw_hw_params()
- only for the capture direction. This must be a leftover from the
- ancient code. Although it's harmless for now, it's superfluous and
- confusing. Let's kill it.
- Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
- Tested-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
- - pcm: minor code cleanup for ioctl call
- When error occurs, return value from ioctl(2) is -1 and error code can
- be got thread local variable, errno. It's OK just to check the return
- value without any assignment.
- - pcm: obsolete 'mmap_emulation' parameter of snd_pcm_hw_open_fd()
- A function, snd_pcm_hw_open_fd(), is just for internal use. This function
- has an obsoleted parameter and we can remove it without any compatibility
- issue.
RawMidi API
- - rawmidi: symbols: use rawmidi_virt only when available
- src/rawmidi/Makefile.am only brings rawmidi_virt.c into the build when
- BUILD_SEQ is defined (i.e when --enable-seq is passed). However,
- rawmidi_symbols.c unconditionally refers to _snd_module_rawmidi_virt,
- defined in rawmidi_virt.c.
- This causes a link failure when BUILD_SEQ is disabled. For example
- when linking ffmpeg against alsa-lib:
- /home/thomas/projets/buildroot/output/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libasound.a(pcm_dmix.o): In function `snd_pcm_dmix_sync_ptr':
- pcm_dmix.c:(.text+0x83c): warning:
- /home/thomas/projets/buildroot/output/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libasound.a(rawmidi_symbols.o):(.data+0x4): undefined reference to `_snd_module_rawmidi_virt'
- collect2: error: ld returned 1 exit status
- To fix this, we make sure that rawmidi_symbols.c only uses
- _snd_module_rawmidi_virt when available.
Sequencer API
- - seq: fix snd_seq_set_queue_tempo() usage example in the documentation
- snd_seq_set_queue_tempo() requires a queue id as the second argument,
- fix the example in documentation to reflect that.
- Also add the queue id as an argument of the set_tempo() function, just
- to keep the whole example compilable.
- - cleanup: fix poll.h includes
- According POSIX[1] and linux manpage[2] the include is poll.h, not
- sys/poll.h.
- This fixes the he following compiler warning when build with musl libc:
- /usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]
- #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
- ^~~~~~~
Topology API
- - alsa-lib: topology: fix DSP_B mode string
- Use the correct string for DSP_B mode.
- - topology: fix coverity issues
- - topology: fix usage of SND_TPLG_INDEX_ALL when checking routes
- Make sure SND_TPLG_INDEX_ALL is used correctly when checking routes so
- that connecting routes of different indexes does not emit any warnings.
- - topology: Fix private data for BEs
- Private data was not being added to BEs. Fix this.
- - topology: improve verbose output for block output.
- Show index and full DAPm route in verbose output.
- - topology: Add support for new widget types
- Add topology support for new DSP widget types. This allows the new
- widgets to be added to the driver and firmware DAPM graphs.
- - topology: Add parsing for rates from conf
- In alsa-lib topology parser, rate_min and rate_max are parsed currently.
- Add support to parse rates also.
- - topology: disable alsa-lib topology debug output by default.
- - topology: Add support for missing fields parser.
- The alsa-lib topology parser is missing some fields for certain objects that
- are part of the ABI. This patch adds the missing fields to the parser.
ALSA Server
- - cleanup: fix poll.h includes
- According POSIX[1] and linux manpage[2] the include is poll.h, not
- sys/poll.h.
- This fixes the he following compiler warning when build with musl libc:
- /usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]
- #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
- ^~~~~~~
Compatibility routines
- - cleanup: Use uint*_t instead of u_int*_t everythwere
- Use the standard uint{8,16,32,64}_t everywhere instead of the
- non-standard u_int{8,16,32,64}_t.
- This changes the types in the public headers and removes the u_int*_t
- defines. This may break things. However, indentifiers ending with _t are
- reserved by POSIX[1]; defining those can lead to undefined behavior.
- So if you rely on alsa-lib defining those for you, then you want the
- compiler to error so things can be fixed properly.
- [1]: http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_02_02
Configuration
- - conf/ucm: rt5651: Mute speakers on boot
- The UCM configuration is enabling the speakers in the SectionDefaults.
- This is a problem when booting with an headset already connected since
- the audio output is routed at the same time both on speakers and
- heaphones until the jack is disconnected and reconnected again.
- Fix this disabling all the outputs in the default mixer configuration.
- - conf/ucm: rt5651: Add missing cdev
- - conf/ucm: rt5651: Fix HiFi file name
- The conf HiFi file name is HiFi.conf, fix the name in the main
- configuration file.
- - conf/ucm: rt5651: Add UCM config for bytcr-rt5651
- Add a UCM configuration for the rt5651 codec on Intel's Cherry-Trail
- platform. Adapted from [0].
- [0] https://github.com/plbossart/UCM/tree/master/bytcr-rt5651
- - conf: HdmiLpeAudio: remove the "front" pcm definition
- PulseAudio assumes that the "front" pcm device always refers to an
- analog device, not HDMI. While that assumption is not really valid, the
- reality is that without that assumption PulseAudio can't know whether
- "front" and "hdmi" refer to a different or the same device.
- The HDMI LPE driver doesn't allow audio streaming while the HDMI cable
- is unplugged, so PulseAudio has to know when it's plugged in and when
- it's not. If both "front" and "hdmi" devices exist, PulseAudio will
- notice that HDMI is unplugged, but it doesn't know that "front" refers
- to the same device, and PulseAudio will try to use the "front" device
- with bad consequences. The kernel driver's refusal to stream any audio
- makes PulseAudio enter an infinite loop and then the kernel kills
- PulseAudio, because it consumes too much CPU time in a realtime thread.
- While the looping in PulseAudio could probably be fixed, that wouldn't
- change the fact that PulseAudio thinks that there is an analog device. I
- believe it's best to avoid having the same device as both "front" and
- "hdmi" in alsa-lib.
- I removed also the surround configuration includes. I don't think they
- had any effect anyway, so I wonder why they were there in the first
- place.
- BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=100488
- - conf: HdmiLpeAudio: add support for 3 devices
- The LPE Audio mode on BYT/CHT supports up to 3 devices, and also supports
- IEC61937 passthrough. Add missing alsa-lib configurations so that
- apps can use the usual -D'hdmi:CARD=X,DEV=Y,AES0=0x[4|6]' syntax, e.g.
- aplay -D'hdmi:CARD=0,DEV=2,AES0=0x6' -c2 -r48000 -fs16_le
- ac3_surround_test.spdif
- Tested on Zotac PI330 with Onkyo receiver
- - conf/ucm: DB410c-HiFi: add CIC selection
- This patch adds CIC selection controls which have been added recently to
- the kernel to select mic source.
- Without this patch user has to manually select the control to record
- from DMIC or AMIC.
- - conf: USB-Audio: allow custom definitions for "default" devices
- Fixes: a9b129955659 ("USB-Audio.conf: fix definition for M-Audio AudioP...")
- - conf: USB-Audio: fix dsnoop args for Audiophile USB card
- Fixes: a9b129955659 ("USB-Audio.conf: fix definition for M-Audio AudioP...")
Filename helpers
- - snd_user_file: avoid use wordexp
- As suggested in POSIX[1], wordexp might execute the shell. If the libc
- implementation does so, it will break the firefox sandbox which does
- not allow exec. This happened on Alpine Linux with musl libc[2].
- Since we cannot guarantee that the system wordexp implementation does
- not execute shell, we cannot really use it, and need to implement the
- ~/ expansion ourselves.
- We provide a configure option --with-wordexp for users that still may
- need it, but we leave this off by default because wordexp is a large
- attack vector and it is better to avoid it.
- [1]: http://pubs.opengroup.org/onlinepubs/9699919799/functions/wordexp.html#tag_16_684_08
- [2]: http://bugs.alpinelinux.org/issues/7454#note-2
Kernel Headers
- - topology: Add support for new widget types
- Add topology support for new DSP widget types. This allows the new
- widgets to be added to the driver and firmware DAPM graphs.
- - pcm: hw: Call USER_PVERSION ioctl at open
- Up from the new PCM protocol 2.0.14, user-space can inform the
- protocol version it supports to kernel, so that the kernel may switch
- its behavior depending on it. Add this ioctl call in the PCM hw
- plugin at opening.
- The patch contains also the addition of SNDRV_PCM_INFO_SYNC_APPLPTR
- carried from the upstream kernel commit 42f945970af9 ("ALSA: pcm: Add
- the explicit appl_ptr sync support"), as well as the trivial change
- (an addition of comma) to sync with the kernel asound.h.
- Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
- Tested-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
SHM helpers
- - cleanup: fix poll.h includes
- According POSIX[1] and linux manpage[2] the include is poll.h, not
- sys/poll.h.
- This fixes the he following compiler warning when build with musl libc:
- /usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]
- #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
- ^~~~~~~
Test/Example code
- - test: obsolete usage of APIs of dimensional information
- APIs of dimensional information are deprecated for future removal. This
- commit removes test codes for user-defined element set in an aspect of
- the feature.
- - test/seq-decoder: enable timestamping for external subscribers
- Events sent by external clients subscribed to the input port are not
- timestamped.
- This inconsistent behavior may surprise newbies who look at seq-decoder as
- a reference example.
- See the example below using "vkeybd --addr 128:0" to connect to seq-decoder,
- the events sent by vkeybd are on a different queue with no timestamps:
- ...
- EVENT>>> Type = 66, flags = 0x0, time = 0 ticks
- Source = 0.1, dest = 128.0, queue = 253
- Event = Port Subscribed; 129:0 -> 128:0
- EVENT>>> Type = 66, flags = 0x1, time = 4.829712627
- Source = 0.1, dest = 128.0, queue = 0
- Event = Port Subscribed; 129:0 -> 128:0
- EVENT>>> Type = 10, flags = 0x0, time = 0 ticks
- Source = 129.0, dest = 128.0, queue = 253
- Event = Controller; ch=0, param=0, value=0
- EVENT>>> Type = 11, flags = 0x0, time = 0 ticks
- Source = 129.0, dest = 128.0, queue = 253
- Event = Program Change; ch=0, program=0
- ...
- After the change events are on the main queue and are timestamped:
- ...
- EVENT>>> Type = 66, flags = 0x1, time = 4.280907223
- Source = 0.1, dest = 128.0, queue = 0
- Event = Port Subscribed; 129:0 -> 128:0
- EVENT>>> Type = 66, flags = 0x1, time = 4.280912063
- Source = 0.1, dest = 128.0, queue = 0
- Event = Port Subscribed; 129:0 -> 128:0
- EVENT>>> Type = 10, flags = 0x1, time = 4.280990702
- Source = 129.0, dest = 128.0, queue = 0
- Event = Controller; ch=0, param=0, value=0
- EVENT>>> Type = 11, flags = 0x1, time = 4.280994862
- Source = 129.0, dest = 128.0, queue = 0
- Event = Program Change; ch=0, program=0
- ...
- - test: apply optimization for v4.14 kernel about changes for TLV data handling on user-defined element set
- At kernel v4.14, in initial state, elements on user-defined sets have
- write-only flag. When applications write TLV data, then the elements
- get readable flag and the TLV data is available. Originally TLV data
- is shared by elements in the same set, thus events are generated for
- all of elements in the set by the write operation.
Detailed changelog between 1.1.3 and 1.1.5 releases
Changelog between 1.1.4 and 1.1.5 releases
alsa-tools
Core
- - Release v1.1.5
Digigram Echo Mixer
- - echomixer: obsolete usage of dimension information
- In current implementation for a series of echoaudio drivers, some control
- element set delivers information to use element values for
- multi-dimensional array. Essentially, ALSA control interface of asound.h
- has no common way to parse the information. As a result, the drivers
- forces 'echomixer' application to parse the information by several ways.
- This issue was reported by a commit 51db452df07b ('Revert "ALSA: echoaudio:
- purge contradictions between dimension matrix members and total number of
- members"') to Linux kernel. As a result of discussion at Linux
- miniconference 2017, usage of 'dimen' member of 'struct snd_ctl_elem_info'
- is going to be deprecated for future removal.
- According to the above decision, this commit obsoletes usage of 'dimen'
- information in 'echomixer' application. In a series of echoaudio drivers,
- a control element set named as 'Channels info' includes duplicated
- information of the dimension information on value array. Additionally,
- some of dimension information have fixed values. This commit utilizes them
- to obsolete usage of dimension information.
- This patch is tested with Echo Gina 3G.
as10k1 (EMU10K1+ DSP Assembler)
- - as10k1: Drop superfluous inline prefix
- output_tram_line() has a superfluous inline prefix and this interferes
- the build with clang. Let's drop it.
Detailed changelog between 1.1.4 and 1.1.5 releases
Changelog between 1.1.4 and 1.1.5 releases
alsa-utils
Core
- - Release v1.1.5
- - 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.
ALSA Control (alsactl)
- - 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.
alsatplg (topology)
- - alsatplg: fix topology compiler long option parsing
- verbose, compile and output options all have a parameter.
- - 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.
aplay/arecord
- - 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.
- - 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>
- - 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
- - 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.
- - aplay: Fix --max-file-time option 32 bits overflow
- Fix bug in arecord --max-file-time where the file size could overflow
- 32 bits.
bat (basic audio tester)
- - alsabat: fix one uninitialized warning issue
- Fix a variable uninitialized issue, adding the initialized assignment to fix it.
alsa-plugins
Core
- - Release v1.1.5
PulseAudio -> ALSA plugin
- - pulse: prevent double-free when pulse_hw_constraint returns error
- When pulse_hw_constraint returns error, snd_pcm_ioplug_delete() is called.
- It will then call pulse_close() where "snd_pcm_pulse_t *pcm" will be free.
- Then if goto the "error" label, the "snd_pcm_pulse_t *pcm" will be double-free.
- To prevent this, just jump over the code which might cause double-free.
tinycompress
Core
- - Release v1.1.5
- - tinycompress: clarify dual-license wording
- There were reports of confusion in legal circles introduced by the wording
- "tinycompress is provided under LGPL and BSD dual license" in the README.
- Clarify with the addition of the wording traditionally used for dual licenses:
- "This file is provided under a dual BSD/LGPLv2.1 license. When using or
- redistributing this file, you may do so under either license"
Header files
- - tinycompress: clarify dual-license wording
- There were reports of confusion in legal circles introduced by the wording
- "tinycompress is provided under LGPL and BSD dual license" in the README.
- Clarify with the addition of the wording traditionally used for dual licenses:
- "This file is provided under a dual BSD/LGPLv2.1 license. When using or
- redistributing this file, you may do so under either license"
Library
- - tinycompress: clarify dual-license wording
- There were reports of confusion in legal circles introduced by the wording
- "tinycompress is provided under LGPL and BSD dual license" in the README.
- Clarify with the addition of the wording traditionally used for dual licenses:
- "This file is provided under a dual BSD/LGPLv2.1 license. When using or
- redistributing this file, you may do so under either license"
Utilities
- - tinycompress: clarify dual-license wording
- There were reports of confusion in legal circles introduced by the wording
- "tinycompress is provided under LGPL and BSD dual license" in the README.
- Clarify with the addition of the wording traditionally used for dual licenses:
- "This file is provided under a dual BSD/LGPLv2.1 license. When using or
- redistributing this file, you may do so under either license"