Sophie

Sophie

distrib > Mandriva > 2010.1 > x86_64 > media > main-release > by-pkgid > eebe3e0b47589a6371b9bc07addc51ff > files > 79

libalsa2-docs-1.0.23-2mdv2010.1.x86_64.rpm

<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>ALSA project - the C library reference: PCM Interface</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javaScript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.6.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <img id="MSearchSelect" src="search/search.png"
             onmouseover="return searchBox.OnSearchSelectShow()"
             onmouseout="return searchBox.OnSearchSelectHide()"
             alt=""/>
        <input type="text" id="MSearchField" value="Search" accesskey="S"
             onfocus="searchBox.OnSearchFieldFocus(true)" 
             onblur="searchBox.OnSearchFieldFocus(false)" 
             onkeyup="searchBox.OnSearchFieldChange(event)"/>
        <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
        </div>
      </li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>PCM Interface</h1><table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structsnd__pcm__channel__area__t.html">snd_pcm_channel_area_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">union &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="unionsnd__pcm__sync__id__t.html">snd_pcm_sync_id_t</a></td></tr>
<tr><td colspan="2"><h2>Modules</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m___info.html">Stream Information</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m___h_w___params.html">Hardware Parameters</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m___s_w___params.html">Software Parameters</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m___access.html">Access Mask Functions</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m___format.html">Format Mask Functions</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m___sub_format.html">Subformat Mask Functions</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m___status.html">Status Functions</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m___description.html">Description Functions</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m___dump.html">Debug Functions</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m___direct.html">Direct Access (MMAP) Functions</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m___helpers.html">Helper Functions</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m___hook.html">Hook Extension</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m___scope.html">Scope Plugin Extension</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m___simple.html">Simple setup functions</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m___deprecated.html">Deprecated Functions</a></td></tr>
<tr><td colspan="2"><h2>Files</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="pcm_8c.html">pcm.c</a></td></tr>

<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>PCM Interface. </p>
<br/></td></tr>
</p>
<tr><td class="memItemLeft" align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="pcm__plugin_8c.html">pcm_plugin.c</a></td></tr>

<p><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><p>PCM Interface. </p>
<br/></td></tr>
</p>
<tr><td colspan="2"><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga32ccf47736036e86b0d787dc43e64d4a">SND_PCM_DLSYM_VERSION</a>&nbsp;&nbsp;&nbsp;_dlsym_pcm_001</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga6bd90de1d1527b5804090dcce51079ad">SND_PCM_NONBLOCK</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga9b22351abf6c85ced128e2088f6f6a5c">SND_PCM_ASYNC</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gaba352dfac44ef1681f91d476ed781005">SND_PCM_NO_AUTO_RESAMPLE</a>&nbsp;&nbsp;&nbsp;0x00010000</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga64fa40b556374dabe40d4874242fee19">SND_PCM_NO_AUTO_CHANNELS</a>&nbsp;&nbsp;&nbsp;0x00020000</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gacb997a23fbba62232101f730e9ae1e96">SND_PCM_NO_AUTO_FORMAT</a>&nbsp;&nbsp;&nbsp;0x00040000</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga1f67b4e05749f0d3dafe7c17e448518a">SND_PCM_NO_SOFTVOL</a>&nbsp;&nbsp;&nbsp;0x00080000</td></tr>
<tr><td colspan="2"><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct _snd_pcm_info&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga7dae86a468480ce8eb1c485446c51664">snd_pcm_info_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct _snd_pcm_hw_params&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga65c737127994f0a980edad744e36dc40">snd_pcm_hw_params_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct _snd_pcm_sw_params&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga7e082d9ea701709270b0674a0be23b09">snd_pcm_sw_params_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct _snd_pcm_status&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga902b87281c46910b469d5f7aaafc1890">snd_pcm_status_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct _snd_pcm_access_mask&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga7f9575bcc94c7c2cf5d688a45c16ffba">snd_pcm_access_mask_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct _snd_pcm_format_mask&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga0936aa9ac0051a3611583a2740915545">snd_pcm_format_mask_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct <br class="typebreak"/>
_snd_pcm_subformat_mask&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga891b054202089747199bc3348b9d9630">snd_pcm_subformat_mask_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef unsigned long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef long&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct _snd_pcm&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="group___p_c_m.html#ga060d5b81f2fc8efcc35ff3e1de6e9fa4">_snd_pcm_type</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gaca6314f46f54a0b62536c403bbb62601">snd_pcm_type_t</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct _snd_pcm_scope&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga3cd150b8aa57e634e1e1dd914940c765">snd_pcm_scope_t</a></td></tr>
<tr><td colspan="2"><h2>Enumerations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gad0e95dc8a590d8f9915fec237d7a28a5">snd_pcm_class_t</a> { <br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#ggad0e95dc8a590d8f9915fec237d7a28a5a3899ef7b0fa4a9717abe5587e9110514">SND_PCM_CLASS_GENERIC</a> =  0, 
<a class="el" href="group___p_c_m.html#ggad0e95dc8a590d8f9915fec237d7a28a5a223f6ffeb72c72144f4f680998fbedb3">SND_PCM_CLASS_MULTI</a>, 
<a class="el" href="group___p_c_m.html#ggad0e95dc8a590d8f9915fec237d7a28a5a79cdb236d774a3a5e17cf4929a16936b">SND_PCM_CLASS_MODEM</a>, 
<a class="el" href="group___p_c_m.html#ggad0e95dc8a590d8f9915fec237d7a28a5a69f4d2c8aa3195c6fc140b6d4c2f25ea">SND_PCM_CLASS_DIGITIZER</a>, 
<br/>
&nbsp;&nbsp;<b>SND_PCM_CLASS_LAST</b> =  SND_PCM_CLASS_DIGITIZER
<br/>
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga6a164917c35e2216f6e76beff4e4d0cb">snd_pcm_subclass_t</a> { <a class="el" href="group___p_c_m.html#gga6a164917c35e2216f6e76beff4e4d0cba79a61939325a37b0fdfcf6e9ac0ce572">SND_PCM_SUBCLASS_GENERIC_MIX</a> =  0, 
<a class="el" href="group___p_c_m.html#gga6a164917c35e2216f6e76beff4e4d0cbaafd17e33fac6f3c2b7e9bb48473b8c54">SND_PCM_SUBCLASS_MULTI_MIX</a>, 
<b>SND_PCM_SUBCLASS_LAST</b> =  SND_PCM_SUBCLASS_MULTI_MIX
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gac23b43ff55add78638e503b9cc892c24">snd_pcm_stream_t</a> { <a class="el" href="group___p_c_m.html#ggac23b43ff55add78638e503b9cc892c24a57a2b920dbc34173479fc9036cfc78a1">SND_PCM_STREAM_PLAYBACK</a> =  0, 
<a class="el" href="group___p_c_m.html#ggac23b43ff55add78638e503b9cc892c24af07834f756b4f95cb61987f4811073c4">SND_PCM_STREAM_CAPTURE</a>, 
<b>SND_PCM_STREAM_LAST</b> =  SND_PCM_STREAM_CAPTURE
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga661221ba5e8f1d6eaf4ab8e2da57cc1a">snd_pcm_access_t</a> { <br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#gga661221ba5e8f1d6eaf4ab8e2da57cc1aa90a5dea527c5ae9a53f1448beb2dee6f">SND_PCM_ACCESS_MMAP_INTERLEAVED</a> =  0, 
<a class="el" href="group___p_c_m.html#gga661221ba5e8f1d6eaf4ab8e2da57cc1aa7de225785e05dd1d538203c5ece9036e">SND_PCM_ACCESS_MMAP_NONINTERLEAVED</a>, 
<a class="el" href="group___p_c_m.html#gga661221ba5e8f1d6eaf4ab8e2da57cc1aa26a4f161364cb539df4de5eeb9949121">SND_PCM_ACCESS_MMAP_COMPLEX</a>, 
<a class="el" href="group___p_c_m.html#gga661221ba5e8f1d6eaf4ab8e2da57cc1aa72a970ed6e676ab0fd9f3c3d36737e0a">SND_PCM_ACCESS_RW_INTERLEAVED</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#gga661221ba5e8f1d6eaf4ab8e2da57cc1aae7ab128d10c32667f396933190435071">SND_PCM_ACCESS_RW_NONINTERLEAVED</a>, 
<b>SND_PCM_ACCESS_LAST</b> =  SND_PCM_ACCESS_RW_NONINTERLEAVED
<br/>
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gaa14b7f26877a812acbb39811364177f8">snd_pcm_format_t</a> { <br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8ab1e118ecdccf628639b5c85bc3a48999">SND_PCM_FORMAT_UNKNOWN</a> =  -1, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a5b78bf93eaed5f52cf16c582f04aa7f1">SND_PCM_FORMAT_S8</a> =  0, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8ad5856f97113926836a7c6651cb8864a3">SND_PCM_FORMAT_U8</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a8b66a29293c62df9d1678c609fab76c0">SND_PCM_FORMAT_S16_LE</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a9f6783e14d7cbb5023c86427263b0d50">SND_PCM_FORMAT_S16_BE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8ab2f9619da5d5062e612b2ee0929e8164">SND_PCM_FORMAT_U16_LE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8aecc04aa997503c030a47fe5798514180">SND_PCM_FORMAT_U16_BE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a04b3c3b9ad0106c9619a28b753d8fd18">SND_PCM_FORMAT_S24_LE</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a226d2f6a6bc53a6f75786ca8fad3fc65">SND_PCM_FORMAT_S24_BE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a33b2fb89235eebda4e6820d4a80a4c29">SND_PCM_FORMAT_U24_LE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a2c2effcf940fdee8eddf43a62360f7c4">SND_PCM_FORMAT_U24_BE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8aa99dcea38d9cd8ea3b8a6e9ea85bcc52">SND_PCM_FORMAT_S32_LE</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8ad30a0d4bc893eba11d08d72b3916ca2a">SND_PCM_FORMAT_S32_BE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a4c9ee7d82e322009e85f7cd739bbb692">SND_PCM_FORMAT_U32_LE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8ac4d69a20b22df53a63ad8589bbdf6f93">SND_PCM_FORMAT_U32_BE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a083f32474a84d344e0da496470085c8f">SND_PCM_FORMAT_FLOAT_LE</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8ab24eac408b0d2ae6b5f68ed3a7cd2d75">SND_PCM_FORMAT_FLOAT_BE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a8e6d82461abbb8be043f8addd23f76c0">SND_PCM_FORMAT_FLOAT64_LE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a9215cd0ab46e6db8668d8bfbb3cd76a6">SND_PCM_FORMAT_FLOAT64_BE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a4a51dcbdb981d0357447115d7ccf3b1f">SND_PCM_FORMAT_IEC958_SUBFRAME_LE</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a347bac4a7d9ac64e3019a2f3238e09fb">SND_PCM_FORMAT_IEC958_SUBFRAME_BE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a1f71fdf666f5dea8b84d627ba84a9ea5">SND_PCM_FORMAT_MU_LAW</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a9d1017ad6b2f73e97f20cf933a5d8a7e">SND_PCM_FORMAT_A_LAW</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a984ec5c790504560bfc7564cfeaddc23">SND_PCM_FORMAT_IMA_ADPCM</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a3705d4bd3266f3a68c276da9e7a65660">SND_PCM_FORMAT_MPEG</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a32ec1ed1e6bc5eafff1547e1401f679c">SND_PCM_FORMAT_GSM</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a770a94546bff2f0d07e32dd22c5f9a2c">SND_PCM_FORMAT_SPECIAL</a> =  31, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a1fd8c22f3dd45fc1b8e41b0b5e6107ce">SND_PCM_FORMAT_S24_3LE</a> =  32, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a531ede921f12bd96e02499f962fdb7ea">SND_PCM_FORMAT_S24_3BE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a76ef58eb516389000bdc678ca69515c3">SND_PCM_FORMAT_U24_3LE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a26318cc44ae67775ccedc1f5ba07d925">SND_PCM_FORMAT_U24_3BE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a8f23da6a6564831a09f079f4d0e7fd6c">SND_PCM_FORMAT_S20_3LE</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a178dd8e9b92a0dbe80ae837979720fa7">SND_PCM_FORMAT_S20_3BE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a15eb6dc96e7940b06b2b40fd483073a3">SND_PCM_FORMAT_U20_3LE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a8d4e75049c83e0b26493d4d149de5b22">SND_PCM_FORMAT_U20_3BE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a89ba6879c39fec5ee33f2b760ebd7053">SND_PCM_FORMAT_S18_3LE</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8ad49193efd29a9f7085ddcd08e3b33eba">SND_PCM_FORMAT_S18_3BE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a3ab354cc702a7b9d651aec726bb8a68c">SND_PCM_FORMAT_U18_3LE</a>, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a0bab067dee022bd684b1015762a44663">SND_PCM_FORMAT_U18_3BE</a>, 
<b>SND_PCM_FORMAT_LAST</b> =  SND_PCM_FORMAT_U18_3BE, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8aac4470b6be81c22af0cfe528bee4a474">SND_PCM_FORMAT_S16</a> =  SND_PCM_FORMAT_S16_LE, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a032b33ad0fe643a3177be26148f026f1">SND_PCM_FORMAT_U16</a> =  SND_PCM_FORMAT_U16_LE, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8ad2eb0073f6d7ba800695c088b32956a5">SND_PCM_FORMAT_S24</a> =  SND_PCM_FORMAT_S24_LE, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a036c86abc5151b9a1f19476d34120994">SND_PCM_FORMAT_U24</a> =  SND_PCM_FORMAT_U24_LE, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8abccf973f2b6eba3481949a7b5b04f4ab">SND_PCM_FORMAT_S32</a> =  SND_PCM_FORMAT_S32_LE, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8abbdd76fc846d3a68c19727a44bd38336">SND_PCM_FORMAT_U32</a> =  SND_PCM_FORMAT_U32_LE, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a7d9fd83c6ff5be7a9cde4b0673b64bf0">SND_PCM_FORMAT_FLOAT</a> =  SND_PCM_FORMAT_FLOAT_LE, 
<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a0ecea6572fd04ef25ae24cde617eaa9a">SND_PCM_FORMAT_FLOAT64</a> =  SND_PCM_FORMAT_FLOAT64_LE, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#ggaa14b7f26877a812acbb39811364177f8a7ecefcb13f1fbb3ffb24f9b6582d53cc">SND_PCM_FORMAT_IEC958_SUBFRAME</a> =  SND_PCM_FORMAT_IEC958_SUBFRAME_LE
<br/>
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga1e5fe73a6bdf881e2f91921d5e5327c7">snd_pcm_subformat_t</a> { <a class="el" href="group___p_c_m.html#gga1e5fe73a6bdf881e2f91921d5e5327c7a09a538c9147dae5bb19df88198f0ebb8">SND_PCM_SUBFORMAT_STD</a> =  0, 
<b>SND_PCM_SUBFORMAT_LAST</b> =  SND_PCM_SUBFORMAT_STD
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga61ac499cb3701ce536d4d83725908860">snd_pcm_state_t</a> { <br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#gga61ac499cb3701ce536d4d83725908860a56cf8033b50561b57437232e243f3007">SND_PCM_STATE_OPEN</a> =  0, 
<a class="el" href="group___p_c_m.html#gga61ac499cb3701ce536d4d83725908860a58d9a0501aa1b2bd2607e1084c335672">SND_PCM_STATE_SETUP</a>, 
<a class="el" href="group___p_c_m.html#gga61ac499cb3701ce536d4d83725908860a3eb4a3b75c7d2adb22f1829f3f738b27">SND_PCM_STATE_PREPARED</a>, 
<a class="el" href="group___p_c_m.html#gga61ac499cb3701ce536d4d83725908860a86f6fbc796881f19fde0e1957f878147">SND_PCM_STATE_RUNNING</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#gga61ac499cb3701ce536d4d83725908860ab63b5b90201110cd586b686355fd5d83">SND_PCM_STATE_XRUN</a>, 
<a class="el" href="group___p_c_m.html#gga61ac499cb3701ce536d4d83725908860a86f88c2a4c8eedb5c91f3b6cb4879cfe">SND_PCM_STATE_DRAINING</a>, 
<a class="el" href="group___p_c_m.html#gga61ac499cb3701ce536d4d83725908860a9fa0c5b43e5c924f87b50e22878a8952">SND_PCM_STATE_PAUSED</a>, 
<a class="el" href="group___p_c_m.html#gga61ac499cb3701ce536d4d83725908860a79a05b6b619f88e153d50d9daf2e84bf">SND_PCM_STATE_SUSPENDED</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#gga61ac499cb3701ce536d4d83725908860aa0cbad634a40383eed6059d1b49c215a">SND_PCM_STATE_DISCONNECTED</a>, 
<b>SND_PCM_STATE_LAST</b> =  SND_PCM_STATE_DISCONNECTED
<br/>
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga0eae9150f4f207ed05cb629cc3a3673f">snd_pcm_start_t</a> { <a class="el" href="group___p_c_m.html#gga0eae9150f4f207ed05cb629cc3a3673fa1784d28a1a0b6d0dc9726e8093fef095">SND_PCM_START_DATA</a> =  0, 
<a class="el" href="group___p_c_m.html#gga0eae9150f4f207ed05cb629cc3a3673fa3f7514d50731fbec3bf3963f8f50e377">SND_PCM_START_EXPLICIT</a>, 
<b>SND_PCM_START_LAST</b> =  SND_PCM_START_EXPLICIT
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga67c10983b5cadd8b3eb3163489655784">snd_pcm_xrun_t</a> { <a class="el" href="group___p_c_m.html#gga67c10983b5cadd8b3eb3163489655784a2041251f57b2d807a87dbb33de4a0299">SND_PCM_XRUN_NONE</a> =  0, 
<a class="el" href="group___p_c_m.html#gga67c10983b5cadd8b3eb3163489655784a79be5aacb29e5eb3cea538eb7a24c57c">SND_PCM_XRUN_STOP</a>, 
<b>SND_PCM_XRUN_LAST</b> =  SND_PCM_XRUN_STOP
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga695a9755880cf886c13d07938f92ea77">snd_pcm_tstamp_t</a> { <a class="el" href="group___p_c_m.html#gga695a9755880cf886c13d07938f92ea77af49a1c378583854b22ed6f6490f3b1ee">SND_PCM_TSTAMP_NONE</a> =  0, 
<a class="el" href="group___p_c_m.html#gga695a9755880cf886c13d07938f92ea77ac62f4ba2b203d59b8f11074fb12788ae">SND_PCM_TSTAMP_ENABLE</a>, 
<a class="el" href="group___p_c_m.html#gga695a9755880cf886c13d07938f92ea77ab09196ab367636c4d365b5b6bcd391d8">SND_PCM_TSTAMP_MMAP</a> =  SND_PCM_TSTAMP_ENABLE, 
<b>SND_PCM_TSTAMP_LAST</b> =  SND_PCM_TSTAMP_ENABLE
 }</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga060d5b81f2fc8efcc35ff3e1de6e9fa4">_snd_pcm_type</a> { <br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a09891cdb0b9282c37c41941b922b12c4">SND_PCM_TYPE_HW</a> =  0, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a2e332e4a85ab27030c8504a2becc02ee">SND_PCM_TYPE_HOOKS</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a568ddf1cfbafe64782e3073b235ff5f3">SND_PCM_TYPE_MULTI</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a583a91928c037820337cd8915cd85e02">SND_PCM_TYPE_FILE</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a1fd5236858488b6bb1c565ae83ba451d">SND_PCM_TYPE_NULL</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a7af39420542c41f72a62551b2ae8db6d">SND_PCM_TYPE_SHM</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a3b07a18a1c2cadfc4e2eec2d62aef57e">SND_PCM_TYPE_INET</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4af09844304be19ee3a81ba5e2165e00bc">SND_PCM_TYPE_COPY</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a3a89f56e7151dba7ba93e392fe709222">SND_PCM_TYPE_LINEAR</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4aaefed6aee6ad9570fa3fdd5943702e43">SND_PCM_TYPE_ALAW</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a225a22f28b83348c81b9962b53f68419">SND_PCM_TYPE_MULAW</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a8b358976321af44871bfd4f5743eb7f0">SND_PCM_TYPE_ADPCM</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4ac551ab5a7b8c32d4a79a9f605287c4b0">SND_PCM_TYPE_RATE</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a25b8c982e260c67fdf3da22a7d68bbb0">SND_PCM_TYPE_ROUTE</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4af03892219cb4ca4f07025b7a67d3890e">SND_PCM_TYPE_PLUG</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a5f90c13d40f32cdbaa24304f1f4aa260">SND_PCM_TYPE_SHARE</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a415afb5482d35b38837035a6dd82b39d">SND_PCM_TYPE_METER</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a9d46de594d5885faa0fc4c3075eade76">SND_PCM_TYPE_MIX</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4ac48d9a315b2094989b303b62939f4d12">SND_PCM_TYPE_DROUTE</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a819e90fe76ad9b1f8615cdaa76d47606">SND_PCM_TYPE_LBSERVER</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4af99ee7d59e1195c15440b7688e36b4e2">SND_PCM_TYPE_LINEAR_FLOAT</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4af3096430cd38726e8dd3751c611af13e">SND_PCM_TYPE_LADSPA</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a1345bfdf8c4052ec4eaea99ddca5b25e">SND_PCM_TYPE_DMIX</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a3c059ea48c0ecb784421997aa302ff44">SND_PCM_TYPE_JACK</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a4fd7bc5c326b81d47841dc3133c6a154">SND_PCM_TYPE_DSNOOP</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a02bca0b5efdbdfedb0983dacac599977">SND_PCM_TYPE_DSHARE</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4aa94a5d305b7803cf7ccda2ca0099a954">SND_PCM_TYPE_IEC958</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a80dcbde2dd52a423f8c5b055aacaa17d">SND_PCM_TYPE_SOFTVOL</a>, 
<br/>
&nbsp;&nbsp;<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4ad4b0a23cef67fe330cce313c4f9e242a">SND_PCM_TYPE_IOPLUG</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a876553cf6a0650a8adcb17c3e768a8da">SND_PCM_TYPE_EXTPLUG</a>, 
<a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4aa426bf738261ee3cd1ca3a25d8cbed12">SND_PCM_TYPE_MMAP_EMUL</a>, 
<b>SND_PCM_TYPE_LAST</b> =  SND_PCM_TYPE_MMAP_EMUL
<br/>
 }</td></tr>
<tr><td colspan="2"><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga8340c7dc0ac37f37afe5e7c21d6c528b">snd_pcm_open</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> **pcm, const char *name, <a class="el" href="group___p_c_m.html#gac23b43ff55add78638e503b9cc892c24">snd_pcm_stream_t</a> stream, int mode)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Opens a PCM.  <a href="#ga8340c7dc0ac37f37afe5e7c21d6c528b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga88164d313d8ff9dc33c94815869cb677">snd_pcm_open_lconf</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> **pcm, const char *name, <a class="el" href="group___p_c_m.html#gac23b43ff55add78638e503b9cc892c24">snd_pcm_stream_t</a> stream, int mode, <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *lconf)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Opens a PCM using local configuration.  <a href="#ga88164d313d8ff9dc33c94815869cb677"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga042aba7262a4cbb4d444b6fc08cb7124">snd_pcm_close</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">close PCM handle  <a href="#ga042aba7262a4cbb4d444b6fc08cb7124"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga5031edc0422df8db1f70af056a12dd77">snd_pcm_name</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get identifier of PCM handle  <a href="#ga5031edc0422df8db1f70af056a12dd77"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___p_c_m.html#gaca6314f46f54a0b62536c403bbb62601">snd_pcm_type_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gaa7cf89c3f83d83aaa0248055a783b632">snd_pcm_type</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get type of PCM handle  <a href="#gaa7cf89c3f83d83aaa0248055a783b632"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___p_c_m.html#gac23b43ff55add78638e503b9cc892c24">snd_pcm_stream_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga8eea4a021a114ecc3e8f6d80901faf46">snd_pcm_stream</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get stream for a PCM handle  <a href="#ga8eea4a021a114ecc3e8f6d80901faf46"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gac7f4cdb1c930b8d343714f60afa02fc4">snd_pcm_poll_descriptors_count</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get count of poll descriptors for PCM handle  <a href="#gac7f4cdb1c930b8d343714f60afa02fc4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga742e8705f6992fd0e36efc868e574f01">snd_pcm_poll_descriptors</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, struct pollfd *pfds, unsigned int space)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get poll descriptors  <a href="#ga742e8705f6992fd0e36efc868e574f01"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga7e561f305702c6f52dab49b6c84f7df7">snd_pcm_poll_descriptors_revents</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, struct pollfd *pfds, unsigned int nfds, unsigned short *revents)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get returned events from poll descriptors  <a href="#ga7e561f305702c6f52dab49b6c84f7df7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga8d9ed4a62c17402de0389fd31fc7dc1f">snd_pcm_nonblock</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, int nonblock)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set nonblock mode  <a href="#ga8d9ed4a62c17402de0389fd31fc7dc1f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga5a0c0da6d0d35a3ac9f6a97567ac3b63">snd_async_add_pcm_handler</a> (<a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a> **handler, <a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, <a class="el" href="group___global.html#gaa0501fb0c332e2009977bb29f194200b">snd_async_callback_t</a> callback, void *private_data)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add an async handler for a PCM.  <a href="#ga5a0c0da6d0d35a3ac9f6a97567ac3b63"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gace4920d5943820c395dab8d9cd4fed0a">snd_async_handler_get_pcm</a> (<a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a> *handler)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return PCM handle related to an async handler.  <a href="#gace4920d5943820c395dab8d9cd4fed0a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gadd9467ca75884292234e4986b329a17f">snd_pcm_info</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#ga7dae86a468480ce8eb1c485446c51664">snd_pcm_info_t</a> *info)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Obtain general (static) information for PCM handle.  <a href="#gadd9467ca75884292234e4986b329a17f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gaf8cd01c4c6b79c4a45a2c816fb8fbc5f">snd_pcm_hw_params_current</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#ga65c737127994f0a980edad744e36dc40">snd_pcm_hw_params_t</a> *params)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retreive current PCM hardware configuration chosen with <a class="el" href="group___p_c_m.html#ga1ca0dc120a484965e26cabf966502330" title="Install one PCM hardware configuration chosen from a configuration space and snd_pcm_prepare...">snd_pcm_hw_params</a>.  <a href="#gaf8cd01c4c6b79c4a45a2c816fb8fbc5f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga1ca0dc120a484965e26cabf966502330">snd_pcm_hw_params</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#ga65c737127994f0a980edad744e36dc40">snd_pcm_hw_params_t</a> *params)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Install one PCM hardware configuration chosen from a configuration space and <a class="el" href="group___p_c_m.html#ga788d05de75f2d536f8443cb0306754d0" title="Prepare PCM for use.">snd_pcm_prepare</a> it.  <a href="#ga1ca0dc120a484965e26cabf966502330"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga242ad0a269c272830d30666220edbc2a">snd_pcm_hw_free</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove PCM hardware configuration and free associated resources.  <a href="#ga242ad0a269c272830d30666220edbc2a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga61c5495ffb44c75aaa595e85512d28de">snd_pcm_sw_params_current</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#ga7e082d9ea701709270b0674a0be23b09">snd_pcm_sw_params_t</a> *params)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return current software configuration for a PCM.  <a href="#ga61c5495ffb44c75aaa595e85512d28de"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga891ccaeea2c685a533b61b5fa0493974">snd_pcm_sw_params</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#ga7e082d9ea701709270b0674a0be23b09">snd_pcm_sw_params_t</a> *params)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Install PCM software configuration defined by params.  <a href="#ga891ccaeea2c685a533b61b5fa0493974"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga788d05de75f2d536f8443cb0306754d0">snd_pcm_prepare</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Prepare PCM for use.  <a href="#ga788d05de75f2d536f8443cb0306754d0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga390e084f13d24244196aca64262ce3fc">snd_pcm_reset</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reset PCM position.  <a href="#ga390e084f13d24244196aca64262ce3fc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga32891eaac37741728a9b23027012c892">snd_pcm_status</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#ga902b87281c46910b469d5f7aaafc1890">snd_pcm_status_t</a> *status)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Obtain status (runtime) information for PCM handle.  <a href="#ga32891eaac37741728a9b23027012c892"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga6bdb88b68a9d9e66015d770f600c6aea">snd_pcm_start</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start a PCM.  <a href="#ga6bdb88b68a9d9e66015d770f600c6aea"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga7000ca6010a1a2739daddff8e2fbb440">snd_pcm_drop</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stop a PCM dropping pending frames.  <a href="#ga7000ca6010a1a2739daddff8e2fbb440"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga49afc5b8527f30c33fafa476533c9f86">snd_pcm_drain</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stop a PCM preserving pending frames.  <a href="#ga49afc5b8527f30c33fafa476533c9f86"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gad711b582c7066bd4fffa1d08a04316b5">snd_pcm_pause</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, int enable)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pause/resume PCM.  <a href="#gad711b582c7066bd4fffa1d08a04316b5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___p_c_m.html#ga61ac499cb3701ce536d4d83725908860">snd_pcm_state_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga87896f6f17020fc19835790369e7ce75">snd_pcm_state</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return PCM state.  <a href="#ga87896f6f17020fc19835790369e7ce75"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga3b71a41f6b300bf63ad374013f19d8d7">snd_pcm_hwsync</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">(DEPRECATED) Synchronize stream position with hardware  <a href="#ga3b71a41f6b300bf63ad374013f19d8d7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga012e8b999070e72ab23514f25e7d6482">snd_pcm_delay</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a> *delayp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Obtain delay for a running PCM handle.  <a href="#ga012e8b999070e72ab23514f25e7d6482"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga13083ce2209aab9ea73831610bc61ab1">snd_pcm_resume</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Resume from suspend, no samples are lost.  <a href="#ga13083ce2209aab9ea73831610bc61ab1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga3946abd34178b3de60fd5329b71c189b">snd_pcm_htimestamp</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a> *avail, <a class="el" href="group___global.html#ga3a3f5b65c40f498cdbc26944bd9855cf">snd_htimestamp_t</a> *tstamp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Obtain last position update hi-res timestamp.  <a href="#ga3946abd34178b3de60fd5329b71c189b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga577b4d51e08d94930a05bbe73291ed2a">snd_pcm_avail</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return number of frames ready to be read (capture) / written (playback).  <a href="#ga577b4d51e08d94930a05bbe73291ed2a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga8bb836bd0c414b59789d51a5f5379c08">snd_pcm_avail_update</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return number of frames ready to be read (capture) / written (playback).  <a href="#ga8bb836bd0c414b59789d51a5f5379c08"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga170bc44da2607b5583cff5ab5a985d98">snd_pcm_avail_delay</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a> *availp, <a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a> *delayp)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Combine snd_pcm_avail and snd_pcm_delay functions.  <a href="#ga170bc44da2607b5583cff5ab5a985d98"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga0ea7a8aade4e6e76f2cdfd8c85f37bd0">snd_pcm_rewindable</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get safe count of frames which can be rewinded.  <a href="#ga0ea7a8aade4e6e76f2cdfd8c85f37bd0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga6c66040dbe01797379436fdf36268fec">snd_pcm_rewind</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a> frames)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Move application frame position backward.  <a href="#ga6c66040dbe01797379436fdf36268fec"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gaa2f506e03630a074130443d7b9c1a27e">snd_pcm_forwardable</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get safe count of frames which can be forwarded.  <a href="#gaa2f506e03630a074130443d7b9c1a27e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gad0774fa8991248c6f1c264aaeb0b4207">snd_pcm_forward</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a> frames)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Move application frame position forward.  <a href="#gad0774fa8991248c6f1c264aaeb0b4207"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gabc748a500743713eafa960c7d104ca6f">snd_pcm_writei</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, const void *buffer, <a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a> size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write interleaved frames to a PCM.  <a href="#gabc748a500743713eafa960c7d104ca6f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga4c2c7bd26cf221268d59dc3bbeb9c048">snd_pcm_readi</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, void *buffer, <a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a> size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read interleaved frames from a PCM.  <a href="#ga4c2c7bd26cf221268d59dc3bbeb9c048"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gae599772ce3d0aa6a70de143abcf145e7">snd_pcm_writen</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, void **bufs, <a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a> size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write non interleaved frames to a PCM.  <a href="#gae599772ce3d0aa6a70de143abcf145e7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gafea175455f1a405f633a43484ded3d8a">snd_pcm_readn</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, void **bufs, <a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a> size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read non interleaved frames to a PCM.  <a href="#gafea175455f1a405f633a43484ded3d8a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gad4d53d58b996a7cd9a5cbf1710b90375">snd_pcm_wait</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, int timeout)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wait for a PCM to become ready.  <a href="#gad4d53d58b996a7cd9a5cbf1710b90375"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gac6c33091b049985baa6466e8fe93917e">snd_pcm_link</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm1, <a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Link two PCMs.  <a href="#gac6c33091b049985baa6466e8fe93917e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga0d3af5e30593dae857b4308aab5035cd">snd_pcm_unlink</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove a PCM from a linked group.  <a href="#ga0d3af5e30593dae857b4308aab5035cd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga2157aaeb6fc14da3f040d76591f9d3b1">snd_pcm_recover</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, int err, int silent)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Recover the stream state from an error or suspend.  <a href="#ga2157aaeb6fc14da3f040d76591f9d3b1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga45d50841b307f2156fce1857bfac228c">snd_pcm_set_params</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#gaa14b7f26877a812acbb39811364177f8">snd_pcm_format_t</a> format, <a class="el" href="group___p_c_m.html#ga661221ba5e8f1d6eaf4ab8e2da57cc1a">snd_pcm_access_t</a> access, unsigned int channels, unsigned int rate, int soft_resample, unsigned int latency)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the hardware and software parameters in a simple way.  <a href="#ga45d50841b307f2156fce1857bfac228c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga2827b8fa77ca05717df9b0447b99d1cd">snd_pcm_get_params</a> (<a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a> *buffer_size, <a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a> *period_size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the transfer size parameters in a simple way.  <a href="#ga2827b8fa77ca05717df9b0447b99d1cd"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>See the <a class="el" href="pcm.html">PCM (digital audio) interface</a> page for more details. </p>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="ga9b22351abf6c85ced128e2088f6f6a5c"></a><!-- doxytag: member="pcm.h::SND_PCM_ASYNC" ref="ga9b22351abf6c85ced128e2088f6f6a5c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SND_PCM_ASYNC</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Async notification (flag for open mode) </p>

</div>
</div>
<a class="anchor" id="ga32ccf47736036e86b0d787dc43e64d4a"></a><!-- doxytag: member="pcm.h::SND_PCM_DLSYM_VERSION" ref="ga32ccf47736036e86b0d787dc43e64d4a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SND_PCM_DLSYM_VERSION&nbsp;&nbsp;&nbsp;_dlsym_pcm_001</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>dlsym version for interface entry callback </p>

</div>
</div>
<a class="anchor" id="ga64fa40b556374dabe40d4874242fee19"></a><!-- doxytag: member="pcm.h::SND_PCM_NO_AUTO_CHANNELS" ref="ga64fa40b556374dabe40d4874242fee19" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SND_PCM_NO_AUTO_CHANNELS&nbsp;&nbsp;&nbsp;0x00020000</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Disable automatic (but not forced!) channel conversion </p>

</div>
</div>
<a class="anchor" id="gacb997a23fbba62232101f730e9ae1e96"></a><!-- doxytag: member="pcm.h::SND_PCM_NO_AUTO_FORMAT" ref="gacb997a23fbba62232101f730e9ae1e96" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SND_PCM_NO_AUTO_FORMAT&nbsp;&nbsp;&nbsp;0x00040000</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Disable automatic (but not forced!) format conversion </p>

</div>
</div>
<a class="anchor" id="gaba352dfac44ef1681f91d476ed781005"></a><!-- doxytag: member="pcm.h::SND_PCM_NO_AUTO_RESAMPLE" ref="gaba352dfac44ef1681f91d476ed781005" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SND_PCM_NO_AUTO_RESAMPLE&nbsp;&nbsp;&nbsp;0x00010000</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Disable automatic (but not forced!) rate resamplinig </p>

</div>
</div>
<a class="anchor" id="ga1f67b4e05749f0d3dafe7c17e448518a"></a><!-- doxytag: member="pcm.h::SND_PCM_NO_SOFTVOL" ref="ga1f67b4e05749f0d3dafe7c17e448518a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SND_PCM_NO_SOFTVOL&nbsp;&nbsp;&nbsp;0x00080000</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Disable soft volume control </p>

</div>
</div>
<a class="anchor" id="ga6bd90de1d1527b5804090dcce51079ad"></a><!-- doxytag: member="pcm.h::SND_PCM_NONBLOCK" ref="ga6bd90de1d1527b5804090dcce51079ad" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SND_PCM_NONBLOCK</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Non blocking mode (flag for open mode) </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a44">/test/latency.c</a>.</dd>
</dl>
</div>
</div>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="ga7f9575bcc94c7c2cf5d688a45c16ffba"></a><!-- doxytag: member="pcm.h::snd_pcm_access_mask_t" ref="ga7f9575bcc94c7c2cf5d688a45c16ffba" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct _snd_pcm_access_mask <a class="el" href="group___p_c_m.html#ga7f9575bcc94c7c2cf5d688a45c16ffba">snd_pcm_access_mask_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM access types mask </p>

</div>
</div>
<a class="anchor" id="ga0936aa9ac0051a3611583a2740915545"></a><!-- doxytag: member="pcm.h::snd_pcm_format_mask_t" ref="ga0936aa9ac0051a3611583a2740915545" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct _snd_pcm_format_mask <a class="el" href="group___p_c_m.html#ga0936aa9ac0051a3611583a2740915545">snd_pcm_format_mask_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM formats mask </p>

</div>
</div>
<a class="anchor" id="ga65c737127994f0a980edad744e36dc40"></a><!-- doxytag: member="pcm.h::snd_pcm_hw_params_t" ref="ga65c737127994f0a980edad744e36dc40" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct _snd_pcm_hw_params <a class="el" href="group___p_c_m.html#ga65c737127994f0a980edad744e36dc40">snd_pcm_hw_params_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM hardware configuration space container </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a3">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a14">/test/pcm.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga7dae86a468480ce8eb1c485446c51664"></a><!-- doxytag: member="pcm.h::snd_pcm_info_t" ref="ga7dae86a468480ce8eb1c485446c51664" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct _snd_pcm_info <a class="el" href="group___p_c_m.html#ga7dae86a468480ce8eb1c485446c51664">snd_pcm_info_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM generic info container </p>

</div>
</div>
<a class="anchor" id="ga3cd150b8aa57e634e1e1dd914940c765"></a><!-- doxytag: member="pcm.h::snd_pcm_scope_t" ref="ga3cd150b8aa57e634e1e1dd914940c765" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct _snd_pcm_scope <a class="el" href="group___p_c_m.html#ga3cd150b8aa57e634e1e1dd914940c765">snd_pcm_scope_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p><a class="el" href="group___p_c_m.html#gga060d5b81f2fc8efcc35ff3e1de6e9fa4a415afb5482d35b38837035a6dd82b39d">SND_PCM_TYPE_METER</a> scope handle </p>

</div>
</div>
<a class="anchor" id="ga71cdfa37e258d2210b8bd0216bf0c36c"></a><!-- doxytag: member="pcm.h::snd_pcm_sframes_t" ref="ga71cdfa37e258d2210b8bd0216bf0c36c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef long <a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Signed frames quantity </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2pcm_8c-example.html#a1">/test/pcm.c</a>, and <a class="el" href="_2test_2pcm__min_8c-example.html#a2">/test/pcm_min.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga902b87281c46910b469d5f7aaafc1890"></a><!-- doxytag: member="pcm.h::snd_pcm_status_t" ref="ga902b87281c46910b469d5f7aaafc1890" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct _snd_pcm_status <a class="el" href="group___p_c_m.html#ga902b87281c46910b469d5f7aaafc1890">snd_pcm_status_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM status container </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a29">/test/latency.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga891b054202089747199bc3348b9d9630"></a><!-- doxytag: member="pcm.h::snd_pcm_subformat_mask_t" ref="ga891b054202089747199bc3348b9d9630" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct _snd_pcm_subformat_mask <a class="el" href="group___p_c_m.html#ga891b054202089747199bc3348b9d9630">snd_pcm_subformat_mask_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM subformats mask </p>

</div>
</div>
<a class="anchor" id="ga7e082d9ea701709270b0674a0be23b09"></a><!-- doxytag: member="pcm.h::snd_pcm_sw_params_t" ref="ga7e082d9ea701709270b0674a0be23b09" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct _snd_pcm_sw_params <a class="el" href="group___p_c_m.html#ga7e082d9ea701709270b0674a0be23b09">snd_pcm_sw_params_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM software configuration container </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a16">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a27">/test/pcm.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga919e634deecd855b6e2e15174e70d3ea"></a><!-- doxytag: member="pcm.h::snd_pcm_t" ref="ga919e634deecd855b6e2e15174e70d3ea" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct _snd_pcm <a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM handle </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a2">/test/latency.c</a>, <a class="el" href="_2test_2pcm_8c-example.html#a13">/test/pcm.c</a>, and <a class="el" href="_2test_2pcm__min_8c-example.html#a1">/test/pcm_min.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaca6314f46f54a0b62536c403bbb62601"></a><!-- doxytag: member="pcm.h::snd_pcm_type_t" ref="gaca6314f46f54a0b62536c403bbb62601" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef enum <a class="el" href="group___p_c_m.html#ga060d5b81f2fc8efcc35ff3e1de6e9fa4">_snd_pcm_type</a> <a class="el" href="group___p_c_m.html#gaca6314f46f54a0b62536c403bbb62601">snd_pcm_type_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM type </p>

</div>
</div>
<a class="anchor" id="gab01fcfe9b97382a8d3f2027c664b8b8a"></a><!-- doxytag: member="pcm.h::snd_pcm_uframes_t" ref="gab01fcfe9b97382a8d3f2027c664b8b8a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef unsigned long <a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Unsigned frames quantity </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a12">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a4">/test/pcm.c</a>.</dd>
</dl>
</div>
</div>
<hr/><h2>Enumeration Type Documentation</h2>
<a class="anchor" id="ga060d5b81f2fc8efcc35ff3e1de6e9fa4"></a><!-- doxytag: member="pcm.h::_snd_pcm_type" ref="ga060d5b81f2fc8efcc35ff3e1de6e9fa4" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group___p_c_m.html#ga060d5b81f2fc8efcc35ff3e1de6e9fa4">_snd_pcm_type</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM type </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a09891cdb0b9282c37c41941b922b12c4"></a><!-- doxytag: member="SND_PCM_TYPE_HW" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a09891cdb0b9282c37c41941b922b12c4" args="" -->SND_PCM_TYPE_HW</em>&nbsp;</td><td>
<p>Kernel level PCM </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a2e332e4a85ab27030c8504a2becc02ee"></a><!-- doxytag: member="SND_PCM_TYPE_HOOKS" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a2e332e4a85ab27030c8504a2becc02ee" args="" -->SND_PCM_TYPE_HOOKS</em>&nbsp;</td><td>
<p>Hooked PCM </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a568ddf1cfbafe64782e3073b235ff5f3"></a><!-- doxytag: member="SND_PCM_TYPE_MULTI" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a568ddf1cfbafe64782e3073b235ff5f3" args="" -->SND_PCM_TYPE_MULTI</em>&nbsp;</td><td>
<p>One or more linked PCM with exclusive access to selected channels </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a583a91928c037820337cd8915cd85e02"></a><!-- doxytag: member="SND_PCM_TYPE_FILE" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a583a91928c037820337cd8915cd85e02" args="" -->SND_PCM_TYPE_FILE</em>&nbsp;</td><td>
<p>File writing plugin </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a1fd5236858488b6bb1c565ae83ba451d"></a><!-- doxytag: member="SND_PCM_TYPE_NULL" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a1fd5236858488b6bb1c565ae83ba451d" args="" -->SND_PCM_TYPE_NULL</em>&nbsp;</td><td>
<p>Null endpoint PCM </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a7af39420542c41f72a62551b2ae8db6d"></a><!-- doxytag: member="SND_PCM_TYPE_SHM" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a7af39420542c41f72a62551b2ae8db6d" args="" -->SND_PCM_TYPE_SHM</em>&nbsp;</td><td>
<p>Shared memory client PCM </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a3b07a18a1c2cadfc4e2eec2d62aef57e"></a><!-- doxytag: member="SND_PCM_TYPE_INET" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a3b07a18a1c2cadfc4e2eec2d62aef57e" args="" -->SND_PCM_TYPE_INET</em>&nbsp;</td><td>
<p>INET client PCM (not yet implemented) </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4af09844304be19ee3a81ba5e2165e00bc"></a><!-- doxytag: member="SND_PCM_TYPE_COPY" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4af09844304be19ee3a81ba5e2165e00bc" args="" -->SND_PCM_TYPE_COPY</em>&nbsp;</td><td>
<p>Copying plugin </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a3a89f56e7151dba7ba93e392fe709222"></a><!-- doxytag: member="SND_PCM_TYPE_LINEAR" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a3a89f56e7151dba7ba93e392fe709222" args="" -->SND_PCM_TYPE_LINEAR</em>&nbsp;</td><td>
<p>Linear format conversion PCM </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4aaefed6aee6ad9570fa3fdd5943702e43"></a><!-- doxytag: member="SND_PCM_TYPE_ALAW" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4aaefed6aee6ad9570fa3fdd5943702e43" args="" -->SND_PCM_TYPE_ALAW</em>&nbsp;</td><td>
<p>A-Law format conversion PCM </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a225a22f28b83348c81b9962b53f68419"></a><!-- doxytag: member="SND_PCM_TYPE_MULAW" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a225a22f28b83348c81b9962b53f68419" args="" -->SND_PCM_TYPE_MULAW</em>&nbsp;</td><td>
<p>Mu-Law format conversion PCM </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a8b358976321af44871bfd4f5743eb7f0"></a><!-- doxytag: member="SND_PCM_TYPE_ADPCM" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a8b358976321af44871bfd4f5743eb7f0" args="" -->SND_PCM_TYPE_ADPCM</em>&nbsp;</td><td>
<p>IMA-ADPCM format conversion PCM </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4ac551ab5a7b8c32d4a79a9f605287c4b0"></a><!-- doxytag: member="SND_PCM_TYPE_RATE" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4ac551ab5a7b8c32d4a79a9f605287c4b0" args="" -->SND_PCM_TYPE_RATE</em>&nbsp;</td><td>
<p>Rate conversion PCM </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a25b8c982e260c67fdf3da22a7d68bbb0"></a><!-- doxytag: member="SND_PCM_TYPE_ROUTE" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a25b8c982e260c67fdf3da22a7d68bbb0" args="" -->SND_PCM_TYPE_ROUTE</em>&nbsp;</td><td>
<p>Attenuated static route PCM </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4af03892219cb4ca4f07025b7a67d3890e"></a><!-- doxytag: member="SND_PCM_TYPE_PLUG" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4af03892219cb4ca4f07025b7a67d3890e" args="" -->SND_PCM_TYPE_PLUG</em>&nbsp;</td><td>
<p>Format adjusted PCM </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a5f90c13d40f32cdbaa24304f1f4aa260"></a><!-- doxytag: member="SND_PCM_TYPE_SHARE" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a5f90c13d40f32cdbaa24304f1f4aa260" args="" -->SND_PCM_TYPE_SHARE</em>&nbsp;</td><td>
<p>Sharing PCM </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a415afb5482d35b38837035a6dd82b39d"></a><!-- doxytag: member="SND_PCM_TYPE_METER" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a415afb5482d35b38837035a6dd82b39d" args="" -->SND_PCM_TYPE_METER</em>&nbsp;</td><td>
<p>Meter plugin </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a9d46de594d5885faa0fc4c3075eade76"></a><!-- doxytag: member="SND_PCM_TYPE_MIX" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a9d46de594d5885faa0fc4c3075eade76" args="" -->SND_PCM_TYPE_MIX</em>&nbsp;</td><td>
<p>Mixing PCM </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4ac48d9a315b2094989b303b62939f4d12"></a><!-- doxytag: member="SND_PCM_TYPE_DROUTE" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4ac48d9a315b2094989b303b62939f4d12" args="" -->SND_PCM_TYPE_DROUTE</em>&nbsp;</td><td>
<p>Attenuated dynamic route PCM (not yet implemented) </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a819e90fe76ad9b1f8615cdaa76d47606"></a><!-- doxytag: member="SND_PCM_TYPE_LBSERVER" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a819e90fe76ad9b1f8615cdaa76d47606" args="" -->SND_PCM_TYPE_LBSERVER</em>&nbsp;</td><td>
<p>Loopback server plugin (not yet implemented) </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4af99ee7d59e1195c15440b7688e36b4e2"></a><!-- doxytag: member="SND_PCM_TYPE_LINEAR_FLOAT" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4af99ee7d59e1195c15440b7688e36b4e2" args="" -->SND_PCM_TYPE_LINEAR_FLOAT</em>&nbsp;</td><td>
<p>Linear Integer &lt;-&gt; Linear Float format conversion PCM </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4af3096430cd38726e8dd3751c611af13e"></a><!-- doxytag: member="SND_PCM_TYPE_LADSPA" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4af3096430cd38726e8dd3751c611af13e" args="" -->SND_PCM_TYPE_LADSPA</em>&nbsp;</td><td>
<p>LADSPA integration plugin </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a1345bfdf8c4052ec4eaea99ddca5b25e"></a><!-- doxytag: member="SND_PCM_TYPE_DMIX" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a1345bfdf8c4052ec4eaea99ddca5b25e" args="" -->SND_PCM_TYPE_DMIX</em>&nbsp;</td><td>
<p>Direct Mixing plugin </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a3c059ea48c0ecb784421997aa302ff44"></a><!-- doxytag: member="SND_PCM_TYPE_JACK" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a3c059ea48c0ecb784421997aa302ff44" args="" -->SND_PCM_TYPE_JACK</em>&nbsp;</td><td>
<p>Jack Audio Connection Kit plugin </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a4fd7bc5c326b81d47841dc3133c6a154"></a><!-- doxytag: member="SND_PCM_TYPE_DSNOOP" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a4fd7bc5c326b81d47841dc3133c6a154" args="" -->SND_PCM_TYPE_DSNOOP</em>&nbsp;</td><td>
<p>Direct Snooping plugin </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a02bca0b5efdbdfedb0983dacac599977"></a><!-- doxytag: member="SND_PCM_TYPE_DSHARE" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a02bca0b5efdbdfedb0983dacac599977" args="" -->SND_PCM_TYPE_DSHARE</em>&nbsp;</td><td>
<p>Direct Sharing plugin </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4aa94a5d305b7803cf7ccda2ca0099a954"></a><!-- doxytag: member="SND_PCM_TYPE_IEC958" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4aa94a5d305b7803cf7ccda2ca0099a954" args="" -->SND_PCM_TYPE_IEC958</em>&nbsp;</td><td>
<p>IEC958 subframe plugin </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a80dcbde2dd52a423f8c5b055aacaa17d"></a><!-- doxytag: member="SND_PCM_TYPE_SOFTVOL" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a80dcbde2dd52a423f8c5b055aacaa17d" args="" -->SND_PCM_TYPE_SOFTVOL</em>&nbsp;</td><td>
<p>Soft volume plugin </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4ad4b0a23cef67fe330cce313c4f9e242a"></a><!-- doxytag: member="SND_PCM_TYPE_IOPLUG" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4ad4b0a23cef67fe330cce313c4f9e242a" args="" -->SND_PCM_TYPE_IOPLUG</em>&nbsp;</td><td>
<p>External I/O plugin </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a876553cf6a0650a8adcb17c3e768a8da"></a><!-- doxytag: member="SND_PCM_TYPE_EXTPLUG" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4a876553cf6a0650a8adcb17c3e768a8da" args="" -->SND_PCM_TYPE_EXTPLUG</em>&nbsp;</td><td>
<p>External filter plugin </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga060d5b81f2fc8efcc35ff3e1de6e9fa4aa426bf738261ee3cd1ca3a25d8cbed12"></a><!-- doxytag: member="SND_PCM_TYPE_MMAP_EMUL" ref="gga060d5b81f2fc8efcc35ff3e1de6e9fa4aa426bf738261ee3cd1ca3a25d8cbed12" args="" -->SND_PCM_TYPE_MMAP_EMUL</em>&nbsp;</td><td>
<p>Mmap-emulation plugin </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<a class="anchor" id="ga661221ba5e8f1d6eaf4ab8e2da57cc1a"></a><!-- doxytag: member="pcm.h::snd_pcm_access_t" ref="ga661221ba5e8f1d6eaf4ab8e2da57cc1a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group___p_c_m.html#ga661221ba5e8f1d6eaf4ab8e2da57cc1a">snd_pcm_access_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM access type </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="gga661221ba5e8f1d6eaf4ab8e2da57cc1aa90a5dea527c5ae9a53f1448beb2dee6f"></a><!-- doxytag: member="SND_PCM_ACCESS_MMAP_INTERLEAVED" ref="gga661221ba5e8f1d6eaf4ab8e2da57cc1aa90a5dea527c5ae9a53f1448beb2dee6f" args="" -->SND_PCM_ACCESS_MMAP_INTERLEAVED</em>&nbsp;</td><td>
<p>mmap access with simple interleaved channels </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga661221ba5e8f1d6eaf4ab8e2da57cc1aa7de225785e05dd1d538203c5ece9036e"></a><!-- doxytag: member="SND_PCM_ACCESS_MMAP_NONINTERLEAVED" ref="gga661221ba5e8f1d6eaf4ab8e2da57cc1aa7de225785e05dd1d538203c5ece9036e" args="" -->SND_PCM_ACCESS_MMAP_NONINTERLEAVED</em>&nbsp;</td><td>
<p>mmap access with simple non interleaved channels </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga661221ba5e8f1d6eaf4ab8e2da57cc1aa26a4f161364cb539df4de5eeb9949121"></a><!-- doxytag: member="SND_PCM_ACCESS_MMAP_COMPLEX" ref="gga661221ba5e8f1d6eaf4ab8e2da57cc1aa26a4f161364cb539df4de5eeb9949121" args="" -->SND_PCM_ACCESS_MMAP_COMPLEX</em>&nbsp;</td><td>
<p>mmap access with complex placement </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga661221ba5e8f1d6eaf4ab8e2da57cc1aa72a970ed6e676ab0fd9f3c3d36737e0a"></a><!-- doxytag: member="SND_PCM_ACCESS_RW_INTERLEAVED" ref="gga661221ba5e8f1d6eaf4ab8e2da57cc1aa72a970ed6e676ab0fd9f3c3d36737e0a" args="" -->SND_PCM_ACCESS_RW_INTERLEAVED</em>&nbsp;</td><td>
<p>snd_pcm_readi/snd_pcm_writei access </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga661221ba5e8f1d6eaf4ab8e2da57cc1aae7ab128d10c32667f396933190435071"></a><!-- doxytag: member="SND_PCM_ACCESS_RW_NONINTERLEAVED" ref="gga661221ba5e8f1d6eaf4ab8e2da57cc1aae7ab128d10c32667f396933190435071" args="" -->SND_PCM_ACCESS_RW_NONINTERLEAVED</em>&nbsp;</td><td>
<p>snd_pcm_readn/snd_pcm_writen access </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<a class="anchor" id="gad0e95dc8a590d8f9915fec237d7a28a5"></a><!-- doxytag: member="pcm.h::snd_pcm_class_t" ref="gad0e95dc8a590d8f9915fec237d7a28a5" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group___p_c_m.html#gad0e95dc8a590d8f9915fec237d7a28a5">snd_pcm_class_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM class </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="ggad0e95dc8a590d8f9915fec237d7a28a5a3899ef7b0fa4a9717abe5587e9110514"></a><!-- doxytag: member="SND_PCM_CLASS_GENERIC" ref="ggad0e95dc8a590d8f9915fec237d7a28a5a3899ef7b0fa4a9717abe5587e9110514" args="" -->SND_PCM_CLASS_GENERIC</em>&nbsp;</td><td>
<p>standard device </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggad0e95dc8a590d8f9915fec237d7a28a5a223f6ffeb72c72144f4f680998fbedb3"></a><!-- doxytag: member="SND_PCM_CLASS_MULTI" ref="ggad0e95dc8a590d8f9915fec237d7a28a5a223f6ffeb72c72144f4f680998fbedb3" args="" -->SND_PCM_CLASS_MULTI</em>&nbsp;</td><td>
<p>multichannel device </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggad0e95dc8a590d8f9915fec237d7a28a5a79cdb236d774a3a5e17cf4929a16936b"></a><!-- doxytag: member="SND_PCM_CLASS_MODEM" ref="ggad0e95dc8a590d8f9915fec237d7a28a5a79cdb236d774a3a5e17cf4929a16936b" args="" -->SND_PCM_CLASS_MODEM</em>&nbsp;</td><td>
<p>software modem device </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggad0e95dc8a590d8f9915fec237d7a28a5a69f4d2c8aa3195c6fc140b6d4c2f25ea"></a><!-- doxytag: member="SND_PCM_CLASS_DIGITIZER" ref="ggad0e95dc8a590d8f9915fec237d7a28a5a69f4d2c8aa3195c6fc140b6d4c2f25ea" args="" -->SND_PCM_CLASS_DIGITIZER</em>&nbsp;</td><td>
<p>digitizer device </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<a class="anchor" id="gaa14b7f26877a812acbb39811364177f8"></a><!-- doxytag: member="pcm.h::snd_pcm_format_t" ref="gaa14b7f26877a812acbb39811364177f8" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group___p_c_m.html#gaa14b7f26877a812acbb39811364177f8">snd_pcm_format_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM sample format </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8ab1e118ecdccf628639b5c85bc3a48999"></a><!-- doxytag: member="SND_PCM_FORMAT_UNKNOWN" ref="ggaa14b7f26877a812acbb39811364177f8ab1e118ecdccf628639b5c85bc3a48999" args="" -->SND_PCM_FORMAT_UNKNOWN</em>&nbsp;</td><td>
<p>Unknown </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a5b78bf93eaed5f52cf16c582f04aa7f1"></a><!-- doxytag: member="SND_PCM_FORMAT_S8" ref="ggaa14b7f26877a812acbb39811364177f8a5b78bf93eaed5f52cf16c582f04aa7f1" args="" -->SND_PCM_FORMAT_S8</em>&nbsp;</td><td>
<p>Signed 8 bit </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8ad5856f97113926836a7c6651cb8864a3"></a><!-- doxytag: member="SND_PCM_FORMAT_U8" ref="ggaa14b7f26877a812acbb39811364177f8ad5856f97113926836a7c6651cb8864a3" args="" -->SND_PCM_FORMAT_U8</em>&nbsp;</td><td>
<p>Unsigned 8 bit </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a8b66a29293c62df9d1678c609fab76c0"></a><!-- doxytag: member="SND_PCM_FORMAT_S16_LE" ref="ggaa14b7f26877a812acbb39811364177f8a8b66a29293c62df9d1678c609fab76c0" args="" -->SND_PCM_FORMAT_S16_LE</em>&nbsp;</td><td>
<p>Signed 16 bit Little Endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a9f6783e14d7cbb5023c86427263b0d50"></a><!-- doxytag: member="SND_PCM_FORMAT_S16_BE" ref="ggaa14b7f26877a812acbb39811364177f8a9f6783e14d7cbb5023c86427263b0d50" args="" -->SND_PCM_FORMAT_S16_BE</em>&nbsp;</td><td>
<p>Signed 16 bit Big Endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8ab2f9619da5d5062e612b2ee0929e8164"></a><!-- doxytag: member="SND_PCM_FORMAT_U16_LE" ref="ggaa14b7f26877a812acbb39811364177f8ab2f9619da5d5062e612b2ee0929e8164" args="" -->SND_PCM_FORMAT_U16_LE</em>&nbsp;</td><td>
<p>Unsigned 16 bit Little Endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8aecc04aa997503c030a47fe5798514180"></a><!-- doxytag: member="SND_PCM_FORMAT_U16_BE" ref="ggaa14b7f26877a812acbb39811364177f8aecc04aa997503c030a47fe5798514180" args="" -->SND_PCM_FORMAT_U16_BE</em>&nbsp;</td><td>
<p>Unsigned 16 bit Big Endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a04b3c3b9ad0106c9619a28b753d8fd18"></a><!-- doxytag: member="SND_PCM_FORMAT_S24_LE" ref="ggaa14b7f26877a812acbb39811364177f8a04b3c3b9ad0106c9619a28b753d8fd18" args="" -->SND_PCM_FORMAT_S24_LE</em>&nbsp;</td><td>
<p>Signed 24 bit Little Endian using low three bytes in 32-bit word </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a226d2f6a6bc53a6f75786ca8fad3fc65"></a><!-- doxytag: member="SND_PCM_FORMAT_S24_BE" ref="ggaa14b7f26877a812acbb39811364177f8a226d2f6a6bc53a6f75786ca8fad3fc65" args="" -->SND_PCM_FORMAT_S24_BE</em>&nbsp;</td><td>
<p>Signed 24 bit Big Endian using low three bytes in 32-bit word </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a33b2fb89235eebda4e6820d4a80a4c29"></a><!-- doxytag: member="SND_PCM_FORMAT_U24_LE" ref="ggaa14b7f26877a812acbb39811364177f8a33b2fb89235eebda4e6820d4a80a4c29" args="" -->SND_PCM_FORMAT_U24_LE</em>&nbsp;</td><td>
<p>Unsigned 24 bit Little Endian using low three bytes in 32-bit word </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a2c2effcf940fdee8eddf43a62360f7c4"></a><!-- doxytag: member="SND_PCM_FORMAT_U24_BE" ref="ggaa14b7f26877a812acbb39811364177f8a2c2effcf940fdee8eddf43a62360f7c4" args="" -->SND_PCM_FORMAT_U24_BE</em>&nbsp;</td><td>
<p>Unsigned 24 bit Big Endian using low three bytes in 32-bit word </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8aa99dcea38d9cd8ea3b8a6e9ea85bcc52"></a><!-- doxytag: member="SND_PCM_FORMAT_S32_LE" ref="ggaa14b7f26877a812acbb39811364177f8aa99dcea38d9cd8ea3b8a6e9ea85bcc52" args="" -->SND_PCM_FORMAT_S32_LE</em>&nbsp;</td><td>
<p>Signed 32 bit Little Endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8ad30a0d4bc893eba11d08d72b3916ca2a"></a><!-- doxytag: member="SND_PCM_FORMAT_S32_BE" ref="ggaa14b7f26877a812acbb39811364177f8ad30a0d4bc893eba11d08d72b3916ca2a" args="" -->SND_PCM_FORMAT_S32_BE</em>&nbsp;</td><td>
<p>Signed 32 bit Big Endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a4c9ee7d82e322009e85f7cd739bbb692"></a><!-- doxytag: member="SND_PCM_FORMAT_U32_LE" ref="ggaa14b7f26877a812acbb39811364177f8a4c9ee7d82e322009e85f7cd739bbb692" args="" -->SND_PCM_FORMAT_U32_LE</em>&nbsp;</td><td>
<p>Unsigned 32 bit Little Endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8ac4d69a20b22df53a63ad8589bbdf6f93"></a><!-- doxytag: member="SND_PCM_FORMAT_U32_BE" ref="ggaa14b7f26877a812acbb39811364177f8ac4d69a20b22df53a63ad8589bbdf6f93" args="" -->SND_PCM_FORMAT_U32_BE</em>&nbsp;</td><td>
<p>Unsigned 32 bit Big Endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a083f32474a84d344e0da496470085c8f"></a><!-- doxytag: member="SND_PCM_FORMAT_FLOAT_LE" ref="ggaa14b7f26877a812acbb39811364177f8a083f32474a84d344e0da496470085c8f" args="" -->SND_PCM_FORMAT_FLOAT_LE</em>&nbsp;</td><td>
<p>Float 32 bit Little Endian, Range -1.0 to 1.0 </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8ab24eac408b0d2ae6b5f68ed3a7cd2d75"></a><!-- doxytag: member="SND_PCM_FORMAT_FLOAT_BE" ref="ggaa14b7f26877a812acbb39811364177f8ab24eac408b0d2ae6b5f68ed3a7cd2d75" args="" -->SND_PCM_FORMAT_FLOAT_BE</em>&nbsp;</td><td>
<p>Float 32 bit Big Endian, Range -1.0 to 1.0 </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a8e6d82461abbb8be043f8addd23f76c0"></a><!-- doxytag: member="SND_PCM_FORMAT_FLOAT64_LE" ref="ggaa14b7f26877a812acbb39811364177f8a8e6d82461abbb8be043f8addd23f76c0" args="" -->SND_PCM_FORMAT_FLOAT64_LE</em>&nbsp;</td><td>
<p>Float 64 bit Little Endian, Range -1.0 to 1.0 </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a9215cd0ab46e6db8668d8bfbb3cd76a6"></a><!-- doxytag: member="SND_PCM_FORMAT_FLOAT64_BE" ref="ggaa14b7f26877a812acbb39811364177f8a9215cd0ab46e6db8668d8bfbb3cd76a6" args="" -->SND_PCM_FORMAT_FLOAT64_BE</em>&nbsp;</td><td>
<p>Float 64 bit Big Endian, Range -1.0 to 1.0 </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a4a51dcbdb981d0357447115d7ccf3b1f"></a><!-- doxytag: member="SND_PCM_FORMAT_IEC958_SUBFRAME_LE" ref="ggaa14b7f26877a812acbb39811364177f8a4a51dcbdb981d0357447115d7ccf3b1f" args="" -->SND_PCM_FORMAT_IEC958_SUBFRAME_LE</em>&nbsp;</td><td>
<p>IEC-958 Little Endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a347bac4a7d9ac64e3019a2f3238e09fb"></a><!-- doxytag: member="SND_PCM_FORMAT_IEC958_SUBFRAME_BE" ref="ggaa14b7f26877a812acbb39811364177f8a347bac4a7d9ac64e3019a2f3238e09fb" args="" -->SND_PCM_FORMAT_IEC958_SUBFRAME_BE</em>&nbsp;</td><td>
<p>IEC-958 Big Endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a1f71fdf666f5dea8b84d627ba84a9ea5"></a><!-- doxytag: member="SND_PCM_FORMAT_MU_LAW" ref="ggaa14b7f26877a812acbb39811364177f8a1f71fdf666f5dea8b84d627ba84a9ea5" args="" -->SND_PCM_FORMAT_MU_LAW</em>&nbsp;</td><td>
<p>Mu-Law </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a9d1017ad6b2f73e97f20cf933a5d8a7e"></a><!-- doxytag: member="SND_PCM_FORMAT_A_LAW" ref="ggaa14b7f26877a812acbb39811364177f8a9d1017ad6b2f73e97f20cf933a5d8a7e" args="" -->SND_PCM_FORMAT_A_LAW</em>&nbsp;</td><td>
<p>A-Law </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a984ec5c790504560bfc7564cfeaddc23"></a><!-- doxytag: member="SND_PCM_FORMAT_IMA_ADPCM" ref="ggaa14b7f26877a812acbb39811364177f8a984ec5c790504560bfc7564cfeaddc23" args="" -->SND_PCM_FORMAT_IMA_ADPCM</em>&nbsp;</td><td>
<p>Ima-ADPCM </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a3705d4bd3266f3a68c276da9e7a65660"></a><!-- doxytag: member="SND_PCM_FORMAT_MPEG" ref="ggaa14b7f26877a812acbb39811364177f8a3705d4bd3266f3a68c276da9e7a65660" args="" -->SND_PCM_FORMAT_MPEG</em>&nbsp;</td><td>
<p>MPEG </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a32ec1ed1e6bc5eafff1547e1401f679c"></a><!-- doxytag: member="SND_PCM_FORMAT_GSM" ref="ggaa14b7f26877a812acbb39811364177f8a32ec1ed1e6bc5eafff1547e1401f679c" args="" -->SND_PCM_FORMAT_GSM</em>&nbsp;</td><td>
<p>GSM </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a770a94546bff2f0d07e32dd22c5f9a2c"></a><!-- doxytag: member="SND_PCM_FORMAT_SPECIAL" ref="ggaa14b7f26877a812acbb39811364177f8a770a94546bff2f0d07e32dd22c5f9a2c" args="" -->SND_PCM_FORMAT_SPECIAL</em>&nbsp;</td><td>
<p>Special </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a1fd8c22f3dd45fc1b8e41b0b5e6107ce"></a><!-- doxytag: member="SND_PCM_FORMAT_S24_3LE" ref="ggaa14b7f26877a812acbb39811364177f8a1fd8c22f3dd45fc1b8e41b0b5e6107ce" args="" -->SND_PCM_FORMAT_S24_3LE</em>&nbsp;</td><td>
<p>Signed 24bit Little Endian in 3bytes format </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a531ede921f12bd96e02499f962fdb7ea"></a><!-- doxytag: member="SND_PCM_FORMAT_S24_3BE" ref="ggaa14b7f26877a812acbb39811364177f8a531ede921f12bd96e02499f962fdb7ea" args="" -->SND_PCM_FORMAT_S24_3BE</em>&nbsp;</td><td>
<p>Signed 24bit Big Endian in 3bytes format </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a76ef58eb516389000bdc678ca69515c3"></a><!-- doxytag: member="SND_PCM_FORMAT_U24_3LE" ref="ggaa14b7f26877a812acbb39811364177f8a76ef58eb516389000bdc678ca69515c3" args="" -->SND_PCM_FORMAT_U24_3LE</em>&nbsp;</td><td>
<p>Unsigned 24bit Little Endian in 3bytes format </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a26318cc44ae67775ccedc1f5ba07d925"></a><!-- doxytag: member="SND_PCM_FORMAT_U24_3BE" ref="ggaa14b7f26877a812acbb39811364177f8a26318cc44ae67775ccedc1f5ba07d925" args="" -->SND_PCM_FORMAT_U24_3BE</em>&nbsp;</td><td>
<p>Unsigned 24bit Big Endian in 3bytes format </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a8f23da6a6564831a09f079f4d0e7fd6c"></a><!-- doxytag: member="SND_PCM_FORMAT_S20_3LE" ref="ggaa14b7f26877a812acbb39811364177f8a8f23da6a6564831a09f079f4d0e7fd6c" args="" -->SND_PCM_FORMAT_S20_3LE</em>&nbsp;</td><td>
<p>Signed 20bit Little Endian in 3bytes format </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a178dd8e9b92a0dbe80ae837979720fa7"></a><!-- doxytag: member="SND_PCM_FORMAT_S20_3BE" ref="ggaa14b7f26877a812acbb39811364177f8a178dd8e9b92a0dbe80ae837979720fa7" args="" -->SND_PCM_FORMAT_S20_3BE</em>&nbsp;</td><td>
<p>Signed 20bit Big Endian in 3bytes format </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a15eb6dc96e7940b06b2b40fd483073a3"></a><!-- doxytag: member="SND_PCM_FORMAT_U20_3LE" ref="ggaa14b7f26877a812acbb39811364177f8a15eb6dc96e7940b06b2b40fd483073a3" args="" -->SND_PCM_FORMAT_U20_3LE</em>&nbsp;</td><td>
<p>Unsigned 20bit Little Endian in 3bytes format </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a8d4e75049c83e0b26493d4d149de5b22"></a><!-- doxytag: member="SND_PCM_FORMAT_U20_3BE" ref="ggaa14b7f26877a812acbb39811364177f8a8d4e75049c83e0b26493d4d149de5b22" args="" -->SND_PCM_FORMAT_U20_3BE</em>&nbsp;</td><td>
<p>Unsigned 20bit Big Endian in 3bytes format </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a89ba6879c39fec5ee33f2b760ebd7053"></a><!-- doxytag: member="SND_PCM_FORMAT_S18_3LE" ref="ggaa14b7f26877a812acbb39811364177f8a89ba6879c39fec5ee33f2b760ebd7053" args="" -->SND_PCM_FORMAT_S18_3LE</em>&nbsp;</td><td>
<p>Signed 18bit Little Endian in 3bytes format </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8ad49193efd29a9f7085ddcd08e3b33eba"></a><!-- doxytag: member="SND_PCM_FORMAT_S18_3BE" ref="ggaa14b7f26877a812acbb39811364177f8ad49193efd29a9f7085ddcd08e3b33eba" args="" -->SND_PCM_FORMAT_S18_3BE</em>&nbsp;</td><td>
<p>Signed 18bit Big Endian in 3bytes format </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a3ab354cc702a7b9d651aec726bb8a68c"></a><!-- doxytag: member="SND_PCM_FORMAT_U18_3LE" ref="ggaa14b7f26877a812acbb39811364177f8a3ab354cc702a7b9d651aec726bb8a68c" args="" -->SND_PCM_FORMAT_U18_3LE</em>&nbsp;</td><td>
<p>Unsigned 18bit Little Endian in 3bytes format </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a0bab067dee022bd684b1015762a44663"></a><!-- doxytag: member="SND_PCM_FORMAT_U18_3BE" ref="ggaa14b7f26877a812acbb39811364177f8a0bab067dee022bd684b1015762a44663" args="" -->SND_PCM_FORMAT_U18_3BE</em>&nbsp;</td><td>
<p>Unsigned 18bit Big Endian in 3bytes format </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8aac4470b6be81c22af0cfe528bee4a474"></a><!-- doxytag: member="SND_PCM_FORMAT_S16" ref="ggaa14b7f26877a812acbb39811364177f8aac4470b6be81c22af0cfe528bee4a474" args="" -->SND_PCM_FORMAT_S16</em>&nbsp;</td><td>
<p>Signed 16 bit CPU endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a032b33ad0fe643a3177be26148f026f1"></a><!-- doxytag: member="SND_PCM_FORMAT_U16" ref="ggaa14b7f26877a812acbb39811364177f8a032b33ad0fe643a3177be26148f026f1" args="" -->SND_PCM_FORMAT_U16</em>&nbsp;</td><td>
<p>Unsigned 16 bit CPU endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8ad2eb0073f6d7ba800695c088b32956a5"></a><!-- doxytag: member="SND_PCM_FORMAT_S24" ref="ggaa14b7f26877a812acbb39811364177f8ad2eb0073f6d7ba800695c088b32956a5" args="" -->SND_PCM_FORMAT_S24</em>&nbsp;</td><td>
<p>Signed 24 bit CPU endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a036c86abc5151b9a1f19476d34120994"></a><!-- doxytag: member="SND_PCM_FORMAT_U24" ref="ggaa14b7f26877a812acbb39811364177f8a036c86abc5151b9a1f19476d34120994" args="" -->SND_PCM_FORMAT_U24</em>&nbsp;</td><td>
<p>Unsigned 24 bit CPU endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8abccf973f2b6eba3481949a7b5b04f4ab"></a><!-- doxytag: member="SND_PCM_FORMAT_S32" ref="ggaa14b7f26877a812acbb39811364177f8abccf973f2b6eba3481949a7b5b04f4ab" args="" -->SND_PCM_FORMAT_S32</em>&nbsp;</td><td>
<p>Signed 32 bit CPU endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8abbdd76fc846d3a68c19727a44bd38336"></a><!-- doxytag: member="SND_PCM_FORMAT_U32" ref="ggaa14b7f26877a812acbb39811364177f8abbdd76fc846d3a68c19727a44bd38336" args="" -->SND_PCM_FORMAT_U32</em>&nbsp;</td><td>
<p>Unsigned 32 bit CPU endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a7d9fd83c6ff5be7a9cde4b0673b64bf0"></a><!-- doxytag: member="SND_PCM_FORMAT_FLOAT" ref="ggaa14b7f26877a812acbb39811364177f8a7d9fd83c6ff5be7a9cde4b0673b64bf0" args="" -->SND_PCM_FORMAT_FLOAT</em>&nbsp;</td><td>
<p>Float 32 bit CPU endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a0ecea6572fd04ef25ae24cde617eaa9a"></a><!-- doxytag: member="SND_PCM_FORMAT_FLOAT64" ref="ggaa14b7f26877a812acbb39811364177f8a0ecea6572fd04ef25ae24cde617eaa9a" args="" -->SND_PCM_FORMAT_FLOAT64</em>&nbsp;</td><td>
<p>Float 64 bit CPU endian </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggaa14b7f26877a812acbb39811364177f8a7ecefcb13f1fbb3ffb24f9b6582d53cc"></a><!-- doxytag: member="SND_PCM_FORMAT_IEC958_SUBFRAME" ref="ggaa14b7f26877a812acbb39811364177f8a7ecefcb13f1fbb3ffb24f9b6582d53cc" args="" -->SND_PCM_FORMAT_IEC958_SUBFRAME</em>&nbsp;</td><td>
<p>IEC-958 CPU Endian </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<a class="anchor" id="ga0eae9150f4f207ed05cb629cc3a3673f"></a><!-- doxytag: member="pcm.h::snd_pcm_start_t" ref="ga0eae9150f4f207ed05cb629cc3a3673f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group___p_c_m.html#ga0eae9150f4f207ed05cb629cc3a3673f">snd_pcm_start_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM start mode </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="gga0eae9150f4f207ed05cb629cc3a3673fa1784d28a1a0b6d0dc9726e8093fef095"></a><!-- doxytag: member="SND_PCM_START_DATA" ref="gga0eae9150f4f207ed05cb629cc3a3673fa1784d28a1a0b6d0dc9726e8093fef095" args="" -->SND_PCM_START_DATA</em>&nbsp;</td><td>
<p>Automatic start on data read/write </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga0eae9150f4f207ed05cb629cc3a3673fa3f7514d50731fbec3bf3963f8f50e377"></a><!-- doxytag: member="SND_PCM_START_EXPLICIT" ref="gga0eae9150f4f207ed05cb629cc3a3673fa3f7514d50731fbec3bf3963f8f50e377" args="" -->SND_PCM_START_EXPLICIT</em>&nbsp;</td><td>
<p>Explicit start </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<a class="anchor" id="ga61ac499cb3701ce536d4d83725908860"></a><!-- doxytag: member="pcm.h::snd_pcm_state_t" ref="ga61ac499cb3701ce536d4d83725908860" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group___p_c_m.html#ga61ac499cb3701ce536d4d83725908860">snd_pcm_state_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM state </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="gga61ac499cb3701ce536d4d83725908860a56cf8033b50561b57437232e243f3007"></a><!-- doxytag: member="SND_PCM_STATE_OPEN" ref="gga61ac499cb3701ce536d4d83725908860a56cf8033b50561b57437232e243f3007" args="" -->SND_PCM_STATE_OPEN</em>&nbsp;</td><td>
<p>Open </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga61ac499cb3701ce536d4d83725908860a58d9a0501aa1b2bd2607e1084c335672"></a><!-- doxytag: member="SND_PCM_STATE_SETUP" ref="gga61ac499cb3701ce536d4d83725908860a58d9a0501aa1b2bd2607e1084c335672" args="" -->SND_PCM_STATE_SETUP</em>&nbsp;</td><td>
<p>Setup installed </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga61ac499cb3701ce536d4d83725908860a3eb4a3b75c7d2adb22f1829f3f738b27"></a><!-- doxytag: member="SND_PCM_STATE_PREPARED" ref="gga61ac499cb3701ce536d4d83725908860a3eb4a3b75c7d2adb22f1829f3f738b27" args="" -->SND_PCM_STATE_PREPARED</em>&nbsp;</td><td>
<p>Ready to start </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga61ac499cb3701ce536d4d83725908860a86f6fbc796881f19fde0e1957f878147"></a><!-- doxytag: member="SND_PCM_STATE_RUNNING" ref="gga61ac499cb3701ce536d4d83725908860a86f6fbc796881f19fde0e1957f878147" args="" -->SND_PCM_STATE_RUNNING</em>&nbsp;</td><td>
<p>Running </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga61ac499cb3701ce536d4d83725908860ab63b5b90201110cd586b686355fd5d83"></a><!-- doxytag: member="SND_PCM_STATE_XRUN" ref="gga61ac499cb3701ce536d4d83725908860ab63b5b90201110cd586b686355fd5d83" args="" -->SND_PCM_STATE_XRUN</em>&nbsp;</td><td>
<p>Stopped: underrun (playback) or overrun (capture) detected </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga61ac499cb3701ce536d4d83725908860a86f88c2a4c8eedb5c91f3b6cb4879cfe"></a><!-- doxytag: member="SND_PCM_STATE_DRAINING" ref="gga61ac499cb3701ce536d4d83725908860a86f88c2a4c8eedb5c91f3b6cb4879cfe" args="" -->SND_PCM_STATE_DRAINING</em>&nbsp;</td><td>
<p>Draining: running (playback) or stopped (capture) </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga61ac499cb3701ce536d4d83725908860a9fa0c5b43e5c924f87b50e22878a8952"></a><!-- doxytag: member="SND_PCM_STATE_PAUSED" ref="gga61ac499cb3701ce536d4d83725908860a9fa0c5b43e5c924f87b50e22878a8952" args="" -->SND_PCM_STATE_PAUSED</em>&nbsp;</td><td>
<p>Paused </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga61ac499cb3701ce536d4d83725908860a79a05b6b619f88e153d50d9daf2e84bf"></a><!-- doxytag: member="SND_PCM_STATE_SUSPENDED" ref="gga61ac499cb3701ce536d4d83725908860a79a05b6b619f88e153d50d9daf2e84bf" args="" -->SND_PCM_STATE_SUSPENDED</em>&nbsp;</td><td>
<p>Hardware is suspended </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga61ac499cb3701ce536d4d83725908860aa0cbad634a40383eed6059d1b49c215a"></a><!-- doxytag: member="SND_PCM_STATE_DISCONNECTED" ref="gga61ac499cb3701ce536d4d83725908860aa0cbad634a40383eed6059d1b49c215a" args="" -->SND_PCM_STATE_DISCONNECTED</em>&nbsp;</td><td>
<p>Hardware is disconnected </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<a class="anchor" id="gac23b43ff55add78638e503b9cc892c24"></a><!-- doxytag: member="pcm.h::snd_pcm_stream_t" ref="gac23b43ff55add78638e503b9cc892c24" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group___p_c_m.html#gac23b43ff55add78638e503b9cc892c24">snd_pcm_stream_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM stream (direction) </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="ggac23b43ff55add78638e503b9cc892c24a57a2b920dbc34173479fc9036cfc78a1"></a><!-- doxytag: member="SND_PCM_STREAM_PLAYBACK" ref="ggac23b43ff55add78638e503b9cc892c24a57a2b920dbc34173479fc9036cfc78a1" args="" -->SND_PCM_STREAM_PLAYBACK</em>&nbsp;</td><td>
<p>Playback stream </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="ggac23b43ff55add78638e503b9cc892c24af07834f756b4f95cb61987f4811073c4"></a><!-- doxytag: member="SND_PCM_STREAM_CAPTURE" ref="ggac23b43ff55add78638e503b9cc892c24af07834f756b4f95cb61987f4811073c4" args="" -->SND_PCM_STREAM_CAPTURE</em>&nbsp;</td><td>
<p>Capture stream </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<a class="anchor" id="ga6a164917c35e2216f6e76beff4e4d0cb"></a><!-- doxytag: member="pcm.h::snd_pcm_subclass_t" ref="ga6a164917c35e2216f6e76beff4e4d0cb" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group___p_c_m.html#ga6a164917c35e2216f6e76beff4e4d0cb">snd_pcm_subclass_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM subclass </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="gga6a164917c35e2216f6e76beff4e4d0cba79a61939325a37b0fdfcf6e9ac0ce572"></a><!-- doxytag: member="SND_PCM_SUBCLASS_GENERIC_MIX" ref="gga6a164917c35e2216f6e76beff4e4d0cba79a61939325a37b0fdfcf6e9ac0ce572" args="" -->SND_PCM_SUBCLASS_GENERIC_MIX</em>&nbsp;</td><td>
<p>subdevices are mixed together </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga6a164917c35e2216f6e76beff4e4d0cbaafd17e33fac6f3c2b7e9bb48473b8c54"></a><!-- doxytag: member="SND_PCM_SUBCLASS_MULTI_MIX" ref="gga6a164917c35e2216f6e76beff4e4d0cbaafd17e33fac6f3c2b7e9bb48473b8c54" args="" -->SND_PCM_SUBCLASS_MULTI_MIX</em>&nbsp;</td><td>
<p>multichannel subdevices are mixed together </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<a class="anchor" id="ga1e5fe73a6bdf881e2f91921d5e5327c7"></a><!-- doxytag: member="pcm.h::snd_pcm_subformat_t" ref="ga1e5fe73a6bdf881e2f91921d5e5327c7" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group___p_c_m.html#ga1e5fe73a6bdf881e2f91921d5e5327c7">snd_pcm_subformat_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM sample subformat </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="gga1e5fe73a6bdf881e2f91921d5e5327c7a09a538c9147dae5bb19df88198f0ebb8"></a><!-- doxytag: member="SND_PCM_SUBFORMAT_STD" ref="gga1e5fe73a6bdf881e2f91921d5e5327c7a09a538c9147dae5bb19df88198f0ebb8" args="" -->SND_PCM_SUBFORMAT_STD</em>&nbsp;</td><td>
<p>Standard </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<a class="anchor" id="ga695a9755880cf886c13d07938f92ea77"></a><!-- doxytag: member="pcm.h::snd_pcm_tstamp_t" ref="ga695a9755880cf886c13d07938f92ea77" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group___p_c_m.html#ga695a9755880cf886c13d07938f92ea77">snd_pcm_tstamp_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM timestamp mode </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="gga695a9755880cf886c13d07938f92ea77af49a1c378583854b22ed6f6490f3b1ee"></a><!-- doxytag: member="SND_PCM_TSTAMP_NONE" ref="gga695a9755880cf886c13d07938f92ea77af49a1c378583854b22ed6f6490f3b1ee" args="" -->SND_PCM_TSTAMP_NONE</em>&nbsp;</td><td>
<p>No timestamp </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga695a9755880cf886c13d07938f92ea77ac62f4ba2b203d59b8f11074fb12788ae"></a><!-- doxytag: member="SND_PCM_TSTAMP_ENABLE" ref="gga695a9755880cf886c13d07938f92ea77ac62f4ba2b203d59b8f11074fb12788ae" args="" -->SND_PCM_TSTAMP_ENABLE</em>&nbsp;</td><td>
<p>Update timestamp at every hardware position update </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga695a9755880cf886c13d07938f92ea77ab09196ab367636c4d365b5b6bcd391d8"></a><!-- doxytag: member="SND_PCM_TSTAMP_MMAP" ref="gga695a9755880cf886c13d07938f92ea77ab09196ab367636c4d365b5b6bcd391d8" args="" -->SND_PCM_TSTAMP_MMAP</em>&nbsp;</td><td>
<p>Equivalent with <a class="el" href="group___p_c_m.html#gga695a9755880cf886c13d07938f92ea77ac62f4ba2b203d59b8f11074fb12788ae">SND_PCM_TSTAMP_ENABLE</a>, just for compatibility with older versions </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<a class="anchor" id="ga67c10983b5cadd8b3eb3163489655784"></a><!-- doxytag: member="pcm.h::snd_pcm_xrun_t" ref="ga67c10983b5cadd8b3eb3163489655784" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group___p_c_m.html#ga67c10983b5cadd8b3eb3163489655784">snd_pcm_xrun_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>PCM xrun mode </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="gga67c10983b5cadd8b3eb3163489655784a2041251f57b2d807a87dbb33de4a0299"></a><!-- doxytag: member="SND_PCM_XRUN_NONE" ref="gga67c10983b5cadd8b3eb3163489655784a2041251f57b2d807a87dbb33de4a0299" args="" -->SND_PCM_XRUN_NONE</em>&nbsp;</td><td>
<p>Xrun detection disabled </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga67c10983b5cadd8b3eb3163489655784a79be5aacb29e5eb3cea538eb7a24c57c"></a><!-- doxytag: member="SND_PCM_XRUN_STOP" ref="gga67c10983b5cadd8b3eb3163489655784a79be5aacb29e5eb3cea538eb7a24c57c" args="" -->SND_PCM_XRUN_STOP</em>&nbsp;</td><td>
<p>Stop on xrun detection </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga5a0c0da6d0d35a3ac9f6a97567ac3b63"></a><!-- doxytag: member="pcm.h::snd_async_add_pcm_handler" ref="ga5a0c0da6d0d35a3ac9f6a97567ac3b63" args="(snd_async_handler_t **handler, snd_pcm_t *pcm, snd_async_callback_t callback, void *private_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_async_add_pcm_handler </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a> **&nbsp;</td>
          <td class="paramname"> <em>handler</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___global.html#gaa0501fb0c332e2009977bb29f194200b">snd_async_callback_t</a>&nbsp;</td>
          <td class="paramname"> <em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>private_data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Add an async handler for a PCM. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>handler</em>&nbsp;</td><td>Returned handler handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>callback</em>&nbsp;</td><td>Callback function </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>private_data</em>&nbsp;</td><td>Callback private data </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 otherwise a negative error code on failure</dd></dl>
<p>The asynchronous callback is called when period boundary elapses. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2pcm_8c-example.html#a47">/test/pcm.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gace4920d5943820c395dab8d9cd4fed0a"></a><!-- doxytag: member="pcm.h::snd_async_handler_get_pcm" ref="gace4920d5943820c395dab8d9cd4fed0a" args="(snd_async_handler_t *handler)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a>* snd_async_handler_get_pcm </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___global.html#ga8cd9a1d441e9219ca5f2ff04094c7c6d">snd_async_handler_t</a> *&nbsp;</td>
          <td class="paramname"> <em>handler</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return PCM handle related to an async handler. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>handler</em>&nbsp;</td><td>Async handler handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>PCM handle </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2pcm_8c-example.html#a44">/test/pcm.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga577b4d51e08d94930a05bbe73291ed2a"></a><!-- doxytag: member="pcm.h::snd_pcm_avail" ref="ga577b4d51e08d94930a05bbe73291ed2a" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a> snd_pcm_avail </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return number of frames ready to be read (capture) / written (playback). </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a positive number of frames ready otherwise a negative error code</dd></dl>
<p>On capture does all the actions needed to transport to application level all the ready frames across underlying layers.</p>
<p>The position is synced with hardware (driver) position in the sound ring buffer in this functions. </p>

</div>
</div>
<a class="anchor" id="ga170bc44da2607b5583cff5ab5a985d98"></a><!-- doxytag: member="pcm.h::snd_pcm_avail_delay" ref="ga170bc44da2607b5583cff5ab5a985d98" args="(snd_pcm_t *pcm, snd_pcm_sframes_t *availp, snd_pcm_sframes_t *delayp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_avail_delay </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a> *&nbsp;</td>
          <td class="paramname"> <em>availp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a> *&nbsp;</td>
          <td class="paramname"> <em>delayp</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Combine snd_pcm_avail and snd_pcm_delay functions. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>availp</em>&nbsp;</td><td>Number of available frames in the ring buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>delayp</em>&nbsp;</td><td>Total I/O latency in frames </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>zero on success otherwise a negative error code</dd></dl>
<p>The avail and delay values retuned are in sync. </p>

</div>
</div>
<a class="anchor" id="ga8bb836bd0c414b59789d51a5f5379c08"></a><!-- doxytag: member="pcm.h::snd_pcm_avail_update" ref="ga8bb836bd0c414b59789d51a5f5379c08" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a> snd_pcm_avail_update </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return number of frames ready to be read (capture) / written (playback). </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a positive number of frames ready otherwise a negative error code</dd></dl>
<p>On capture does all the actions needed to transport to application level all the ready frames across underlying layers.</p>
<p>The position is not synced with hardware (driver) position in the sound ring buffer in this function. This function is a light version of <a class="el" href="group___p_c_m.html#ga577b4d51e08d94930a05bbe73291ed2a" title="Return number of frames ready to be read (capture) / written (playback).">snd_pcm_avail()</a> .</p>
<p>Using this function is ideal after poll() or select() when audio file descriptor made the event and when application expects just period timing.</p>
<p>Also this function might be called after <a class="el" href="group___p_c_m.html#ga012e8b999070e72ab23514f25e7d6482" title="Obtain delay for a running PCM handle.">snd_pcm_delay()</a> or <a class="el" href="group___p_c_m.html#ga3b71a41f6b300bf63ad374013f19d8d7" title="(DEPRECATED) Synchronize stream position with hardware">snd_pcm_hwsync()</a> functions to move private ring buffer pointers in alsa-lib (the internal plugin chain). </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2pcm_8c-example.html#a46">/test/pcm.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga042aba7262a4cbb4d444b6fc08cb7124"></a><!-- doxytag: member="pcm.h::snd_pcm_close" ref="ga042aba7262a4cbb4d444b6fc08cb7124" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_close </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>close PCM handle </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
<p>Closes the specified PCM handle and frees all associated resources. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a55">/test/latency.c</a>, <a class="el" href="_2test_2pcm_8c-example.html#a66">/test/pcm.c</a>, and <a class="el" href="_2test_2pcm__min_8c-example.html#a11">/test/pcm_min.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga012e8b999070e72ab23514f25e7d6482"></a><!-- doxytag: member="pcm.h::snd_pcm_delay" ref="ga012e8b999070e72ab23514f25e7d6482" args="(snd_pcm_t *pcm, snd_pcm_sframes_t *delayp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_delay </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a> *&nbsp;</td>
          <td class="paramname"> <em>delayp</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Obtain delay for a running PCM handle. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>delayp</em>&nbsp;</td><td>Returned delay in frames </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
<p>For playback the delay is defined as the time that a frame that is written to the PCM stream shortly after this call will take to be actually audible. It is as such the overall latency from the write call to the final DAC.</p>
<p>For capture the delay is defined as the time that a frame that was digitized by the audio device takes until it can be read from the PCM stream shortly after this call returns. It is as such the overall latency from the initial ADC to the read call.</p>
<p>Please note that hence in case of a playback underrun this value will not necessarily got down to 0.</p>
<p>If the application is interested in the fill level of the playback buffer of the device, it should use <a class="el" href="group___p_c_m.html#ga577b4d51e08d94930a05bbe73291ed2a" title="Return number of frames ready to be read (capture) / written (playback).">snd_pcm_avail</a>*() functions. The value returned by that call is not directly related to the delay, since the latter might include some additional, fixed latencies the former does not.</p>
<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#ga8bb836bd0c414b59789d51a5f5379c08" title="Return number of frames ready to be read (capture) / written (playback).">snd_pcm_avail_update()</a> have to be called before any begin+commit operation. </p>

</div>
</div>
<a class="anchor" id="ga49afc5b8527f30c33fafa476533c9f86"></a><!-- doxytag: member="pcm.h::snd_pcm_drain" ref="ga49afc5b8527f30c33fafa476533c9f86" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_drain </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Stop a PCM preserving pending frames. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>-ESTRPIPE</em>&nbsp;</td><td>a suspend event occurred</td></tr>
  </table>
  </dd>
</dl>
<p>For playback wait for all pending frames to be played and then stop the PCM. For capture stop PCM permitting to retrieve residual frames.</p>
<p>For stopping the PCM stream immediately, use <a class="el" href="group___p_c_m.html#ga7000ca6010a1a2739daddff8e2fbb440">::snd_pcm_drop()</a> instead. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a52">/test/latency.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga7000ca6010a1a2739daddff8e2fbb440"></a><!-- doxytag: member="pcm.h::snd_pcm_drop" ref="ga7000ca6010a1a2739daddff8e2fbb440" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_drop </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Stop a PCM dropping pending frames. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
<p>This function stops the PCM <em>immediately</em>. The pending samples on the buffer are ignored.</p>
<p>For processing all pending samples, use <a class="el" href="group___p_c_m.html#ga49afc5b8527f30c33fafa476533c9f86">::snd_pcm_drain()</a> instead. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a50">/test/latency.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gad0774fa8991248c6f1c264aaeb0b4207"></a><!-- doxytag: member="pcm.h::snd_pcm_forward" ref="gad0774fa8991248c6f1c264aaeb0b4207" args="(snd_pcm_t *pcm, snd_pcm_uframes_t frames)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a> snd_pcm_forward </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a>&nbsp;</td>
          <td class="paramname"> <em>frames</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Move application frame position forward. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>frames</em>&nbsp;</td><td>wanted skip in frames </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a positive number for actual skip otherwise a negative error code </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>means no action </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gaa2f506e03630a074130443d7b9c1a27e"></a><!-- doxytag: member="pcm.h::snd_pcm_forwardable" ref="gaa2f506e03630a074130443d7b9c1a27e" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a> snd_pcm_forwardable </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get safe count of frames which can be forwarded. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a positive number of frames or negative error code</dd></dl>
<p>Note: The <a class="el" href="group___p_c_m.html#gad0774fa8991248c6f1c264aaeb0b4207" title="Move application frame position forward.">snd_pcm_forward()</a> can accept bigger value than returned by this function. But it is not guaranteed that output stream will be consistent with bigger value. </p>

</div>
</div>
<a class="anchor" id="ga2827b8fa77ca05717df9b0447b99d1cd"></a><!-- doxytag: member="pcm.h::snd_pcm_get_params" ref="ga2827b8fa77ca05717df9b0447b99d1cd" args="(snd_pcm_t *pcm, snd_pcm_uframes_t *buffer_size, snd_pcm_uframes_t *period_size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_get_params </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a> *&nbsp;</td>
          <td class="paramname"> <em>buffer_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a> *&nbsp;</td>
          <td class="paramname"> <em>period_size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the transfer size parameters in a simple way. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer_size</em>&nbsp;</td><td>PCM ring buffer size in frames </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>period_size</em>&nbsp;</td><td>PCM period size in frames </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>

</div>
</div>
<a class="anchor" id="ga3946abd34178b3de60fd5329b71c189b"></a><!-- doxytag: member="pcm.h::snd_pcm_htimestamp" ref="ga3946abd34178b3de60fd5329b71c189b" args="(snd_pcm_t *pcm, snd_pcm_uframes_t *avail, snd_htimestamp_t *tstamp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_htimestamp </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a> *&nbsp;</td>
          <td class="paramname"> <em>avail</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___global.html#ga3a3f5b65c40f498cdbc26944bd9855cf">snd_htimestamp_t</a> *&nbsp;</td>
          <td class="paramname"> <em>tstamp</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Obtain last position update hi-res timestamp. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>avail</em>&nbsp;</td><td>Number of available frames when timestamp was grabbed </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>tstamp</em>&nbsp;</td><td>Hi-res timestamp </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
<p>Note this function does not update the actual r/w pointer for applications. </p>

</div>
</div>
<a class="anchor" id="ga242ad0a269c272830d30666220edbc2a"></a><!-- doxytag: member="pcm.h::snd_pcm_hw_free" ref="ga242ad0a269c272830d30666220edbc2a" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_hw_free </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Remove PCM hardware configuration and free associated resources. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a54">/test/latency.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga1ca0dc120a484965e26cabf966502330"></a><!-- doxytag: member="pcm.h::snd_pcm_hw_params" ref="ga1ca0dc120a484965e26cabf966502330" args="(snd_pcm_t *pcm, snd_pcm_hw_params_t *params)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_hw_params </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga65c737127994f0a980edad744e36dc40">snd_pcm_hw_params_t</a> *&nbsp;</td>
          <td class="paramname"> <em>params</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Install one PCM hardware configuration chosen from a configuration space and <a class="el" href="group___p_c_m.html#ga788d05de75f2d536f8443cb0306754d0" title="Prepare PCM for use.">snd_pcm_prepare</a> it. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>params</em>&nbsp;</td><td>Configuration space definition container </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
<p>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</p>
<p>After this call, <a class="el" href="group___p_c_m.html#ga788d05de75f2d536f8443cb0306754d0" title="Prepare PCM for use.">snd_pcm_prepare()</a> is called automatically and the stream is brought to <code><a class="el" href="group___p_c_m.html#gga61ac499cb3701ce536d4d83725908860a3eb4a3b75c7d2adb22f1829f3f738b27">SND_PCM_STATE_PREPARED</a></code> state.</p>
<p>The hardware parameters cannot be changed when the stream is running (active). The software parameters can be changed at any time. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a17">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a26">/test/pcm.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaf8cd01c4c6b79c4a45a2c816fb8fbc5f"></a><!-- doxytag: member="pcm.h::snd_pcm_hw_params_current" ref="gaf8cd01c4c6b79c4a45a2c816fb8fbc5f" args="(snd_pcm_t *pcm, snd_pcm_hw_params_t *params)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_hw_params_current </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga65c737127994f0a980edad744e36dc40">snd_pcm_hw_params_t</a> *&nbsp;</td>
          <td class="paramname"> <em>params</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Retreive current PCM hardware configuration chosen with <a class="el" href="group___p_c_m.html#ga1ca0dc120a484965e26cabf966502330" title="Install one PCM hardware configuration chosen from a configuration space and snd_pcm_prepare...">snd_pcm_hw_params</a>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>params</em>&nbsp;</td><td>Configuration space definition container </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>

</div>
</div>
<a class="anchor" id="ga3b71a41f6b300bf63ad374013f19d8d7"></a><!-- doxytag: member="pcm.h::snd_pcm_hwsync" ref="ga3b71a41f6b300bf63ad374013f19d8d7" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_hwsync </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>(DEPRECATED) Synchronize stream position with hardware </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
<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#ga8bb836bd0c414b59789d51a5f5379c08" title="Return number of frames ready to be read (capture) / written (playback).">snd_pcm_avail_update()</a> have to be called before any mmap begin+commit operation. </p>

</div>
</div>
<a class="anchor" id="gadd9467ca75884292234e4986b329a17f"></a><!-- doxytag: member="pcm.h::snd_pcm_info" ref="gadd9467ca75884292234e4986b329a17f" args="(snd_pcm_t *pcm, snd_pcm_info_t *info)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_info </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga7dae86a468480ce8eb1c485446c51664">snd_pcm_info_t</a> *&nbsp;</td>
          <td class="paramname"> <em>info</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Obtain general (static) information for PCM handle. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>info</em>&nbsp;</td><td>Information container </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>

</div>
</div>
<a class="anchor" id="gac6c33091b049985baa6466e8fe93917e"></a><!-- doxytag: member="pcm.h::snd_pcm_link" ref="gac6c33091b049985baa6466e8fe93917e" args="(snd_pcm_t *pcm1, snd_pcm_t *pcm2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_link </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Link two PCMs. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm1</em>&nbsp;</td><td>first PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pcm2</em>&nbsp;</td><td>first PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
<p>The two PCMs will start/stop/prepare in sync. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a46">/test/latency.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga5031edc0422df8db1f70af056a12dd77"></a><!-- doxytag: member="pcm.h::snd_pcm_name" ref="ga5031edc0422df8db1f70af056a12dd77" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* snd_pcm_name </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>get identifier of PCM handle </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>ascii identifier of PCM handle</dd></dl>
<p>Returns the ASCII identifier of given PCM handle. It's the same identifier specified in <a class="el" href="group___p_c_m.html#ga8340c7dc0ac37f37afe5e7c21d6c528b" title="Opens a PCM.">snd_pcm_open()</a>. </p>

</div>
</div>
<a class="anchor" id="ga8d9ed4a62c17402de0389fd31fc7dc1f"></a><!-- doxytag: member="pcm.h::snd_pcm_nonblock" ref="ga8d9ed4a62c17402de0389fd31fc7dc1f" args="(snd_pcm_t *pcm, int nonblock)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_nonblock </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nonblock</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>set nonblock mode </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nonblock</em>&nbsp;</td><td>0 = block, 1 = nonblock mode </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a51">/test/latency.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga8340c7dc0ac37f37afe5e7c21d6c528b"></a><!-- doxytag: member="pcm.h::snd_pcm_open" ref="ga8340c7dc0ac37f37afe5e7c21d6c528b" args="(snd_pcm_t **pcm, const char *name, snd_pcm_stream_t stream, int mode)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_open </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> **&nbsp;</td>
          <td class="paramname"> <em>pcmp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#gac23b43ff55add78638e503b9cc892c24">snd_pcm_stream_t</a>&nbsp;</td>
          <td class="paramname"> <em>stream</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>mode</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Opens a PCM. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcmp</em>&nbsp;</td><td>Returned PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>ASCII identifier of the PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>stream</em>&nbsp;</td><td>Wanted stream </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>Open mode (see <a class="el" href="group___p_c_m.html#ga6bd90de1d1527b5804090dcce51079ad">SND_PCM_NONBLOCK</a>, <a class="el" href="group___p_c_m.html#ga9b22351abf6c85ced128e2088f6f6a5c">SND_PCM_ASYNC</a>) </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a42">/test/latency.c</a>, <a class="el" href="_2test_2pcm_8c-example.html#a62">/test/pcm.c</a>, and <a class="el" href="_2test_2pcm__min_8c-example.html#a3">/test/pcm_min.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga88164d313d8ff9dc33c94815869cb677"></a><!-- doxytag: member="pcm.h::snd_pcm_open_lconf" ref="ga88164d313d8ff9dc33c94815869cb677" args="(snd_pcm_t **pcm, const char *name, snd_pcm_stream_t stream, int mode, snd_config_t *lconf)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_open_lconf </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> **&nbsp;</td>
          <td class="paramname"> <em>pcmp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#gac23b43ff55add78638e503b9cc892c24">snd_pcm_stream_t</a>&nbsp;</td>
          <td class="paramname"> <em>stream</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>mode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *&nbsp;</td>
          <td class="paramname"> <em>lconf</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Opens a PCM using local configuration. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcmp</em>&nbsp;</td><td>Returned PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>ASCII identifier of the PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>stream</em>&nbsp;</td><td>Wanted stream </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>Open mode (see <a class="el" href="group___p_c_m.html#ga6bd90de1d1527b5804090dcce51079ad">SND_PCM_NONBLOCK</a>, <a class="el" href="group___p_c_m.html#ga9b22351abf6c85ced128e2088f6f6a5c">SND_PCM_ASYNC</a>) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>lconf</em>&nbsp;</td><td>Local configuration </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>

</div>
</div>
<a class="anchor" id="gad711b582c7066bd4fffa1d08a04316b5"></a><!-- doxytag: member="pcm.h::snd_pcm_pause" ref="gad711b582c7066bd4fffa1d08a04316b5" args="(snd_pcm_t *pcm, int enable)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_pause </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>enable</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Pause/resume PCM. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>enable</em>&nbsp;</td><td>0 = resume, 1 = pause </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
<p>Note that this function works only on the hardware which supports pause feature. You can check it via <a class="el" href="group___p_c_m___h_w___params.html#gaad4ba98b2f66baa5360b9a85f064a3e9">::snd_pcm_hw_params_can_pause()</a> function. </p>

</div>
</div>
<a class="anchor" id="ga742e8705f6992fd0e36efc868e574f01"></a><!-- doxytag: member="pcm.h::snd_pcm_poll_descriptors" ref="ga742e8705f6992fd0e36efc868e574f01" args="(snd_pcm_t *pcm, struct pollfd *pfds, unsigned int space)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_poll_descriptors </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct pollfd *&nbsp;</td>
          <td class="paramname"> <em>pfds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>space</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>get poll descriptors </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pfds</em>&nbsp;</td><td>array of poll descriptors </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>space</em>&nbsp;</td><td>space in the poll descriptor array </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>count of filled descriptors</dd></dl>
<p>This function fills the given poll descriptor structs for the specified PCM handle. The poll desctiptor array should have the size returned by <a class="el" href="group___p_c_m.html#gac7f4cdb1c930b8d343714f60afa02fc4">::snd_pcm_poll_descriptors_count()</a> function.</p>
<p>The result is intended for direct use with the poll() syscall.</p>
<p>For reading the returned events of poll descriptor after poll() system call, use <a class="el" href="group___p_c_m.html#ga7e561f305702c6f52dab49b6c84f7df7">::snd_pcm_poll_descriptors_revents()</a> function. The field values in pollfd structs may be bogus regarding the stream direction from the application perspective (POLLIN might not imply read direction and POLLOUT might not imply write), but the <a class="el" href="group___p_c_m.html#ga7e561f305702c6f52dab49b6c84f7df7">::snd_pcm_poll_descriptors_revents()</a> function does the right "demangling".</p>
<p>You can use output from this function as arguments for the select() syscall, too. Do not forget to translate POLLIN and POLLOUT events to corresponding FD_SET arrays and demangle events using <a class="el" href="group___p_c_m.html#ga7e561f305702c6f52dab49b6c84f7df7">::snd_pcm_poll_descriptors_revents()</a> . </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2pcm_8c-example.html#a38">/test/pcm.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gac7f4cdb1c930b8d343714f60afa02fc4"></a><!-- doxytag: member="pcm.h::snd_pcm_poll_descriptors_count" ref="gac7f4cdb1c930b8d343714f60afa02fc4" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_poll_descriptors_count </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>get count of poll descriptors for PCM handle </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>count of poll descriptors </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2pcm_8c-example.html#a37">/test/pcm.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga7e561f305702c6f52dab49b6c84f7df7"></a><!-- doxytag: member="pcm.h::snd_pcm_poll_descriptors_revents" ref="ga7e561f305702c6f52dab49b6c84f7df7" args="(snd_pcm_t *pcm, struct pollfd *pfds, unsigned int nfds, unsigned short *revents)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_poll_descriptors_revents </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct pollfd *&nbsp;</td>
          <td class="paramname"> <em>pfds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>nfds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned short *&nbsp;</td>
          <td class="paramname"> <em>revents</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>get returned events from poll descriptors </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pfds</em>&nbsp;</td><td>array of poll descriptors </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nfds</em>&nbsp;</td><td>count of poll descriptors </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>revents</em>&nbsp;</td><td>pointer to the returned (single) event </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>zero if success, otherwise a negative error code</dd></dl>
<p>This function does "demangling" of the revents mask returned from the poll() syscall to correct semantics (POLLIN = read, POLLOUT = write).</p>
<p>Note: The null event also exists. Even if poll() or select() syscall returned that some events are waiting, this function might return empty set of events. In this case, application should do next event waiting using poll() or select().</p>
<p>Note: Even if multiple poll descriptors are used (i.e. pfds &gt; 1), this function returns only a single event. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2pcm_8c-example.html#a36">/test/pcm.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga788d05de75f2d536f8443cb0306754d0"></a><!-- doxytag: member="pcm.h::snd_pcm_prepare" ref="ga788d05de75f2d536f8443cb0306754d0" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_prepare </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Prepare PCM for use. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a27">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a33">/test/pcm.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga4c2c7bd26cf221268d59dc3bbeb9c048"></a><!-- doxytag: member="pcm.h::snd_pcm_readi" ref="ga4c2c7bd26cf221268d59dc3bbeb9c048" args="(snd_pcm_t *pcm, void *buffer, snd_pcm_uframes_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a> snd_pcm_readi </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a>&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read interleaved frames from a PCM. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>frames containing buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>frames to be read </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a positive number of frames actually read otherwise a negative error code </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><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#gga61ac499cb3701ce536d4d83725908860a3eb4a3b75c7d2adb22f1829f3f738b27">SND_PCM_STATE_PREPARED</a> or <a class="el" href="group___p_c_m.html#gga61ac499cb3701ce536d4d83725908860a86f6fbc796881f19fde0e1957f878147">SND_PCM_STATE_RUNNING</a>) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-EPIPE</em>&nbsp;</td><td>an overrun occurred </td></tr>
    <tr><td valign="top"></td><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>
  </dd>
</dl>
<p>If the blocking behaviour was selected and it is running, then routine waits until all requested frames are filled. The returned number of frames can be less only if a signal or underrun occurred.</p>
<p>If the non-blocking behaviour is selected, then routine doesn't wait at all. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a35">/test/latency.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gafea175455f1a405f633a43484ded3d8a"></a><!-- doxytag: member="pcm.h::snd_pcm_readn" ref="gafea175455f1a405f633a43484ded3d8a" args="(snd_pcm_t *pcm, void **bufs, snd_pcm_uframes_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a> snd_pcm_readn </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void **&nbsp;</td>
          <td class="paramname"> <em>bufs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a>&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read non interleaved frames to a PCM. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>bufs</em>&nbsp;</td><td>frames containing buffers (one for each channel) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>frames to be read </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a positive number of frames actually read otherwise a negative error code </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><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#gga61ac499cb3701ce536d4d83725908860a3eb4a3b75c7d2adb22f1829f3f738b27">SND_PCM_STATE_PREPARED</a> or <a class="el" href="group___p_c_m.html#gga61ac499cb3701ce536d4d83725908860a86f6fbc796881f19fde0e1957f878147">SND_PCM_STATE_RUNNING</a>) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-EPIPE</em>&nbsp;</td><td>an overrun occurred </td></tr>
    <tr><td valign="top"></td><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>
  </dd>
</dl>
<p>If the blocking behaviour was selected and it is running, then routine waits until all requested frames are filled. The returned number of frames can be less only if a signal or underrun occurred.</p>
<p>If the non-blocking behaviour is selected, then routine doesn't wait at all. </p>

</div>
</div>
<a class="anchor" id="ga2157aaeb6fc14da3f040d76591f9d3b1"></a><!-- doxytag: member="pcm.h::snd_pcm_recover" ref="ga2157aaeb6fc14da3f040d76591f9d3b1" args="(snd_pcm_t *pcm, int err, int silent)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_recover </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>err</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>silent</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Recover the stream state from an error or suspend. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>err</em>&nbsp;</td><td>error number </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>silent</em>&nbsp;</td><td>do not print error reason </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 when error code was handled successfuly, otherwise a negative error code</dd></dl>
<p>This a high-level helper function building on other functions.</p>
<p>This functions handles -EINTR (interrupted system call), -EPIPE (overrun or underrun) and -ESTRPIPE (stream is suspended) error codes trying to prepare given stream for next I/O.</p>
<p>Note that this function returs the original error code when it is not handled inside this function (for example -EAGAIN is returned back). </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2pcm__min_8c-example.html#a10">/test/pcm_min.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga390e084f13d24244196aca64262ce3fc"></a><!-- doxytag: member="pcm.h::snd_pcm_reset" ref="ga390e084f13d24244196aca64262ce3fc" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_reset </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Reset PCM position. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
<p>Reduce PCM delay to 0. </p>

</div>
</div>
<a class="anchor" id="ga13083ce2209aab9ea73831610bc61ab1"></a><!-- doxytag: member="pcm.h::snd_pcm_resume" ref="ga13083ce2209aab9ea73831610bc61ab1" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_resume </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Resume from suspend, no samples are lost. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><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"></td><td valign="top"><em>-ENOSYS</em>&nbsp;</td><td>hardware doesn't support this feature</td></tr>
  </table>
  </dd>
</dl>
<p>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 <a class="el" href="group___p_c_m.html#ga788d05de75f2d536f8443cb0306754d0">::snd_pcm_prepare()</a> function to recovery. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2pcm_8c-example.html#a34">/test/pcm.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga6c66040dbe01797379436fdf36268fec"></a><!-- doxytag: member="pcm.h::snd_pcm_rewind" ref="ga6c66040dbe01797379436fdf36268fec" args="(snd_pcm_t *pcm, snd_pcm_uframes_t frames)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a> snd_pcm_rewind </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a>&nbsp;</td>
          <td class="paramname"> <em>frames</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Move application frame position backward. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>frames</em>&nbsp;</td><td>wanted displacement in frames </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a positive number for actual displacement otherwise a negative error code </dd></dl>

</div>
</div>
<a class="anchor" id="ga0ea7a8aade4e6e76f2cdfd8c85f37bd0"></a><!-- doxytag: member="pcm.h::snd_pcm_rewindable" ref="ga0ea7a8aade4e6e76f2cdfd8c85f37bd0" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a> snd_pcm_rewindable </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get safe count of frames which can be rewinded. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a positive number of frames or negative error code</dd></dl>
<p>Note: The <a class="el" href="group___p_c_m.html#ga6c66040dbe01797379436fdf36268fec" title="Move application frame position backward.">snd_pcm_rewind()</a> can accept bigger value than returned by this function. But it is not guaranteed that output stream will be consistent with bigger value. </p>

</div>
</div>
<a class="anchor" id="ga45d50841b307f2156fce1857bfac228c"></a><!-- doxytag: member="pcm.h::snd_pcm_set_params" ref="ga45d50841b307f2156fce1857bfac228c" args="(snd_pcm_t *pcm, snd_pcm_format_t format, snd_pcm_access_t access, unsigned int channels, unsigned int rate, int soft_resample, unsigned int latency)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_set_params </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#gaa14b7f26877a812acbb39811364177f8">snd_pcm_format_t</a>&nbsp;</td>
          <td class="paramname"> <em>format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga661221ba5e8f1d6eaf4ab8e2da57cc1a">snd_pcm_access_t</a>&nbsp;</td>
          <td class="paramname"> <em>access</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>channels</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>rate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>soft_resample</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&nbsp;</td>
          <td class="paramname"> <em>latency</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the hardware and software parameters in a simple way. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>required PCM format </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>access</em>&nbsp;</td><td>required PCM access </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>channels</em>&nbsp;</td><td>required PCM channels </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rate</em>&nbsp;</td><td>required sample rate in Hz </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>soft_resample</em>&nbsp;</td><td>0 = disallow alsa-lib resample stream, 1 = allow resampling </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>latency</em>&nbsp;</td><td>required overall latency in us </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2pcm__min_8c-example.html#a6">/test/pcm_min.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga6bdb88b68a9d9e66015d770f600c6aea"></a><!-- doxytag: member="pcm.h::snd_pcm_start" ref="ga6bdb88b68a9d9e66015d770f600c6aea" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_start </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Start a PCM. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a48">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a49">/test/pcm.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga87896f6f17020fc19835790369e7ce75"></a><!-- doxytag: member="pcm.h::snd_pcm_state" ref="ga87896f6f17020fc19835790369e7ce75" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group___p_c_m.html#ga61ac499cb3701ce536d4d83725908860">snd_pcm_state_t</a> snd_pcm_state </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return PCM state. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>PCM state <a class="el" href="group___p_c_m.html#ga61ac499cb3701ce536d4d83725908860">snd_pcm_state_t</a> of given PCM handle</dd></dl>
<p>This is a faster way to obtain only the PCM state without calling <a class="el" href="group___p_c_m.html#ga32891eaac37741728a9b23027012c892">::snd_pcm_status()</a>. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2pcm_8c-example.html#a39">/test/pcm.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga32891eaac37741728a9b23027012c892"></a><!-- doxytag: member="pcm.h::snd_pcm_status" ref="ga32891eaac37741728a9b23027012c892" args="(snd_pcm_t *pcm, snd_pcm_status_t *status)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_status </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga902b87281c46910b469d5f7aaafc1890">snd_pcm_status_t</a> *&nbsp;</td>
          <td class="paramname"> <em>status</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Obtain status (runtime) information for PCM handle. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>status</em>&nbsp;</td><td>Status container </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a31">/test/latency.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga8eea4a021a114ecc3e8f6d80901faf46"></a><!-- doxytag: member="pcm.h::snd_pcm_stream" ref="ga8eea4a021a114ecc3e8f6d80901faf46" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group___p_c_m.html#gac23b43ff55add78638e503b9cc892c24">snd_pcm_stream_t</a> snd_pcm_stream </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>get stream for a PCM handle </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>stream of PCM handle</dd></dl>
<p>Returns the type <a class="el" href="group___p_c_m.html#gac23b43ff55add78638e503b9cc892c24">snd_pcm_stream_t</a> of given PCM handle. </p>

</div>
</div>
<a class="anchor" id="ga891ccaeea2c685a533b61b5fa0493974"></a><!-- doxytag: member="pcm.h::snd_pcm_sw_params" ref="ga891ccaeea2c685a533b61b5fa0493974" args="(snd_pcm_t *pcm, snd_pcm_sw_params_t *params)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_sw_params </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga7e082d9ea701709270b0674a0be23b09">snd_pcm_sw_params_t</a> *&nbsp;</td>
          <td class="paramname"> <em>params</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Install PCM software configuration defined by params. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>params</em>&nbsp;</td><td>Configuration container </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
<p>The software parameters can be changed at any time. The hardware parameters cannot be changed when the stream is running (active). </p>
<dl><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#a32">/test/pcm.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ga61c5495ffb44c75aaa595e85512d28de"></a><!-- doxytag: member="pcm.h::snd_pcm_sw_params_current" ref="ga61c5495ffb44c75aaa595e85512d28de" args="(snd_pcm_t *pcm, snd_pcm_sw_params_t *params)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_sw_params_current </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga7e082d9ea701709270b0674a0be23b09">snd_pcm_sw_params_t</a> *&nbsp;</td>
          <td class="paramname"> <em>params</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return current software configuration for a PCM. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>params</em>&nbsp;</td><td>Software configuration container </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl><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#a28">/test/pcm.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gaa7cf89c3f83d83aaa0248055a783b632"></a><!-- doxytag: member="pcm.h::snd_pcm_type" ref="gaa7cf89c3f83d83aaa0248055a783b632" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group___p_c_m.html#gaca6314f46f54a0b62536c403bbb62601">snd_pcm_type_t</a> snd_pcm_type </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>get type of PCM handle </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>type of PCM handle</dd></dl>
<p>Returns the type <a class="el" href="group___p_c_m.html#gaca6314f46f54a0b62536c403bbb62601">snd_pcm_type_t</a> of given PCM handle. </p>

</div>
</div>
<a class="anchor" id="ga0d3af5e30593dae857b4308aab5035cd"></a><!-- doxytag: member="pcm.h::snd_pcm_unlink" ref="ga0d3af5e30593dae857b4308aab5035cd" args="(snd_pcm_t *pcm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_unlink </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Remove a PCM from a linked group. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a53">/test/latency.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gad4d53d58b996a7cd9a5cbf1710b90375"></a><!-- doxytag: member="pcm.h::snd_pcm_wait" ref="gad4d53d58b996a7cd9a5cbf1710b90375" args="(snd_pcm_t *pcm, int timeout)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int snd_pcm_wait </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>timeout</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Wait for a PCM to become ready. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>maximum time in milliseconds to wait, a negative value means infinity </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a positive value on success otherwise a negative error code (-EPIPE for the xrun and -ESTRPIPE for the suspended status, others for general errors) </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>0</em>&nbsp;</td><td>timeout occurred </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>1</em>&nbsp;</td><td>PCM stream is ready for I/O </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a49">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a52">/test/pcm.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gabc748a500743713eafa960c7d104ca6f"></a><!-- doxytag: member="pcm.h::snd_pcm_writei" ref="gabc748a500743713eafa960c7d104ca6f" args="(snd_pcm_t *pcm, const void *buffer, snd_pcm_uframes_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a> snd_pcm_writei </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a>&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Write interleaved frames to a PCM. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>frames containing buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>frames to be written </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a positive number of frames actually written otherwise a negative error code </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><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#gga61ac499cb3701ce536d4d83725908860a3eb4a3b75c7d2adb22f1829f3f738b27">SND_PCM_STATE_PREPARED</a> or <a class="el" href="group___p_c_m.html#gga61ac499cb3701ce536d4d83725908860a86f6fbc796881f19fde0e1957f878147">SND_PCM_STATE_RUNNING</a>) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-EPIPE</em>&nbsp;</td><td>an underrun occurred </td></tr>
    <tr><td valign="top"></td><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>
  </dd>
</dl>
<p>If the blocking behaviour is selected and it is running, then routine waits until all requested frames are played or put to the playback ring buffer. The returned number of frames can be less only if a signal or underrun occurred.</p>
<p>If the non-blocking behaviour is selected, then routine doesn't wait at all. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="_2test_2latency_8c-example.html#a37">/test/latency.c</a>, <a class="el" href="_2test_2pcm_8c-example.html#a35">/test/pcm.c</a>, and <a class="el" href="_2test_2pcm__min_8c-example.html#a9">/test/pcm_min.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="gae599772ce3d0aa6a70de143abcf145e7"></a><!-- doxytag: member="pcm.h::snd_pcm_writen" ref="gae599772ce3d0aa6a70de143abcf145e7" args="(snd_pcm_t *pcm, void **bufs, snd_pcm_uframes_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group___p_c_m.html#ga71cdfa37e258d2210b8bd0216bf0c36c">snd_pcm_sframes_t</a> snd_pcm_writen </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#ga919e634deecd855b6e2e15174e70d3ea">snd_pcm_t</a> *&nbsp;</td>
          <td class="paramname"> <em>pcm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void **&nbsp;</td>
          <td class="paramname"> <em>bufs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group___p_c_m.html#gab01fcfe9b97382a8d3f2027c664b8b8a">snd_pcm_uframes_t</a>&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Write non interleaved frames to a PCM. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>pcm</em>&nbsp;</td><td>PCM handle </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>bufs</em>&nbsp;</td><td>frames containing buffers (one for each channel) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>frames to be written </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a positive number of frames actually written otherwise a negative error code </dd></dl>
<dl><dt><b>Return values:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><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#gga61ac499cb3701ce536d4d83725908860a3eb4a3b75c7d2adb22f1829f3f738b27">SND_PCM_STATE_PREPARED</a> or <a class="el" href="group___p_c_m.html#gga61ac499cb3701ce536d4d83725908860a86f6fbc796881f19fde0e1957f878147">SND_PCM_STATE_RUNNING</a>) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>-EPIPE</em>&nbsp;</td><td>an underrun occurred </td></tr>
    <tr><td valign="top"></td><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>
  </dd>
</dl>
<p>If the blocking behaviour is selected and it is running, then routine waits until all requested frames are played or put to the playback ring buffer. The returned number of frames can be less only if a signal or underrun occurred.</p>
<p>If the non-blocking behaviour is selected, then routine doesn't wait at all. </p>

</div>
</div>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&nbsp;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&nbsp;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&nbsp;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&nbsp;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&nbsp;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&nbsp;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&nbsp;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&nbsp;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&nbsp;</span>Defines</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr class="footer"/><address style="text-align: right;"><small>Generated on Tue Apr 27 13:29:07 2010 for ALSA project - the C library reference by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>