Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > media > updates > by-pkgid > 18785641029f14f23cccc82925607ace > files > 51

libalsa2-docs-0.9.0-0.14rc7.1mdk.ppc.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>PCM Interface</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.18 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; <a class="qindex" href="examples.html">Examples</a> &nbsp; </center>
<hr><h1>PCM Interface</h1><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Files</h2></td></tr>
<tr><td nowrap align=right valign=top>file &nbsp;</td><td valign=bottom><a class="el" href="pcm_8c.html">pcm.c</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>PCM Interface.</em></font><br><br></td></tr>

<p>
<tr><td nowrap align=right valign=top>file &nbsp;</td><td valign=bottom><a class="el" href="pcm__plugin_8c.html">pcm_plugin.c</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>PCM Interface.</em></font><br><br></td></tr>

<p>
<tr><td colspan=2><br><h2>Modules</h2></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m___info.html">Stream Information</a></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m___h_w___params.html">Hardware Parameters</a></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m___s_w___params.html">Software Parameters</a></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m___access.html">Access Mask Functions</a></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m___format.html">Format Mask Functions</a></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m___sub_format.html">Subformat Mask Functions</a></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m___status.html">Status Functions</a></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m___description.html">Description Functions</a></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m___dump.html">Debug Functions</a></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m___direct.html">Direct Access (MMAP) Functions</a></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m___helpers.html">Helper Functions</a></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m___hook.html">Hook Extension</a></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m___scope.html">Scope Plugin Extension</a></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m___deprecated.html">Deprecated Functions</a></td></tr>
<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
<tr><td nowrap align=right valign=top>struct &nbsp;</td><td valign=bottom><a class="el" href="struct__snd__pcm__channel__area.html">_snd_pcm_channel_area</a></td></tr>
<tr><td nowrap align=right valign=top>union &nbsp;</td><td valign=bottom><a class="el" href="union__snd__pcm__sync__id.html">_snd_pcm_sync_id</a></td></tr>
<tr><td colspan=2><br><h2>Defines</h2></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a63">SND_PCM_DLSYM_VERSION</a>&nbsp;&nbsp;&nbsp;_dlsym_pcm_001</td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a64">SND_PCM_NONBLOCK</a></td></tr>
<tr><td nowrap align=right valign=top>#define&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a65">SND_PCM_ASYNC</a></td></tr>
<tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
<tr><td nowrap align=right valign=top>typedef _snd_pcm_info&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a0">snd_pcm_info_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef _snd_pcm_hw_params&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a1">snd_pcm_hw_params_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef _snd_pcm_sw_params&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a2">snd_pcm_sw_params_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef _snd_pcm_status&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a3">snd_pcm_status_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef _snd_pcm_access_mask&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a4">snd_pcm_access_mask_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef _snd_pcm_format_mask&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a5">snd_pcm_format_mask_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef _snd_pcm_subformat_mask&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a6">snd_pcm_subformat_mask_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef enum <a class="el" href="group___p_c_m.html#a66">_snd_pcm_class</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a7">snd_pcm_class_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef enum <a class="el" href="group___p_c_m.html#a67">_snd_pcm_subclass</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a8">snd_pcm_subclass_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef enum <a class="el" href="group___p_c_m.html#a68">_snd_pcm_stream</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a9">snd_pcm_stream_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef enum <a class="el" href="group___p_c_m.html#a69">_snd_pcm_access</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a10">snd_pcm_access_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef enum <a class="el" href="group___p_c_m.html#a70">_snd_pcm_format</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a11">snd_pcm_format_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef enum <a class="el" href="group___p_c_m.html#a71">_snd_pcm_subformat</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a12">snd_pcm_subformat_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef enum <a class="el" href="group___p_c_m.html#a72">_snd_pcm_state</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a13">snd_pcm_state_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef enum <a class="el" href="group___p_c_m.html#a73">_snd_pcm_start</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a14">snd_pcm_start_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef enum <a class="el" href="group___p_c_m.html#a74">_snd_pcm_xrun</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a15">snd_pcm_xrun_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef enum <a class="el" href="group___p_c_m.html#a75">_snd_pcm_tstamp</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a16">snd_pcm_tstamp_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef unsigned long&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a17">snd_pcm_uframes_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef long&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a18">snd_pcm_sframes_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef timeval&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a19">snd_timestamp_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef _snd_pcm&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef enum <a class="el" href="group___p_c_m.html#a76">_snd_pcm_type</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a21">snd_pcm_type_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef <a class="el" href="struct__snd__pcm__channel__area.html">_snd_pcm_channel_area</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a22">snd_pcm_channel_area_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef <a class="el" href="union__snd__pcm__sync__id.html">_snd_pcm_sync_id</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a23">snd_pcm_sync_id_t</a></td></tr>
<tr><td nowrap align=right valign=top>typedef _snd_pcm_scope&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a24">snd_pcm_scope_t</a></td></tr>
<tr><td colspan=2><br><h2>Enumerations</h2></td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a66">_snd_pcm_class</a> { <a class="el" href="group___p_c_m.html#a66a39">SND_PCM_CLASS_GENERIC</a> =  0, 
<a class="el" href="group___p_c_m.html#a66a40">SND_PCM_CLASS_MULTI</a>, 
<a class="el" href="group___p_c_m.html#a66a41">SND_PCM_CLASS_MODEM</a>, 
<a class="el" href="group___p_c_m.html#a66a42">SND_PCM_CLASS_DIGITIZER</a>
 }</td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a67">_snd_pcm_subclass</a> { <a class="el" href="group___p_c_m.html#a67a44">SND_PCM_SUBCLASS_GENERIC_MIX</a> =  0, 
<a class="el" href="group___p_c_m.html#a67a45">SND_PCM_SUBCLASS_MULTI_MIX</a>
 }</td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a68">_snd_pcm_stream</a> { <a class="el" href="group___p_c_m.html#a68a47">SND_PCM_STREAM_PLAYBACK</a> =  0, 
<a class="el" href="group___p_c_m.html#a68a48">SND_PCM_STREAM_CAPTURE</a>
 }</td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a69">_snd_pcm_access</a> { <br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a69a50">SND_PCM_ACCESS_MMAP_INTERLEAVED</a> =  0, 
<a class="el" href="group___p_c_m.html#a69a51">SND_PCM_ACCESS_MMAP_NONINTERLEAVED</a>, 
<a class="el" href="group___p_c_m.html#a69a52">SND_PCM_ACCESS_MMAP_COMPLEX</a>, 
<a class="el" href="group___p_c_m.html#a69a53">SND_PCM_ACCESS_RW_INTERLEAVED</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a69a54">SND_PCM_ACCESS_RW_NONINTERLEAVED</a>
<br>
 }</td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a70">_snd_pcm_format</a> { <br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a70a56">SND_PCM_FORMAT_UNKNOWN</a> =  -1, 
<a class="el" href="group___p_c_m.html#a70a57">SND_PCM_FORMAT_S8</a> =  0, 
<a class="el" href="group___p_c_m.html#a70a58">SND_PCM_FORMAT_U8</a>, 
<a class="el" href="group___p_c_m.html#a70a59">SND_PCM_FORMAT_S16_LE</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a70a60">SND_PCM_FORMAT_S16_BE</a>, 
<a class="el" href="group___p_c_m.html#a70a61">SND_PCM_FORMAT_U16_LE</a>, 
<a class="el" href="group___p_c_m.html#a70a62">SND_PCM_FORMAT_U16_BE</a>, 
<a class="el" href="group___p_c_m.html#a70a63">SND_PCM_FORMAT_S24_LE</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a70a64">SND_PCM_FORMAT_S24_BE</a>, 
<a class="el" href="group___p_c_m.html#a70a65">SND_PCM_FORMAT_U24_LE</a>, 
<a class="el" href="group___p_c_m.html#a70a66">SND_PCM_FORMAT_U24_BE</a>, 
<a class="el" href="group___p_c_m.html#a70a67">SND_PCM_FORMAT_S32_LE</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a70a68">SND_PCM_FORMAT_S32_BE</a>, 
<a class="el" href="group___p_c_m.html#a70a69">SND_PCM_FORMAT_U32_LE</a>, 
<a class="el" href="group___p_c_m.html#a70a70">SND_PCM_FORMAT_U32_BE</a>, 
<a class="el" href="group___p_c_m.html#a70a71">SND_PCM_FORMAT_FLOAT_LE</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a70a72">SND_PCM_FORMAT_FLOAT_BE</a>, 
<a class="el" href="group___p_c_m.html#a70a73">SND_PCM_FORMAT_FLOAT64_LE</a>, 
<a class="el" href="group___p_c_m.html#a70a74">SND_PCM_FORMAT_FLOAT64_BE</a>, 
<a class="el" href="group___p_c_m.html#a70a75">SND_PCM_FORMAT_IEC958_SUBFRAME_LE</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a70a76">SND_PCM_FORMAT_IEC958_SUBFRAME_BE</a>, 
<a class="el" href="group___p_c_m.html#a70a77">SND_PCM_FORMAT_MU_LAW</a>, 
<a class="el" href="group___p_c_m.html#a70a78">SND_PCM_FORMAT_A_LAW</a>, 
<a class="el" href="group___p_c_m.html#a70a79">SND_PCM_FORMAT_IMA_ADPCM</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a70a80">SND_PCM_FORMAT_MPEG</a>, 
<a class="el" href="group___p_c_m.html#a70a81">SND_PCM_FORMAT_GSM</a>, 
<a class="el" href="group___p_c_m.html#a70a82">SND_PCM_FORMAT_SPECIAL</a> =  31, 
<a class="el" href="group___p_c_m.html#a70a83">SND_PCM_FORMAT_S24_3LE</a> =  32, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a70a84">SND_PCM_FORMAT_S24_3BE</a>, 
<a class="el" href="group___p_c_m.html#a70a85">SND_PCM_FORMAT_U24_3LE</a>, 
<a class="el" href="group___p_c_m.html#a70a86">SND_PCM_FORMAT_U24_3BE</a>, 
<a class="el" href="group___p_c_m.html#a70a87">SND_PCM_FORMAT_S20_3LE</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a70a88">SND_PCM_FORMAT_S20_3BE</a>, 
<a class="el" href="group___p_c_m.html#a70a89">SND_PCM_FORMAT_U20_3LE</a>, 
<a class="el" href="group___p_c_m.html#a70a90">SND_PCM_FORMAT_U20_3BE</a>, 
<a class="el" href="group___p_c_m.html#a70a91">SND_PCM_FORMAT_S18_3LE</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a70a92">SND_PCM_FORMAT_S18_3BE</a>, 
<a class="el" href="group___p_c_m.html#a70a93">SND_PCM_FORMAT_U18_3LE</a>, 
<a class="el" href="group___p_c_m.html#a70a94">SND_PCM_FORMAT_U18_3BE</a>
, <a class="el" href="group___p_c_m.html#a70a96">SND_PCM_FORMAT_S16</a> =  SND_PCM_FORMAT_S16_LE, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a70a97">SND_PCM_FORMAT_U16</a> =  SND_PCM_FORMAT_U16_LE, 
<a class="el" href="group___p_c_m.html#a70a98">SND_PCM_FORMAT_S24</a> =  SND_PCM_FORMAT_S24_LE, 
<a class="el" href="group___p_c_m.html#a70a99">SND_PCM_FORMAT_U24</a> =  SND_PCM_FORMAT_U24_LE, 
<a class="el" href="group___p_c_m.html#a70a100">SND_PCM_FORMAT_S32</a> =  SND_PCM_FORMAT_S32_LE, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a70a101">SND_PCM_FORMAT_U32</a> =  SND_PCM_FORMAT_U32_LE, 
<a class="el" href="group___p_c_m.html#a70a102">SND_PCM_FORMAT_FLOAT</a> =  SND_PCM_FORMAT_FLOAT_LE, 
<a class="el" href="group___p_c_m.html#a70a103">SND_PCM_FORMAT_FLOAT64</a> =  SND_PCM_FORMAT_FLOAT64_LE, 
<a class="el" href="group___p_c_m.html#a70a104">SND_PCM_FORMAT_IEC958_SUBFRAME</a> =  SND_PCM_FORMAT_IEC958_SUBFRAME_LE
<br>
 }</td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a71">_snd_pcm_subformat</a> { <a class="el" href="group___p_c_m.html#a71a105">SND_PCM_SUBFORMAT_STD</a> =  0
 }</td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a72">_snd_pcm_state</a> { <br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a72a107">SND_PCM_STATE_OPEN</a> =  0, 
<a class="el" href="group___p_c_m.html#a72a108">SND_PCM_STATE_SETUP</a>, 
<a class="el" href="group___p_c_m.html#a72a109">SND_PCM_STATE_PREPARED</a>, 
<a class="el" href="group___p_c_m.html#a72a110">SND_PCM_STATE_RUNNING</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a72a111">SND_PCM_STATE_XRUN</a>, 
<a class="el" href="group___p_c_m.html#a72a112">SND_PCM_STATE_DRAINING</a>, 
<a class="el" href="group___p_c_m.html#a72a113">SND_PCM_STATE_PAUSED</a>, 
<a class="el" href="group___p_c_m.html#a72a114">SND_PCM_STATE_SUSPENDED</a>
<br>
 }</td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a73">_snd_pcm_start</a> { <a class="el" href="group___p_c_m.html#a73a116">SND_PCM_START_DATA</a> =  0, 
<a class="el" href="group___p_c_m.html#a73a117">SND_PCM_START_EXPLICIT</a>
 }</td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a74">_snd_pcm_xrun</a> { <a class="el" href="group___p_c_m.html#a74a119">SND_PCM_XRUN_NONE</a> =  0, 
<a class="el" href="group___p_c_m.html#a74a120">SND_PCM_XRUN_STOP</a>
 }</td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a75">_snd_pcm_tstamp</a> { <a class="el" href="group___p_c_m.html#a75a122">SND_PCM_TSTAMP_NONE</a> =  0, 
<a class="el" href="group___p_c_m.html#a75a123">SND_PCM_TSTAMP_MMAP</a>
 }</td></tr>
<tr><td nowrap align=right valign=top>enum &nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a76">_snd_pcm_type</a> { <br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a76a125">SND_PCM_TYPE_HW</a> =  0, 
<a class="el" href="group___p_c_m.html#a76a126">SND_PCM_TYPE_HOOKS</a>, 
<a class="el" href="group___p_c_m.html#a76a127">SND_PCM_TYPE_MULTI</a>, 
<a class="el" href="group___p_c_m.html#a76a128">SND_PCM_TYPE_FILE</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a76a129">SND_PCM_TYPE_NULL</a>, 
<a class="el" href="group___p_c_m.html#a76a130">SND_PCM_TYPE_SHM</a>, 
<a class="el" href="group___p_c_m.html#a76a131">SND_PCM_TYPE_INET</a>, 
<a class="el" href="group___p_c_m.html#a76a132">SND_PCM_TYPE_COPY</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a76a133">SND_PCM_TYPE_LINEAR</a>, 
<a class="el" href="group___p_c_m.html#a76a134">SND_PCM_TYPE_ALAW</a>, 
<a class="el" href="group___p_c_m.html#a76a135">SND_PCM_TYPE_MULAW</a>, 
<a class="el" href="group___p_c_m.html#a76a136">SND_PCM_TYPE_ADPCM</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a76a137">SND_PCM_TYPE_RATE</a>, 
<a class="el" href="group___p_c_m.html#a76a138">SND_PCM_TYPE_ROUTE</a>, 
<a class="el" href="group___p_c_m.html#a76a139">SND_PCM_TYPE_PLUG</a>, 
<a class="el" href="group___p_c_m.html#a76a140">SND_PCM_TYPE_SHARE</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a76a141">SND_PCM_TYPE_METER</a>, 
<a class="el" href="group___p_c_m.html#a76a142">SND_PCM_TYPE_MIX</a>, 
<a class="el" href="group___p_c_m.html#a76a143">SND_PCM_TYPE_DROUTE</a>, 
<a class="el" href="group___p_c_m.html#a76a144">SND_PCM_TYPE_LBSERVER</a>, 
<br>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#a76a145">SND_PCM_TYPE_LINEAR_FLOAT</a>, 
<a class="el" href="group___p_c_m.html#a76a146">SND_PCM_TYPE_LADSPA</a>
<br>
 }</td></tr>
<tr><td colspan=2><br><h2>Functions</h2></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a25">snd_pcm_open</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> **pcm, const char *name, <a class="el" href="group___p_c_m.html#a9">snd_pcm_stream_t</a> stream, int mode)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Opens a PCM.</em> <a href="#a25"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a26">snd_pcm_open_lconf</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> **pcm, const char *name, <a class="el" href="group___p_c_m.html#a9">snd_pcm_stream_t</a> stream, int mode, <a class="el" href="group___config.html#a1">snd_config_t</a> *lconf)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Opens a PCM using local configuration.</em> <a href="#a26"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a27">snd_pcm_close</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>close PCM handle</em> <a href="#a27"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>const char *&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a28">snd_pcm_name</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>get identifier of PCM handle</em> <a href="#a28"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m.html#a21">snd_pcm_type_t</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a29">snd_pcm_type</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>get type of PCM handle</em> <a href="#a29"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m.html#a9">snd_pcm_stream_t</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a30">snd_pcm_stream</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>get stream for a PCM handle</em> <a href="#a30"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a31">snd_pcm_poll_descriptors_count</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>get count of poll descriptors for PCM handle</em> <a href="#a31"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a32">snd_pcm_poll_descriptors</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, struct pollfd *pfds, unsigned int space)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>get poll descriptors</em> <a href="#a32"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a33">snd_pcm_poll_descriptors_revents</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, struct pollfd *pfds, unsigned int nfds, unsigned short *revents)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>get returned events from poll descriptors</em> <a href="#a33"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a34">snd_pcm_nonblock</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, int nonblock)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>set nonblock mode</em> <a href="#a34"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a35">snd_async_add_pcm_handler</a> (<a class="el" href="group___global.html#a0">snd_async_handler_t</a> **handler, <a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, <a class="el" href="group___global.html#a1">snd_async_callback_t</a> callback, void *private_data)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Add an async handler for a PCM.</em> <a href="#a35"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a36">snd_async_handler_get_pcm</a> (<a class="el" href="group___global.html#a0">snd_async_handler_t</a> *handler)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Return PCM handle related to an async handler.</em> <a href="#a36"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a37">snd_pcm_info</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#a0">snd_pcm_info_t</a> *info)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obtain general (static) information for PCM handle.</em> <a href="#a37"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a38">snd_pcm_hw_params_current</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#a1">snd_pcm_hw_params_t</a> *params)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Retreive current PCM hardware configuration chosen with <a class="el" href="pcm_8c.html#a7">snd_pcm_hw_params</a>.</em> <a href="#a38"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a39">snd_pcm_hw_params</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#a1">snd_pcm_hw_params_t</a> *params)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Install one PCM hardware configuration chosen from a configuration space and <a class="el" href="pcm_8c.html#a15">snd_pcm_prepare</a> it.</em> <a href="#a39"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a40">snd_pcm_hw_free</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Remove PCM hardware configuration and free associated resources.</em> <a href="#a40"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a41">snd_pcm_sw_params_current</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#a2">snd_pcm_sw_params_t</a> *params)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Return current software configuration for a PCM.</em> <a href="#a41"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a42">snd_pcm_sw_params</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#a2">snd_pcm_sw_params_t</a> *params)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Install PCM software configuration defined by params.</em> <a href="#a42"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a43">snd_pcm_prepare</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Prepare PCM for use.</em> <a href="#a43"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a44">snd_pcm_reset</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Reset PCM position.</em> <a href="#a44"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a45">snd_pcm_status</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#a3">snd_pcm_status_t</a> *status)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obtain status (runtime) information for PCM handle.</em> <a href="#a45"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a46">snd_pcm_start</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Start a PCM.</em> <a href="#a46"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a47">snd_pcm_drop</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Stop a PCM dropping pending frames.</em> <a href="#a47"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a48">snd_pcm_drain</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Stop a PCM preserving pending frames.</em> <a href="#a48"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a49">snd_pcm_pause</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, int enable)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Pause/resume PCM.</em> <a href="#a49"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m.html#a13">snd_pcm_state_t</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a50">snd_pcm_state</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Return PCM state.</em> <a href="#a50"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a51">snd_pcm_hwsync</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Synchronize stream position with hardware.</em> <a href="#a51"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a52">snd_pcm_delay</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#a18">snd_pcm_sframes_t</a> *delayp)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Obtain delay for a running PCM handle.</em> <a href="#a52"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a53">snd_pcm_resume</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Resume from suspend, no samples are lost.</em> <a href="#a53"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m.html#a18">snd_pcm_sframes_t</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a54">snd_pcm_avail_update</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Return number of frames ready to be read/written.</em> <a href="#a54"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m.html#a18">snd_pcm_sframes_t</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a55">snd_pcm_rewind</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#a17">snd_pcm_uframes_t</a> frames)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Move application frame position backward.</em> <a href="#a55"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m.html#a18">snd_pcm_sframes_t</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a56">snd_pcm_writei</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, const void *buffer, <a class="el" href="group___p_c_m.html#a17">snd_pcm_uframes_t</a> size)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Write interleaved frames to a PCM.</em> <a href="#a56"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m.html#a18">snd_pcm_sframes_t</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a57">snd_pcm_readi</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, void *buffer, <a class="el" href="group___p_c_m.html#a17">snd_pcm_uframes_t</a> size)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Read interleaved frames from a PCM.</em> <a href="#a57"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m.html#a18">snd_pcm_sframes_t</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a58">snd_pcm_writen</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, void **bufs, <a class="el" href="group___p_c_m.html#a17">snd_pcm_uframes_t</a> size)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Write non interleaved frames to a PCM.</em> <a href="#a58"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="group___p_c_m.html#a18">snd_pcm_sframes_t</a>&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a59">snd_pcm_readn</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, void **bufs, <a class="el" href="group___p_c_m.html#a17">snd_pcm_uframes_t</a> size)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Read non interleaved frames to a PCM.</em> <a href="#a59"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a60">snd_pcm_wait</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm, int timeout)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Wait for a PCM to become ready.</em> <a href="#a60"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a61">snd_pcm_link</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm1, <a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm2)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Link two PCMs.</em> <a href="#a61"></a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int&nbsp;</td><td valign=bottom><a class="el" href="group___p_c_m.html#a62">snd_pcm_unlink</a> (<a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *pcm)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Remove a PCM from a linked group.</em> <a href="#a62"></a><em></em></font><br><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
See the <a href="pcm.html#pcm">PCM (digital audio) interface</a> page for more details. <hr><h2>Define Documentation</h2>
<a name="a65" doxytag="pcm.h::SND_PCM_ASYNC"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define SND_PCM_ASYNC
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Async notification (flag for open mode)     </td>
  </tr>
</table>
<a name="a63" doxytag="pcm.h::SND_PCM_DLSYM_VERSION"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define SND_PCM_DLSYM_VERSION&nbsp;&nbsp;&nbsp;_dlsym_pcm_001
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
dlsym version for interface entry callback     </td>
  </tr>
</table>
<a name="a64" doxytag="pcm.h::SND_PCM_NONBLOCK"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> #define SND_PCM_NONBLOCK
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Non blocking mode (flag for open mode)     </td>
  </tr>
</table>
<hr><h2>Typedef Documentation</h2>
<a name="a4" doxytag="pcm.h::snd_pcm_access_mask_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef struct _snd_pcm_access_mask snd_pcm_access_mask_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM access types mask     </td>
  </tr>
</table>
<a name="a10" doxytag="pcm.h::snd_pcm_access_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef enum <a class="el" href="group___p_c_m.html#a69">_snd_pcm_access</a>  snd_pcm_access_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM access type     </td>
  </tr>
</table>
<a name="a22" doxytag="pcm.h::snd_pcm_channel_area_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef struct <a class="el" href="struct__snd__pcm__channel__area.html">_snd_pcm_channel_area</a>  snd_pcm_channel_area_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM area specification     </td>
  </tr>
</table>
<a name="a7" doxytag="pcm.h::snd_pcm_class_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef enum <a class="el" href="group___p_c_m.html#a66">_snd_pcm_class</a>  snd_pcm_class_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM class     </td>
  </tr>
</table>
<a name="a5" doxytag="pcm.h::snd_pcm_format_mask_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef struct _snd_pcm_format_mask snd_pcm_format_mask_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM formats mask     </td>
  </tr>
</table>
<a name="a11" doxytag="pcm.h::snd_pcm_format_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef enum <a class="el" href="group___p_c_m.html#a70">_snd_pcm_format</a>  snd_pcm_format_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM sample format     </td>
  </tr>
</table>
<a name="a1" doxytag="pcm.h::snd_pcm_hw_params_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef struct _snd_pcm_hw_params snd_pcm_hw_params_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM hardware configuration space container     </td>
  </tr>
</table>
<a name="a0" doxytag="pcm.h::snd_pcm_info_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef struct _snd_pcm_info snd_pcm_info_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM generic info container     </td>
  </tr>
</table>
<a name="a24" doxytag="pcm.h::snd_pcm_scope_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef struct _snd_pcm_scope snd_pcm_scope_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<a class="el" href="group___p_c_m.html#a76a141">SND_PCM_TYPE_METER</a> scope handle     </td>
  </tr>
</table>
<a name="a18" doxytag="pcm.h::snd_pcm_sframes_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef long snd_pcm_sframes_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Signed frames quantity     </td>
  </tr>
</table>
<a name="a14" doxytag="pcm.h::snd_pcm_start_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef enum <a class="el" href="group___p_c_m.html#a73">_snd_pcm_start</a>  snd_pcm_start_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM start mode     </td>
  </tr>
</table>
<a name="a13" doxytag="pcm.h::snd_pcm_state_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef enum <a class="el" href="group___p_c_m.html#a72">_snd_pcm_state</a>  snd_pcm_state_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM state     </td>
  </tr>
</table>
<a name="a3" doxytag="pcm.h::snd_pcm_status_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef struct _snd_pcm_status snd_pcm_status_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM status container     </td>
  </tr>
</table>
<a name="a9" doxytag="pcm.h::snd_pcm_stream_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef enum <a class="el" href="group___p_c_m.html#a68">_snd_pcm_stream</a>  snd_pcm_stream_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM stream (direction)     </td>
  </tr>
</table>
<a name="a8" doxytag="pcm.h::snd_pcm_subclass_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef enum <a class="el" href="group___p_c_m.html#a67">_snd_pcm_subclass</a>  snd_pcm_subclass_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM subclass     </td>
  </tr>
</table>
<a name="a6" doxytag="pcm.h::snd_pcm_subformat_mask_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef struct _snd_pcm_subformat_mask snd_pcm_subformat_mask_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM subformats mask     </td>
  </tr>
</table>
<a name="a12" doxytag="pcm.h::snd_pcm_subformat_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef enum <a class="el" href="group___p_c_m.html#a71">_snd_pcm_subformat</a>  snd_pcm_subformat_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM sample subformat     </td>
  </tr>
</table>
<a name="a2" doxytag="pcm.h::snd_pcm_sw_params_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef struct _snd_pcm_sw_params snd_pcm_sw_params_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM software configuration container     </td>
  </tr>
</table>
<a name="a23" doxytag="pcm.h::snd_pcm_sync_id_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef union <a class="el" href="union__snd__pcm__sync__id.html">_snd_pcm_sync_id</a>  snd_pcm_sync_id_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM synchronization ID     </td>
  </tr>
</table>
<a name="a20" doxytag="pcm.h::snd_pcm_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef struct _snd_pcm snd_pcm_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM handle     </td>
  </tr>
</table>
<a name="a16" doxytag="pcm.h::snd_pcm_tstamp_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef enum <a class="el" href="group___p_c_m.html#a75">_snd_pcm_tstamp</a>  snd_pcm_tstamp_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM timestamp mode     </td>
  </tr>
</table>
<a name="a21" doxytag="pcm.h::snd_pcm_type_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef enum <a class="el" href="group___p_c_m.html#a76">_snd_pcm_type</a> snd_pcm_type_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM type     </td>
  </tr>
</table>
<a name="a17" doxytag="pcm.h::snd_pcm_uframes_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef unsigned long snd_pcm_uframes_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Unsigned frames quantity     </td>
  </tr>
</table>
<a name="a15" doxytag="pcm.h::snd_pcm_xrun_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef enum <a class="el" href="group___p_c_m.html#a74">_snd_pcm_xrun</a>  snd_pcm_xrun_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM xrun mode     </td>
  </tr>
</table>
<a name="a19" doxytag="pcm.h::snd_timestamp_t"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> typedef struct timeval snd_timestamp_t
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Timestamp     </td>
  </tr>
</table>
<hr><h2>Enumeration Type Documentation</h2>
<a name="a69" doxytag="pcm.h::_snd_pcm_access"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum _snd_pcm_access
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM access type <dl compact><dt><b>Enumeration values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em><a name="a69a50" doxytag="SND_PCM_ACCESS_MMAP_INTERLEAVED"></a><em>SND_PCM_ACCESS_MMAP_INTERLEAVED</em></em>&nbsp;</td><td>
mmap access with simple interleaved channels </td></tr>
<tr><td valign=top><em><a name="a69a51" doxytag="SND_PCM_ACCESS_MMAP_NONINTERLEAVED"></a><em>SND_PCM_ACCESS_MMAP_NONINTERLEAVED</em></em>&nbsp;</td><td>
mmap access with simple non interleaved channels </td></tr>
<tr><td valign=top><em><a name="a69a52" doxytag="SND_PCM_ACCESS_MMAP_COMPLEX"></a><em>SND_PCM_ACCESS_MMAP_COMPLEX</em></em>&nbsp;</td><td>
mmap access with complex placement </td></tr>
<tr><td valign=top><em><a name="a69a53" doxytag="SND_PCM_ACCESS_RW_INTERLEAVED"></a><em>SND_PCM_ACCESS_RW_INTERLEAVED</em></em>&nbsp;</td><td>
snd_pcm_readi/snd_pcm_writei access </td></tr>
<tr><td valign=top><em><a name="a69a54" doxytag="SND_PCM_ACCESS_RW_NONINTERLEAVED"></a><em>SND_PCM_ACCESS_RW_NONINTERLEAVED</em></em>&nbsp;</td><td>
snd_pcm_readn/snd_pcm_writen access </td></tr>
</table>
</dl>
    </td>
  </tr>
</table>
<a name="a66" doxytag="pcm.h::_snd_pcm_class"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum _snd_pcm_class
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM class <dl compact><dt><b>Enumeration values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em><a name="a66a39" doxytag="SND_PCM_CLASS_GENERIC"></a><em>SND_PCM_CLASS_GENERIC</em></em>&nbsp;</td><td>
standard device </td></tr>
<tr><td valign=top><em><a name="a66a40" doxytag="SND_PCM_CLASS_MULTI"></a><em>SND_PCM_CLASS_MULTI</em></em>&nbsp;</td><td>
multichannel device </td></tr>
<tr><td valign=top><em><a name="a66a41" doxytag="SND_PCM_CLASS_MODEM"></a><em>SND_PCM_CLASS_MODEM</em></em>&nbsp;</td><td>
software modem device </td></tr>
<tr><td valign=top><em><a name="a66a42" doxytag="SND_PCM_CLASS_DIGITIZER"></a><em>SND_PCM_CLASS_DIGITIZER</em></em>&nbsp;</td><td>
digitizer device </td></tr>
</table>
</dl>
    </td>
  </tr>
</table>
<a name="a70" doxytag="pcm.h::_snd_pcm_format"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum _snd_pcm_format
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM sample format <dl compact><dt><b>Enumeration values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em><a name="a70a56" doxytag="SND_PCM_FORMAT_UNKNOWN"></a><em>SND_PCM_FORMAT_UNKNOWN</em></em>&nbsp;</td><td>
Unknown </td></tr>
<tr><td valign=top><em><a name="a70a57" doxytag="SND_PCM_FORMAT_S8"></a><em>SND_PCM_FORMAT_S8</em></em>&nbsp;</td><td>
Signed 8 bit </td></tr>
<tr><td valign=top><em><a name="a70a58" doxytag="SND_PCM_FORMAT_U8"></a><em>SND_PCM_FORMAT_U8</em></em>&nbsp;</td><td>
Unsigned 8 bit </td></tr>
<tr><td valign=top><em><a name="a70a59" doxytag="SND_PCM_FORMAT_S16_LE"></a><em>SND_PCM_FORMAT_S16_LE</em></em>&nbsp;</td><td>
Signed 16 bit Little Endian </td></tr>
<tr><td valign=top><em><a name="a70a60" doxytag="SND_PCM_FORMAT_S16_BE"></a><em>SND_PCM_FORMAT_S16_BE</em></em>&nbsp;</td><td>
Signed 16 bit Big Endian </td></tr>
<tr><td valign=top><em><a name="a70a61" doxytag="SND_PCM_FORMAT_U16_LE"></a><em>SND_PCM_FORMAT_U16_LE</em></em>&nbsp;</td><td>
Unsigned 16 bit Little Endian </td></tr>
<tr><td valign=top><em><a name="a70a62" doxytag="SND_PCM_FORMAT_U16_BE"></a><em>SND_PCM_FORMAT_U16_BE</em></em>&nbsp;</td><td>
Unsigned 16 bit Big Endian </td></tr>
<tr><td valign=top><em><a name="a70a63" doxytag="SND_PCM_FORMAT_S24_LE"></a><em>SND_PCM_FORMAT_S24_LE</em></em>&nbsp;</td><td>
Signed 24 bit Little Endian </td></tr>
<tr><td valign=top><em><a name="a70a64" doxytag="SND_PCM_FORMAT_S24_BE"></a><em>SND_PCM_FORMAT_S24_BE</em></em>&nbsp;</td><td>
Signed 24 bit Big Endian </td></tr>
<tr><td valign=top><em><a name="a70a65" doxytag="SND_PCM_FORMAT_U24_LE"></a><em>SND_PCM_FORMAT_U24_LE</em></em>&nbsp;</td><td>
Unsigned 24 bit Little Endian </td></tr>
<tr><td valign=top><em><a name="a70a66" doxytag="SND_PCM_FORMAT_U24_BE"></a><em>SND_PCM_FORMAT_U24_BE</em></em>&nbsp;</td><td>
Unsigned 24 bit Big Endian </td></tr>
<tr><td valign=top><em><a name="a70a67" doxytag="SND_PCM_FORMAT_S32_LE"></a><em>SND_PCM_FORMAT_S32_LE</em></em>&nbsp;</td><td>
Signed 32 bit Little Endian </td></tr>
<tr><td valign=top><em><a name="a70a68" doxytag="SND_PCM_FORMAT_S32_BE"></a><em>SND_PCM_FORMAT_S32_BE</em></em>&nbsp;</td><td>
Signed 32 bit Big Endian </td></tr>
<tr><td valign=top><em><a name="a70a69" doxytag="SND_PCM_FORMAT_U32_LE"></a><em>SND_PCM_FORMAT_U32_LE</em></em>&nbsp;</td><td>
Unsigned 32 bit Little Endian </td></tr>
<tr><td valign=top><em><a name="a70a70" doxytag="SND_PCM_FORMAT_U32_BE"></a><em>SND_PCM_FORMAT_U32_BE</em></em>&nbsp;</td><td>
Unsigned 32 bit Big Endian </td></tr>
<tr><td valign=top><em><a name="a70a71" doxytag="SND_PCM_FORMAT_FLOAT_LE"></a><em>SND_PCM_FORMAT_FLOAT_LE</em></em>&nbsp;</td><td>
Float 32 bit Little Endian, Range -1.0 to 1.0 </td></tr>
<tr><td valign=top><em><a name="a70a72" doxytag="SND_PCM_FORMAT_FLOAT_BE"></a><em>SND_PCM_FORMAT_FLOAT_BE</em></em>&nbsp;</td><td>
Float 32 bit Big Endian, Range -1.0 to 1.0 </td></tr>
<tr><td valign=top><em><a name="a70a73" doxytag="SND_PCM_FORMAT_FLOAT64_LE"></a><em>SND_PCM_FORMAT_FLOAT64_LE</em></em>&nbsp;</td><td>
Float 64 bit Little Endian, Range -1.0 to 1.0 </td></tr>
<tr><td valign=top><em><a name="a70a74" doxytag="SND_PCM_FORMAT_FLOAT64_BE"></a><em>SND_PCM_FORMAT_FLOAT64_BE</em></em>&nbsp;</td><td>
Float 64 bit Big Endian, Range -1.0 to 1.0 </td></tr>
<tr><td valign=top><em><a name="a70a75" doxytag="SND_PCM_FORMAT_IEC958_SUBFRAME_LE"></a><em>SND_PCM_FORMAT_IEC958_SUBFRAME_LE</em></em>&nbsp;</td><td>
IEC-958 Little Endian </td></tr>
<tr><td valign=top><em><a name="a70a76" doxytag="SND_PCM_FORMAT_IEC958_SUBFRAME_BE"></a><em>SND_PCM_FORMAT_IEC958_SUBFRAME_BE</em></em>&nbsp;</td><td>
IEC-958 Big Endian </td></tr>
<tr><td valign=top><em><a name="a70a77" doxytag="SND_PCM_FORMAT_MU_LAW"></a><em>SND_PCM_FORMAT_MU_LAW</em></em>&nbsp;</td><td>
Mu-Law </td></tr>
<tr><td valign=top><em><a name="a70a78" doxytag="SND_PCM_FORMAT_A_LAW"></a><em>SND_PCM_FORMAT_A_LAW</em></em>&nbsp;</td><td>
A-Law </td></tr>
<tr><td valign=top><em><a name="a70a79" doxytag="SND_PCM_FORMAT_IMA_ADPCM"></a><em>SND_PCM_FORMAT_IMA_ADPCM</em></em>&nbsp;</td><td>
Ima-ADPCM </td></tr>
<tr><td valign=top><em><a name="a70a80" doxytag="SND_PCM_FORMAT_MPEG"></a><em>SND_PCM_FORMAT_MPEG</em></em>&nbsp;</td><td>
MPEG </td></tr>
<tr><td valign=top><em><a name="a70a81" doxytag="SND_PCM_FORMAT_GSM"></a><em>SND_PCM_FORMAT_GSM</em></em>&nbsp;</td><td>
GSM </td></tr>
<tr><td valign=top><em><a name="a70a82" doxytag="SND_PCM_FORMAT_SPECIAL"></a><em>SND_PCM_FORMAT_SPECIAL</em></em>&nbsp;</td><td>
Special </td></tr>
<tr><td valign=top><em><a name="a70a83" doxytag="SND_PCM_FORMAT_S24_3LE"></a><em>SND_PCM_FORMAT_S24_3LE</em></em>&nbsp;</td><td>
Signed 24bit Little Endian in 3bytes format </td></tr>
<tr><td valign=top><em><a name="a70a84" doxytag="SND_PCM_FORMAT_S24_3BE"></a><em>SND_PCM_FORMAT_S24_3BE</em></em>&nbsp;</td><td>
Signed 24bit Big Endian in 3bytes format </td></tr>
<tr><td valign=top><em><a name="a70a85" doxytag="SND_PCM_FORMAT_U24_3LE"></a><em>SND_PCM_FORMAT_U24_3LE</em></em>&nbsp;</td><td>
Unsigned 24bit Little Endian in 3bytes format </td></tr>
<tr><td valign=top><em><a name="a70a86" doxytag="SND_PCM_FORMAT_U24_3BE"></a><em>SND_PCM_FORMAT_U24_3BE</em></em>&nbsp;</td><td>
Unsigned 24bit Big Endian in 3bytes format </td></tr>
<tr><td valign=top><em><a name="a70a87" doxytag="SND_PCM_FORMAT_S20_3LE"></a><em>SND_PCM_FORMAT_S20_3LE</em></em>&nbsp;</td><td>
Signed 20bit Little Endian in 3bytes format </td></tr>
<tr><td valign=top><em><a name="a70a88" doxytag="SND_PCM_FORMAT_S20_3BE"></a><em>SND_PCM_FORMAT_S20_3BE</em></em>&nbsp;</td><td>
Signed 20bit Big Endian in 3bytes format </td></tr>
<tr><td valign=top><em><a name="a70a89" doxytag="SND_PCM_FORMAT_U20_3LE"></a><em>SND_PCM_FORMAT_U20_3LE</em></em>&nbsp;</td><td>
Unsigned 20bit Little Endian in 3bytes format </td></tr>
<tr><td valign=top><em><a name="a70a90" doxytag="SND_PCM_FORMAT_U20_3BE"></a><em>SND_PCM_FORMAT_U20_3BE</em></em>&nbsp;</td><td>
Unsigned 20bit Big Endian in 3bytes format </td></tr>
<tr><td valign=top><em><a name="a70a91" doxytag="SND_PCM_FORMAT_S18_3LE"></a><em>SND_PCM_FORMAT_S18_3LE</em></em>&nbsp;</td><td>
Signed 18bit Little Endian in 3bytes format </td></tr>
<tr><td valign=top><em><a name="a70a92" doxytag="SND_PCM_FORMAT_S18_3BE"></a><em>SND_PCM_FORMAT_S18_3BE</em></em>&nbsp;</td><td>
Signed 18bit Big Endian in 3bytes format </td></tr>
<tr><td valign=top><em><a name="a70a93" doxytag="SND_PCM_FORMAT_U18_3LE"></a><em>SND_PCM_FORMAT_U18_3LE</em></em>&nbsp;</td><td>
Unsigned 18bit Little Endian in 3bytes format </td></tr>
<tr><td valign=top><em><a name="a70a94" doxytag="SND_PCM_FORMAT_U18_3BE"></a><em>SND_PCM_FORMAT_U18_3BE</em></em>&nbsp;</td><td>
Unsigned 18bit Big Endian in 3bytes format </td></tr>
<tr><td valign=top><em><a name="a70a96" doxytag="SND_PCM_FORMAT_S16"></a><em>SND_PCM_FORMAT_S16</em></em>&nbsp;</td><td>
Signed 16 bit CPU endian </td></tr>
<tr><td valign=top><em><a name="a70a97" doxytag="SND_PCM_FORMAT_U16"></a><em>SND_PCM_FORMAT_U16</em></em>&nbsp;</td><td>
Unsigned 16 bit CPU endian </td></tr>
<tr><td valign=top><em><a name="a70a98" doxytag="SND_PCM_FORMAT_S24"></a><em>SND_PCM_FORMAT_S24</em></em>&nbsp;</td><td>
Signed 24 bit CPU endian </td></tr>
<tr><td valign=top><em><a name="a70a99" doxytag="SND_PCM_FORMAT_U24"></a><em>SND_PCM_FORMAT_U24</em></em>&nbsp;</td><td>
Unsigned 24 bit CPU endian </td></tr>
<tr><td valign=top><em><a name="a70a100" doxytag="SND_PCM_FORMAT_S32"></a><em>SND_PCM_FORMAT_S32</em></em>&nbsp;</td><td>
Signed 32 bit CPU endian </td></tr>
<tr><td valign=top><em><a name="a70a101" doxytag="SND_PCM_FORMAT_U32"></a><em>SND_PCM_FORMAT_U32</em></em>&nbsp;</td><td>
Unsigned 32 bit CPU endian </td></tr>
<tr><td valign=top><em><a name="a70a102" doxytag="SND_PCM_FORMAT_FLOAT"></a><em>SND_PCM_FORMAT_FLOAT</em></em>&nbsp;</td><td>
Float 32 bit CPU endian </td></tr>
<tr><td valign=top><em><a name="a70a103" doxytag="SND_PCM_FORMAT_FLOAT64"></a><em>SND_PCM_FORMAT_FLOAT64</em></em>&nbsp;</td><td>
Float 64 bit CPU endian </td></tr>
<tr><td valign=top><em><a name="a70a104" doxytag="SND_PCM_FORMAT_IEC958_SUBFRAME"></a><em>SND_PCM_FORMAT_IEC958_SUBFRAME</em></em>&nbsp;</td><td>
IEC-958 CPU Endian </td></tr>
</table>
</dl>
    </td>
  </tr>
</table>
<a name="a73" doxytag="pcm.h::_snd_pcm_start"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum _snd_pcm_start
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM start mode <dl compact><dt><b>Enumeration values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em><a name="a73a116" doxytag="SND_PCM_START_DATA"></a><em>SND_PCM_START_DATA</em></em>&nbsp;</td><td>
Automatic start on data read/write </td></tr>
<tr><td valign=top><em><a name="a73a117" doxytag="SND_PCM_START_EXPLICIT"></a><em>SND_PCM_START_EXPLICIT</em></em>&nbsp;</td><td>
Explicit start </td></tr>
</table>
</dl>
    </td>
  </tr>
</table>
<a name="a72" doxytag="pcm.h::_snd_pcm_state"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum _snd_pcm_state
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM state <dl compact><dt><b>Enumeration values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em><a name="a72a107" doxytag="SND_PCM_STATE_OPEN"></a><em>SND_PCM_STATE_OPEN</em></em>&nbsp;</td><td>
Open </td></tr>
<tr><td valign=top><em><a name="a72a108" doxytag="SND_PCM_STATE_SETUP"></a><em>SND_PCM_STATE_SETUP</em></em>&nbsp;</td><td>
Setup installed </td></tr>
<tr><td valign=top><em><a name="a72a109" doxytag="SND_PCM_STATE_PREPARED"></a><em>SND_PCM_STATE_PREPARED</em></em>&nbsp;</td><td>
Ready to start </td></tr>
<tr><td valign=top><em><a name="a72a110" doxytag="SND_PCM_STATE_RUNNING"></a><em>SND_PCM_STATE_RUNNING</em></em>&nbsp;</td><td>
Running </td></tr>
<tr><td valign=top><em><a name="a72a111" doxytag="SND_PCM_STATE_XRUN"></a><em>SND_PCM_STATE_XRUN</em></em>&nbsp;</td><td>
Stopped: underrun (playback) or overrun (capture) detected </td></tr>
<tr><td valign=top><em><a name="a72a112" doxytag="SND_PCM_STATE_DRAINING"></a><em>SND_PCM_STATE_DRAINING</em></em>&nbsp;</td><td>
Draining: running (playback) or stopped (capture) </td></tr>
<tr><td valign=top><em><a name="a72a113" doxytag="SND_PCM_STATE_PAUSED"></a><em>SND_PCM_STATE_PAUSED</em></em>&nbsp;</td><td>
Paused </td></tr>
<tr><td valign=top><em><a name="a72a114" doxytag="SND_PCM_STATE_SUSPENDED"></a><em>SND_PCM_STATE_SUSPENDED</em></em>&nbsp;</td><td>
Hardware is suspended </td></tr>
</table>
</dl>
    </td>
  </tr>
</table>
<a name="a68" doxytag="pcm.h::_snd_pcm_stream"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum _snd_pcm_stream
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM stream (direction) <dl compact><dt><b>Enumeration values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em><a name="a68a47" doxytag="SND_PCM_STREAM_PLAYBACK"></a><em>SND_PCM_STREAM_PLAYBACK</em></em>&nbsp;</td><td>
Playback stream </td></tr>
<tr><td valign=top><em><a name="a68a48" doxytag="SND_PCM_STREAM_CAPTURE"></a><em>SND_PCM_STREAM_CAPTURE</em></em>&nbsp;</td><td>
Capture stream </td></tr>
</table>
</dl>
    </td>
  </tr>
</table>
<a name="a67" doxytag="pcm.h::_snd_pcm_subclass"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum _snd_pcm_subclass
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM subclass <dl compact><dt><b>Enumeration values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em><a name="a67a44" doxytag="SND_PCM_SUBCLASS_GENERIC_MIX"></a><em>SND_PCM_SUBCLASS_GENERIC_MIX</em></em>&nbsp;</td><td>
subdevices are mixed together </td></tr>
<tr><td valign=top><em><a name="a67a45" doxytag="SND_PCM_SUBCLASS_MULTI_MIX"></a><em>SND_PCM_SUBCLASS_MULTI_MIX</em></em>&nbsp;</td><td>
multichannel subdevices are mixed together </td></tr>
</table>
</dl>
    </td>
  </tr>
</table>
<a name="a71" doxytag="pcm.h::_snd_pcm_subformat"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum _snd_pcm_subformat
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM sample subformat <dl compact><dt><b>Enumeration values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em><a name="a71a105" doxytag="SND_PCM_SUBFORMAT_STD"></a><em>SND_PCM_SUBFORMAT_STD</em></em>&nbsp;</td><td>
Standard </td></tr>
</table>
</dl>
    </td>
  </tr>
</table>
<a name="a75" doxytag="pcm.h::_snd_pcm_tstamp"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum _snd_pcm_tstamp
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM timestamp mode <dl compact><dt><b>Enumeration values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em><a name="a75a122" doxytag="SND_PCM_TSTAMP_NONE"></a><em>SND_PCM_TSTAMP_NONE</em></em>&nbsp;</td><td>
No timestamp </td></tr>
<tr><td valign=top><em><a name="a75a123" doxytag="SND_PCM_TSTAMP_MMAP"></a><em>SND_PCM_TSTAMP_MMAP</em></em>&nbsp;</td><td>
Update mmap'ed timestamp </td></tr>
</table>
</dl>
    </td>
  </tr>
</table>
<a name="a76" doxytag="pcm.h::_snd_pcm_type"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum _snd_pcm_type
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM type <dl compact><dt><b>Enumeration values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em><a name="a76a125" doxytag="SND_PCM_TYPE_HW"></a><em>SND_PCM_TYPE_HW</em></em>&nbsp;</td><td>
Kernel level PCM </td></tr>
<tr><td valign=top><em><a name="a76a126" doxytag="SND_PCM_TYPE_HOOKS"></a><em>SND_PCM_TYPE_HOOKS</em></em>&nbsp;</td><td>
Hooked PCM </td></tr>
<tr><td valign=top><em><a name="a76a127" doxytag="SND_PCM_TYPE_MULTI"></a><em>SND_PCM_TYPE_MULTI</em></em>&nbsp;</td><td>
One ore more linked PCM with exclusive access to selected channels </td></tr>
<tr><td valign=top><em><a name="a76a128" doxytag="SND_PCM_TYPE_FILE"></a><em>SND_PCM_TYPE_FILE</em></em>&nbsp;</td><td>
File writing plugin </td></tr>
<tr><td valign=top><em><a name="a76a129" doxytag="SND_PCM_TYPE_NULL"></a><em>SND_PCM_TYPE_NULL</em></em>&nbsp;</td><td>
Null endpoint PCM </td></tr>
<tr><td valign=top><em><a name="a76a130" doxytag="SND_PCM_TYPE_SHM"></a><em>SND_PCM_TYPE_SHM</em></em>&nbsp;</td><td>
Shared memory client PCM </td></tr>
<tr><td valign=top><em><a name="a76a131" doxytag="SND_PCM_TYPE_INET"></a><em>SND_PCM_TYPE_INET</em></em>&nbsp;</td><td>
INET client PCM (not yet implemented) </td></tr>
<tr><td valign=top><em><a name="a76a132" doxytag="SND_PCM_TYPE_COPY"></a><em>SND_PCM_TYPE_COPY</em></em>&nbsp;</td><td>
Copying plugin </td></tr>
<tr><td valign=top><em><a name="a76a133" doxytag="SND_PCM_TYPE_LINEAR"></a><em>SND_PCM_TYPE_LINEAR</em></em>&nbsp;</td><td>
Linear format conversion PCM </td></tr>
<tr><td valign=top><em><a name="a76a134" doxytag="SND_PCM_TYPE_ALAW"></a><em>SND_PCM_TYPE_ALAW</em></em>&nbsp;</td><td>
A-Law format conversion PCM </td></tr>
<tr><td valign=top><em><a name="a76a135" doxytag="SND_PCM_TYPE_MULAW"></a><em>SND_PCM_TYPE_MULAW</em></em>&nbsp;</td><td>
Mu-Law format conversion PCM </td></tr>
<tr><td valign=top><em><a name="a76a136" doxytag="SND_PCM_TYPE_ADPCM"></a><em>SND_PCM_TYPE_ADPCM</em></em>&nbsp;</td><td>
IMA-ADPCM format conversion PCM </td></tr>
<tr><td valign=top><em><a name="a76a137" doxytag="SND_PCM_TYPE_RATE"></a><em>SND_PCM_TYPE_RATE</em></em>&nbsp;</td><td>
Rate conversion PCM </td></tr>
<tr><td valign=top><em><a name="a76a138" doxytag="SND_PCM_TYPE_ROUTE"></a><em>SND_PCM_TYPE_ROUTE</em></em>&nbsp;</td><td>
Attenuated static route PCM </td></tr>
<tr><td valign=top><em><a name="a76a139" doxytag="SND_PCM_TYPE_PLUG"></a><em>SND_PCM_TYPE_PLUG</em></em>&nbsp;</td><td>
Format adjusted PCM </td></tr>
<tr><td valign=top><em><a name="a76a140" doxytag="SND_PCM_TYPE_SHARE"></a><em>SND_PCM_TYPE_SHARE</em></em>&nbsp;</td><td>
Sharing PCM </td></tr>
<tr><td valign=top><em><a name="a76a141" doxytag="SND_PCM_TYPE_METER"></a><em>SND_PCM_TYPE_METER</em></em>&nbsp;</td><td>
Meter plugin </td></tr>
<tr><td valign=top><em><a name="a76a142" doxytag="SND_PCM_TYPE_MIX"></a><em>SND_PCM_TYPE_MIX</em></em>&nbsp;</td><td>
Mixing PCM </td></tr>
<tr><td valign=top><em><a name="a76a143" doxytag="SND_PCM_TYPE_DROUTE"></a><em>SND_PCM_TYPE_DROUTE</em></em>&nbsp;</td><td>
Attenuated dynamic route PCM (not yet implemented) </td></tr>
<tr><td valign=top><em><a name="a76a144" doxytag="SND_PCM_TYPE_LBSERVER"></a><em>SND_PCM_TYPE_LBSERVER</em></em>&nbsp;</td><td>
Loopback server plugin (not yet implemented) </td></tr>
<tr><td valign=top><em><a name="a76a145" doxytag="SND_PCM_TYPE_LINEAR_FLOAT"></a><em>SND_PCM_TYPE_LINEAR_FLOAT</em></em>&nbsp;</td><td>
Linear Integer &lt;-&gt; Linear Float format conversion PCM </td></tr>
<tr><td valign=top><em><a name="a76a146" doxytag="SND_PCM_TYPE_LADSPA"></a><em>SND_PCM_TYPE_LADSPA</em></em>&nbsp;</td><td>
LADSPA integration plugin </td></tr>
</table>
</dl>
    </td>
  </tr>
</table>
<a name="a74" doxytag="pcm.h::_snd_pcm_xrun"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> enum _snd_pcm_xrun
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
PCM xrun mode <dl compact><dt><b>Enumeration values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em><a name="a74a119" doxytag="SND_PCM_XRUN_NONE"></a><em>SND_PCM_XRUN_NONE</em></em>&nbsp;</td><td>
Xrun detection disabled </td></tr>
<tr><td valign=top><em><a name="a74a120" doxytag="SND_PCM_XRUN_STOP"></a><em>SND_PCM_XRUN_STOP</em></em>&nbsp;</td><td>
Stop on xrun detection </td></tr>
</table>
</dl>
    </td>
  </tr>
</table>
<hr><h2>Function Documentation</h2>
<a name="a35" doxytag="pcm.h::snd_async_add_pcm_handler"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_async_add_pcm_handler </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___global.html#a0">snd_async_handler_t</a> **&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>handler</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___global.html#a1">snd_async_callback_t</a>&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>callback</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>void *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>private_data</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Add an async handler for a PCM.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>handler</em>&nbsp;</td><td>
Returned handler handle </td></tr>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>callback</em>&nbsp;</td><td>
Callback function </td></tr>
<tr><td valign=top><em>private_data</em>&nbsp;</td><td>
Callback private data </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 otherwise a negative error code on failure</dl>The asynchronous callback is called when period boundary elapses. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a30">/test/pcm.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a36" doxytag="pcm.h::snd_async_handler_get_pcm"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a>* snd_async_handler_get_pcm </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___global.html#a0">snd_async_handler_t</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>handler</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Return PCM handle related to an async handler.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>handler</em>&nbsp;</td><td>
Async handler handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
PCM handle </dl><dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a27">/test/pcm.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a54" doxytag="pcm.h::snd_pcm_avail_update"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="group___p_c_m.html#a18">snd_pcm_sframes_t</a> snd_pcm_avail_update </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>pcm</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Return number of frames ready to be read/written.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
a positive number of frames ready otherwise a negative error code</dl>On capture does all the actions needed to transport to application level all the ready frames across underlying layers. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a29">/test/pcm.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a27" doxytag="pcm.h::snd_pcm_close"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_close </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>pcm</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
close PCM handle
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code</dl>Closes the specified PCM handle and frees all associated resources. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a44">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a42">/test/pcm.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a52" doxytag="pcm.h::snd_pcm_delay"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_delay </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___p_c_m.html#a18">snd_pcm_sframes_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>delayp</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Obtain delay for a running PCM handle.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>delayp</em>&nbsp;</td><td>
Returned delay in frames </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code</dl>Delay is distance between current application frame position and sound frame position. It's positive and less than buffer size in normal situation, negative on playback underrun and greater than buffer size on capture overrun.
<p>
Note this function does not update the actual r/w pointer for applications. The function <a class="el" href="group___p_c_m.html#a54">snd_pcm_avail_update</a> have to be called before any read/write/begin+commit operation.     </td>
  </tr>
</table>
<a name="a48" doxytag="pcm.h::snd_pcm_drain"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_drain </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>pcm</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Stop a PCM preserving pending frames.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code </dl><dl compact><dt><b>Return values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>-ESTRPIPE</em>&nbsp;</td><td>
a suspend event occurred</td></tr>
</table>
</dl>For playback wait for all pending frames to be played and then stop the PCM. For capture stop PCM permitting to retrieve residual frames. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a41">/test/latency.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a47" doxytag="pcm.h::snd_pcm_drop"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_drop </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>pcm</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Stop a PCM dropping pending frames.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code </dl><dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a39">/test/latency.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a40" doxytag="pcm.h::snd_pcm_hw_free"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_hw_free </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>pcm</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Remove PCM hardware configuration and free associated resources.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code </dl><dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a43">/test/latency.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a39" doxytag="pcm.h::snd_pcm_hw_params"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_hw_params </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___p_c_m.html#a1">snd_pcm_hw_params_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>params</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Install one PCM hardware configuration chosen from a configuration space and <a class="el" href="group___p_c_m.html#a43">snd_pcm_prepare</a> it.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>params</em>&nbsp;</td><td>
Configuration space definition container </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code</dl>The configuration is chosen fixing single parameters in this order: first access, first format, first subformat, min channels, min rate,  min period time, max buffer size, min tick time <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a9">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a14">/test/pcm.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a38" doxytag="pcm.h::snd_pcm_hw_params_current"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_hw_params_current </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___p_c_m.html#a1">snd_pcm_hw_params_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>params</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Retreive current PCM hardware configuration chosen with <a class="el" href="group___p_c_m.html#a39">snd_pcm_hw_params</a>.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>params</em>&nbsp;</td><td>
Configuration space definition container </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code </dl>    </td>
  </tr>
</table>
<a name="a51" doxytag="pcm.h::snd_pcm_hwsync"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_hwsync </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>pcm</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Synchronize stream position with hardware.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code</dl>Note this function does not update the actual r/w pointer for applications. The function <a class="el" href="group___p_c_m.html#a54">snd_pcm_avail_update</a> have to be called before any read/write/begin+commit operation.     </td>
  </tr>
</table>
<a name="a37" doxytag="pcm.h::snd_pcm_info"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_info </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___p_c_m.html#a0">snd_pcm_info_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>info</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Obtain general (static) information for PCM handle.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>info</em>&nbsp;</td><td>
Information container </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code </dl>    </td>
  </tr>
</table>
<a name="a61" doxytag="pcm.h::snd_pcm_link"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_link </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm1</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm2</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Link two PCMs.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm1</em>&nbsp;</td><td>
first PCM handle </td></tr>
<tr><td valign=top><em>pcm2</em>&nbsp;</td><td>
first PCM handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code</dl>The two PCMs will start/stop/prepare in sync. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a35">/test/latency.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a28" doxytag="pcm.h::snd_pcm_name"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> const char* snd_pcm_name </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>pcm</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
get identifier of PCM handle
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
ascii identifier of PCM handle</dl>Returns the ASCII identifier of given PCM handle. It's the same identifier specified in <a class="el" href="group___p_c_m.html#a25">snd_pcm_open()</a>.     </td>
  </tr>
</table>
<a name="a34" doxytag="pcm.h::snd_pcm_nonblock"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_nonblock </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>nonblock</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
set nonblock mode
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>nonblock</em>&nbsp;</td><td>
0 = block, 1 = nonblock mode </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code </dl><dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a40">/test/latency.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a25" doxytag="pcm.h::snd_pcm_open"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_open </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> **&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcmp</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>name</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___p_c_m.html#a9">snd_pcm_stream_t</a>&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>stream</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>mode</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Opens a PCM.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcmp</em>&nbsp;</td><td>
Returned PCM handle </td></tr>
<tr><td valign=top><em>name</em>&nbsp;</td><td>
ASCII identifier of the PCM handle </td></tr>
<tr><td valign=top><em>stream</em>&nbsp;</td><td>
Wanted stream </td></tr>
<tr><td valign=top><em>mode</em>&nbsp;</td><td>
Open mode (see <a class="el" href="group___p_c_m.html#a64">SND_PCM_NONBLOCK</a>, <a class="el" href="group___p_c_m.html#a65">SND_PCM_ASYNC</a>) </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code </dl><dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a34">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a40">/test/pcm.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a26" doxytag="pcm.h::snd_pcm_open_lconf"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_open_lconf </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> **&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcmp</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const char *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>name</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___p_c_m.html#a9">snd_pcm_stream_t</a>&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>stream</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>mode</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___config.html#a1">snd_config_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>lconf</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Opens a PCM using local configuration.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcmp</em>&nbsp;</td><td>
Returned PCM handle </td></tr>
<tr><td valign=top><em>name</em>&nbsp;</td><td>
ASCII identifier of the PCM handle </td></tr>
<tr><td valign=top><em>stream</em>&nbsp;</td><td>
Wanted stream </td></tr>
<tr><td valign=top><em>mode</em>&nbsp;</td><td>
Open mode (see <a class="el" href="group___p_c_m.html#a64">SND_PCM_NONBLOCK</a>, <a class="el" href="group___p_c_m.html#a65">SND_PCM_ASYNC</a>) </td></tr>
<tr><td valign=top><em>lconf</em>&nbsp;</td><td>
Local configuration </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code </dl>    </td>
  </tr>
</table>
<a name="a49" doxytag="pcm.h::snd_pcm_pause"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_pause </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>enable</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Pause/resume PCM.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>pause</em>&nbsp;</td><td>
0 = resume, 1 = pause </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code </dl>    </td>
  </tr>
</table>
<a name="a32" doxytag="pcm.h::snd_pcm_poll_descriptors"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_poll_descriptors </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>struct pollfd *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pfds</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>unsigned int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>space</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
get poll descriptors
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>pfds</em>&nbsp;</td><td>
array of poll descriptors </td></tr>
<tr><td valign=top><em>space</em>&nbsp;</td><td>
space in the poll descriptor array </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
count of filled descriptors </dl><dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a25">/test/pcm.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a31" doxytag="pcm.h::snd_pcm_poll_descriptors_count"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_poll_descriptors_count </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>pcm</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
get count of poll descriptors for PCM handle
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
count of poll descriptors </dl><dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a24">/test/pcm.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a33" doxytag="pcm.h::snd_pcm_poll_descriptors_revents"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_poll_descriptors_revents </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>struct pollfd *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pfds</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>unsigned int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>nfds</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>unsigned short *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>revents</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
get returned events from poll descriptors
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>pfds</em>&nbsp;</td><td>
array of poll descriptors </td></tr>
<tr><td valign=top><em>nfds</em>&nbsp;</td><td>
count of poll descriptors </td></tr>
<tr><td valign=top><em>revents</em>&nbsp;</td><td>
returned events </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
zero if success, otherwise a negative error code </dl><dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a23">/test/pcm.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a43" doxytag="pcm.h::snd_pcm_prepare"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_prepare </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>pcm</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Prepare PCM for use.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code </dl><dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a22">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a20">/test/pcm.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a57" doxytag="pcm.h::snd_pcm_readi"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="group___p_c_m.html#a18">snd_pcm_sframes_t</a> snd_pcm_readi </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>void *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>buffer</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___p_c_m.html#a17">snd_pcm_uframes_t</a>&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>size</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Read interleaved frames from a PCM.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>buffer</em>&nbsp;</td><td>
frames containing buffer </td></tr>
<tr><td valign=top><em>size</em>&nbsp;</td><td>
frames to be written </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
a positive number of frames actually read otherwise a negative error code </dl><dl compact><dt><b>Return values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>-EBADFD</em>&nbsp;</td><td>
PCM is not in the right state (<a class="el" href="group___p_c_m.html#a72a109">SND_PCM_STATE_PREPARED</a> or <a class="el" href="group___p_c_m.html#a72a110">SND_PCM_STATE_RUNNING</a>) </td></tr>
<tr><td valign=top><em>-EPIPE</em>&nbsp;</td><td>
an overrun occurred </td></tr>
<tr><td valign=top><em>-ESTRPIPE</em>&nbsp;</td><td>
a suspend event occurred (stream is suspended and waiting for an application recovery)</td></tr>
</table>
</dl>If the blocking behaviour was selected, then routine waits until all requested bytes are filled. The count of bytes can be less only if a signal or underrun occurred.
<p>
If the non-blocking behaviour is selected, then routine doesn't wait at all. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a28">/test/latency.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a59" doxytag="pcm.h::snd_pcm_readn"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="group___p_c_m.html#a18">snd_pcm_sframes_t</a> snd_pcm_readn </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>void **&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>bufs</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___p_c_m.html#a17">snd_pcm_uframes_t</a>&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>size</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Read non interleaved frames to a PCM.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>bufs</em>&nbsp;</td><td>
frames containing buffers (one for each channel) </td></tr>
<tr><td valign=top><em>size</em>&nbsp;</td><td>
frames to be written </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
a positive number of frames actually read otherwise a negative error code </dl><dl compact><dt><b>Return values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>-EBADFD</em>&nbsp;</td><td>
PCM is not in the right state (<a class="el" href="group___p_c_m.html#a72a109">SND_PCM_STATE_PREPARED</a> or <a class="el" href="group___p_c_m.html#a72a110">SND_PCM_STATE_RUNNING</a>) </td></tr>
<tr><td valign=top><em>-EPIPE</em>&nbsp;</td><td>
an overrun occurred </td></tr>
<tr><td valign=top><em>-ESTRPIPE</em>&nbsp;</td><td>
a suspend event occurred (stream is suspended and waiting for an application recovery)</td></tr>
</table>
</dl>If the blocking behaviour was selected, then routine waits until all requested bytes are filled. The count of bytes can be less only if a signal or underrun occurred.
<p>
If the non-blocking behaviour is selected, then routine doesn't wait at all.     </td>
  </tr>
</table>
<a name="a44" doxytag="pcm.h::snd_pcm_reset"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_reset </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>pcm</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Reset PCM position.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code</dl>Reduce PCM delay to 0.     </td>
  </tr>
</table>
<a name="a53" doxytag="pcm.h::snd_pcm_resume"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_resume </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>pcm</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Resume from suspend, no samples are lost.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code </dl><dl compact><dt><b>Return values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>-EAGAIN</em>&nbsp;</td><td>
resume can't be proceed immediately (audio hardware is probably still suspended) </td></tr>
<tr><td valign=top><em>-ENOSYS</em>&nbsp;</td><td>
hardware doesn't support this feature</td></tr>
</table>
</dl>This function can be used when the stream is in the suspend state to do the fine resume from this state. Not all hardware supports this feature, when an -ENOSYS error is returned, use the snd_pcm_prepare function to recovery. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a21">/test/pcm.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a55" doxytag="pcm.h::snd_pcm_rewind"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="group___p_c_m.html#a18">snd_pcm_sframes_t</a> snd_pcm_rewind </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___p_c_m.html#a17">snd_pcm_uframes_t</a>&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>frames</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Move application frame position backward.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>frames</em>&nbsp;</td><td>
wanted displacement in frames </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
a positive number for actual displacement otherwise a negative error code </dl>    </td>
  </tr>
</table>
<a name="a46" doxytag="pcm.h::snd_pcm_start"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_start </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>pcm</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Start a PCM.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code </dl><dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a37">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a31">/test/pcm.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a50" doxytag="pcm.h::snd_pcm_state"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="group___p_c_m.html#a13">snd_pcm_state_t</a> snd_pcm_state </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>pcm</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Return PCM state.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
PCM state <a class="el" href="group___p_c_m.html#a13">snd_pcm_state_t</a> of given PCM handle </dl><dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a26">/test/pcm.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a45" doxytag="pcm.h::snd_pcm_status"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_status </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___p_c_m.html#a3">snd_pcm_status_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>status</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Obtain status (runtime) information for PCM handle.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>status</em>&nbsp;</td><td>
Status container </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code </dl><dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a25">/test/latency.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a30" doxytag="pcm.h::snd_pcm_stream"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="group___p_c_m.html#a9">snd_pcm_stream_t</a> snd_pcm_stream </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>pcm</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
get stream for a PCM handle
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
stream of PCM handle</dl>Returns the type <a class="el" href="group___p_c_m.html#a9">snd_pcm_stream_t</a> of given PCM handle.     </td>
  </tr>
</table>
<a name="a42" doxytag="pcm.h::snd_pcm_sw_params"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_sw_params </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___p_c_m.html#a2">snd_pcm_sw_params_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>params</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Install PCM software configuration defined by params.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>params</em>&nbsp;</td><td>
Configuration container </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code </dl><dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a18">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a19">/test/pcm.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a41" doxytag="pcm.h::snd_pcm_sw_params_current"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_sw_params_current </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___p_c_m.html#a2">snd_pcm_sw_params_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>params</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Return current software configuration for a PCM.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>params</em>&nbsp;</td><td>
Software configuration container </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code </dl><dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a10">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a15">/test/pcm.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a29" doxytag="pcm.h::snd_pcm_type"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="group___p_c_m.html#a21">snd_pcm_type_t</a> snd_pcm_type </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>pcm</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
get type of PCM handle
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
type of PCM handle</dl>Returns the type <a class="el" href="group___p_c_m.html#a21">snd_pcm_type_t</a> of given PCM handle.     </td>
  </tr>
</table>
<a name="a62" doxytag="pcm.h::snd_pcm_unlink"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_unlink </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp; <em>pcm</em>          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Remove a PCM from a linked group.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
0 on success otherwise a negative error code </dl><dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a42">/test/latency.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a60" doxytag="pcm.h::snd_pcm_wait"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> int snd_pcm_wait </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>timeout</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Wait for a PCM to become ready.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>timeout</em>&nbsp;</td><td>
maximum time in milliseconds to wait </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
a positive value on success otherwise a negative error code </dl><dl compact><dt><b>Return values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>0</em>&nbsp;</td><td>
timeout occurred </td></tr>
<tr><td valign=top><em>1</em>&nbsp;</td><td>
PCM stream is ready for I/O </td></tr>
</table>
</dl><dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a38">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a32">/test/pcm.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a56" doxytag="pcm.h::snd_pcm_writei"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="group___p_c_m.html#a18">snd_pcm_sframes_t</a> snd_pcm_writei </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>const void *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>buffer</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___p_c_m.html#a17">snd_pcm_uframes_t</a>&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>size</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Write interleaved frames to a PCM.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>buffer</em>&nbsp;</td><td>
frames containing buffer </td></tr>
<tr><td valign=top><em>size</em>&nbsp;</td><td>
frames to be written </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
a positive number of frames actually written otherwise a negative error code </dl><dl compact><dt><b>Return values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>-EBADFD</em>&nbsp;</td><td>
PCM is not in the right state (<a class="el" href="group___p_c_m.html#a72a109">SND_PCM_STATE_PREPARED</a> or <a class="el" href="group___p_c_m.html#a72a110">SND_PCM_STATE_RUNNING</a>) </td></tr>
<tr><td valign=top><em>-EPIPE</em>&nbsp;</td><td>
an underrun occurred </td></tr>
<tr><td valign=top><em>-ESTRPIPE</em>&nbsp;</td><td>
a suspend event occurred (stream is suspended and waiting for an application recovery)</td></tr>
</table>
</dl>If the blocking behaviour is selected, then routine waits until all requested bytes are played or put to the playback ring buffer. The count of bytes can be less only if a signal or underrun occurred.
<p>
If the non-blocking behaviour is selected, then routine doesn't wait at all. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a30">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a22">/test/pcm.c</a>.</dl>    </td>
  </tr>
</table>
<a name="a58" doxytag="pcm.h::snd_pcm_writen"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="group___p_c_m.html#a18">snd_pcm_sframes_t</a> snd_pcm_writen </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="group___p_c_m.html#a20">snd_pcm_t</a> *&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>pcm</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap>void **&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>bufs</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md" nowrap><a class="el" href="group___p_c_m.html#a17">snd_pcm_uframes_t</a>&nbsp;</td>
          <td class="mdname" nowrap>&nbsp; <em>size</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Write non interleaved frames to a PCM.
<p>
<dl compact><dt><b>Parameters: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pcm</em>&nbsp;</td><td>
PCM handle </td></tr>
<tr><td valign=top><em>bufs</em>&nbsp;</td><td>
frames containing buffers (one for each channel) </td></tr>
<tr><td valign=top><em>size</em>&nbsp;</td><td>
frames to be written </td></tr>
</table>
</dl><dl compact><dt><b>Returns: </b></dt><dd>
a positive number of frames actually written otherwise a negative error code </dl><dl compact><dt><b>Return values: </b></dt><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>-EBADFD</em>&nbsp;</td><td>
PCM is not in the right state (<a class="el" href="group___p_c_m.html#a72a109">SND_PCM_STATE_PREPARED</a> or <a class="el" href="group___p_c_m.html#a72a110">SND_PCM_STATE_RUNNING</a>) </td></tr>
<tr><td valign=top><em>-EPIPE</em>&nbsp;</td><td>
an underrun occurred </td></tr>
<tr><td valign=top><em>-ESTRPIPE</em>&nbsp;</td><td>
a suspend event occurred (stream is suspended and waiting for an application recovery)</td></tr>
</table>
</dl>If the blocking behaviour is selected, then routine waits until all requested bytes are played or put to the playback ring buffer. The count of bytes can be less only if a signal or underrun occurred.
<p>
If the non-blocking behaviour is selected, then routine doesn't wait at all.     </td>
  </tr>
</table>
<hr><address style="align: right;"><small>Generated on Wed Apr 2 16:06:37 2003 for ALSA project - the C library reference by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 
width=110 height=53></a>1.2.18 </small></address>
</body>
</html>