OSDN Git Service
Jaroslav Kysela [Tue, 13 Apr 2021 18:30:07 +0000 (20:30 +0200)]
utils/alsa.m4: a quick fix for missing end brackets
Fixes:
c6e0f24e ("utils/alsa.m4: update for newer autoconf.")
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 13 Apr 2021 17:58:01 +0000 (19:58 +0200)]
conf: usb - correct 'SB Omni Surround 5.1' iec958 device
BugLink: https://github.com/alsa-project/alsa-lib/issues/101
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 13 Apr 2021 17:49:44 +0000 (19:49 +0200)]
test: audio_time - fix timestamp2ns() and usage()
BugLink: https://github.com/alsa-project/alsa-lib/issues/132
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Ozkan Sezer [Thu, 17 Dec 2020 11:11:28 +0000 (14:11 +0300)]
utils/alsa.m4: update for newer autoconf.
fixes autoconf-2.70 warnings. should be compatible down to autoconf-2.59.
BugLink: https://github.com/alsa-project/alsa-lib/pull/106
Signed-off-by: Ozkan Sezer <sezeroz@gmail.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 13 Apr 2021 17:13:20 +0000 (19:13 +0200)]
ucm: return error if fixedboot_list is empty
The application should know, that there is no special
initialization sequence. It's counterpart for
"ucm: return error if boot_list is empty".
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Hui Wang [Thu, 29 Oct 2020 06:51:30 +0000 (14:51 +0800)]
ucm: return error if boot_list is empty
If bootlist is empty, that means there is no BootSequence defined
in the ucm for this sound card, let set_boot_user() return error,
then alsactl could have chance to use non-ucm ways to initialize the
sound card.
BugLink: https://github.com/alsa-project/alsa-lib/pull/94
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Hui Wang [Mon, 1 Mar 2021 05:51:54 +0000 (13:51 +0800)]
conf: USB - add "Cmedia Audio" to USB-Audio.pcm.iec958_device
Otherwise, there will be a "Digital Output(S/PDIF)-Cmedia Audio" from
Gnome UI, but there is no this physical interface on the card.
BugLink: https://github.com/alsa-project/alsa-lib/pull/122
Signed-off-by: Hui Wang <hui.wang@canonical.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
James [Wed, 3 Mar 2021 21:03:37 +0000 (21:03 +0000)]
Remove non-existent SPDIF output on Dell AE515
The Dell Professional Sound Bar AE515 shows up in GNOME Settings with
a digital output that doesn't physically exist. Add it to the list
to suppress this.
BugLink: https://github.com/alsa-project/alsa-lib/pull/124
From: drjhe
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
James [Tue, 16 Mar 2021 17:41:48 +0000 (17:41 +0000)]
conf: No SPDIF on Plantronics 3220 headset
The Plantronics Blackwire 3220 Series headset (USB ID 047f:c056) shows up
in GNOME Settings with a non-existent digital output. Add it to the list
to suppress this.
BugLink: https://github.com/alsa-project/alsa-lib/pull/126
From: drjhe
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 13 Apr 2021 16:55:37 +0000 (18:55 +0200)]
pcm: direct - move the direct struct init to _snd_pcm_direct_new()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Vanitha Channaiah [Sun, 21 Mar 2021 11:00:48 +0000 (16:30 +0530)]
pcm: dshare - fix shared memory pointer check
Currently shared memory pointer is initialized to 0 and set to -1
in some, but not in all error paths.
In cleanup path of open the shm pointer is only compared to be non-NULL
before dereferencing it which leads to SEGFAULT in case it was set to -1.
This patch initializes pointer to -1 to have a unique identification
for invalid pointer and also checks for pointer being not -1 on
access in cleanup path.
Signed-off-by: Vanitha Channaiah <vanitha.channaiah@in.bosch.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 13 Apr 2021 16:01:09 +0000 (18:01 +0200)]
include: fix SND_LIB_VER() macro
Fixes:
c132509a ("include: add SND_LIB_VER() macro")
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 13 Apr 2021 15:19:54 +0000 (17:19 +0200)]
ucm: ucm_filename() - avoid double //
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 13 Apr 2021 07:52:35 +0000 (09:52 +0200)]
ucm: handle better the system() call
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 12 Apr 2021 16:09:21 +0000 (18:09 +0200)]
ucm: add LibraryConfig support
This commit allows to define private alsa-lib's configuration. When
the configuration is present, the device values ("PlaybackCTL",
"CaptureCTL", "PlaybackMixer", "CaptureMixer", "CapturePCM")
are prefixed with '_ucmHEXA.' string where HEXA is replaced by the
unique hexadecimal number identifying the opened ucm manager handle.
Syntax 4
LibraryConfig.a_label.SubstiConfig {
# substituted library configuration like:
usr_share_dir "${ConfLibDir}"
}
LibraryConfig.b_label.Config {
# non-substituted library configuration like:
usr_share_dir "/usr/share/alsa"
}
The File counterparts:
LibraryConfig.c_label.SubstiFile "/some/path"
LibraryConfig.d_label.File "/some/path"
Note that for files the contents is substituted on the request,
but the file name is always substituted (useful for ${ConfDir} etc.).
The private configuration is not saved or preserved. It's life time
belongs to the opened ucm manager handle.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 12 Apr 2021 14:47:58 +0000 (16:47 +0200)]
output: Add snd_output_buffer_steal() function
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 9 Apr 2021 16:11:57 +0000 (18:11 +0200)]
conf: add snd_config_merge() function
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 8 Apr 2021 10:48:38 +0000 (12:48 +0200)]
ucm: add ${ConfLibDir} substitution
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 8 Apr 2021 10:31:47 +0000 (12:31 +0200)]
conf: add /var/lib/alsa/conf.d directory lookup
It may be handy to put the configurations or symlinks
to the global runtime directory.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 6 Apr 2021 19:05:31 +0000 (21:05 +0200)]
conf: add /var/lib/alsa/card<NUMBER>.conf.d directory lookups
It may be handy to put extra configurations or symlinks to
the global runtime directory. The configurations may be
created at boot / hotplug event by udev or other scripts.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 6 Apr 2021 18:00:36 +0000 (20:00 +0200)]
conf: extend hook load_for_all_cards
Pass also card integer number.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 6 Apr 2021 16:32:57 +0000 (18:32 +0200)]
include: add SND_LIB_VER() macro
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 6 Apr 2021 16:19:48 +0000 (18:19 +0200)]
conf: make ctl.default and sysdefault devices more universal
It may be handy to add hw specific configs.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 6 Apr 2021 18:34:18 +0000 (20:34 +0200)]
control: add empty plugin
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 6 Apr 2021 10:57:54 +0000 (12:57 +0200)]
control: remap plugin - add docs
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 6 Apr 2021 10:18:23 +0000 (12:18 +0200)]
control: doc - create controls plugin page
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 29 Mar 2021 10:36:21 +0000 (12:36 +0200)]
control: remap plugin - initial version
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 29 Mar 2021 10:19:21 +0000 (12:19 +0200)]
control: add _snd_ctl_open_child()
To support internal plugins, add internal _snd_ctl_open_child()
function like _snd_pcm_open_slave().
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 6 Apr 2021 18:03:40 +0000 (20:03 +0200)]
pcm: empty plugin - fix the docs
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 29 Mar 2021 09:41:26 +0000 (11:41 +0200)]
control: shm - add missing continue to _snd_ctl_shm_open()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 29 Mar 2021 09:12:28 +0000 (11:12 +0200)]
ucm: add ctl-remove sequence command to delete controls from UCM
Syntax:
ctl-remove "name='ABCD'"
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 25 Mar 2021 19:36:54 +0000 (20:36 +0100)]
ucm: add cset-new sequence command to create new controls from UCM
This command create a new control using ID, description and value.
Syntax:
cset-new "name='ABCD',index=2 type=boolean,count=2 on,on"
cset-new "name='Enum' type=enum,labels='L1;L2;L3' 'L2'"
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 25 Mar 2021 19:40:22 +0000 (20:40 +0100)]
ucm: move __snd_ctl_ascii_elem_id_parse prototype to control_local.h
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 25 Mar 2021 19:27:44 +0000 (20:27 +0100)]
control: add __snd_ctl_add_elem_set() helper
It simplifies the add_elem_set functions and we need it for UCM.
It's an internal function.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 23 Mar 2021 16:43:30 +0000 (17:43 +0100)]
control: add snd_ctl_elem_id_compare_numid() function
Idea for the function prototype by Takashi Sakamoto.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 23 Mar 2021 16:30:25 +0000 (17:30 +0100)]
control: rename snd_ctl_elem_id_compare() to snd_ctl_elem_id_compare_set()
- add asserts to check if the unsigned integers are in the valid range
- replace tuple with set in the id description
- add const prefix for id1
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 23 Mar 2021 15:53:03 +0000 (16:53 +0100)]
ucm: add Path condition type
Check for a file presence and mode.
Modes: exists, read, write, exec
Example:
If.0 {
Condition {
Type Path
Mode read
Path "/etc/alsa/something"
True {
...
}
}
}
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 23 Mar 2021 10:40:30 +0000 (11:40 +0100)]
ucm: rename sysset to sysw
Fixes:
1c6fb202 ("ucm: implement sysset sequence command")
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Takashi Iwai [Thu, 18 Mar 2021 16:43:58 +0000 (17:43 +0100)]
conf: Fix invalid free at parse_args()
The previous fix for memory leaks introduced a few regression.
The major one is the assert hit in the error path reaching with NULL
or uninitialized sub object. Also, in other code paths, it's possible
that an already released sub object gets freed again.
Fix those bugs by initializing the sub object properly and add a NULL
check before calling snd_config_delete().
Fixes:
ad5f255b4767 ("conf: fix memory leak on the error path in parse_args()")
Reported-and-tested-by: Mark Hills <mark@xwax.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Jaroslav Kysela [Thu, 18 Mar 2021 11:33:10 +0000 (12:33 +0100)]
control: fix the subdevice fields comparison in snd_ctl_elem_id_compare()
Jaroslav Kysela [Wed, 10 Mar 2021 17:10:57 +0000 (18:10 +0100)]
conf: fix memory leak on the error path in parse_args()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 9 Mar 2021 19:02:57 +0000 (20:02 +0100)]
ucm: warn about unknown sequence commands
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 5 Mar 2021 18:55:06 +0000 (19:55 +0100)]
ucm: implement sysset sequence command
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 5 Mar 2021 18:35:03 +0000 (19:35 +0100)]
ucm: ucm_main.c - cosmetic tab cleanups
This file is problematic for the git's tab checker.
The unexpand tool is used to convert initial spaces
to tabs.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 5 Mar 2021 17:50:02 +0000 (18:50 +0100)]
ucm: add _fboot / FixedBootSequence
Actually, the BootSequence is executed only when the driver controls
(identifiers or value types) are changed. It may be handy to have
also a sequence which is executed at _each_ boot without any condition.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 8 Mar 2021 14:24:31 +0000 (15:24 +0100)]
control: better docs for snd_ctl_elem_id_compare()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sun, 7 Mar 2021 19:58:45 +0000 (20:58 +0100)]
conf: snd_config_save() - print arrays as [] not the internal representation
The internal represention of an array is:
{
0 value1
1 value2
2 value2
...
}
which is identicatal to shorter:
[
value1
value2
value3
]
Always print the short format. It's more optimized and readable.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sun, 7 Mar 2021 19:47:21 +0000 (20:47 +0100)]
conf: improve the tabulator level prints
Do not use per char loop, but compose a string.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 5 Mar 2021 20:11:41 +0000 (21:11 +0100)]
mixer: simple - use for loop in base_len()
... reduce the code a bit
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Hans de Goede [Sun, 28 Feb 2021 16:13:02 +0000 (17:13 +0100)]
mixer: simple - Unify simple_none: base_len() exception handling
Unify simple_none: base_len() exception handling:
1. In the "Input Source" and "3D Control" cases the base-name is the same
as the full-name and base_len() simply returns strlen(name).
Instead of returning 0 when the type is unknown, set the type to
CTL_SINGLE and return strlen(name). This allows removing the special
case for base_len() returning 0 in simple_event_add().
2. Move the special handling for "Capture Volume" and "Capture Switch"
from simple_event_add() to base_len(), so that we handle all exceptions
inside base_len(). Instead of handling some special cases in base_len()
and other special cases in simple_event_add().
[jk - moved the "Capture Volume" and "Capture Switch" to "Input Source"
exceptions]
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 5 Mar 2021 17:36:01 +0000 (18:36 +0100)]
configure: bumb version to 1.2.5pre1 (for CI tests)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 26 Feb 2021 19:52:23 +0000 (20:52 +0100)]
pcm: softvol - improve TLV data check for new configs
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 26 Feb 2021 19:30:58 +0000 (20:30 +0100)]
control: add snd_ctl_elem_id_compare() function
Compare two control element identifiers like strcmp().
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Fri, 26 Feb 2021 18:53:17 +0000 (19:53 +0100)]
control: snd_ctl_ascii_elem_id_get() - do not show unset numid
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Wed, 24 Feb 2021 20:03:29 +0000 (21:03 +0100)]
pcm: fix snd_pcm_plugin_status()
The appl_ptr difference must be computed before
the appl_ptr in the status structure is updated.
Fixes:
da5b70d3f ("pcm: plugin - fix status code for capture")
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Wed, 24 Feb 2021 18:20:15 +0000 (19:20 +0100)]
conf: introduce snd_config_get_card() function
It's helper for the "card" entries parsing. It reduces
the code in most of open_hw functions.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 22 Feb 2021 19:01:34 +0000 (20:01 +0100)]
pcm: softvol - make snd_pcm_parse_control_id private
The function is not used externally (it's not exported in headers).
Make it private.
Use snd_config_get_ctl_iface() for the interface value parsing.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 22 Feb 2021 12:08:30 +0000 (13:08 +0100)]
pcm: softvol - do not set TLV access flags for the switch
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 22 Feb 2021 11:24:58 +0000 (12:24 +0100)]
control: improve snd_ctl_add_*_elem_set functions (access flags)
The access flags are useful for the user space elements
with the custom access flags.
Introduce snd_ctl_elem_info_set_*() functions to set those flags
in the info structure.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 22 Feb 2021 11:13:44 +0000 (12:13 +0100)]
control: fix iformation -> information typos
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Hui Wang [Tue, 2 Feb 2021 00:33:36 +0000 (08:33 +0800)]
conf: HDA-Intel: increase the max number of HDMI/DP output to 11
Intel TGL HDMI/DP codec provides 9 pins (Linux kernel,
9a11ba7388f16:
ALSA: hda: hdmi - add Tigerlake support), and with the DP MST enabled,
the linux kernel will build 11 output devices (3, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16), and current alsa-lib only maps the first 8 output
devices, if users plug the HDMI/DP monitor to the last 3 ports, the
users will not see the output device from pulseaudio or gnome.
We have experienced this issue on a dell TGL machine with a dock, we
plugged 2 HDMP/DP monitors on the dock, but we could only see 1
HDMI/DP output device from pulseaudio or gnome, through investigation,
we found one monitor is plugged in the 2nd port from last.
Signed-off-by: Hui Wang <hui.wang@canonical.com>
BugLink: https://github.com/alsa-project/alsa-lib/pull/118
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Jaroslav Kysela [Wed, 3 Feb 2021 10:55:53 +0000 (11:55 +0100)]
ucm: fix two error messages
- add missing argument to error msg in if_eval_regex_match()
- print correct error value in uc_mgr_config_load_file()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 2 Feb 2021 18:26:24 +0000 (19:26 +0100)]
ucm: add ${find-card} and ${find-device} substitutions
It may be useful to find a correct card or device through
control API information fields.
Increase the syntax version to 4.
Examples:
${find-card:field=name,regex='HDA Intel'}
${find-device:type=pcm,field=id,regex='HDMI 1$'}
${find-device:ctl=hw:acp,type=pcm,field=id,regex=DMIC}
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 21 Jan 2021 14:45:49 +0000 (15:45 +0100)]
pcm: pcm_ioplug - fix the avail_update mmap capture copy issue
It seems that the commit "pcm: ioplug: Transfer all available data"
introduced new regressions (wrong memory access). The second issue
is that the avail_update in ioplug does not move appl_ptr nor hw_ptr,
so it's possible that the transfers may be repetitive.
This patch moves the transfer calls to mmap_begin callback where it
should be. The pointer wraps are handled by design now.
Fixes:
1714332719 ("pcm: ioplug: Transfer all available data")
BugLink: https://github.com/alsa-project/alsa-lib/pull/103
Tested-by: Andreas Pape <apape@de.adit-jv.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Takashi Iwai [Fri, 22 Jan 2021 14:48:42 +0000 (15:48 +0100)]
pcm: share: Pass appl_ptr and hw_ptr in snd_pcm_status()
This one also has the same problem as others; the appl_ptr and hw_ptr
of share plugin aren't updated in snd_pcm_status() call. Fix it.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Takashi Iwai [Fri, 22 Jan 2021 14:48:41 +0000 (15:48 +0100)]
pcm: null: Pass appl_ptr and hw_ptr in snd_pcm_status()
Just like the previous fix for ioplug, the null plugin also misses the
appl_ptr and hw_ptr updates for snd_pcm_status(). Fix it as well.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Takashi Iwai [Fri, 22 Jan 2021 14:48:40 +0000 (15:48 +0100)]
pcm: ioplug: Pass appl_ptr and hw_ptr in snd_pcm_status()
The snd_pcm_status() of the ioplug doesn't return the current
positions of hw_ptr and appl_ptr as advertised. Fix it by copying the
current values stored in the plugin data.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Takashi Iwai [Fri, 22 Jan 2021 14:48:39 +0000 (15:48 +0100)]
pcm: direct: Fix the missing appl_ptr update
A snd_pcm_status() call for the direct plugins receives the status
from the slave PCM, but this doesn't contain a valid appl_ptr, since
the slave PCM for the direct plugins is in a free-wheel mode, hence
the appl_ptr is always zero. This result in the inconsistent
status->appl_ptr and pcm->appl.ptr, hitting the recently introduced
assert() call.
Fix it by transferring the plugin's appl_ptr to the upper caller.
BugLink: https://bugzilla.opensuse.org/show_bug.cgi?id=1181194
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Wed, 20 Jan 2021 15:58:33 +0000 (16:58 +0100)]
topology: fix 'parse_tuple_set() - remove dead condition code'
The whole SND_SOC_TPLG_TUPLE_TYPE_WORD condition part must be
commented out, otherwise the condition is always true.
Fixes:
51e1d486ce ("topology: parse_tuple_set() - remove dead condition code")
BugLink: https://github.com/alsa-project/alsa-lib/issues/114
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 19 Jan 2021 10:17:00 +0000 (11:17 +0100)]
pcm: dmix/dshare - delay calculation fixes and cleanups
Unfortunately, we cannot use status->avail from slave, because this value
does not wrap to the buffer size and it may even overflow slave boundary
(endless run). We can use only hw_ptr from slave.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 18 Jan 2021 20:09:43 +0000 (21:09 +0100)]
pcm_plugin: set the initial hw_ptr/appl_ptr from the child pcm
The direct plugins (dmix & etc.) sets own initial
hw_ptr and appl_ptr. Use this initial settings
to export correct values in snd_pcm_status().
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 7 Jan 2021 16:49:25 +0000 (17:49 +0100)]
conf: USB - add "Xonar U7 MKII" to USB-Audio.pcm.iec958_device
BugLink: https://github.com/alsa-project/alsa-lib/issues/100
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 7 Jan 2021 16:45:27 +0000 (17:45 +0100)]
topology: sort_config() cleanups - use goto for the error path
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 7 Jan 2021 16:41:38 +0000 (17:41 +0100)]
ucm: uc_mgr_substitute_tree() fix use after free
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 7 Jan 2021 16:40:42 +0000 (17:40 +0100)]
topology: parse_tuple_set() - remove dead condition code
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 7 Jan 2021 16:38:50 +0000 (17:38 +0100)]
topology: tplg_decode_pcm() - add missing log argument (compress)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 7 Jan 2021 16:36:04 +0000 (17:36 +0100)]
topology: tplg_add_widget_object() - do not use invalid elem_ctl
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 7 Jan 2021 16:34:00 +0000 (17:34 +0100)]
topology: tplg_pprint_integer() fix coverity uninitalized variable error
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Thu, 7 Jan 2021 16:32:11 +0000 (17:32 +0100)]
ucm: fix possible memory leak in parse_verb_file()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 4 Jan 2021 16:27:32 +0000 (17:27 +0100)]
pcm: rate - fix the capture delay values
Use the correct snd_pcm_mmap_capture_delay() function instead
snd_pcm_mmap_capture_hw_avail().
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 4 Jan 2021 16:14:42 +0000 (17:14 +0100)]
pcm: rate - use pcm_frame_diff() on related places
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 4 Jan 2021 11:32:25 +0000 (12:32 +0100)]
pcm: plugin - fix status code for capture
The recent updates do not take in account the possible
calls for the capture stream. Fix the avail and delay
inconsistencies (and assert).
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Mon, 4 Jan 2021 11:29:00 +0000 (12:29 +0100)]
pcm: rate - use pcm_frame_diff() in snd_pcm_rate_playback_internal_delay()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sun, 3 Jan 2021 16:13:50 +0000 (17:13 +0100)]
pcm: ioplug - fix the delay calculation for old plugins
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sun, 3 Jan 2021 15:56:38 +0000 (16:56 +0100)]
pcm: rate - tidy up snd_pcm_rate_avail_update()
No functional change - just move the capture code to
a separate function for the better readability.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Wed, 30 Dec 2020 18:14:25 +0000 (19:14 +0100)]
pcm: ioplug - fix the delay calculation in the status callback
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Wed, 30 Dec 2020 16:49:33 +0000 (17:49 +0100)]
Revert "pcm_plugin: fix delay"
This reverts commit
aba87e509898ec9ddb3e319267d7c267409ff100.
The commit does not look good. The plugins must handle
the delay value correctly.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sun, 3 Jan 2021 15:41:29 +0000 (16:41 +0100)]
pcm: plugin - optimize sync in snd_pcm_plugin_status()
Do hw_ptr sync only once after the status call. This avoids
double update.
Also, the application pointer must not change when
the status is called. Add assert() call for this condition.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sun, 3 Jan 2021 15:34:04 +0000 (16:34 +0100)]
pcm: plugin - tidy snd_pcm_plugin_avail_update()
No functional changes - move the code to snd_pcm_plugin_sync_hw_ptr()
and put the mmap capture updates to separate function for readability.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sun, 3 Jan 2021 15:16:10 +0000 (16:16 +0100)]
pcm: plugin status - revert the recent changes
It's no reason to sync the avail/delay fields using the mirrored
buffer pointers. The slave information must be valid.
The original report probably tries to fix something for
the specific plugin. Revert all changes.
Fixes:
afe6ff3b33e ("pcm: plugin status - fix the return value (regression)")
Fixes:
4f90392f07e ("pcm: fix the snd_pcm_plugin_status() avail and delay fields")
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Wed, 30 Dec 2020 08:31:10 +0000 (09:31 +0100)]
pcm: plugin status - fix the return value (regression)
The snd_pcm_plugin_avail_update() error code in snd_pcm_plugin_status()
should not be reported to the caller. The state errors can be determined
using the state member in the status structure.
Fixes:
4f90392f07e ("pcm: fix the snd_pcm_plugin_status() avail and delay fields")
BugLink: https://github.com/alsa-project/alsa-lib/issues/107
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Tue, 29 Dec 2020 10:15:46 +0000 (11:15 +0100)]
conf: fix return code in _snd_config_load_with_include
Fixes:
5275d170e0 ("conf: fix use after free in _snd_config_load_with_include")
BugLink: https://github.com/alsa-project/alsa-lib/issues/108
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Alex Henrie [Mon, 28 Dec 2020 01:43:15 +0000 (18:43 -0700)]
confmisc: fix memory leak in snd_func_concat
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Jaroslav Kysela [Sun, 27 Dec 2020 12:29:33 +0000 (13:29 +0100)]
pcm: fix __snd_pcm_state() return value
The __snd_pcm_state() must return a valid state, not an error value
when the plugin callback is not defined. Use the first state
SND_PCM_STATE_OPEN - the other functions will return the error
code depending on this state.
Link: https://lore.kernel.org/alsa-devel/20201226213547.175071-10-alexhenrie24@gmail.com/
Reported-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela [Sun, 27 Dec 2020 12:17:26 +0000 (13:17 +0100)]
conf: fix get_hexachar() return value
Reported-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Alex Henrie [Sat, 26 Dec 2020 21:35:45 +0000 (14:35 -0700)]
pcm_multi: remove dead assignment from _snd_pcm_multi_open
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Alex Henrie [Sat, 26 Dec 2020 21:35:44 +0000 (14:35 -0700)]
pcm: remove dead assignments from snd_pcm_rate_(commit_area|grab_next_period)
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Alex Henrie [Sat, 26 Dec 2020 21:35:43 +0000 (14:35 -0700)]
timer: fix sizeof operator mismatch in snd_timer_query_hw_open
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Alex Henrie [Sat, 26 Dec 2020 21:35:41 +0000 (14:35 -0700)]
rawmidi: fix memory leak in snd_rawmidi_virtual_open
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Alex Henrie [Sat, 26 Dec 2020 21:35:40 +0000 (14:35 -0700)]
ucm: fix bad frees in get_list0 and get_list20
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>