pub/scm/linux/kernel/git/tiwai/salsa-lib.git  about / heads / tags
SALSA-library development repository
$ git log --pretty=format:'%h %s (%cs)%d'
a3e5acc Bump version to 0.2.0 (2021-10-12)
	(HEAD -> master, tag: v0.2.0)
012640d README: More brush ups (2021-10-12)
8b0c72d README: Some more brush up for MD (2021-10-12)
	(devel)
135f386 Bump the default compat version to 1.2.5 (2021-10-12)
b766ce5 control: Define snd_ctl_elem_id_compare_set() (2021-10-12)
0145904 conf: Add dummy snd_config_update_ref() and snd_config_update_unref() (2021-10-12)
602d7e4 Rename to README.md (2021-10-12)
9a6afef README: update the description about mmap (2021-10-12)
3a8f622 configure: Rename --enable-libasound with --enable-abi-compat (2021-10-12)
1ad0f25 configure: Fix a typo for delight-valgrind option (2021-10-12)
...

$ git cat-file blob HEAD:README.md
SALSA-Lib - Small ALSA Library
==============================

GENERAL
-------

SALSA-Lib is a small, light-weight, hot and spicy version of the ALSA
library, mainly for embedded systems with limited resources.
The library is designed to be source-level compatible with ALSA
library API for limited contents.  Most of function calls are inlined,
and accesses directly to the hardware via system calls.
Some components like ALSA sequencer aren't supported, and most of all,
the alsa-lib plugins and configurations are completely dropped.  Thus,
neither dmix nor format conversion is available with SALSA-lib.

The current features are found in the sections below.

### CONFIG

* All functions ``snd_config_*()`` are replaced with dummy ones since
  SALSA-Lib doesn't support the configuration files.
  The apps accessing config stuff won't work properly as expected.
* Disabled as default

### PCM

* Supports only the hw layer, i.e. no up/down-mixing, format
  conversion, rate conversion, etc, and no external plug-in
* Accepts the limited PCM name, ``hw``, ``default``, ``default:x``,
  and ``hw:x,y,z``
* Some of ``snd_pcm_mmap_read/write*()`` functions are declared but
  not implemented (returns -ENXIO)
* The support of async handlers can be built in via configure option,
  ``--enable-async``.  For simplicity, SALSA-lib supports only one async
  handler per PCM handler.

### CONTROL

* Supports only the hw layer, no plug-in
* Some H-control functions are not included
* The support of async handlers via ``--enable-async`` as well as PCM
  async handlers.

### MIXER

* No sort with weight as default, sorted in the order of numid
* Simple-none layer only
* "Capture Source" isn't split to switches but handled as an enum
   (I personally like this better :-)
* dB support can be selected via configure option
* Linear <-> log dB conversion enabled via configure option

### TIMER

* No query interface (returns errors)
* No async handler (returns -ENXIO)
* Disabled as default

### RAWMIDI

* Should work
* Disabled as default

### HWDEP

* Should work
* Disabled as default

### SEQUENCER

* All replaced with dummy functions.  The apps using sequencer won't
  work properly.
* Disabled as default

### INSTRUMENT LAYER

* No APIs are provided

### UCM

* Not supported yet at all

### MISC

* The API functions that are not supported but defined have
  *deprecated* attribute.  You'll get compile warnings when compiling
  the code using such functions.  (The same is true for the all
  components below.)  They are just warnings that you can usually
  ignore.  The warnings are given so that you can find the
  non-functional features easily.  If warnings really matter, remove
  the deprecated attribute via ``--disable-deprecated`` configure option.


INSTALLATION
------------

Some configure options are available to reduce the binary size.
As default, rawmidi, hwdep, timer, conf and seq components are
disabled.  They can be enabled via ``--enable-xxx`` option, such as
``--enable-rawmidi``.
The PCM and mixer components are enabled as default, and can be
disabled via ``--disable-pcm`` and ``--disable-mixer`` option, respectively.

The dB range support can be enabled via ``--enable-tlv`` option.  It's
disabled as default.  For enabling the floating-point math calculation
used in dB <-> linear conversion for the mixer, pass ``--enable-float``
option as well.

The support for user-space control elements is enabled as default
to keep the compatibility with the older salsa-lib releases.  But now
it can be disabled via ``--disable-user-elem`` configure option, too.

The async handler support can be enabled via ``--enable-async`` option.
It's disabled as default.

The PCM chmap API support is also optional, can be enabled via
``--enable-chmap`` option.

With option ``--enable-abi-compat``, libasound.so will be created as an
opt-in ABI-compatible library with the genuine ALSA-lib.

When ``--enable-abicheck`` is given, each open function checks the ABI
compatibility with the installed library.

When ``--enable-time64`` is passed, the library enforces to use the
64bit timespec and 64bit-compatible PCM ioctls even if the libc is
still with 32bit time.  It's good for testing the 64bit time support.

All these options can be enabled via a single option,
``--enable-everything``, for your convenience.

For disabling the deprecated attribute for non-working functions (see
the description of "MISC" in the section "GENERAL"), pass
``--disable-deprecated`` option.

For enabling the support for the string buffer with ``snd_output_*()``
function (e.g. used by PulseAudio), pass ``--enable-output-buffer`` option.

The alsa-library version to be compatible can be given explicitly via
``--with-compat-version option``.  As default, 1.2.5 is set.

If the ALSA device files are not in /dev/snd, another directory can be
specified with the ``--with-alsa-devdir option``.

The library is installed as ``$LIBDIR/libsalsa.so.*``.
This package provides also the compatible alsa.m4 and alsa.pc.  If the
other packages can be autoreconf'ed, you'll be able to link libsalsa
as it is.

The C header files are installed into ``$INCLUDEDIR/alsa``.  The
alsa/asoundlib.h should be compatible with the normal alsa-lib's one.


CROSS-COMPILATION
-----------------

For compiling the library with a cross compiler, run like the
following:

	% CC=arm-linux-gcc \
	  ./configure --target=arm-linux --host=i686-linux

Don't forget to add ``-linux`` to the host option value.  Otherwise
configure script won't detect the host type correctly, and the shared
library won't be built properly.


DOCUMENTATION
-------------

See alsa-lib reference.  It's compatible!


KNOWN PROBLEMS
--------------

* Incomplete MMAP mode

  ``snd_pcm_mmap_*()`` are only partially implemented, and the mmap-mode
  is less tested, so far.

* When built without ``--enable-output-buffer``, the buffer output via
  ``snd_output_*()`` functions doesn't work.  And, the last ``close``
  argument in ``snd_input_stdio_attach()`` and ``snd_output_stdio_attach()``
  is ignored and the attached IO is always closed.


LICENSE
-------

Distributed under LGPL.  See COPYING file.

# heads (aka `branches'):
$ git for-each-ref --sort=-creatordate refs/heads \
	--format='%(HEAD) %(refname:short) %(subject) (%(creatordate:short))'
* master       Bump version to 0.2.0 (2021-10-12)
  devel        README: Some more brush up for MD (2021-10-12)

# tags:
$ git for-each-ref --sort=-creatordate refs/tags \
	--format='%(refname:short) %(subject) (%(creatordate:short))'
v0.2.0       Bump version to 0.2.0 (2021-10-12) tar.gz
v0.1.6       Version 0.1.6 (2015-06-01) tar.gz
v0.1.4       Version 0.1.4 (2015-05-19) tar.gz
v0.1.5       Version 0.1.5 (2015-05-19) tar.gz
v0.1.3       Version 0.1.3 (2012-01-26) tar.gz
v0.1.2       Version 0.1.2 (2012-01-26) tar.gz
v0.1.1       Version 0.1.1 (2012-01-26) tar.gz
v0.1.0       Version 0.1.0 (2012-01-26) tar.gz
v0.0.7a      Version 0.0.7a (2012-01-26) tar.gz
v0.0.26      Version 0.0.26 (2012-01-26) tar.gz
...

# associated public inboxes:
# (number on the left is used for dev purposes)
         21 alsa-devel
          6 lkml
          6 u-boot
          4 linux-wireless
          4 buildroot
          3 qemu-devel
          3 linux-acpi
          3 netdev
          3 xen-devel
          3 stable
          3 linux-btrfs
          3 linux-usb
          3 dpdk-dev
          3 backports
          3 linux-man
          3 amd-gfx
          3 dri-devel
          2 linux-samsung-soc
          2 linux-mtd
          2 linux-riscv
          2 linux-nvme
          2 linux-xfs
          2 bpf
          2 linux-nfs
          2 linux-mediatek
          2 linux-crypto
          2 netfilter-devel
          2 linux-fsdevel
          2 linux-edac
          2 linux-cifs
          2 linux-devicetree
          2 linux-arm-msm
          2 linux-amlogic
          2 linux-erofs
          2 linux-mm
          2 linux-iommu
          2 linux-media
          2 linux-mips
          2 fstests
          2 linux-pm
          2 linux-rtc
          2 linux-input
          2 linux-scsi
          2 linux-arm-kernel
          2 kvmarm
          2 driverdev-devel
          2 linux-kselftest
          2 selinux
          2 linux-clk
          2 linux-iio
          2 linux-gpio
          2 linux-rdma
          2 linux-ext4
          2 linux-security-module
          2 linux-pci
          2 linux-f2fs-devel
          2 linuxppc-dev
          2 kvm
          2 linux-modules
          2 linux-rt-users
          2 linux-bluetooth
          2 linux-ide
          2 linux-serial
          2 linux-watchdog
          2 linux-trace-devel
          2 util-linux
          2 linux-doc
          2 git
          2 linux-mmc
          2 intel-gfx
          2 linux-api
          2 linux-omap
          2 linux-spi
          2 linux-i2c
          2 linux-sparse
          2 linux-tegra
          2 lttng-dev
          2 virtualization
          2 linux-kbuild
          2 linux-arch
          2 linux-can
          2 containers
          2 linux-rockchip
          2 linux-raid
          2 openbmc
          2 linux-fbdev
          2 linux-cxl
          2 linux-perf-users
          2 linux-sh
          2 nouveau
          2 linux-s390
          2 linux-coco
          2 ath9k-devel
          2 iwd
          2 ltp
          2 yocto
          2 yocto-meta-freescale
          2 openembedded-core
          2 yocto-toaster
          2 yocto-meta-arm
          2 openembedded-devel
          2 bitbake-devel
          2 yocto-meta-virtualization
          2 yocto-meta-ti
          2 yocto-meta-arago
          2 outreachy
          2 openrisc
          2 intel-wired-lan
          2 kexec
          2 linux-trace-kernel
          2 intel-xe
          2 linux-um
          2 virtio-comment
          2 poky
          2 qemu-riscv
          2 cluster-devel
          2 grub-devel
          2 kvm-ppc
          2 linux-hexagon
          2 reiserfs-devel
          2 lvm-devel
          2 virtio-fs
          2 ../../../../../../../fuego
          2 ../../../../../../../igt-dev
          1 linux-fscrypt
          1 cocci
          1 linux-block
          1 live-patching
          1 linux-efi
          1 linux-integrity
          1 linux-nvdimm
          1 linux-snps-arc
          1 linux-hwmon
          1 linux-renesas-soc
          1 kernel-hardening
          1 dmaengine
          1 linux-next
          1 linux-parisc
          1 linux-leds
          1 kernelnewbies
          1 linux-sgx
          1 linux-hyperv
          1 workflows
          1 rcu
          1 selinux-refpolicy
          1 linux-m68k
          1 linux-i3c
          1 linux-spdx
          1 linux-wpan
          1 ksummit-discuss
          1 wireguard
          1 io-uring
          1 linux-kernel-mentees
          1 linux-csky
          1 tpmdd-devel
          1 linux-unionfs
          1 linux-firmware
          1 cip-dev
          1 linux-audit
          1 linux-remoteproc
          1 linux-dash
          1 linux-bcache
          1 mm-commits
          1 linux-pwm
          1 linux-fpga
          1 ceph-devel
          1 xdp-newbies
          1 platform-driver-x86
          1 phone-devel
          1 linux-hardening
          1 dash
          1 dm-devel
          1 keyrings
          1 linux-sctp
          1 target-devel
          1 lustre-devel
          1 soc
          1 ocfs2-devel
          1 rust-for-linux
          1 ath10k
          1 ath11k
          1 linux-phy
          1 kernel-janitors
          1 sparclinux
          1 linux-staging
          1 linux-sunxi
          1 mptcp
          1 regressions
          1 ksummit
          1 b43-dev
          1 nvdimm
          1 linux-nfc
          1 linux-bcachefs
          1 ntfs3
          1 llvm
          1 fio
          1 ell
          1 ofono
          1 yocto-docs
          1 linux-patches
          1 chrome-platform
          1 ntb
          1 xenomai
          1 damon
          1 asahi
          1 loongarch
          1 imx
          1 ath12k
          1 b4-sent
          1 oe-linux-nfc
          1 oe-kbuild-all
          1 oe-chipsec
          1 batman
          1 virtio-dev
          1 v9fs
          1 ecryptfs
          1 linux-ia64
          1 kbd
          1 autofs
          1 cpufreq
          1 dccp
          1 cgroups
          1 devicetree-spec
          1 devicetree-compiler
          1 initramfs
          1 hail-devel
          1 kvm-ia64
          1 linux-8086
          1 kernel-testers
          1 linux-alpha
          1 linux-btrace
          1 linux-embedded
          1 linux-hams
          1 linux-hotplug
          1 linux-laptop
          1 linux-sound
          1 trinity
          1 linux-metag
          1 linux-x25
          1 linux-nilfs
          1 lvs-devel
          1 netfilter
          1 linux-oxnas
          1 u-boot-amlogic
          1 lm-sensors
          1 acpica-devel
          1 perfbook
          1 smatch
          1 ../../../../../../../wireless-regdb
          1 ../../../../../../../powertop

git clone https://yhbt.net/lore/pub/scm/linux/kernel/git/tiwai/salsa-lib.git