forked from alsa-project/alsa-utils
-
Notifications
You must be signed in to change notification settings - Fork 2
rebase to upstream master #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
The silence frames generation in xrun_sync() seems to be currently a bit off as snd_pcm_format_set_silence() uses a wrong buffer address and size for zero-ing out the data. Consequently instead of clearing out the last frame(s), snd_pcm_format_set_silence() ends up silencing samples somewhere else in the buffer. This is partilarly more obvious for higher frame sizes (e.g. more than 2 channels). This patch fixes this issue by correcting the parameters passed to snd_pcm_format_set_silence(). BugLink: alsa-project#58 Signed-off-by: Dragos Tarcatu <dragos_tarcatu@mentor.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This patch changes the logic of pcm_readv() when abort signal has been detected. During such condition we should return the amount of frames actually read instead of the size requested by caller. Currently functions pcm_read() and pcm_readv() when aborted (in_aborting flag set) return the amount of requested frames instead of those actually read prior to interrupt. The consequence of this is repetition of recent X frames where X stands for amount of frames in one period. This problem is barely visible or rather audible when the period is small like few milliseconds because repetition of 1 [ms] of data is not-noticeable however if we use buffer and period sizes in seconds then the problem becomes apparent. Example issue -> thesofproject/sof#3189 Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This patch changes the logic of pcm_read() when abort signal has been detected. During such condition we should return the amount of frames actually read instead of the size requested by caller. Currently functions pcm_read() and pcm_readv() when aborted (in_aborting flag set) return the amount of requested frames instead of those actually read prior to interrupt. The consequence of this is repetition of recent X frames where X stands for amount of frames in one period. This problem is barely visible or rather audible when the period is small like few milliseconds because repetition of 1 [ms] of data is not-noticeable however if we use buffer and period sizes in seconds then the problem becomes apparent. Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This patch changes the way aborted stream is being saved. Currently when abort signal happens the write back of read samples is skipped but there is no reason to not save them. Also, we need to know how much frames have been read and write only those. Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Halve the double negative ‘if no loopback mode is not available’. Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
The system sku is used in SOF machine drivers to set specific quirks, expose it in alsa-info to help support users. Example on a SoundWire enabled device: cat /sys/class/dmi/id/product_sku 0A32 dmidecode -s system-sku-number 0A32 Add a variable and expose the results of both methods. Note that the dmidecode support is very recent and might not yet be available in all distros: http://git.savannah.nongnu.org/cgit/dmidecode.git/commit/?id=d70d5e686148eabe90c89fbf4cdcf5258db5aa05 Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
The reason is to use it with internal init extra commands like: alsactl -U -E CMD=info init Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Samanta Navarro <ferivoz@riseup.net> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
BugLink: alsa-project#44 From: Olivier Humbert <trebmuh@users.noreply.github.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Fix a minor typo for the '-f cdr' description. Fixes: 55cd025 ("aplay -- update the man file") BugLink: alsa-project#34 From: YetAnotherNerd <YetAnotherNerd@users.noreply.github.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
BugLink: alsa-project#52 Signed-off-by: Jaroslav Kysela <perex@perex.cz>
…dths The count argument was renamed to samples to correctly represent the value meaning. Also, remove the wrong count recalculation lines for 16-bit, 24-bit and 32-bit samples. BugLink: alsa-project#57 Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Recently users reported a bug, I tested it and found it is a common issue on Laptop or Desktop machines. The issue is users plug a headset and use "arecord test.wav" to record a sound with default input volume, the recorded sound has poor quality and nearly can't distinguish it is the sound we want to record. This is because the input volume is low and the default format is U8. The driver records sound with 16bit, because the input volume is low, most of samples are within (-256,+256), when converting 16bit to U8, those samples will be 0x7f. This is called quantization noise and we could only workaround it by increase the input volume or adding -f to arecord. But users want to record a better quality sound with default input volume (after installing a new OS, the volume is the default volume), and they don't want to add parameters to the arecord because most of new linux users just use "arecord test.wav". So this patch tries to change the default format from U8 to S16_LE/BE. If the machine doesn't support S16_LE/BE, it still uses U8 as default format. Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Fix grammar mess. From: Dan Jacobson <jidanni@jidanni.org> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
From: Jose Riha <jose1711@gmail.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
From: Porrumentzio <porrumentzio@riseup.net> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
- fixes spaces - improvements - min/MAJ - update - new translations - typo fixes From: Olivier Humbert <trebmuh@users.noreply.github.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Use the standard poll mechanism to ensure that there's something in the input to avoid busy loop on the file descriptor with the non-block mode set. Signed-off-by: Jaroslav Kysela <perex@perex.cz>
fredoh9
pushed a commit
that referenced
this pull request
Aug 6, 2024
alsactl distributed as part of Fedora 40 got a SEGV:
# journalctl
...
May 17 00:55:58 dev64.localdomain kernel: alsactl[1923]: segfault at 28 ip 00005600705b3373 sp 00007ffd9712bef0 error 4 in alsactl[5600705af000+13000] likely on CPU 5 (core 8, socket 0)
...
As the following output of the debug session, card_free() tried a card
pointing NULL:
$ sudo coredumpctl debug alsactl
PID: 1923 (alsactl)
UID: 0 (root)
GID: 0 (root)
Signal: 11 (SEGV)
Timestamp: Fri 2024-05-17 00:55:58 JST (3h 34min ago)
Command Line: /usr/sbin/alsactl -s -n 19 -c -E ALSA_CONFIG_PATH=/etc/alsa/alsactl.conf --initfile=/lib/alsa/init/00main rdaemon
Executable: /usr/sbin/alsactl
Control Group: /system.slice/alsa-state.service
Unit: alsa-state.service
Slice: system.slice
Boot ID: 241b5a2ef86f4940bb3d340583c80d88
Machine ID: 437365709a8c488c9481ee4b6651c2ec
Hostname: dev64.localdomain
Storage: /var/lib/systemd/coredump/core.alsactl.0.241b5a2ef86f4940bb3d340583c80d88.1923.1715874958000000.zst (present)
Size on Disk: 81.7K
Package: alsa-utils/1.2.11-1.fc40
build-id: 3b6fec58b3566d666d6e9fd48e8fcf04f03f0152
Message: Process 1923 (alsactl) of user 0 dumped core.
Module libasound.so.2 from rpm alsa-lib-1.2.11-2.fc40.x86_64
Module alsactl from rpm alsa-utils-1.2.11-1.fc40.x86_64
Stack trace of thread 1923:
#0 0x00005600705b3373 card_free (alsactl + 0xa373)
#1 0x00005600705c0e54 state_daemon (alsactl + 0x17e54)
#2 0x00005600705b2339 main (alsactl + 0x9339)
#3 0x00007f4c0b9b7088 __libc_start_call_main (libc.so.6 + 0x2a088)
#4 0x00007f4c0b9b714b __libc_start_main_impl (libc.so.6 + 0x2a14b)
#5 0x00005600705b2df5 _start (alsactl + 0x9df5)
ELF object binary architecture: AMD x86-64
GNU gdb (Fedora Linux) 14.2-1.fc40
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/sbin/alsactl...
Reading symbols from /usr/lib/debug/usr/sbin/alsactl-1.2.11-1.fc40.x86_64.debug...
[New LWP 1923]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `/usr/sbin/alsactl -s -n 19 -c -E ALSA_CONFIG_PATH=/etc/alsa/alsactl.conf --init'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 free_list (list=0x20) at /usr/src/debug/alsa-utils-1.2.11-1.fc40.x86_64/alsactl/daemon.c:73
73 for (i = 0; i < list->size; i++)
(gdb) where
#0 free_list (list=0x20) at /usr/src/debug/alsa-utils-1.2.11-1.fc40.x86_64/alsactl/daemon.c:73
#1 card_free (card=card@entry=0x5600707455f0) at /usr/src/debug/alsa-utils-1.2.11-1.fc40.x86_64/alsactl/daemon.c:82
#2 0x00005600705c0e54 in state_daemon (file=file@entry=0x5600705c31a1 "/var/lib/alsa/asound.state", cardname=cardname@entry=0x0, period=period@entry=300,
pidfile=pidfile@entry=0x5600705c3170 "/var/run/alsactl.pid") at /usr/src/debug/alsa-utils-1.2.11-1.fc40.x86_64/alsactl/daemon.c:455
#3 0x00005600705b2339 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/alsa-utils-1.2.11-1.fc40.x86_64/alsactl/alsactl.c:459
(gdb) list
68
69 static void free_list(struct id_list *list)
70 {
71 int i;
72
73 for (i = 0; i < list->size; i++)
74 free(list->list[i]);
75 free(list->list);
76 }
77
(gdb) up
#1 card_free (card=card@entry=0x5600707455f0) at /usr/src/debug/alsa-utils-1.2.11-1.fc40.x86_64/alsactl/daemon.c:82
82 free_list(&c->blacklist);
(gdb) p c
$1 = (struct card *) 0x0
(gdb)
Closes: alsa-project#267
Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
rebase to upstream master