aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-06-02mixer: Fix memory leak and other issues in mixer eventRohit kumar
Fix memory leak in mixer_wait_event(). Also, poll should be unblocked after increasing event_cnt in mixer_plugin, otherwise event_cnt can become negative during read_event. Fix the same.
2020-06-02mixer: Add plugin support for mixer_consume/read_eventRohit kumar
snd_ctl_event is needed by client to get details of event received. Introduce mixer_read_event() with plugin support to support this.
2020-06-02tinyalsa: add mixer_consume_eventAndrew Chant
mixer_consume_event consumes subscribed events from the mixer in order to allow monitoring of mixer control value changed.
2020-05-24src/pcm.c: remove MAP_FILE mmap flagEthan Sommer
MAP_FILE is a non-standard mmap flag, and has no effect on conformant systems.
2020-05-22scripts/version.sh: switch from bash to POSIX shEthan Sommer
Change shebang to #!/bin/sh. Remove usage of non-POSIX 'local' builtin, and replace it with using a function's positional parameters to store variables, as they are local to the function.
2020-04-24Waiting for PCM to finish before exitingTaylor Holberton
2020-04-24Merge branch 'master' of github.com:tinyalsa/tinyalsaTaylor Holberton
2020-04-24Merge pull request #155 from Minecrell/strncpyTaylor Holberton
tinyalsa: use strncpy instead of memcpy to copy string constant
2020-04-24tinyalsa: mixer_plugin: remove dummy strings for sound cardMinecrell
There does not really seem to be an usage for these dummy string, so let's remove them.
2020-04-23tinyalsa: use strncpy instead of memcpy to copy string constantMinecrell
memcpy() is arguably wrong when copying these string constants. The string constants will usually just be as long as necessary, so we might copy some random memory behind it and eventually crash. Use strncpy() instead to avoid copying characters after the null terminator. For some reason the strings in snd_ctl_card_info use unsigned chars, so we need a cast to char* to make it compile unfortunately... This fixes the following compile error on ppc64le: In function 'mixer_plug_get_card_info', inlined from 'mixer_plug_ioctl' at mixer_plugin.c:371:15: mixer_plugin.c:333:5: error: 'memcpy' forming offset [9, 16] is out of the bounds [0, 8] [-Werror=array-bounds] 333 | memcpy(card_info->id, "card_id", sizeof(card_info->id)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Not sure why that warning does not exist on other architectures.
2020-04-23Merge pull request #153 from Minecrell/ssize_tTaylor Holberton
tinyalsa: include <sys/types.h> for ssize_t
2020-04-23tinyalsa: include <sys/types.h> for ssize_tMinecrell
ssize_t is defined in <sys/types.h>, see https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html Add an include for it to avoid a compile error when building with musl: ../include/tinyalsa/plugin.h:184:5: error: expected specifier-qualifier-list before 'ssize_t' 184 | ssize_t (*read_event) (struct mixer_plugin *plugin, | ^~~~~~~
2020-04-22Removed whitespaceTaylor Holberton
2020-04-20Merge pull request #151 from mgaio/fix/pcm_open_failureTaylor Holberton
pcm_hw_close: avoid SIGSEGV when pcm_hw_open fail
2020-04-18pcm_hw_close: avoid SIGSEGV when pcm_hw_open failMiguel GAIO
Prevent the call to pcm->ops-close() if pcm->ops->open() fail. Fix memory leak in pcm_hw_open() in case of failure. * thread #1, name = 'ut', stop reason = signal SIGSEGV: invalid address (fault address: 0x8) frame #0: 0x00007ffff7f863e8 libtinyalsa.so.1`pcm_hw_close(data=0x0000000000000000) at pcm_hw.c:61:21 58 { 59 struct pcm_hw_data *hw_data = data; 60 -> 61 if (hw_data->fd > 0) 62 close(hw_data->fd); 63 64 free(hw_data); (lldb) bt * thread #1, name = 'ut', stop reason = signal SIGSEGV: invalid address (fault address: 0x8) * frame #0: 0x00007ffff7f863e8 libtinyalsa.so.1`pcm_hw_close(data=0x0000000000000000) at pcm_hw.c:61:21 frame #1: 0x00007ffff7f8491c libtinyalsa.so.1`pcm_close(pcm=0x0000000000a9eba0) at pcm.c:820:5 frame #2: 0x00007ffff7f84e0a libtinyalsa.so.1`pcm_open(card=128, device=0, flags=13, config=0x00007fffffffd000) at pcm.c:957:5 Signed-off-by: Miguel GAIO <mgaio35@gmail.com>
2020-04-14Merge pull request #150 from rohkkumar/pluginTaylor Holberton
tinyalsa: add plugin.h to install path
2020-04-14tinyalsa: add plugin.h to install pathPatrick Lai
Export plugin.h so that it can be used by tinyalsa clients. Signed-off-by: Rohit kumar <rohitkr@codeaurora.org>
2020-04-10Merge pull request #148 from lkundrak/lr/double-freeTaylor Holberton
pcm: avoid calling pcm_hw->close() twice
2020-04-10Merge pull request #149 from lkundrak/lr/-errnoTaylor Holberton
pcm: do not negate errno
2020-04-10pcm: do not negate errnoLubomir Rintel
sterror() surely doesn't appreciate that: cannot set hw params: Unknown error -22 where it should've been: cannot set hw params: Invalid argument
2020-04-10pcm: avoid calling pcm_hw->close() twiceLubomir Rintel
It would result in a double free: $ tinyplay example.wav failed to open for pcm 0,0 *** glibc detected *** ./utils/tinyplay: double free or corruption (fasttop): 0x402dc258 *** Aborted $ The crash happens here: Program received signal SIGABRT, Aborted. 0x40070e78 in raise () from /lib/libc.so.6 Missing separate debuginfos, use: debuginfo-install glibc-2.16-34.olpc.0.fc18.armv7hl libgcc-4.7.2-8.fc18.armv7hl (gdb) bt #0 0x40070e78 in raise () from /lib/libc.so.6 #1 0x400724b8 in abort () from /lib/libc.so.6 #2 0x400ad6e0 in ?? () from /lib/libc.so.6 #3 0x400b54e8 in ?? () from /lib/libc.so.6 #4 0x2a00486c in pcm_hw_close () #5 0x2a0032e0 in pcm_close () #6 0x2a0016b0 in ctx_init () #7 0x2a000c98 in main () (gdb) The previous free was done here: Breakpoint 1, 0x400b8b8c in free () from /lib/libc.so.6 (gdb) bt #0 0x400b8b8c in free () from /lib/libc.so.6 #1 0x2a00486c in pcm_hw_close () #2 0x2a003674 in pcm_open () #3 0x2a0015e8 in ctx_init () #4 0x2a000c98 in main () (gdb)
2020-02-27Added 'tinymix' to linker ruleTaylor Holberton
2020-02-27Merge pull request #147 from brunosmmm/fix-cross-compilationTaylor Holberton
Fix cross-compilation
2020-02-22Fix cross-compilationBruno Morais
Cross-compilation failing due to make library resolution.
2020-02-11Merge pull request #137 from codeauroraforum/plugin-supportTaylor Holberton
Plugin support
2020-02-07tinyalsa: add support for mixer pluginsBhalchandra Gajare
Update the mixer framework to support plugins. Add ability for physical card to have either kernel registered mixer controls or plugin registered mixer control or both. Split mixer controls into two groups, one for kernel registered (hw_grp) and the other for plugin registered (virtual_grp). Signed-off-by: Rohit kumar <rohitkr@codeaurora.org> Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
2020-02-07tinyalsa: add support for PCM pluginsBhalchandra Gajare
Update the pcm framework to support plugins. Resolve the pcm device node to be either kernel device or virtual device and setup function pointers accordingly. Implement framework functionality for pcm_plugin.c for ease of plugin development. Plugin itself is compiled as shared object (.so) and dynamically linked from pcm_plugin.c. Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org> Signed-off-by: Rohit kumar <rohitkr@codeaurora.org>
2020-02-06Merge pull request #144 from mgaio/fix/mmap/pcm_waitTaylor Holberton
pcm: Set SW params.avail_min to period size
2020-02-06pcm: Set SW params.avail_min to period sizeMiguel GAIO
Using MMAP APIs, this parameter wake up application when 'avail_min' samples are availables. When audio processing expects exactly a full period size samples, the default parameter to 1 burns CPU until the full period available. Fix SW params.avail parameter to period size value. Signed-off-by: Miguel GAIO <mgaio35@gmail.com>
2019-12-17Merge pull request #143 from kraj/masterTaylor Holberton
Use CMAKE_INSTALL_<path> instead of hardcoding bin/lib/ install paths
2019-12-16Use CMAKE_INSTALL_<path> instead of hardcoding bin/lib/ install pathsKhem Raj
Helps fix build/packaging issues on machines where default libdir is not lib but say lib64 Signed-off-by: Khem Raj <raj.khem@gmail.com>
2019-09-21Merge pull request #140 from pasqualirb/masterTaylor Holberton
utils: Fix spelling in help text
2019-09-21utils: Fix spelling in help textRicardo Biehl Pasquali
Signed-off-by: Ricardo Biehl Pasquali <pasqualirb@gmail.com>
2019-07-07Merge pull request #131 from pasqualirb/masterTaylor Holberton
pcm: Allow to wait if capture is not running
2019-06-26pcm-readi: Fixed segfault in failure recoveryTaylor Holberton
2019-05-23Merge pull request #134 from jcromero/patch-1Taylor Holberton
Fix typo in -D and -d options descriptions
2019-05-23Fix typo in -D and -d options descriptionsjcromero
2019-05-11Merge pull request #132 from lucastanure/masterTaylor Holberton
makefile: Don't overwrite CROSS_COMPILE variable
2019-05-11makefile: Don't overwrite CROSS_COMPILE variableLucas Tanure
Signed-off-by: Lucas Tanure <tanure@linux.com>
2019-04-24pcm: Allow to wait if capture is not runningRicardo Biehl Pasquali
This allows starting capture from another thread. See the commit 932a81519572 ("ALSA: pcm: Comment why read blocks when PCM is not running") in Linux kernel. Signed-off-by: Ricardo Biehl Pasquali <pasqualirb@gmail.com>
2019-04-13Merge pull request #128 from alexonea/masterTaylor Holberton
Easier Version Specification
2019-04-13Merge pull request #130 from pasqualirb/masterTaylor Holberton
pcm: Remove setting unnecessary parameters
2019-04-12pcm: Remove setting unnecessary parametersRicardo Biehl Pasquali
SUBFORMAT is always zero. SAMPLE_BITS and FRAME_BITS are refined by ALSA based on the already set FORMAT and CHANNELS. Signed-off-by: Ricardo Biehl Pasquali <pasqualirb@gmail.com>
2019-04-11Merge pull request #129 from DanielaBistrean/masterTaylor Holberton
Fix integer division issue in int_to_percent function
2019-04-12Fix integer division issue in int_to_percent functionDaniela-Marinela Bistrean
Changed order of operations to preserve the precision during the division.
2019-04-11Move changelog check ver. from build systems to CIAlexandru N. Onea
This commit moves the changelog version check to the CI instead of the build systems. Rationale is: the failure to update the changelog is not a build failure / issue but rather an integration failure and it should be detected at integration testing. The closest to integration testing is the CI testing which is mandatory before pull requests and new features integration. Additionally, the old version.py script is removed because it is relying on the old version of include/tinyalsa/version.h where the TINYALSA_VERSION_STRING macro is defiend as an explicit string literal. Since now the version string is defined piece-wise and based on the individual version numbers, and since the introduction of version.sh and its use within meson build system to get the version from the version file, the old version.py script is obsolete.
2019-04-10Rename version-bump to just versionAlexandru N. Onea
2019-04-10Add dry-run option to version-bump.shAlexandru N. Onea
2019-04-10Minor improvements to version-bump.shAlexandru N. Onea
2019-04-09Add check action to version-bump.sh; Activate checksAlexandru N. Onea