1d4afb5ceSopenharmony_ci# lws minimal raw audio
2d4afb5ceSopenharmony_ci
3d4afb5ceSopenharmony_ciThis demonstrates operating ALSA playback and capture using the lws event loop
4d4afb5ceSopenharmony_civia raw file descriptors.
5d4afb5ceSopenharmony_ci
6d4afb5ceSopenharmony_ciYou need the lws cmake option `-DLWS_WITH_ALSA=1`
7d4afb5ceSopenharmony_ci
8d4afb5ceSopenharmony_ciThis example opens the default ALSA playback and capture devices and pipes the
9d4afb5ceSopenharmony_cicapture data into the playback with something over 1s delay via a ringbuffer.
10d4afb5ceSopenharmony_ci
11d4afb5ceSopenharmony_ciALSA doesn't really lend itself to direct use with event loops... this example
12d4afb5ceSopenharmony_ciuses the capture channel which does create POLLIN normally as the timesource
13d4afb5ceSopenharmony_cifor the playback as well; they're both set to 16000Hz sample rate.
14d4afb5ceSopenharmony_ci
15d4afb5ceSopenharmony_ci## build
16d4afb5ceSopenharmony_ci
17d4afb5ceSopenharmony_ci```
18d4afb5ceSopenharmony_ci $ cmake . && make
19d4afb5ceSopenharmony_ci```
20d4afb5ceSopenharmony_ci
21d4afb5ceSopenharmony_ci## usage
22d4afb5ceSopenharmony_ci
23d4afb5ceSopenharmony_ci```
24d4afb5ceSopenharmony_ci $ ./lws-minimal-raw-audio
25d4afb5ceSopenharmony_ci[2019/10/14 18:58:49:3288] U: LWS minimal raw audio
26d4afb5ceSopenharmony_ci[2019/10/14 18:58:50:3438] N: LWS_CALLBACK_RAW_ADOPT_FILE
27d4afb5ceSopenharmony_ci[2019/10/14 18:58:50:3455] N: LWS_CALLBACK_RAW_ADOPT_FILE
28d4afb5ceSopenharmony_ci[2019/10/14 18:58:50:4764] N: LWS_CALLBACK_RAW_RX_FILE: 2062 samples
29d4afb5ceSopenharmony_ci[2019/10/14 18:58:50:6132] N: LWS_CALLBACK_RAW_RX_FILE: 2205 samples
30d4afb5ceSopenharmony_ci[2019/10/14 18:58:50:7592] N: LWS_CALLBACK_RAW_RX_FILE: 2328 samples
31d4afb5ceSopenharmony_ci...
32d4afb5ceSopenharmony_ci^C[2019/10/14 18:58:56:8460] N: LWS_CALLBACK_RAW_CLOSE_FILE
33d4afb5ceSopenharmony_ci[2019/10/14 18:58:56:8461] N: LWS_CALLBACK_RAW_CLOSE_FILE
34d4afb5ceSopenharmony_ci[2019/10/14 18:58:56:8461] N: LWS_CALLBACK_PROTOCOL_DESTROY
35d4afb5ceSopenharmony_ci$
36d4afb5ceSopenharmony_ci
37d4afb5ceSopenharmony_ci```
38