This change introduces a new feature of the mobile application -
audio I/O support, which allows one to speak right from PC running
mobile through its ordinary mic and speakers.
The audio I/O is based on GAPK library, which relays on ALSA sound
framework. The API of GAPK implies to use the processing queues
(chains), which basically consist of a source block, several
processing blocks, and a sink block. So, there are two voice
- 'pq_audio_source' (voice capture -> frame encoding),
- 'pq_audio_sink' (frame decoding -> voice playback).
Both of them exchange frames from two dedicated buffers:
- 'tch_fb_ul' - a buffer for to be played DL TCH frames,
- 'tch_fb_dl' - a buffer for encoded UL TCH frames.
In its turn, both buffers are served by a new gapk_io_dequeue()
function, which is being called within the mobile_work() loop.