xref: /aosp_15_r20/external/tinyalsa_new/README.md (revision 02e95f1a335b55495d41ca67eaf42361f13704fa)
1*02e95f1aSMarcin RadomskiTinyALSA
2*02e95f1aSMarcin Radomski========
3*02e95f1aSMarcin Radomski
4*02e95f1aSMarcin Radomski[![Build Status](https://travis-ci.org/tinyalsa/tinyalsa.svg?branch=master)](https://travis-ci.org/tinyalsa/tinyalsa)
5*02e95f1aSMarcin Radomski
6*02e95f1aSMarcin RadomskiTinyALSA is a small library to interface with ALSA in the Linux kernel.
7*02e95f1aSMarcin Radomski
8*02e95f1aSMarcin RadomskiThe aims are:
9*02e95f1aSMarcin Radomski
10*02e95f1aSMarcin Radomski - Provide a basic pcm and mixer API.
11*02e95f1aSMarcin Radomski - If it's not absolutely needed, don't add it to the API.
12*02e95f1aSMarcin Radomski - Avoid supporting complex and unnecessary operations, that could be
13*02e95f1aSMarcin Radomski   dealt with at a higher level.
14*02e95f1aSMarcin Radomski - Provide comprehensive documentation.
15*02e95f1aSMarcin Radomski
16*02e95f1aSMarcin Radomski### Building
17*02e95f1aSMarcin Radomski
18*02e95f1aSMarcin RadomskiTinyALSA supports these build systems:
19*02e95f1aSMarcin Radomski
20*02e95f1aSMarcin Radomski - [CMake](https://en.wikipedia.org/wiki/CMake)
21*02e95f1aSMarcin Radomski - [Make](https://en.wikipedia.org/wiki/Make_(software))
22*02e95f1aSMarcin Radomski - [Meson](https://en.wikipedia.org/wiki/Meson_(software))
23*02e95f1aSMarcin Radomski - [Soong](https://android.googlesource.com/platform/build/soong/+/refs/heads/master/README.md) for Android
24*02e95f1aSMarcin Radomski
25*02e95f1aSMarcin RadomskiTo build and install with Make, run the commands:
26*02e95f1aSMarcin Radomski
27*02e95f1aSMarcin Radomski```
28*02e95f1aSMarcin Radomskimake
29*02e95f1aSMarcin Radomskisudo make install
30*02e95f1aSMarcin Radomskisudo ldconfig
31*02e95f1aSMarcin Radomski```
32*02e95f1aSMarcin Radomski
33*02e95f1aSMarcin Radomski### Installing
34*02e95f1aSMarcin Radomski
35*02e95f1aSMarcin RadomskiTinyALSA is now available as a set of the following [Debian](https://en.wikipedia.org/wiki/Debian)
36*02e95f1aSMarcin Radomskipackages from [launchpad](https://launchpad.net/~taylorcholberton/+archive/ubuntu/tinyalsa):
37*02e95f1aSMarcin Radomski
38*02e95f1aSMarcin Radomski| Package Name:   | Description:                                        |
39*02e95f1aSMarcin Radomski|-----------------|-----------------------------------------------------|
40*02e95f1aSMarcin Radomski| tinyalsa        | Contains tinyplay, tinycap, tinymix and tinypcminfo |
41*02e95f1aSMarcin Radomski| libtinyalsa     | Contains the shared library                         |
42*02e95f1aSMarcin Radomski| libtinyalsa-dev | Contains the static library and header files        |
43*02e95f1aSMarcin Radomski
44*02e95f1aSMarcin RadomskiTo install these packages, run the commands:
45*02e95f1aSMarcin Radomski
46*02e95f1aSMarcin Radomski```
47*02e95f1aSMarcin Radomskisudo apt-add-repository ppa:taylorcholberton/tinyalsa
48*02e95f1aSMarcin Radomskisudo apt-get update
49*02e95f1aSMarcin Radomskisudo apt-get install tinyalsa
50*02e95f1aSMarcin Radomskisudo apt-get install libtinyalsa-dev
51*02e95f1aSMarcin Radomski```
52*02e95f1aSMarcin Radomski
53*02e95f1aSMarcin Radomski### Documentation
54*02e95f1aSMarcin Radomski
55*02e95f1aSMarcin RadomskiOnce installed, the man pages are available via:
56*02e95f1aSMarcin Radomski
57*02e95f1aSMarcin Radomski```
58*02e95f1aSMarcin Radomskiman tinyplay
59*02e95f1aSMarcin Radomskiman tinycap
60*02e95f1aSMarcin Radomskiman tinymix
61*02e95f1aSMarcin Radomskiman tinypcminfo
62*02e95f1aSMarcin Radomskiman libtinyalsa-pcm
63*02e95f1aSMarcin Radomskiman libtinyalsa-mixer
64*02e95f1aSMarcin Radomski```
65*02e95f1aSMarcin Radomski
66*02e95f1aSMarcin Radomski### Test
67*02e95f1aSMarcin Radomski
68*02e95f1aSMarcin RadomskiTo test libtinyalsa, please follow the instructions,
69*02e95f1aSMarcin Radomski
70*02e95f1aSMarcin Radomski#### Setup Bazel build environment
71*02e95f1aSMarcin Radomski
72*02e95f1aSMarcin RadomskiVisit [here](https://docs.bazel.build/versions/3.7.0/install.html) to get more info to setup Bazel environment.
73*02e95f1aSMarcin Radomski
74*02e95f1aSMarcin Radomski#### Insert loopback devices
75*02e95f1aSMarcin Radomski
76*02e95f1aSMarcin RadomskiThe test program does pcm_* operations on loopback devices. You have to insert loopback devices after your system boots up.
77*02e95f1aSMarcin Radomski
78*02e95f1aSMarcin Radomski```
79*02e95f1aSMarcin Radomskisudo modprobe snd-aloop
80*02e95f1aSMarcin Radomskisudo chmod 777 /dev/snd/*
81*02e95f1aSMarcin Radomski```
82*02e95f1aSMarcin Radomski
83*02e95f1aSMarcin Radomski#### Run test program
84*02e95f1aSMarcin Radomski
85*02e95f1aSMarcin Radomski```
86*02e95f1aSMarcin Radomskibazel test //:tinyalsa_tests --test_output=all
87*02e95f1aSMarcin Radomski```
88*02e95f1aSMarcin Radomski
89*02e95f1aSMarcin RadomskiThe default playback device is hw:2,0 and the default capture device is hw:2,1. If your loopback devices are not hw:2,0 and hw:2,1, you can specify the loopback device.
90*02e95f1aSMarcin Radomski
91*02e95f1aSMarcin Radomski```
92*02e95f1aSMarcin Radomskibazel test //:tinyalsa_tests --test_output=all \
93*02e95f1aSMarcin Radomski    --copt=-DTEST_LOOPBACK_CARD=[loopback card] \
94*02e95f1aSMarcin Radomski    --copt=-DTEST_LOOPBACK_PLAYBACK_DEVICE=[loopback playback device] \
95*02e95f1aSMarcin Radomski    --copt=-DTEST_LOOPBACK_CAPTURE_DEVICE=[loopback capture device]
96*02e95f1aSMarcin Radomski```
97*02e95f1aSMarcin Radomski
98*02e95f1aSMarcin Radomski#### Generate coverage report
99*02e95f1aSMarcin Radomski
100*02e95f1aSMarcin Radomski```
101*02e95f1aSMarcin Radomskibazel coverage //:tinyalsa_tests --combined_report=lcov --test_output=all
102*02e95f1aSMarcin Radomskigenhtml bazel-out/_coverage/_coverage_report.dat -o tinyalsa_tests_coverage
103*02e95f1aSMarcin Radomski```
104