mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-12-15 08:56:36 -05:00
Added general overview and PCM formats
This commit is contained in:
parent
e441ec8013
commit
2f906af9b3
1 changed files with 21 additions and 0 deletions
|
|
@ -50,6 +50,16 @@ to store just 5.46 seconds of sound in a megabyte of memory when using
|
||||||
to reduce memory and communication costs by compressing the recorded
|
to reduce memory and communication costs by compressing the recorded
|
||||||
signal but this is beyond the scope of this document. </P>
|
signal but this is beyond the scope of this document. </P>
|
||||||
|
|
||||||
|
\section pcm_general_overview General overview
|
||||||
|
|
||||||
|
ALSA uses the ring buffer to store outgoing (playback) and incoming (capture,
|
||||||
|
record) samples. There are two pointers being mantained to allow
|
||||||
|
a precise communication between application and device pointing to current
|
||||||
|
processed sample by hardware and last processed sample by application.
|
||||||
|
The modern audio chips allows to program the transfer time periods.
|
||||||
|
It means that the stream of samples is divided to small chunks. Device
|
||||||
|
acknowledges to application when the transfer of a chunk is complete.
|
||||||
|
|
||||||
\section pcm_open_behaviour Blocked and non-blocked open
|
\section pcm_open_behaviour Blocked and non-blocked open
|
||||||
|
|
||||||
The ALSA PCM API uses a different behaviour when the device is opened
|
The ALSA PCM API uses a different behaviour when the device is opened
|
||||||
|
|
@ -133,4 +143,15 @@ In other case, the calls \link ::snd_pcm_prepare() \endlink,
|
||||||
\link ::snd_pcm_drop() \endlink, \link ::snd_pcm_drain() \endlink can be used
|
\link ::snd_pcm_drop() \endlink, \link ::snd_pcm_drain() \endlink can be used
|
||||||
to leave this state.
|
to leave this state.
|
||||||
|
|
||||||
|
\section pcm_formats PCM formats
|
||||||
|
|
||||||
|
The full list of formats present the \link ::snd_pcm_format_t \endlink type.
|
||||||
|
The 24-bit linear samples uses 32-bit physical space, but the sample is
|
||||||
|
stored in low three bits. Some hardware does not support processing of full
|
||||||
|
range, thus you may get the significative bits for linear samples via
|
||||||
|
\link ::snd_pcm_hw_params_get_sbits \endlink function. The example: ICE1712
|
||||||
|
chips support 32-bit sample processing, but low byte is ignored (playback)
|
||||||
|
or zero (capture). The function \link ::snd_pcm_hw_params_get_sbits() \endlink
|
||||||
|
returns 24 in the case.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue