File: //usr/share/doc/alsa-lib-devel-1.0.17/lib64/html/group___p_c_m.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>ALSA project - the C library reference: PCM Interface</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.7 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="examples.html"><span>Examples</span></a></li>
</ul></div>
<h1>PCM Interface</h1><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Files</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="pcm_8c.html">pcm.c</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">PCM Interface. <br></td></tr>
<p>
<tr><td class="memItemLeft" nowrap align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="pcm__plugin_8c.html">pcm_plugin.c</a></td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">PCM Interface. <br></td></tr>
<p>
<tr><td colspan="2"><br><h2>Modules</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </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" nowrap align="right" valign="top"> </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" nowrap align="right" valign="top"> </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" nowrap align="right" valign="top"> </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" nowrap align="right" valign="top"> </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" nowrap align="right" valign="top"> </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" nowrap align="right" valign="top"> </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" nowrap align="right" valign="top"> </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" nowrap align="right" valign="top"> </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" nowrap align="right" valign="top"> </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" nowrap align="right" valign="top"> </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" nowrap align="right" valign="top"> </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" nowrap align="right" valign="top"> </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" nowrap align="right" valign="top"> </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" nowrap align="right" valign="top"> </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"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="struct__snd__pcm__channel__area.html">_snd_pcm_channel_area</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">union </td><td class="memItemRight" valign="bottom"><a class="el" href="union__snd__pcm__sync__id.html">_snd_pcm_sync_id</a></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ge72e88b1ca3a08aeb589fbdab82f7552">SND_PCM_DLSYM_VERSION</a> _dlsym_pcm_001</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g1a96c6dabb17e9e91e74f81237bf726a">SND_PCM_NONBLOCK</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g38a8281b66b92829ec24d61bf2c48da1">SND_PCM_ASYNC</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gc5d9aae0b1fb1fe253ffcf2bf482f459">SND_PCM_NO_AUTO_RESAMPLE</a> 0x00010000</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g79ef439af1964167ee0e66f253381ff0">SND_PCM_NO_AUTO_CHANNELS</a> 0x00020000</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gc6042a46fbefa02d3dad9bbe7a05977c">SND_PCM_NO_AUTO_FORMAT</a> 0x00040000</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gffdb4ed3bdf08b4f3d9ab700458c33bc">SND_PCM_NO_SOFTVOL</a> 0x00080000</td></tr>
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef _snd_pcm_info </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g2226bdcc6e780543beaadc319332e37b">snd_pcm_info_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef _snd_pcm_hw_params </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g232a2e2b6bb7bb2dca2885eec2e095b3">snd_pcm_hw_params_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef _snd_pcm_sw_params </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g999c8c52d8a8d521f1f2cfcd902d7098">snd_pcm_sw_params_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef _snd_pcm_status </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g1f281a9476a599d4f320297e3a07ec79">snd_pcm_status_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef _snd_pcm_access_mask </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g1478c1fe95c6face8eb58984ad92a2e5">snd_pcm_access_mask_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef _snd_pcm_format_mask </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gcb5449ce9c96de87718aecc2e3edd463">snd_pcm_format_mask_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef _snd_pcm_subformat_mask </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gbf041899f37721fb63fbb9ecfd047a96">snd_pcm_subformat_mask_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group___p_c_m.html#g7343f21defd9fd0eb2b216031323d744">_snd_pcm_class</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g334daec1791a55b39a5352bf0423f328">snd_pcm_class_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group___p_c_m.html#g19dcdcf853fb7600192272d302f59d8f">_snd_pcm_subclass</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gd18bccd308145f2dac3975089cdab36a">snd_pcm_subclass_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group___p_c_m.html#g14c854408a86cfc89723c044d2554044">_snd_pcm_stream</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g854f0966bd0d7248ed3d9e5c293136ed">snd_pcm_stream_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group___p_c_m.html#gb305f210b05bc39dac0a31480023ddb9">_snd_pcm_access</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gb838921f42075ebe3f8744889a8ecd87">snd_pcm_access_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group___p_c_m.html#g3df0b888477ce2dc3817d9095db859b1">_snd_pcm_format</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g5ae31ebbea7972ce97a498040df1839e">snd_pcm_format_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group___p_c_m.html#gc7652f59a81d97d298b8940761891402">_snd_pcm_subformat</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gc7def2cfb418b1c4ced3ccd7106969a7">snd_pcm_subformat_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group___p_c_m.html#gfff41b69676ea4a7efa64dd5642505dd">_snd_pcm_state</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gd08aecb11dff7aa18f2480f8ab1b72d1">snd_pcm_state_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group___p_c_m.html#ge59e5c86546a0800cc2026299b9c45ea">_snd_pcm_start</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g66e64d632e9183c219609f0e3ff0aba6">snd_pcm_start_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group___p_c_m.html#g738b1e7fcc482110be9108caf73a08e3">_snd_pcm_xrun</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gb704f544004a9279b77da353f9afbcdb">snd_pcm_xrun_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group___p_c_m.html#g74f84326b59d8a1e0a30f8c9bae8a143">_snd_pcm_tstamp</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g8bbd0d937a3cbd07b1f5d6cde4c26baa">snd_pcm_tstamp_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef unsigned long </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef long </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef _snd_pcm </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef enum <a class="el" href="group___p_c_m.html#g60df675e39a8c0da3488bc06b1fe34ff">_snd_pcm_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g32ab38b53d7b554cf93546f6f1d325de">snd_pcm_type_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="struct__snd__pcm__channel__area.html">_snd_pcm_channel_area</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g68b3f08750e94a28a903591b0242d927">snd_pcm_channel_area_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef <a class="el" href="union__snd__pcm__sync__id.html">_snd_pcm_sync_id</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g625675034cd60e8f297904ca6464a81d">snd_pcm_sync_id_t</a></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef _snd_pcm_scope </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g0f3b1ab9ab8c992af4b1132788f79939">snd_pcm_scope_t</a></td></tr>
<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g7343f21defd9fd0eb2b216031323d744">_snd_pcm_class</a> { <br>
<a class="el" href="group___p_c_m.html#gg7343f21defd9fd0eb2b216031323d74470d78e45645d3ac21b1c61ac61c4bbd9">SND_PCM_CLASS_GENERIC</a> = 0,
<a class="el" href="group___p_c_m.html#gg7343f21defd9fd0eb2b216031323d7449758212d0d46824f1ddeecfd00716eb5">SND_PCM_CLASS_MULTI</a>,
<a class="el" href="group___p_c_m.html#gg7343f21defd9fd0eb2b216031323d7442a334a1233fb7ddf2fd23d1ed5b136bb">SND_PCM_CLASS_MODEM</a>,
<a class="el" href="group___p_c_m.html#gg7343f21defd9fd0eb2b216031323d7448fd63e9c61a4794ec71581c706c50b3f">SND_PCM_CLASS_DIGITIZER</a>,
<br>
<b>SND_PCM_CLASS_LAST</b> = SND_PCM_CLASS_DIGITIZER
<br>
}</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g19dcdcf853fb7600192272d302f59d8f">_snd_pcm_subclass</a> { <a class="el" href="group___p_c_m.html#gg19dcdcf853fb7600192272d302f59d8fe1f4c9152c588f09a65dfe3dfa5c363a">SND_PCM_SUBCLASS_GENERIC_MIX</a> = 0,
<a class="el" href="group___p_c_m.html#gg19dcdcf853fb7600192272d302f59d8f38990b31c1b9be18f59728c241c8a6d9">SND_PCM_SUBCLASS_MULTI_MIX</a>,
<b>SND_PCM_SUBCLASS_LAST</b> = SND_PCM_SUBCLASS_MULTI_MIX
}</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g14c854408a86cfc89723c044d2554044">_snd_pcm_stream</a> { <a class="el" href="group___p_c_m.html#gg14c854408a86cfc89723c044d25540445265e8564200e92afed0297c3783a5ff">SND_PCM_STREAM_PLAYBACK</a> = 0,
<a class="el" href="group___p_c_m.html#gg14c854408a86cfc89723c044d25540441408c771b47bdb2cfce7f29984987311">SND_PCM_STREAM_CAPTURE</a>,
<b>SND_PCM_STREAM_LAST</b> = SND_PCM_STREAM_CAPTURE
}</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gb305f210b05bc39dac0a31480023ddb9">_snd_pcm_access</a> { <br>
<a class="el" href="group___p_c_m.html#ggb305f210b05bc39dac0a31480023ddb9aa5ad51ccf13b1b328598187683d352b">SND_PCM_ACCESS_MMAP_INTERLEAVED</a> = 0,
<a class="el" href="group___p_c_m.html#ggb305f210b05bc39dac0a31480023ddb9560d6755386ed93bd78d6af10ccd047a">SND_PCM_ACCESS_MMAP_NONINTERLEAVED</a>,
<a class="el" href="group___p_c_m.html#ggb305f210b05bc39dac0a31480023ddb9f8c107c301d99a1e0096edd983ce6b98">SND_PCM_ACCESS_MMAP_COMPLEX</a>,
<a class="el" href="group___p_c_m.html#ggb305f210b05bc39dac0a31480023ddb9d5adbbe192a9d9eb47cc09f1232d6069">SND_PCM_ACCESS_RW_INTERLEAVED</a>,
<br>
<a class="el" href="group___p_c_m.html#ggb305f210b05bc39dac0a31480023ddb92ae9d36ccbf3b093e63410c63aabae66">SND_PCM_ACCESS_RW_NONINTERLEAVED</a>,
<b>SND_PCM_ACCESS_LAST</b> = SND_PCM_ACCESS_RW_NONINTERLEAVED
<br>
}</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g3df0b888477ce2dc3817d9095db859b1">_snd_pcm_format</a> { <br>
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1c3e80d6cfa977f6b0d128f5c3c0747f4">SND_PCM_FORMAT_UNKNOWN</a> = -1,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b172d652b7f888169ea3a69767ff562fdf">SND_PCM_FORMAT_S8</a> = 0,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b126b3c5295ad401e2c5ec783884dfb1d1">SND_PCM_FORMAT_U8</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b11fd948f56de28a1d285a93d69109365e">SND_PCM_FORMAT_S16_LE</a>,
<br>
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1bd856fc1058c577f5bc34a688e55dce7">SND_PCM_FORMAT_S16_BE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1fd962345a95e4011884481529dbd50ed">SND_PCM_FORMAT_U16_LE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b14f4cad05a01cc144f2bbb5ede1b4478d">SND_PCM_FORMAT_U16_BE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b12910a784a2fad1488050dbad4a405425">SND_PCM_FORMAT_S24_LE</a>,
<br>
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1b913df65ff393947209a2a122f23ac09">SND_PCM_FORMAT_S24_BE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1a5ed81d5da37c42a055ac9e4f6f9c87c">SND_PCM_FORMAT_U24_LE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1b703b372e5804ace6c7689a3f12f0c1b">SND_PCM_FORMAT_U24_BE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1b81569c9916d906bfe429d563ae654d2">SND_PCM_FORMAT_S32_LE</a>,
<br>
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1ba162e352ec24c8741cf1136306796bb">SND_PCM_FORMAT_S32_BE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1dd88e5350c2d13f5b6a80adfbab9d2dc">SND_PCM_FORMAT_U32_LE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1b65c0ba7d2b97fca68837c954668348d">SND_PCM_FORMAT_U32_BE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b15b0d929c729f3ac4e31a32b91eeb3671">SND_PCM_FORMAT_FLOAT_LE</a>,
<br>
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b12831bd34b834e232d9a2055e75e2a7d7">SND_PCM_FORMAT_FLOAT_BE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1700456822485bc78f384af29132213a2">SND_PCM_FORMAT_FLOAT64_LE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b11bef6d35ee18037293cf0f1de54c4a55">SND_PCM_FORMAT_FLOAT64_BE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1cc91fc5e6ab132b93211d506a1d4a640">SND_PCM_FORMAT_IEC958_SUBFRAME_LE</a>,
<br>
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1094c3d9c1597024537afb661fc6f3d67">SND_PCM_FORMAT_IEC958_SUBFRAME_BE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1c747cf20bdfa683007bb97fb2878bac2">SND_PCM_FORMAT_MU_LAW</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b118ffea53e883d2dbf27edd9d7b1898dc">SND_PCM_FORMAT_A_LAW</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b13bea5a3e271c9129ca81bef2871bc8cc">SND_PCM_FORMAT_IMA_ADPCM</a>,
<br>
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1578cc4339e19e2ed65e158995065d191">SND_PCM_FORMAT_MPEG</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1bb6dec2a2b7bd31accea44e51864c962">SND_PCM_FORMAT_GSM</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b137ae44431ba9930992199d629ddc2ce4">SND_PCM_FORMAT_SPECIAL</a> = 31,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1e00d13527b515cff1b5538b1603b00b1">SND_PCM_FORMAT_S24_3LE</a> = 32,
<br>
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b17c02049f0e2cd5bfce9dfe6825244eed">SND_PCM_FORMAT_S24_3BE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b13db5e8a1b9935d66380a53588ce3ca0f">SND_PCM_FORMAT_U24_3LE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b13863024395751336008557df4373ef5a">SND_PCM_FORMAT_U24_3BE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1c76f1649d2f09b0160c38b33099803ad">SND_PCM_FORMAT_S20_3LE</a>,
<br>
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b106bc62eec3e70f5f123d089e53ecab35">SND_PCM_FORMAT_S20_3BE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b156fca3ff0ead8e14aeba10c1b8aa8e48">SND_PCM_FORMAT_U20_3LE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b175cca91c6f967717eaa9fccb6d5d91a3">SND_PCM_FORMAT_U20_3BE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1768c8b654c414fc3e7478d204a1f06cc">SND_PCM_FORMAT_S18_3LE</a>,
<br>
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1eec37dbf99dd51dc4780ee9cb972675c">SND_PCM_FORMAT_S18_3BE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b120548535e0a5c2f03cf22ee6ed81329e">SND_PCM_FORMAT_U18_3LE</a>,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1b89ce8647062603cd2f65beda68dd385">SND_PCM_FORMAT_U18_3BE</a>,
<b>SND_PCM_FORMAT_LAST</b> = SND_PCM_FORMAT_U18_3BE,
<br>
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b14474a5558bb6e875cbead77efea250f6">SND_PCM_FORMAT_S16</a> = SND_PCM_FORMAT_S16_LE,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1c3daa0fb8e639e28fbc7d1d5d70b868e">SND_PCM_FORMAT_U16</a> = SND_PCM_FORMAT_U16_LE,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1a4c6ca6b42272b0830b819f4044bab0f">SND_PCM_FORMAT_S24</a> = SND_PCM_FORMAT_S24_LE,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1d276935928166dc9bef3b886fd7c3002">SND_PCM_FORMAT_U24</a> = SND_PCM_FORMAT_U24_LE,
<br>
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b125204219bb573eefe9613698eb4e2e20">SND_PCM_FORMAT_S32</a> = SND_PCM_FORMAT_S32_LE,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1a1ac7ba612e6695bff54ed3d52da662f">SND_PCM_FORMAT_U32</a> = SND_PCM_FORMAT_U32_LE,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1071eba3d276182aa46010e5456c69cdb">SND_PCM_FORMAT_FLOAT</a> = SND_PCM_FORMAT_FLOAT_LE,
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b1ce658a16dd52f0a71e91335655148fce">SND_PCM_FORMAT_FLOAT64</a> = SND_PCM_FORMAT_FLOAT64_LE,
<br>
<a class="el" href="group___p_c_m.html#gg3df0b888477ce2dc3817d9095db859b12bbb1ff20c782c566c8f5e27e35c77b1">SND_PCM_FORMAT_IEC958_SUBFRAME</a> = SND_PCM_FORMAT_IEC958_SUBFRAME_LE
<br>
}</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gc7652f59a81d97d298b8940761891402">_snd_pcm_subformat</a> { <a class="el" href="group___p_c_m.html#ggc7652f59a81d97d298b8940761891402d38946a25d9f95320a31a93dc6b12007">SND_PCM_SUBFORMAT_STD</a> = 0,
<b>SND_PCM_SUBFORMAT_LAST</b> = SND_PCM_SUBFORMAT_STD
}</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gfff41b69676ea4a7efa64dd5642505dd">_snd_pcm_state</a> { <br>
<a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505ddfdb9cd6c0ac1f99f2d9efb483f769811">SND_PCM_STATE_OPEN</a> = 0,
<a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505dd00b41db538fa5ebd07d479694dc2fa00">SND_PCM_STATE_SETUP</a>,
<a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505ddfa179425d00d012af07ef15e1c066ea6">SND_PCM_STATE_PREPARED</a>,
<a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505ddda46a834c177617864dd7c31bf3405ce">SND_PCM_STATE_RUNNING</a>,
<br>
<a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505ddc2e9537a871c09e723853891887a3022">SND_PCM_STATE_XRUN</a>,
<a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505dd796dff0758c095701dabdc21fc8d7c1e">SND_PCM_STATE_DRAINING</a>,
<a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505dd613e0141c624e38dfa475d3f6208ded9">SND_PCM_STATE_PAUSED</a>,
<a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505dd98aa49ed3dab65d6fd5c5a8e79cf3216">SND_PCM_STATE_SUSPENDED</a>,
<br>
<a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505dd84b60699c11e6cf30b52fb21a8e672c1">SND_PCM_STATE_DISCONNECTED</a>,
<b>SND_PCM_STATE_LAST</b> = SND_PCM_STATE_DISCONNECTED
<br>
}</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ge59e5c86546a0800cc2026299b9c45ea">_snd_pcm_start</a> { <a class="el" href="group___p_c_m.html#gge59e5c86546a0800cc2026299b9c45ea140162e1e70365fd9992ade727313581">SND_PCM_START_DATA</a> = 0,
<a class="el" href="group___p_c_m.html#gge59e5c86546a0800cc2026299b9c45ea45c330dac53ac62d3a61bee2d181ba80">SND_PCM_START_EXPLICIT</a>,
<b>SND_PCM_START_LAST</b> = SND_PCM_START_EXPLICIT
}</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g738b1e7fcc482110be9108caf73a08e3">_snd_pcm_xrun</a> { <a class="el" href="group___p_c_m.html#gg738b1e7fcc482110be9108caf73a08e3d39dd17bb924014fedc6440801be3ca4">SND_PCM_XRUN_NONE</a> = 0,
<a class="el" href="group___p_c_m.html#gg738b1e7fcc482110be9108caf73a08e35399142873351b3e7bc85007cf38f97f">SND_PCM_XRUN_STOP</a>,
<b>SND_PCM_XRUN_LAST</b> = SND_PCM_XRUN_STOP
}</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g74f84326b59d8a1e0a30f8c9bae8a143">_snd_pcm_tstamp</a> { <a class="el" href="group___p_c_m.html#gg74f84326b59d8a1e0a30f8c9bae8a1433815841c41b8e20ee36359b8ae3357b4">SND_PCM_TSTAMP_NONE</a> = 0,
<a class="el" href="group___p_c_m.html#gg74f84326b59d8a1e0a30f8c9bae8a143479c37e31ae37db5fa477a72dd871484">SND_PCM_TSTAMP_ENABLE</a>,
<a class="el" href="group___p_c_m.html#gg74f84326b59d8a1e0a30f8c9bae8a14391165fb96090426bc5387e34f422f6d1">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" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g60df675e39a8c0da3488bc06b1fe34ff">_snd_pcm_type</a> { <br>
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ffe297ff921ee07ada1b6e830381884c13">SND_PCM_TYPE_HW</a> = 0,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff8280c3d193127d708f0e3562b197ace9">SND_PCM_TYPE_HOOKS</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff563501d97b4e08d3627a8fa55454ad39">SND_PCM_TYPE_MULTI</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff636243d7c9964a490b80383a5e533000">SND_PCM_TYPE_FILE</a>,
<br>
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff91b0869b8f12fdc614f927706494ab3f">SND_PCM_TYPE_NULL</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff2dc63ce34e8f3c5f64e7550e0bf4264c">SND_PCM_TYPE_SHM</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34fff3ab3bd115dcc7977c520e7fadd98f36">SND_PCM_TYPE_INET</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ffceb6a0a6a48adc07c34fe6b04dd24d46">SND_PCM_TYPE_COPY</a>,
<br>
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ffdc4d68340a88ebd57fbd2d570f642fd7">SND_PCM_TYPE_LINEAR</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff01e0eb5d226642cf1aab04dbaeedad62">SND_PCM_TYPE_ALAW</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff7f0a2173420b4d499531ca8aa5d58c0e">SND_PCM_TYPE_MULAW</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ffe0a0b41ef6c9c1a4f8f1cf4f83be53c7">SND_PCM_TYPE_ADPCM</a>,
<br>
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ffb2489342a56d392a34db6f155365efa2">SND_PCM_TYPE_RATE</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff9d59342f163452b68240698f8c88e113">SND_PCM_TYPE_ROUTE</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff3733f6dea6f9b3d27c16a4fba143c07f">SND_PCM_TYPE_PLUG</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff09effbc4ee7996886a44c6417514c94d">SND_PCM_TYPE_SHARE</a>,
<br>
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff8ed9dac157f4433fbc4233db1483b3d2">SND_PCM_TYPE_METER</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff1154d518a74546c26a7acc7c6d0c4678">SND_PCM_TYPE_MIX</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff0921d2e59d73baac6c15b9d58707bf8d">SND_PCM_TYPE_DROUTE</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff0e1af32ee705d55452a546ff3f2160cf">SND_PCM_TYPE_LBSERVER</a>,
<br>
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff29c1f3c1da208841edf3807aa5ae181a">SND_PCM_TYPE_LINEAR_FLOAT</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff5ee6ca9c53778bc0c613d3cb640263c9">SND_PCM_TYPE_LADSPA</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff2409ff6f0cf384ba97908ce30532c47c">SND_PCM_TYPE_DMIX</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff73f0ddc138765e9552864c017621479d">SND_PCM_TYPE_JACK</a>,
<br>
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ffd9da4f56f6d197cca3fa5486518614bf">SND_PCM_TYPE_DSNOOP</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ffd9df24991f65e883932df94408af0301">SND_PCM_TYPE_DSHARE</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff181c2002d8e5fc426aa00bef6e37ab6a">SND_PCM_TYPE_IEC958</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff86d853593012cc1d44eec4584cb73cf0">SND_PCM_TYPE_SOFTVOL</a>,
<br>
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ffb17e6d681bc99340f9decff724744afd">SND_PCM_TYPE_IOPLUG</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ffb0897ed7ee70bda6daa7ef5f2a3567f0">SND_PCM_TYPE_EXTPLUG</a>,
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ffa4006da4201fb10e07439fd3ae66598b">SND_PCM_TYPE_MMAP_EMUL</a>,
<b>SND_PCM_TYPE_LAST</b> = SND_PCM_TYPE_MMAP_EMUL
<br>
}</td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gb7eaaec6f27e4ca48cada9795cd2479b">snd_pcm_open</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> **pcm, const char *name, <a class="el" href="group___p_c_m.html#g854f0966bd0d7248ed3d9e5c293136ed">snd_pcm_stream_t</a> stream, int mode)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Opens a PCM. <a href="#gb7eaaec6f27e4ca48cada9795cd2479b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g7e8bd4c5b4468996f9cf9ec6eea0b8d7">snd_pcm_open_lconf</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> **pcm, const char *name, <a class="el" href="group___p_c_m.html#g854f0966bd0d7248ed3d9e5c293136ed">snd_pcm_stream_t</a> stream, int mode, <a class="el" href="group___config.html#gb7dc173feea5bedcd999bba678eb53a7">snd_config_t</a> *lconf)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Opens a PCM using local configuration. <a href="#g7e8bd4c5b4468996f9cf9ec6eea0b8d7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gff39173ece95bba5fa69bc6ea15634e6">snd_pcm_close</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">close PCM handle <a href="#gff39173ece95bba5fa69bc6ea15634e6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g396fcf972944424de85b3df7ccf51b40">snd_pcm_name</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">get identifier of PCM handle <a href="#g396fcf972944424de85b3df7ccf51b40"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group___p_c_m.html#g32ab38b53d7b554cf93546f6f1d325de">snd_pcm_type_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gf417ca2e3e1282a04385c0ca85775053">snd_pcm_type</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">get type of PCM handle <a href="#gf417ca2e3e1282a04385c0ca85775053"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group___p_c_m.html#g854f0966bd0d7248ed3d9e5c293136ed">snd_pcm_stream_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g8a6dfe581f9b2423280d2cd9ce06eb1f">snd_pcm_stream</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">get stream for a PCM handle <a href="#g8a6dfe581f9b2423280d2cd9ce06eb1f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gbb3a82026325a80f503b7c89532397f6">snd_pcm_poll_descriptors_count</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">get count of poll descriptors for PCM handle <a href="#gbb3a82026325a80f503b7c89532397f6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gfc99365835bb429cac8c994fa56a42d7">snd_pcm_poll_descriptors</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, struct pollfd *pfds, unsigned int space)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">get poll descriptors <a href="#gfc99365835bb429cac8c994fa56a42d7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g4aefafc201ed12f0b10fa1b7967705e7">snd_pcm_poll_descriptors_revents</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, struct pollfd *pfds, unsigned int nfds, unsigned short *revents)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">get returned events from poll descriptors <a href="#g4aefafc201ed12f0b10fa1b7967705e7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g083b56d6e5d04e46bc2f4b63e3a67f1d">snd_pcm_nonblock</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, int nonblock)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">set nonblock mode <a href="#g083b56d6e5d04e46bc2f4b63e3a67f1d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g0d343597cdce35871a5010b6e6d5535b">snd_async_add_pcm_handler</a> (<a class="el" href="group___global.html#ga966cc0e80d3b8f070437c851114d5a5">snd_async_handler_t</a> **handler, <a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, <a class="el" href="group___global.html#gc2c426c7ea09cdcc0cdb398660104baa">snd_async_callback_t</a> callback, void *private_data)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Add an async handler for a PCM. <a href="#g0d343597cdce35871a5010b6e6d5535b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga393c80ca5d5c3739f23066ac43b12f6">snd_async_handler_get_pcm</a> (<a class="el" href="group___global.html#ga966cc0e80d3b8f070437c851114d5a5">snd_async_handler_t</a> *handler)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Return PCM handle related to an async handler. <a href="#ga393c80ca5d5c3739f23066ac43b12f6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gf7a1518a6833a1e2110ea22c5727a565">snd_pcm_info</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#g2226bdcc6e780543beaadc319332e37b">snd_pcm_info_t</a> *info)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain general (static) information for PCM handle. <a href="#gf7a1518a6833a1e2110ea22c5727a565"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g156d751cccef80727b32cbbee6844569">snd_pcm_hw_params_current</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#g232a2e2b6bb7bb2dca2885eec2e095b3">snd_pcm_hw_params_t</a> *params)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Retreive current PCM hardware configuration chosen with <a class="el" href="group___p_c_m.html#g98ba19d2800b7d601277fd8c068505da">snd_pcm_hw_params</a>. <a href="#g156d751cccef80727b32cbbee6844569"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g98ba19d2800b7d601277fd8c068505da">snd_pcm_hw_params</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#g232a2e2b6bb7bb2dca2885eec2e095b3">snd_pcm_hw_params_t</a> *params)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Install one PCM hardware configuration chosen from a configuration space and <a class="el" href="group___p_c_m.html#g692ad9e5902d0623b56a0decee0fa686">snd_pcm_prepare</a> it. <a href="#g98ba19d2800b7d601277fd8c068505da"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gd9d9a6795127aaf349ccc728d7687fc0">snd_pcm_hw_free</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove PCM hardware configuration and free associated resources. <a href="#gd9d9a6795127aaf349ccc728d7687fc0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g04f309dd4dbad5bcfbfbf8c0219051c0">snd_pcm_sw_params_current</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#g999c8c52d8a8d521f1f2cfcd902d7098">snd_pcm_sw_params_t</a> *params)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Return current software configuration for a PCM. <a href="#g04f309dd4dbad5bcfbfbf8c0219051c0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g848317f8dfab2e828e9db7bd106b3c6a">snd_pcm_sw_params</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#g999c8c52d8a8d521f1f2cfcd902d7098">snd_pcm_sw_params_t</a> *params)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Install PCM software configuration defined by params. <a href="#g848317f8dfab2e828e9db7bd106b3c6a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g692ad9e5902d0623b56a0decee0fa686">snd_pcm_prepare</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Prepare PCM for use. <a href="#g692ad9e5902d0623b56a0decee0fa686"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g2579838482736c83db77782feb46f0ca">snd_pcm_reset</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Reset PCM position. <a href="#g2579838482736c83db77782feb46f0ca"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g3517971b4faf263cf91d146b5a07169d">snd_pcm_status</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#g1f281a9476a599d4f320297e3a07ec79">snd_pcm_status_t</a> *status)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain status (runtime) information for PCM handle. <a href="#g3517971b4faf263cf91d146b5a07169d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga59e471867bd560a08ee19d091c71451">snd_pcm_start</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Start a PCM. <a href="#ga59e471867bd560a08ee19d091c71451"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gf3eacffb0c2ead60fd2cb10911d47c83">snd_pcm_drop</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Stop a PCM dropping pending frames. <a href="#gf3eacffb0c2ead60fd2cb10911d47c83"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gef0a474698d7140d57f69db6cea9233e">snd_pcm_drain</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Stop a PCM preserving pending frames. <a href="#gef0a474698d7140d57f69db6cea9233e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga94a91f769c34dff733b1639c98f3c47">snd_pcm_pause</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, int enable)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Pause/resume PCM. <a href="#ga94a91f769c34dff733b1639c98f3c47"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group___p_c_m.html#gd08aecb11dff7aa18f2480f8ab1b72d1">snd_pcm_state_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g4bf83ebcddd9b6c838c45192740e0375">snd_pcm_state</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Return PCM state. <a href="#g4bf83ebcddd9b6c838c45192740e0375"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g4fee1b4912e3497d01e94fe863d8dff1">snd_pcm_hwsync</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Synchronize stream position with hardware. <a href="#g4fee1b4912e3497d01e94fe863d8dff1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#ga0d9e14a4be65209eb549e48a9f07302">snd_pcm_delay</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> *delayp)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain delay for a running PCM handle. <a href="#ga0d9e14a4be65209eb549e48a9f07302"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g3484c8039de196b37144869c5935109c">snd_pcm_resume</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Resume from suspend, no samples are lost. <a href="#g3484c8039de196b37144869c5935109c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g2cf0d8395319073e8a672a84ac9d2759">snd_pcm_htimestamp</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> *avail, <a class="el" href="group___global.html#g9ec799950aa7da856cf805705197c390">snd_htimestamp_t</a> *tstamp)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Obtain last position update hi-res timestamp. <a href="#g2cf0d8395319073e8a672a84ac9d2759"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group___p_c_m.html#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g41ca534658076885d9b077ad674750cd">snd_pcm_avail_update</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Return number of frames ready to be read (capture) / written (playback). <a href="#g41ca534658076885d9b077ad674750cd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group___p_c_m.html#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g8f56faf60ea6b60839e131df88f080d7">snd_pcm_rewindable</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get safe count of frames which can be rewinded. <a href="#g8f56faf60ea6b60839e131df88f080d7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group___p_c_m.html#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g57575d5fc512027bca93ce4c0a2c47c8">snd_pcm_rewind</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> frames)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Move application frame position backward. <a href="#g57575d5fc512027bca93ce4c0a2c47c8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group___p_c_m.html#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g74e0d77eb3e47e63be3a4b1f448e589e">snd_pcm_forwardable</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get safe count of frames which can be forwarded. <a href="#g74e0d77eb3e47e63be3a4b1f448e589e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group___p_c_m.html#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gde089303a00232b6a0faade8b9c536ea">snd_pcm_forward</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> frames)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Move application frame position forward. <a href="#gde089303a00232b6a0faade8b9c536ea"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group___p_c_m.html#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gf13067c0ebde29118ca05af76e5b17a9">snd_pcm_writei</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, const void *buffer, <a class="el" href="group___p_c_m.html#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> size)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Write interleaved frames to a PCM. <a href="#gf13067c0ebde29118ca05af76e5b17a9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group___p_c_m.html#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g745cb155f2664255474d611568335d4d">snd_pcm_readi</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, void *buffer, <a class="el" href="group___p_c_m.html#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> size)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Read interleaved frames from a PCM. <a href="#g745cb155f2664255474d611568335d4d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group___p_c_m.html#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g4f8b271ce99e7058fd1ff729abf96eb7">snd_pcm_writen</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, void **bufs, <a class="el" href="group___p_c_m.html#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> size)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Write non interleaved frames to a PCM. <a href="#g4f8b271ce99e7058fd1ff729abf96eb7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group___p_c_m.html#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gfdbb013a65910f8b8dee29bd16a78685">snd_pcm_readn</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, void **bufs, <a class="el" href="group___p_c_m.html#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> size)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Read non interleaved frames to a PCM. <a href="#gfdbb013a65910f8b8dee29bd16a78685"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gd74d8ca5d9e05b6540a7d8892e6137ff">snd_pcm_wait</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, int timeout)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Wait for a PCM to become ready. <a href="#gd74d8ca5d9e05b6540a7d8892e6137ff"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gd8e6bfda4bd0908f874fbe420bbc063d">snd_pcm_link</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm1, <a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm2)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Link two PCMs. <a href="#gd8e6bfda4bd0908f874fbe420bbc063d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g2aaafe137f51e2bef723ecef821967ac">snd_pcm_unlink</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Remove a PCM from a linked group. <a href="#g2aaafe137f51e2bef723ecef821967ac"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g9ec4481b5a13f33038b2b88a9cdfa372">snd_pcm_recover</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, int err, int silent)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Recover the stream state from an error or suspend. <a href="#g9ec4481b5a13f33038b2b88a9cdfa372"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#g6aa164ed37308d66bcc079f5cd265a09">snd_pcm_set_params</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#g5ae31ebbea7972ce97a498040df1839e">snd_pcm_format_t</a> format, <a class="el" href="group___p_c_m.html#gb838921f42075ebe3f8744889a8ecd87">snd_pcm_access_t</a> access, unsigned int channels, unsigned int rate, int soft_resample, unsigned int latency)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Set the hardware and software parameters in a simple way. <a href="#g6aa164ed37308d66bcc079f5cd265a09"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___p_c_m.html#gb3bac19c1caa5d844a61b89952490b9b">snd_pcm_get_params</a> (<a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> *pcm, <a class="el" href="group___p_c_m.html#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> *buffer_size, <a class="el" href="group___p_c_m.html#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> *period_size)</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Get the transfer size parameters in a simple way. <a href="#gb3bac19c1caa5d844a61b89952490b9b"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
See the <a class="el" href="pcm.html">PCM (digital audio) interface</a> page for more details. <hr><h2>Define Documentation</h2>
<a class="anchor" name="g38a8281b66b92829ec24d61bf2c48da1"></a><!-- doxytag: member="pcm.h::SND_PCM_ASYNC" ref="g38a8281b66b92829ec24d61bf2c48da1" 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)
</div>
</div><p>
<a class="anchor" name="ge72e88b1ca3a08aeb589fbdab82f7552"></a><!-- doxytag: member="pcm.h::SND_PCM_DLSYM_VERSION" ref="ge72e88b1ca3a08aeb589fbdab82f7552" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SND_PCM_DLSYM_VERSION _dlsym_pcm_001 </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
dlsym version for interface entry callback
</div>
</div><p>
<a class="anchor" name="g79ef439af1964167ee0e66f253381ff0"></a><!-- doxytag: member="pcm.h::SND_PCM_NO_AUTO_CHANNELS" ref="g79ef439af1964167ee0e66f253381ff0" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SND_PCM_NO_AUTO_CHANNELS 0x00020000 </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Disable automatic (but not forced!) channel conversion
</div>
</div><p>
<a class="anchor" name="gc6042a46fbefa02d3dad9bbe7a05977c"></a><!-- doxytag: member="pcm.h::SND_PCM_NO_AUTO_FORMAT" ref="gc6042a46fbefa02d3dad9bbe7a05977c" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SND_PCM_NO_AUTO_FORMAT 0x00040000 </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Disable automatic (but not forced!) format conversion
</div>
</div><p>
<a class="anchor" name="gc5d9aae0b1fb1fe253ffcf2bf482f459"></a><!-- doxytag: member="pcm.h::SND_PCM_NO_AUTO_RESAMPLE" ref="gc5d9aae0b1fb1fe253ffcf2bf482f459" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SND_PCM_NO_AUTO_RESAMPLE 0x00010000 </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Disable automatic (but not forced!) rate resamplinig
</div>
</div><p>
<a class="anchor" name="gffdb4ed3bdf08b4f3d9ab700458c33bc"></a><!-- doxytag: member="pcm.h::SND_PCM_NO_SOFTVOL" ref="gffdb4ed3bdf08b4f3d9ab700458c33bc" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define SND_PCM_NO_SOFTVOL 0x00080000 </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Disable soft volume control
</div>
</div><p>
<a class="anchor" name="g1a96c6dabb17e9e91e74f81237bf726a"></a><!-- doxytag: member="pcm.h::SND_PCM_NONBLOCK" ref="g1a96c6dabb17e9e91e74f81237bf726a" 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) <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a45">/test/latency.c</a>.</dl>
</div>
</div><p>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="g1478c1fe95c6face8eb58984ad92a2e5"></a><!-- doxytag: member="pcm.h::snd_pcm_access_mask_t" ref="g1478c1fe95c6face8eb58984ad92a2e5" 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#g1478c1fe95c6face8eb58984ad92a2e5">snd_pcm_access_mask_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM access types mask
</div>
</div><p>
<a class="anchor" name="gb838921f42075ebe3f8744889a8ecd87"></a><!-- doxytag: member="pcm.h::snd_pcm_access_t" ref="gb838921f42075ebe3f8744889a8ecd87" 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#gb305f210b05bc39dac0a31480023ddb9">_snd_pcm_access</a> <a class="el" href="group___p_c_m.html#gb838921f42075ebe3f8744889a8ecd87">snd_pcm_access_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM access type <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a68">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g68b3f08750e94a28a903591b0242d927"></a><!-- doxytag: member="pcm.h::snd_pcm_channel_area_t" ref="g68b3f08750e94a28a903591b0242d927" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct <a class="el" href="struct__snd__pcm__channel__area.html">_snd_pcm_channel_area</a> <a class="el" href="struct__snd__pcm__channel__area.html">snd_pcm_channel_area_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM area specification
</div>
</div><p>
<a class="anchor" name="g334daec1791a55b39a5352bf0423f328"></a><!-- doxytag: member="pcm.h::snd_pcm_class_t" ref="g334daec1791a55b39a5352bf0423f328" 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#g7343f21defd9fd0eb2b216031323d744">_snd_pcm_class</a> <a class="el" href="group___p_c_m.html#g334daec1791a55b39a5352bf0423f328">snd_pcm_class_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM class
</div>
</div><p>
<a class="anchor" name="gcb5449ce9c96de87718aecc2e3edd463"></a><!-- doxytag: member="pcm.h::snd_pcm_format_mask_t" ref="gcb5449ce9c96de87718aecc2e3edd463" 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#gcb5449ce9c96de87718aecc2e3edd463">snd_pcm_format_mask_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM formats mask
</div>
</div><p>
<a class="anchor" name="g5ae31ebbea7972ce97a498040df1839e"></a><!-- doxytag: member="pcm.h::snd_pcm_format_t" ref="g5ae31ebbea7972ce97a498040df1839e" 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#g3df0b888477ce2dc3817d9095db859b1">_snd_pcm_format</a> <a class="el" href="group___p_c_m.html#g5ae31ebbea7972ce97a498040df1839e">snd_pcm_format_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM sample format <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a0">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a57">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g232a2e2b6bb7bb2dca2885eec2e095b3"></a><!-- doxytag: member="pcm.h::snd_pcm_hw_params_t" ref="g232a2e2b6bb7bb2dca2885eec2e095b3" 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#g232a2e2b6bb7bb2dca2885eec2e095b3">snd_pcm_hw_params_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM hardware configuration space container <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a4">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a67">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g2226bdcc6e780543beaadc319332e37b"></a><!-- doxytag: member="pcm.h::snd_pcm_info_t" ref="g2226bdcc6e780543beaadc319332e37b" 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#g2226bdcc6e780543beaadc319332e37b">snd_pcm_info_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM generic info container
</div>
</div><p>
<a class="anchor" name="g0f3b1ab9ab8c992af4b1132788f79939"></a><!-- doxytag: member="pcm.h::snd_pcm_scope_t" ref="g0f3b1ab9ab8c992af4b1132788f79939" 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#g0f3b1ab9ab8c992af4b1132788f79939">snd_pcm_scope_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
<a class="el" href="group___p_c_m.html#gg60df675e39a8c0da3488bc06b1fe34ff8ed9dac157f4433fbc4233db1483b3d2">SND_PCM_TYPE_METER</a> scope handle
</div>
</div><p>
<a class="anchor" name="g842d603aa3a4bc5b4596b42490104da3"></a><!-- doxytag: member="pcm.h::snd_pcm_sframes_t" ref="g842d603aa3a4bc5b4596b42490104da3" 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#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Signed frames quantity <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a59">/test/pcm.c</a>, and <a class="el" href="_2test_2pcm__min_8c-example.html#a122">/test/pcm_min.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g66e64d632e9183c219609f0e3ff0aba6"></a><!-- doxytag: member="pcm.h::snd_pcm_start_t" ref="g66e64d632e9183c219609f0e3ff0aba6" 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#ge59e5c86546a0800cc2026299b9c45ea">_snd_pcm_start</a> <a class="el" href="group___p_c_m.html#g66e64d632e9183c219609f0e3ff0aba6">snd_pcm_start_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM start mode
</div>
</div><p>
<a class="anchor" name="gd08aecb11dff7aa18f2480f8ab1b72d1"></a><!-- doxytag: member="pcm.h::snd_pcm_state_t" ref="gd08aecb11dff7aa18f2480f8ab1b72d1" 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#gfff41b69676ea4a7efa64dd5642505dd">_snd_pcm_state</a> <a class="el" href="group___p_c_m.html#gd08aecb11dff7aa18f2480f8ab1b72d1">snd_pcm_state_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM state <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a103">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g1f281a9476a599d4f320297e3a07ec79"></a><!-- doxytag: member="pcm.h::snd_pcm_status_t" ref="g1f281a9476a599d4f320297e3a07ec79" 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#g1f281a9476a599d4f320297e3a07ec79">snd_pcm_status_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM status container <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a30">/test/latency.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g854f0966bd0d7248ed3d9e5c293136ed"></a><!-- doxytag: member="pcm.h::snd_pcm_stream_t" ref="g854f0966bd0d7248ed3d9e5c293136ed" 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#g14c854408a86cfc89723c044d2554044">_snd_pcm_stream</a> <a class="el" href="group___p_c_m.html#g854f0966bd0d7248ed3d9e5c293136ed">snd_pcm_stream_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM stream (direction)
</div>
</div><p>
<a class="anchor" name="gd18bccd308145f2dac3975089cdab36a"></a><!-- doxytag: member="pcm.h::snd_pcm_subclass_t" ref="gd18bccd308145f2dac3975089cdab36a" 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#g19dcdcf853fb7600192272d302f59d8f">_snd_pcm_subclass</a> <a class="el" href="group___p_c_m.html#gd18bccd308145f2dac3975089cdab36a">snd_pcm_subclass_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM subclass
</div>
</div><p>
<a class="anchor" name="gbf041899f37721fb63fbb9ecfd047a96"></a><!-- doxytag: member="pcm.h::snd_pcm_subformat_mask_t" ref="gbf041899f37721fb63fbb9ecfd047a96" 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#gbf041899f37721fb63fbb9ecfd047a96">snd_pcm_subformat_mask_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM subformats mask
</div>
</div><p>
<a class="anchor" name="gc7def2cfb418b1c4ced3ccd7106969a7"></a><!-- doxytag: member="pcm.h::snd_pcm_subformat_t" ref="gc7def2cfb418b1c4ced3ccd7106969a7" 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#gc7652f59a81d97d298b8940761891402">_snd_pcm_subformat</a> <a class="el" href="group___p_c_m.html#gc7def2cfb418b1c4ced3ccd7106969a7">snd_pcm_subformat_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM sample subformat
</div>
</div><p>
<a class="anchor" name="g999c8c52d8a8d521f1f2cfcd902d7098"></a><!-- doxytag: member="pcm.h::snd_pcm_sw_params_t" ref="g999c8c52d8a8d521f1f2cfcd902d7098" 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#g999c8c52d8a8d521f1f2cfcd902d7098">snd_pcm_sw_params_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM software configuration container <dl compact><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#a81">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g625675034cd60e8f297904ca6464a81d"></a><!-- doxytag: member="pcm.h::snd_pcm_sync_id_t" ref="g625675034cd60e8f297904ca6464a81d" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef union <a class="el" href="union__snd__pcm__sync__id.html">_snd_pcm_sync_id</a> <a class="el" href="union__snd__pcm__sync__id.html">snd_pcm_sync_id_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM synchronization ID
</div>
</div><p>
<a class="anchor" name="gb5676348e7618b444e28907607660cef"></a><!-- doxytag: member="pcm.h::snd_pcm_t" ref="gb5676348e7618b444e28907607660cef" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM handle <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a3">/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#a121">/test/pcm_min.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g8bbd0d937a3cbd07b1f5d6cde4c26baa"></a><!-- doxytag: member="pcm.h::snd_pcm_tstamp_t" ref="g8bbd0d937a3cbd07b1f5d6cde4c26baa" 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#g74f84326b59d8a1e0a30f8c9bae8a143">_snd_pcm_tstamp</a> <a class="el" href="group___p_c_m.html#g8bbd0d937a3cbd07b1f5d6cde4c26baa">snd_pcm_tstamp_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM timestamp mode
</div>
</div><p>
<a class="anchor" name="g32ab38b53d7b554cf93546f6f1d325de"></a><!-- doxytag: member="pcm.h::snd_pcm_type_t" ref="g32ab38b53d7b554cf93546f6f1d325de" 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#g60df675e39a8c0da3488bc06b1fe34ff">_snd_pcm_type</a> <a class="el" href="group___p_c_m.html#g32ab38b53d7b554cf93546f6f1d325de">snd_pcm_type_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM type
</div>
</div><p>
<a class="anchor" name="g2c6283616ba424092089264ae7e193e6"></a><!-- doxytag: member="pcm.h::snd_pcm_uframes_t" ref="g2c6283616ba424092089264ae7e193e6" 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#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Unsigned frames quantity <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a13">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a62">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="gb704f544004a9279b77da353f9afbcdb"></a><!-- doxytag: member="pcm.h::snd_pcm_xrun_t" ref="gb704f544004a9279b77da353f9afbcdb" 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#g738b1e7fcc482110be9108caf73a08e3">_snd_pcm_xrun</a> <a class="el" href="group___p_c_m.html#gb704f544004a9279b77da353f9afbcdb">snd_pcm_xrun_t</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM xrun mode
</div>
</div><p>
<hr><h2>Enumeration Type Documentation</h2>
<a class="anchor" name="gb305f210b05bc39dac0a31480023ddb9"></a><!-- doxytag: member="pcm.h::_snd_pcm_access" ref="gb305f210b05bc39dac0a31480023ddb9" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group___p_c_m.html#gb305f210b05bc39dac0a31480023ddb9">_snd_pcm_access</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM access type <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="ggb305f210b05bc39dac0a31480023ddb9aa5ad51ccf13b1b328598187683d352b"></a><!-- doxytag: member="SND_PCM_ACCESS_MMAP_INTERLEAVED" ref="ggb305f210b05bc39dac0a31480023ddb9aa5ad51ccf13b1b328598187683d352b" args="" -->SND_PCM_ACCESS_MMAP_INTERLEAVED</em> </td><td>
mmap access with simple interleaved channels </td></tr>
<tr><td valign="top"><em><a class="anchor" name="ggb305f210b05bc39dac0a31480023ddb9560d6755386ed93bd78d6af10ccd047a"></a><!-- doxytag: member="SND_PCM_ACCESS_MMAP_NONINTERLEAVED" ref="ggb305f210b05bc39dac0a31480023ddb9560d6755386ed93bd78d6af10ccd047a" args="" -->SND_PCM_ACCESS_MMAP_NONINTERLEAVED</em> </td><td>
mmap access with simple non interleaved channels </td></tr>
<tr><td valign="top"><em><a class="anchor" name="ggb305f210b05bc39dac0a31480023ddb9f8c107c301d99a1e0096edd983ce6b98"></a><!-- doxytag: member="SND_PCM_ACCESS_MMAP_COMPLEX" ref="ggb305f210b05bc39dac0a31480023ddb9f8c107c301d99a1e0096edd983ce6b98" args="" -->SND_PCM_ACCESS_MMAP_COMPLEX</em> </td><td>
mmap access with complex placement </td></tr>
<tr><td valign="top"><em><a class="anchor" name="ggb305f210b05bc39dac0a31480023ddb9d5adbbe192a9d9eb47cc09f1232d6069"></a><!-- doxytag: member="SND_PCM_ACCESS_RW_INTERLEAVED" ref="ggb305f210b05bc39dac0a31480023ddb9d5adbbe192a9d9eb47cc09f1232d6069" args="" -->SND_PCM_ACCESS_RW_INTERLEAVED</em> </td><td>
snd_pcm_readi/snd_pcm_writei access </td></tr>
<tr><td valign="top"><em><a class="anchor" name="ggb305f210b05bc39dac0a31480023ddb92ae9d36ccbf3b093e63410c63aabae66"></a><!-- doxytag: member="SND_PCM_ACCESS_RW_NONINTERLEAVED" ref="ggb305f210b05bc39dac0a31480023ddb92ae9d36ccbf3b093e63410c63aabae66" args="" -->SND_PCM_ACCESS_RW_NONINTERLEAVED</em> </td><td>
snd_pcm_readn/snd_pcm_writen access </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g7343f21defd9fd0eb2b216031323d744"></a><!-- doxytag: member="pcm.h::_snd_pcm_class" ref="g7343f21defd9fd0eb2b216031323d744" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group___p_c_m.html#g7343f21defd9fd0eb2b216031323d744">_snd_pcm_class</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM class <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="gg7343f21defd9fd0eb2b216031323d74470d78e45645d3ac21b1c61ac61c4bbd9"></a><!-- doxytag: member="SND_PCM_CLASS_GENERIC" ref="gg7343f21defd9fd0eb2b216031323d74470d78e45645d3ac21b1c61ac61c4bbd9" args="" -->SND_PCM_CLASS_GENERIC</em> </td><td>
standard device </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg7343f21defd9fd0eb2b216031323d7449758212d0d46824f1ddeecfd00716eb5"></a><!-- doxytag: member="SND_PCM_CLASS_MULTI" ref="gg7343f21defd9fd0eb2b216031323d7449758212d0d46824f1ddeecfd00716eb5" args="" -->SND_PCM_CLASS_MULTI</em> </td><td>
multichannel device </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg7343f21defd9fd0eb2b216031323d7442a334a1233fb7ddf2fd23d1ed5b136bb"></a><!-- doxytag: member="SND_PCM_CLASS_MODEM" ref="gg7343f21defd9fd0eb2b216031323d7442a334a1233fb7ddf2fd23d1ed5b136bb" args="" -->SND_PCM_CLASS_MODEM</em> </td><td>
software modem device </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg7343f21defd9fd0eb2b216031323d7448fd63e9c61a4794ec71581c706c50b3f"></a><!-- doxytag: member="SND_PCM_CLASS_DIGITIZER" ref="gg7343f21defd9fd0eb2b216031323d7448fd63e9c61a4794ec71581c706c50b3f" args="" -->SND_PCM_CLASS_DIGITIZER</em> </td><td>
digitizer device </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g3df0b888477ce2dc3817d9095db859b1"></a><!-- doxytag: member="pcm.h::_snd_pcm_format" ref="g3df0b888477ce2dc3817d9095db859b1" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group___p_c_m.html#g3df0b888477ce2dc3817d9095db859b1">_snd_pcm_format</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM sample format <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1c3e80d6cfa977f6b0d128f5c3c0747f4"></a><!-- doxytag: member="SND_PCM_FORMAT_UNKNOWN" ref="gg3df0b888477ce2dc3817d9095db859b1c3e80d6cfa977f6b0d128f5c3c0747f4" args="" -->SND_PCM_FORMAT_UNKNOWN</em> </td><td>
Unknown </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b172d652b7f888169ea3a69767ff562fdf"></a><!-- doxytag: member="SND_PCM_FORMAT_S8" ref="gg3df0b888477ce2dc3817d9095db859b172d652b7f888169ea3a69767ff562fdf" args="" -->SND_PCM_FORMAT_S8</em> </td><td>
Signed 8 bit </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b126b3c5295ad401e2c5ec783884dfb1d1"></a><!-- doxytag: member="SND_PCM_FORMAT_U8" ref="gg3df0b888477ce2dc3817d9095db859b126b3c5295ad401e2c5ec783884dfb1d1" args="" -->SND_PCM_FORMAT_U8</em> </td><td>
Unsigned 8 bit </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b11fd948f56de28a1d285a93d69109365e"></a><!-- doxytag: member="SND_PCM_FORMAT_S16_LE" ref="gg3df0b888477ce2dc3817d9095db859b11fd948f56de28a1d285a93d69109365e" args="" -->SND_PCM_FORMAT_S16_LE</em> </td><td>
Signed 16 bit Little Endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1bd856fc1058c577f5bc34a688e55dce7"></a><!-- doxytag: member="SND_PCM_FORMAT_S16_BE" ref="gg3df0b888477ce2dc3817d9095db859b1bd856fc1058c577f5bc34a688e55dce7" args="" -->SND_PCM_FORMAT_S16_BE</em> </td><td>
Signed 16 bit Big Endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1fd962345a95e4011884481529dbd50ed"></a><!-- doxytag: member="SND_PCM_FORMAT_U16_LE" ref="gg3df0b888477ce2dc3817d9095db859b1fd962345a95e4011884481529dbd50ed" args="" -->SND_PCM_FORMAT_U16_LE</em> </td><td>
Unsigned 16 bit Little Endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b14f4cad05a01cc144f2bbb5ede1b4478d"></a><!-- doxytag: member="SND_PCM_FORMAT_U16_BE" ref="gg3df0b888477ce2dc3817d9095db859b14f4cad05a01cc144f2bbb5ede1b4478d" args="" -->SND_PCM_FORMAT_U16_BE</em> </td><td>
Unsigned 16 bit Big Endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b12910a784a2fad1488050dbad4a405425"></a><!-- doxytag: member="SND_PCM_FORMAT_S24_LE" ref="gg3df0b888477ce2dc3817d9095db859b12910a784a2fad1488050dbad4a405425" args="" -->SND_PCM_FORMAT_S24_LE</em> </td><td>
Signed 24 bit Little Endian using low three bytes in 32-bit word </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1b913df65ff393947209a2a122f23ac09"></a><!-- doxytag: member="SND_PCM_FORMAT_S24_BE" ref="gg3df0b888477ce2dc3817d9095db859b1b913df65ff393947209a2a122f23ac09" args="" -->SND_PCM_FORMAT_S24_BE</em> </td><td>
Signed 24 bit Big Endian using low three bytes in 32-bit word </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1a5ed81d5da37c42a055ac9e4f6f9c87c"></a><!-- doxytag: member="SND_PCM_FORMAT_U24_LE" ref="gg3df0b888477ce2dc3817d9095db859b1a5ed81d5da37c42a055ac9e4f6f9c87c" args="" -->SND_PCM_FORMAT_U24_LE</em> </td><td>
Unsigned 24 bit Little Endian using low three bytes in 32-bit word </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1b703b372e5804ace6c7689a3f12f0c1b"></a><!-- doxytag: member="SND_PCM_FORMAT_U24_BE" ref="gg3df0b888477ce2dc3817d9095db859b1b703b372e5804ace6c7689a3f12f0c1b" args="" -->SND_PCM_FORMAT_U24_BE</em> </td><td>
Unsigned 24 bit Big Endian using low three bytes in 32-bit word </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1b81569c9916d906bfe429d563ae654d2"></a><!-- doxytag: member="SND_PCM_FORMAT_S32_LE" ref="gg3df0b888477ce2dc3817d9095db859b1b81569c9916d906bfe429d563ae654d2" args="" -->SND_PCM_FORMAT_S32_LE</em> </td><td>
Signed 32 bit Little Endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1ba162e352ec24c8741cf1136306796bb"></a><!-- doxytag: member="SND_PCM_FORMAT_S32_BE" ref="gg3df0b888477ce2dc3817d9095db859b1ba162e352ec24c8741cf1136306796bb" args="" -->SND_PCM_FORMAT_S32_BE</em> </td><td>
Signed 32 bit Big Endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1dd88e5350c2d13f5b6a80adfbab9d2dc"></a><!-- doxytag: member="SND_PCM_FORMAT_U32_LE" ref="gg3df0b888477ce2dc3817d9095db859b1dd88e5350c2d13f5b6a80adfbab9d2dc" args="" -->SND_PCM_FORMAT_U32_LE</em> </td><td>
Unsigned 32 bit Little Endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1b65c0ba7d2b97fca68837c954668348d"></a><!-- doxytag: member="SND_PCM_FORMAT_U32_BE" ref="gg3df0b888477ce2dc3817d9095db859b1b65c0ba7d2b97fca68837c954668348d" args="" -->SND_PCM_FORMAT_U32_BE</em> </td><td>
Unsigned 32 bit Big Endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b15b0d929c729f3ac4e31a32b91eeb3671"></a><!-- doxytag: member="SND_PCM_FORMAT_FLOAT_LE" ref="gg3df0b888477ce2dc3817d9095db859b15b0d929c729f3ac4e31a32b91eeb3671" args="" -->SND_PCM_FORMAT_FLOAT_LE</em> </td><td>
Float 32 bit Little Endian, Range -1.0 to 1.0 </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b12831bd34b834e232d9a2055e75e2a7d7"></a><!-- doxytag: member="SND_PCM_FORMAT_FLOAT_BE" ref="gg3df0b888477ce2dc3817d9095db859b12831bd34b834e232d9a2055e75e2a7d7" args="" -->SND_PCM_FORMAT_FLOAT_BE</em> </td><td>
Float 32 bit Big Endian, Range -1.0 to 1.0 </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1700456822485bc78f384af29132213a2"></a><!-- doxytag: member="SND_PCM_FORMAT_FLOAT64_LE" ref="gg3df0b888477ce2dc3817d9095db859b1700456822485bc78f384af29132213a2" args="" -->SND_PCM_FORMAT_FLOAT64_LE</em> </td><td>
Float 64 bit Little Endian, Range -1.0 to 1.0 </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b11bef6d35ee18037293cf0f1de54c4a55"></a><!-- doxytag: member="SND_PCM_FORMAT_FLOAT64_BE" ref="gg3df0b888477ce2dc3817d9095db859b11bef6d35ee18037293cf0f1de54c4a55" args="" -->SND_PCM_FORMAT_FLOAT64_BE</em> </td><td>
Float 64 bit Big Endian, Range -1.0 to 1.0 </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1cc91fc5e6ab132b93211d506a1d4a640"></a><!-- doxytag: member="SND_PCM_FORMAT_IEC958_SUBFRAME_LE" ref="gg3df0b888477ce2dc3817d9095db859b1cc91fc5e6ab132b93211d506a1d4a640" args="" -->SND_PCM_FORMAT_IEC958_SUBFRAME_LE</em> </td><td>
IEC-958 Little Endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1094c3d9c1597024537afb661fc6f3d67"></a><!-- doxytag: member="SND_PCM_FORMAT_IEC958_SUBFRAME_BE" ref="gg3df0b888477ce2dc3817d9095db859b1094c3d9c1597024537afb661fc6f3d67" args="" -->SND_PCM_FORMAT_IEC958_SUBFRAME_BE</em> </td><td>
IEC-958 Big Endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1c747cf20bdfa683007bb97fb2878bac2"></a><!-- doxytag: member="SND_PCM_FORMAT_MU_LAW" ref="gg3df0b888477ce2dc3817d9095db859b1c747cf20bdfa683007bb97fb2878bac2" args="" -->SND_PCM_FORMAT_MU_LAW</em> </td><td>
Mu-Law </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b118ffea53e883d2dbf27edd9d7b1898dc"></a><!-- doxytag: member="SND_PCM_FORMAT_A_LAW" ref="gg3df0b888477ce2dc3817d9095db859b118ffea53e883d2dbf27edd9d7b1898dc" args="" -->SND_PCM_FORMAT_A_LAW</em> </td><td>
A-Law </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b13bea5a3e271c9129ca81bef2871bc8cc"></a><!-- doxytag: member="SND_PCM_FORMAT_IMA_ADPCM" ref="gg3df0b888477ce2dc3817d9095db859b13bea5a3e271c9129ca81bef2871bc8cc" args="" -->SND_PCM_FORMAT_IMA_ADPCM</em> </td><td>
Ima-ADPCM </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1578cc4339e19e2ed65e158995065d191"></a><!-- doxytag: member="SND_PCM_FORMAT_MPEG" ref="gg3df0b888477ce2dc3817d9095db859b1578cc4339e19e2ed65e158995065d191" args="" -->SND_PCM_FORMAT_MPEG</em> </td><td>
MPEG </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1bb6dec2a2b7bd31accea44e51864c962"></a><!-- doxytag: member="SND_PCM_FORMAT_GSM" ref="gg3df0b888477ce2dc3817d9095db859b1bb6dec2a2b7bd31accea44e51864c962" args="" -->SND_PCM_FORMAT_GSM</em> </td><td>
GSM </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b137ae44431ba9930992199d629ddc2ce4"></a><!-- doxytag: member="SND_PCM_FORMAT_SPECIAL" ref="gg3df0b888477ce2dc3817d9095db859b137ae44431ba9930992199d629ddc2ce4" args="" -->SND_PCM_FORMAT_SPECIAL</em> </td><td>
Special </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1e00d13527b515cff1b5538b1603b00b1"></a><!-- doxytag: member="SND_PCM_FORMAT_S24_3LE" ref="gg3df0b888477ce2dc3817d9095db859b1e00d13527b515cff1b5538b1603b00b1" args="" -->SND_PCM_FORMAT_S24_3LE</em> </td><td>
Signed 24bit Little Endian in 3bytes format </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b17c02049f0e2cd5bfce9dfe6825244eed"></a><!-- doxytag: member="SND_PCM_FORMAT_S24_3BE" ref="gg3df0b888477ce2dc3817d9095db859b17c02049f0e2cd5bfce9dfe6825244eed" args="" -->SND_PCM_FORMAT_S24_3BE</em> </td><td>
Signed 24bit Big Endian in 3bytes format </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b13db5e8a1b9935d66380a53588ce3ca0f"></a><!-- doxytag: member="SND_PCM_FORMAT_U24_3LE" ref="gg3df0b888477ce2dc3817d9095db859b13db5e8a1b9935d66380a53588ce3ca0f" args="" -->SND_PCM_FORMAT_U24_3LE</em> </td><td>
Unsigned 24bit Little Endian in 3bytes format </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b13863024395751336008557df4373ef5a"></a><!-- doxytag: member="SND_PCM_FORMAT_U24_3BE" ref="gg3df0b888477ce2dc3817d9095db859b13863024395751336008557df4373ef5a" args="" -->SND_PCM_FORMAT_U24_3BE</em> </td><td>
Unsigned 24bit Big Endian in 3bytes format </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1c76f1649d2f09b0160c38b33099803ad"></a><!-- doxytag: member="SND_PCM_FORMAT_S20_3LE" ref="gg3df0b888477ce2dc3817d9095db859b1c76f1649d2f09b0160c38b33099803ad" args="" -->SND_PCM_FORMAT_S20_3LE</em> </td><td>
Signed 20bit Little Endian in 3bytes format </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b106bc62eec3e70f5f123d089e53ecab35"></a><!-- doxytag: member="SND_PCM_FORMAT_S20_3BE" ref="gg3df0b888477ce2dc3817d9095db859b106bc62eec3e70f5f123d089e53ecab35" args="" -->SND_PCM_FORMAT_S20_3BE</em> </td><td>
Signed 20bit Big Endian in 3bytes format </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b156fca3ff0ead8e14aeba10c1b8aa8e48"></a><!-- doxytag: member="SND_PCM_FORMAT_U20_3LE" ref="gg3df0b888477ce2dc3817d9095db859b156fca3ff0ead8e14aeba10c1b8aa8e48" args="" -->SND_PCM_FORMAT_U20_3LE</em> </td><td>
Unsigned 20bit Little Endian in 3bytes format </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b175cca91c6f967717eaa9fccb6d5d91a3"></a><!-- doxytag: member="SND_PCM_FORMAT_U20_3BE" ref="gg3df0b888477ce2dc3817d9095db859b175cca91c6f967717eaa9fccb6d5d91a3" args="" -->SND_PCM_FORMAT_U20_3BE</em> </td><td>
Unsigned 20bit Big Endian in 3bytes format </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1768c8b654c414fc3e7478d204a1f06cc"></a><!-- doxytag: member="SND_PCM_FORMAT_S18_3LE" ref="gg3df0b888477ce2dc3817d9095db859b1768c8b654c414fc3e7478d204a1f06cc" args="" -->SND_PCM_FORMAT_S18_3LE</em> </td><td>
Signed 18bit Little Endian in 3bytes format </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1eec37dbf99dd51dc4780ee9cb972675c"></a><!-- doxytag: member="SND_PCM_FORMAT_S18_3BE" ref="gg3df0b888477ce2dc3817d9095db859b1eec37dbf99dd51dc4780ee9cb972675c" args="" -->SND_PCM_FORMAT_S18_3BE</em> </td><td>
Signed 18bit Big Endian in 3bytes format </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b120548535e0a5c2f03cf22ee6ed81329e"></a><!-- doxytag: member="SND_PCM_FORMAT_U18_3LE" ref="gg3df0b888477ce2dc3817d9095db859b120548535e0a5c2f03cf22ee6ed81329e" args="" -->SND_PCM_FORMAT_U18_3LE</em> </td><td>
Unsigned 18bit Little Endian in 3bytes format </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1b89ce8647062603cd2f65beda68dd385"></a><!-- doxytag: member="SND_PCM_FORMAT_U18_3BE" ref="gg3df0b888477ce2dc3817d9095db859b1b89ce8647062603cd2f65beda68dd385" args="" -->SND_PCM_FORMAT_U18_3BE</em> </td><td>
Unsigned 18bit Big Endian in 3bytes format </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b14474a5558bb6e875cbead77efea250f6"></a><!-- doxytag: member="SND_PCM_FORMAT_S16" ref="gg3df0b888477ce2dc3817d9095db859b14474a5558bb6e875cbead77efea250f6" args="" -->SND_PCM_FORMAT_S16</em> </td><td>
Signed 16 bit CPU endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1c3daa0fb8e639e28fbc7d1d5d70b868e"></a><!-- doxytag: member="SND_PCM_FORMAT_U16" ref="gg3df0b888477ce2dc3817d9095db859b1c3daa0fb8e639e28fbc7d1d5d70b868e" args="" -->SND_PCM_FORMAT_U16</em> </td><td>
Unsigned 16 bit CPU endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1a4c6ca6b42272b0830b819f4044bab0f"></a><!-- doxytag: member="SND_PCM_FORMAT_S24" ref="gg3df0b888477ce2dc3817d9095db859b1a4c6ca6b42272b0830b819f4044bab0f" args="" -->SND_PCM_FORMAT_S24</em> </td><td>
Signed 24 bit CPU endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1d276935928166dc9bef3b886fd7c3002"></a><!-- doxytag: member="SND_PCM_FORMAT_U24" ref="gg3df0b888477ce2dc3817d9095db859b1d276935928166dc9bef3b886fd7c3002" args="" -->SND_PCM_FORMAT_U24</em> </td><td>
Unsigned 24 bit CPU endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b125204219bb573eefe9613698eb4e2e20"></a><!-- doxytag: member="SND_PCM_FORMAT_S32" ref="gg3df0b888477ce2dc3817d9095db859b125204219bb573eefe9613698eb4e2e20" args="" -->SND_PCM_FORMAT_S32</em> </td><td>
Signed 32 bit CPU endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1a1ac7ba612e6695bff54ed3d52da662f"></a><!-- doxytag: member="SND_PCM_FORMAT_U32" ref="gg3df0b888477ce2dc3817d9095db859b1a1ac7ba612e6695bff54ed3d52da662f" args="" -->SND_PCM_FORMAT_U32</em> </td><td>
Unsigned 32 bit CPU endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1071eba3d276182aa46010e5456c69cdb"></a><!-- doxytag: member="SND_PCM_FORMAT_FLOAT" ref="gg3df0b888477ce2dc3817d9095db859b1071eba3d276182aa46010e5456c69cdb" args="" -->SND_PCM_FORMAT_FLOAT</em> </td><td>
Float 32 bit CPU endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b1ce658a16dd52f0a71e91335655148fce"></a><!-- doxytag: member="SND_PCM_FORMAT_FLOAT64" ref="gg3df0b888477ce2dc3817d9095db859b1ce658a16dd52f0a71e91335655148fce" args="" -->SND_PCM_FORMAT_FLOAT64</em> </td><td>
Float 64 bit CPU endian </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg3df0b888477ce2dc3817d9095db859b12bbb1ff20c782c566c8f5e27e35c77b1"></a><!-- doxytag: member="SND_PCM_FORMAT_IEC958_SUBFRAME" ref="gg3df0b888477ce2dc3817d9095db859b12bbb1ff20c782c566c8f5e27e35c77b1" args="" -->SND_PCM_FORMAT_IEC958_SUBFRAME</em> </td><td>
IEC-958 CPU Endian </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="ge59e5c86546a0800cc2026299b9c45ea"></a><!-- doxytag: member="pcm.h::_snd_pcm_start" ref="ge59e5c86546a0800cc2026299b9c45ea" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group___p_c_m.html#ge59e5c86546a0800cc2026299b9c45ea">_snd_pcm_start</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM start mode <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="gge59e5c86546a0800cc2026299b9c45ea140162e1e70365fd9992ade727313581"></a><!-- doxytag: member="SND_PCM_START_DATA" ref="gge59e5c86546a0800cc2026299b9c45ea140162e1e70365fd9992ade727313581" args="" -->SND_PCM_START_DATA</em> </td><td>
Automatic start on data read/write </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gge59e5c86546a0800cc2026299b9c45ea45c330dac53ac62d3a61bee2d181ba80"></a><!-- doxytag: member="SND_PCM_START_EXPLICIT" ref="gge59e5c86546a0800cc2026299b9c45ea45c330dac53ac62d3a61bee2d181ba80" args="" -->SND_PCM_START_EXPLICIT</em> </td><td>
Explicit start </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="gfff41b69676ea4a7efa64dd5642505dd"></a><!-- doxytag: member="pcm.h::_snd_pcm_state" ref="gfff41b69676ea4a7efa64dd5642505dd" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group___p_c_m.html#gfff41b69676ea4a7efa64dd5642505dd">_snd_pcm_state</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM state <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="ggfff41b69676ea4a7efa64dd5642505ddfdb9cd6c0ac1f99f2d9efb483f769811"></a><!-- doxytag: member="SND_PCM_STATE_OPEN" ref="ggfff41b69676ea4a7efa64dd5642505ddfdb9cd6c0ac1f99f2d9efb483f769811" args="" -->SND_PCM_STATE_OPEN</em> </td><td>
Open </td></tr>
<tr><td valign="top"><em><a class="anchor" name="ggfff41b69676ea4a7efa64dd5642505dd00b41db538fa5ebd07d479694dc2fa00"></a><!-- doxytag: member="SND_PCM_STATE_SETUP" ref="ggfff41b69676ea4a7efa64dd5642505dd00b41db538fa5ebd07d479694dc2fa00" args="" -->SND_PCM_STATE_SETUP</em> </td><td>
Setup installed </td></tr>
<tr><td valign="top"><em><a class="anchor" name="ggfff41b69676ea4a7efa64dd5642505ddfa179425d00d012af07ef15e1c066ea6"></a><!-- doxytag: member="SND_PCM_STATE_PREPARED" ref="ggfff41b69676ea4a7efa64dd5642505ddfa179425d00d012af07ef15e1c066ea6" args="" -->SND_PCM_STATE_PREPARED</em> </td><td>
Ready to start </td></tr>
<tr><td valign="top"><em><a class="anchor" name="ggfff41b69676ea4a7efa64dd5642505ddda46a834c177617864dd7c31bf3405ce"></a><!-- doxytag: member="SND_PCM_STATE_RUNNING" ref="ggfff41b69676ea4a7efa64dd5642505ddda46a834c177617864dd7c31bf3405ce" args="" -->SND_PCM_STATE_RUNNING</em> </td><td>
Running </td></tr>
<tr><td valign="top"><em><a class="anchor" name="ggfff41b69676ea4a7efa64dd5642505ddc2e9537a871c09e723853891887a3022"></a><!-- doxytag: member="SND_PCM_STATE_XRUN" ref="ggfff41b69676ea4a7efa64dd5642505ddc2e9537a871c09e723853891887a3022" args="" -->SND_PCM_STATE_XRUN</em> </td><td>
Stopped: underrun (playback) or overrun (capture) detected </td></tr>
<tr><td valign="top"><em><a class="anchor" name="ggfff41b69676ea4a7efa64dd5642505dd796dff0758c095701dabdc21fc8d7c1e"></a><!-- doxytag: member="SND_PCM_STATE_DRAINING" ref="ggfff41b69676ea4a7efa64dd5642505dd796dff0758c095701dabdc21fc8d7c1e" args="" -->SND_PCM_STATE_DRAINING</em> </td><td>
Draining: running (playback) or stopped (capture) </td></tr>
<tr><td valign="top"><em><a class="anchor" name="ggfff41b69676ea4a7efa64dd5642505dd613e0141c624e38dfa475d3f6208ded9"></a><!-- doxytag: member="SND_PCM_STATE_PAUSED" ref="ggfff41b69676ea4a7efa64dd5642505dd613e0141c624e38dfa475d3f6208ded9" args="" -->SND_PCM_STATE_PAUSED</em> </td><td>
Paused </td></tr>
<tr><td valign="top"><em><a class="anchor" name="ggfff41b69676ea4a7efa64dd5642505dd98aa49ed3dab65d6fd5c5a8e79cf3216"></a><!-- doxytag: member="SND_PCM_STATE_SUSPENDED" ref="ggfff41b69676ea4a7efa64dd5642505dd98aa49ed3dab65d6fd5c5a8e79cf3216" args="" -->SND_PCM_STATE_SUSPENDED</em> </td><td>
Hardware is suspended </td></tr>
<tr><td valign="top"><em><a class="anchor" name="ggfff41b69676ea4a7efa64dd5642505dd84b60699c11e6cf30b52fb21a8e672c1"></a><!-- doxytag: member="SND_PCM_STATE_DISCONNECTED" ref="ggfff41b69676ea4a7efa64dd5642505dd84b60699c11e6cf30b52fb21a8e672c1" args="" -->SND_PCM_STATE_DISCONNECTED</em> </td><td>
Hardware is disconnected </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g14c854408a86cfc89723c044d2554044"></a><!-- doxytag: member="pcm.h::_snd_pcm_stream" ref="g14c854408a86cfc89723c044d2554044" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group___p_c_m.html#g14c854408a86cfc89723c044d2554044">_snd_pcm_stream</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM stream (direction) <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="gg14c854408a86cfc89723c044d25540445265e8564200e92afed0297c3783a5ff"></a><!-- doxytag: member="SND_PCM_STREAM_PLAYBACK" ref="gg14c854408a86cfc89723c044d25540445265e8564200e92afed0297c3783a5ff" args="" -->SND_PCM_STREAM_PLAYBACK</em> </td><td>
Playback stream </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg14c854408a86cfc89723c044d25540441408c771b47bdb2cfce7f29984987311"></a><!-- doxytag: member="SND_PCM_STREAM_CAPTURE" ref="gg14c854408a86cfc89723c044d25540441408c771b47bdb2cfce7f29984987311" args="" -->SND_PCM_STREAM_CAPTURE</em> </td><td>
Capture stream </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g19dcdcf853fb7600192272d302f59d8f"></a><!-- doxytag: member="pcm.h::_snd_pcm_subclass" ref="g19dcdcf853fb7600192272d302f59d8f" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group___p_c_m.html#g19dcdcf853fb7600192272d302f59d8f">_snd_pcm_subclass</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM subclass <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="gg19dcdcf853fb7600192272d302f59d8fe1f4c9152c588f09a65dfe3dfa5c363a"></a><!-- doxytag: member="SND_PCM_SUBCLASS_GENERIC_MIX" ref="gg19dcdcf853fb7600192272d302f59d8fe1f4c9152c588f09a65dfe3dfa5c363a" args="" -->SND_PCM_SUBCLASS_GENERIC_MIX</em> </td><td>
subdevices are mixed together </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg19dcdcf853fb7600192272d302f59d8f38990b31c1b9be18f59728c241c8a6d9"></a><!-- doxytag: member="SND_PCM_SUBCLASS_MULTI_MIX" ref="gg19dcdcf853fb7600192272d302f59d8f38990b31c1b9be18f59728c241c8a6d9" args="" -->SND_PCM_SUBCLASS_MULTI_MIX</em> </td><td>
multichannel subdevices are mixed together </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="gc7652f59a81d97d298b8940761891402"></a><!-- doxytag: member="pcm.h::_snd_pcm_subformat" ref="gc7652f59a81d97d298b8940761891402" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group___p_c_m.html#gc7652f59a81d97d298b8940761891402">_snd_pcm_subformat</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM sample subformat <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="ggc7652f59a81d97d298b8940761891402d38946a25d9f95320a31a93dc6b12007"></a><!-- doxytag: member="SND_PCM_SUBFORMAT_STD" ref="ggc7652f59a81d97d298b8940761891402d38946a25d9f95320a31a93dc6b12007" args="" -->SND_PCM_SUBFORMAT_STD</em> </td><td>
Standard </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g74f84326b59d8a1e0a30f8c9bae8a143"></a><!-- doxytag: member="pcm.h::_snd_pcm_tstamp" ref="g74f84326b59d8a1e0a30f8c9bae8a143" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group___p_c_m.html#g74f84326b59d8a1e0a30f8c9bae8a143">_snd_pcm_tstamp</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM timestamp mode <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="gg74f84326b59d8a1e0a30f8c9bae8a1433815841c41b8e20ee36359b8ae3357b4"></a><!-- doxytag: member="SND_PCM_TSTAMP_NONE" ref="gg74f84326b59d8a1e0a30f8c9bae8a1433815841c41b8e20ee36359b8ae3357b4" args="" -->SND_PCM_TSTAMP_NONE</em> </td><td>
No timestamp </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg74f84326b59d8a1e0a30f8c9bae8a143479c37e31ae37db5fa477a72dd871484"></a><!-- doxytag: member="SND_PCM_TSTAMP_ENABLE" ref="gg74f84326b59d8a1e0a30f8c9bae8a143479c37e31ae37db5fa477a72dd871484" args="" -->SND_PCM_TSTAMP_ENABLE</em> </td><td>
Update timestamp at every hardware position update </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg74f84326b59d8a1e0a30f8c9bae8a14391165fb96090426bc5387e34f422f6d1"></a><!-- doxytag: member="SND_PCM_TSTAMP_MMAP" ref="gg74f84326b59d8a1e0a30f8c9bae8a14391165fb96090426bc5387e34f422f6d1" args="" -->SND_PCM_TSTAMP_MMAP</em> </td><td>
Equivalent with <a class="el" href="group___p_c_m.html#gg74f84326b59d8a1e0a30f8c9bae8a143479c37e31ae37db5fa477a72dd871484">SND_PCM_TSTAMP_ENABLE</a>, just for compatibility with older versions </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g60df675e39a8c0da3488bc06b1fe34ff"></a><!-- doxytag: member="pcm.h::_snd_pcm_type" ref="g60df675e39a8c0da3488bc06b1fe34ff" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group___p_c_m.html#g60df675e39a8c0da3488bc06b1fe34ff">_snd_pcm_type</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM type <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ffe297ff921ee07ada1b6e830381884c13"></a><!-- doxytag: member="SND_PCM_TYPE_HW" ref="gg60df675e39a8c0da3488bc06b1fe34ffe297ff921ee07ada1b6e830381884c13" args="" -->SND_PCM_TYPE_HW</em> </td><td>
Kernel level PCM </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff8280c3d193127d708f0e3562b197ace9"></a><!-- doxytag: member="SND_PCM_TYPE_HOOKS" ref="gg60df675e39a8c0da3488bc06b1fe34ff8280c3d193127d708f0e3562b197ace9" args="" -->SND_PCM_TYPE_HOOKS</em> </td><td>
Hooked PCM </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff563501d97b4e08d3627a8fa55454ad39"></a><!-- doxytag: member="SND_PCM_TYPE_MULTI" ref="gg60df675e39a8c0da3488bc06b1fe34ff563501d97b4e08d3627a8fa55454ad39" args="" -->SND_PCM_TYPE_MULTI</em> </td><td>
One or more linked PCM with exclusive access to selected channels </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff636243d7c9964a490b80383a5e533000"></a><!-- doxytag: member="SND_PCM_TYPE_FILE" ref="gg60df675e39a8c0da3488bc06b1fe34ff636243d7c9964a490b80383a5e533000" args="" -->SND_PCM_TYPE_FILE</em> </td><td>
File writing plugin </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff91b0869b8f12fdc614f927706494ab3f"></a><!-- doxytag: member="SND_PCM_TYPE_NULL" ref="gg60df675e39a8c0da3488bc06b1fe34ff91b0869b8f12fdc614f927706494ab3f" args="" -->SND_PCM_TYPE_NULL</em> </td><td>
Null endpoint PCM </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff2dc63ce34e8f3c5f64e7550e0bf4264c"></a><!-- doxytag: member="SND_PCM_TYPE_SHM" ref="gg60df675e39a8c0da3488bc06b1fe34ff2dc63ce34e8f3c5f64e7550e0bf4264c" args="" -->SND_PCM_TYPE_SHM</em> </td><td>
Shared memory client PCM </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34fff3ab3bd115dcc7977c520e7fadd98f36"></a><!-- doxytag: member="SND_PCM_TYPE_INET" ref="gg60df675e39a8c0da3488bc06b1fe34fff3ab3bd115dcc7977c520e7fadd98f36" args="" -->SND_PCM_TYPE_INET</em> </td><td>
INET client PCM (not yet implemented) </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ffceb6a0a6a48adc07c34fe6b04dd24d46"></a><!-- doxytag: member="SND_PCM_TYPE_COPY" ref="gg60df675e39a8c0da3488bc06b1fe34ffceb6a0a6a48adc07c34fe6b04dd24d46" args="" -->SND_PCM_TYPE_COPY</em> </td><td>
Copying plugin </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ffdc4d68340a88ebd57fbd2d570f642fd7"></a><!-- doxytag: member="SND_PCM_TYPE_LINEAR" ref="gg60df675e39a8c0da3488bc06b1fe34ffdc4d68340a88ebd57fbd2d570f642fd7" args="" -->SND_PCM_TYPE_LINEAR</em> </td><td>
Linear format conversion PCM </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff01e0eb5d226642cf1aab04dbaeedad62"></a><!-- doxytag: member="SND_PCM_TYPE_ALAW" ref="gg60df675e39a8c0da3488bc06b1fe34ff01e0eb5d226642cf1aab04dbaeedad62" args="" -->SND_PCM_TYPE_ALAW</em> </td><td>
A-Law format conversion PCM </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff7f0a2173420b4d499531ca8aa5d58c0e"></a><!-- doxytag: member="SND_PCM_TYPE_MULAW" ref="gg60df675e39a8c0da3488bc06b1fe34ff7f0a2173420b4d499531ca8aa5d58c0e" args="" -->SND_PCM_TYPE_MULAW</em> </td><td>
Mu-Law format conversion PCM </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ffe0a0b41ef6c9c1a4f8f1cf4f83be53c7"></a><!-- doxytag: member="SND_PCM_TYPE_ADPCM" ref="gg60df675e39a8c0da3488bc06b1fe34ffe0a0b41ef6c9c1a4f8f1cf4f83be53c7" args="" -->SND_PCM_TYPE_ADPCM</em> </td><td>
IMA-ADPCM format conversion PCM </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ffb2489342a56d392a34db6f155365efa2"></a><!-- doxytag: member="SND_PCM_TYPE_RATE" ref="gg60df675e39a8c0da3488bc06b1fe34ffb2489342a56d392a34db6f155365efa2" args="" -->SND_PCM_TYPE_RATE</em> </td><td>
Rate conversion PCM </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff9d59342f163452b68240698f8c88e113"></a><!-- doxytag: member="SND_PCM_TYPE_ROUTE" ref="gg60df675e39a8c0da3488bc06b1fe34ff9d59342f163452b68240698f8c88e113" args="" -->SND_PCM_TYPE_ROUTE</em> </td><td>
Attenuated static route PCM </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff3733f6dea6f9b3d27c16a4fba143c07f"></a><!-- doxytag: member="SND_PCM_TYPE_PLUG" ref="gg60df675e39a8c0da3488bc06b1fe34ff3733f6dea6f9b3d27c16a4fba143c07f" args="" -->SND_PCM_TYPE_PLUG</em> </td><td>
Format adjusted PCM </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff09effbc4ee7996886a44c6417514c94d"></a><!-- doxytag: member="SND_PCM_TYPE_SHARE" ref="gg60df675e39a8c0da3488bc06b1fe34ff09effbc4ee7996886a44c6417514c94d" args="" -->SND_PCM_TYPE_SHARE</em> </td><td>
Sharing PCM </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff8ed9dac157f4433fbc4233db1483b3d2"></a><!-- doxytag: member="SND_PCM_TYPE_METER" ref="gg60df675e39a8c0da3488bc06b1fe34ff8ed9dac157f4433fbc4233db1483b3d2" args="" -->SND_PCM_TYPE_METER</em> </td><td>
Meter plugin </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff1154d518a74546c26a7acc7c6d0c4678"></a><!-- doxytag: member="SND_PCM_TYPE_MIX" ref="gg60df675e39a8c0da3488bc06b1fe34ff1154d518a74546c26a7acc7c6d0c4678" args="" -->SND_PCM_TYPE_MIX</em> </td><td>
Mixing PCM </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff0921d2e59d73baac6c15b9d58707bf8d"></a><!-- doxytag: member="SND_PCM_TYPE_DROUTE" ref="gg60df675e39a8c0da3488bc06b1fe34ff0921d2e59d73baac6c15b9d58707bf8d" args="" -->SND_PCM_TYPE_DROUTE</em> </td><td>
Attenuated dynamic route PCM (not yet implemented) </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff0e1af32ee705d55452a546ff3f2160cf"></a><!-- doxytag: member="SND_PCM_TYPE_LBSERVER" ref="gg60df675e39a8c0da3488bc06b1fe34ff0e1af32ee705d55452a546ff3f2160cf" args="" -->SND_PCM_TYPE_LBSERVER</em> </td><td>
Loopback server plugin (not yet implemented) </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff29c1f3c1da208841edf3807aa5ae181a"></a><!-- doxytag: member="SND_PCM_TYPE_LINEAR_FLOAT" ref="gg60df675e39a8c0da3488bc06b1fe34ff29c1f3c1da208841edf3807aa5ae181a" args="" -->SND_PCM_TYPE_LINEAR_FLOAT</em> </td><td>
Linear Integer <-> Linear Float format conversion PCM </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff5ee6ca9c53778bc0c613d3cb640263c9"></a><!-- doxytag: member="SND_PCM_TYPE_LADSPA" ref="gg60df675e39a8c0da3488bc06b1fe34ff5ee6ca9c53778bc0c613d3cb640263c9" args="" -->SND_PCM_TYPE_LADSPA</em> </td><td>
LADSPA integration plugin </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff2409ff6f0cf384ba97908ce30532c47c"></a><!-- doxytag: member="SND_PCM_TYPE_DMIX" ref="gg60df675e39a8c0da3488bc06b1fe34ff2409ff6f0cf384ba97908ce30532c47c" args="" -->SND_PCM_TYPE_DMIX</em> </td><td>
Direct Mixing plugin </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff73f0ddc138765e9552864c017621479d"></a><!-- doxytag: member="SND_PCM_TYPE_JACK" ref="gg60df675e39a8c0da3488bc06b1fe34ff73f0ddc138765e9552864c017621479d" args="" -->SND_PCM_TYPE_JACK</em> </td><td>
Jack Audio Connection Kit plugin </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ffd9da4f56f6d197cca3fa5486518614bf"></a><!-- doxytag: member="SND_PCM_TYPE_DSNOOP" ref="gg60df675e39a8c0da3488bc06b1fe34ffd9da4f56f6d197cca3fa5486518614bf" args="" -->SND_PCM_TYPE_DSNOOP</em> </td><td>
Direct Snooping plugin </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ffd9df24991f65e883932df94408af0301"></a><!-- doxytag: member="SND_PCM_TYPE_DSHARE" ref="gg60df675e39a8c0da3488bc06b1fe34ffd9df24991f65e883932df94408af0301" args="" -->SND_PCM_TYPE_DSHARE</em> </td><td>
Direct Sharing plugin </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff181c2002d8e5fc426aa00bef6e37ab6a"></a><!-- doxytag: member="SND_PCM_TYPE_IEC958" ref="gg60df675e39a8c0da3488bc06b1fe34ff181c2002d8e5fc426aa00bef6e37ab6a" args="" -->SND_PCM_TYPE_IEC958</em> </td><td>
IEC958 subframe plugin </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ff86d853593012cc1d44eec4584cb73cf0"></a><!-- doxytag: member="SND_PCM_TYPE_SOFTVOL" ref="gg60df675e39a8c0da3488bc06b1fe34ff86d853593012cc1d44eec4584cb73cf0" args="" -->SND_PCM_TYPE_SOFTVOL</em> </td><td>
Soft volume plugin </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ffb17e6d681bc99340f9decff724744afd"></a><!-- doxytag: member="SND_PCM_TYPE_IOPLUG" ref="gg60df675e39a8c0da3488bc06b1fe34ffb17e6d681bc99340f9decff724744afd" args="" -->SND_PCM_TYPE_IOPLUG</em> </td><td>
External I/O plugin </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ffb0897ed7ee70bda6daa7ef5f2a3567f0"></a><!-- doxytag: member="SND_PCM_TYPE_EXTPLUG" ref="gg60df675e39a8c0da3488bc06b1fe34ffb0897ed7ee70bda6daa7ef5f2a3567f0" args="" -->SND_PCM_TYPE_EXTPLUG</em> </td><td>
External filter plugin </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg60df675e39a8c0da3488bc06b1fe34ffa4006da4201fb10e07439fd3ae66598b"></a><!-- doxytag: member="SND_PCM_TYPE_MMAP_EMUL" ref="gg60df675e39a8c0da3488bc06b1fe34ffa4006da4201fb10e07439fd3ae66598b" args="" -->SND_PCM_TYPE_MMAP_EMUL</em> </td><td>
Mmap-emulation plugin </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g738b1e7fcc482110be9108caf73a08e3"></a><!-- doxytag: member="pcm.h::_snd_pcm_xrun" ref="g738b1e7fcc482110be9108caf73a08e3" args="" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group___p_c_m.html#g738b1e7fcc482110be9108caf73a08e3">_snd_pcm_xrun</a> </td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
PCM xrun mode <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="gg738b1e7fcc482110be9108caf73a08e3d39dd17bb924014fedc6440801be3ca4"></a><!-- doxytag: member="SND_PCM_XRUN_NONE" ref="gg738b1e7fcc482110be9108caf73a08e3d39dd17bb924014fedc6440801be3ca4" args="" -->SND_PCM_XRUN_NONE</em> </td><td>
Xrun detection disabled </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg738b1e7fcc482110be9108caf73a08e35399142873351b3e7bc85007cf38f97f"></a><!-- doxytag: member="SND_PCM_XRUN_STOP" ref="gg738b1e7fcc482110be9108caf73a08e35399142873351b3e7bc85007cf38f97f" args="" -->SND_PCM_XRUN_STOP</em> </td><td>
Stop on xrun detection </td></tr>
</table>
</dl>
</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g0d343597cdce35871a5010b6e6d5535b"></a><!-- doxytag: member="pcm.h::snd_async_add_pcm_handler" ref="g0d343597cdce35871a5010b6e6d5535b" 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#ga966cc0e80d3b8f070437c851114d5a5">snd_async_handler_t</a> ** </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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </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#gc2c426c7ea09cdcc0cdb398660104baa">snd_async_callback_t</a> </td>
<td class="paramname"> <em>callback</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"> <em>private_data</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Add an async handler for a PCM.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>handler</em> </td><td>Returned handler handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>callback</em> </td><td>Callback function </td></tr>
<tr><td valign="top"></td><td valign="top"><em>private_data</em> </td><td>Callback private data </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 otherwise a negative error code on failure</dd></dl>
The asynchronous callback is called when period boundary elapses. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a101">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="ga393c80ca5d5c3739f23066ac43b12f6"></a><!-- doxytag: member="pcm.h::snd_async_handler_get_pcm" ref="ga393c80ca5d5c3739f23066ac43b12f6" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a>* snd_async_handler_get_pcm </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___global.html#ga966cc0e80d3b8f070437c851114d5a5">snd_async_handler_t</a> * </td>
<td class="paramname"> <em>handler</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Return PCM handle related to an async handler.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>handler</em> </td><td>Async handler handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>PCM handle </dd></dl>
<dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a98">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g41ca534658076885d9b077ad674750cd"></a><!-- doxytag: member="pcm.h::snd_pcm_avail_update" ref="g41ca534658076885d9b077ad674750cd" 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#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> snd_pcm_avail_update </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Return number of frames ready to be read (capture) / written (playback).
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>a positive number of frames ready otherwise a negative error code</dd></dl>
On capture does all the actions needed to transport to application level all the ready frames across underlying layers. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a100">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="gff39173ece95bba5fa69bc6ea15634e6"></a><!-- doxytag: member="pcm.h::snd_pcm_close" ref="gff39173ece95bba5fa69bc6ea15634e6" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
close PCM handle
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
Closes the specified PCM handle and frees all associated resources. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a56">/test/latency.c</a>, <a class="el" href="_2test_2pcm_8c-example.html#a119">/test/pcm.c</a>, and <a class="el" href="_2test_2pcm__min_8c-example.html#a131">/test/pcm_min.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="ga0d9e14a4be65209eb549e48a9f07302"></a><!-- doxytag: member="pcm.h::snd_pcm_delay" ref="ga0d9e14a4be65209eb549e48a9f07302" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </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#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> * </td>
<td class="paramname"> <em>delayp</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Obtain delay for a running PCM handle.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>delayp</em> </td><td>Returned delay in frames </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
Delay is distance between current application frame position and sound frame position. It's positive and less than buffer size in normal situation, negative on playback underrun and greater than buffer size on capture overrun.<p>
Note this function does not update the actual r/w pointer for applications. The function <a class="el" href="group___p_c_m.html#g41ca534658076885d9b077ad674750cd">snd_pcm_avail_update()</a> have to be called before any begin+commit operation.
</div>
</div><p>
<a class="anchor" name="gef0a474698d7140d57f69db6cea9233e"></a><!-- doxytag: member="pcm.h::snd_pcm_drain" ref="gef0a474698d7140d57f69db6cea9233e" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Stop a PCM preserving pending frames.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl compact><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> </td><td>a suspend event occurred</td></tr>
</table>
</dl>
For playback wait for all pending frames to be played and then stop the PCM. For capture stop PCM permitting to retrieve residual frames.<p>
For stopping the PCM stream immediately, use <a class="el" href="group___p_c_m.html#gf3eacffb0c2ead60fd2cb10911d47c83">::snd_pcm_drop()</a> instead. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a53">/test/latency.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="gf3eacffb0c2ead60fd2cb10911d47c83"></a><!-- doxytag: member="pcm.h::snd_pcm_drop" ref="gf3eacffb0c2ead60fd2cb10911d47c83" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Stop a PCM dropping pending frames.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
This function stops the PCM <em>immediately</em>. The pending samples on the buffer are ignored.<p>
For processing all pending samples, use <a class="el" href="group___p_c_m.html#gef0a474698d7140d57f69db6cea9233e">::snd_pcm_drain()</a> instead. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a51">/test/latency.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="gde089303a00232b6a0faade8b9c536ea"></a><!-- doxytag: member="pcm.h::snd_pcm_forward" ref="gde089303a00232b6a0faade8b9c536ea" 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#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> snd_pcm_forward </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </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#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> </td>
<td class="paramname"> <em>frames</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Move application frame position forward.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>frames</em> </td><td>wanted skip in frames </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>a positive number for actual skip otherwise a negative error code </dd></dl>
<dl compact><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> </td><td>means no action </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="g74e0d77eb3e47e63be3a4b1f448e589e"></a><!-- doxytag: member="pcm.h::snd_pcm_forwardable" ref="g74e0d77eb3e47e63be3a4b1f448e589e" 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#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> snd_pcm_forwardable </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get safe count of frames which can be forwarded.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>a positive number of frames or negative error code</dd></dl>
Note: The <a class="el" href="group___p_c_m.html#gde089303a00232b6a0faade8b9c536ea">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.
</div>
</div><p>
<a class="anchor" name="gb3bac19c1caa5d844a61b89952490b9b"></a><!-- doxytag: member="pcm.h::snd_pcm_get_params" ref="gb3bac19c1caa5d844a61b89952490b9b" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </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#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> * </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#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> * </td>
<td class="paramname"> <em>period_size</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get the transfer size parameters in a simple way.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>buffer_size</em> </td><td>PCM ring buffer size in frames </td></tr>
<tr><td valign="top"></td><td valign="top"><em>period_size</em> </td><td>PCM period size in frames </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
</div>
</div><p>
<a class="anchor" name="g2cf0d8395319073e8a672a84ac9d2759"></a><!-- doxytag: member="pcm.h::snd_pcm_htimestamp" ref="g2cf0d8395319073e8a672a84ac9d2759" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </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#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> * </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#g9ec799950aa7da856cf805705197c390">snd_htimestamp_t</a> * </td>
<td class="paramname"> <em>tstamp</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Obtain last position update hi-res timestamp.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>avail</em> </td><td>Number of available frames when timestamp was grabbed </td></tr>
<tr><td valign="top"></td><td valign="top"><em>tstamp</em> </td><td>Hi-res timestamp </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
Note this function does not update the actual r/w pointer for applications.
</div>
</div><p>
<a class="anchor" name="gd9d9a6795127aaf349ccc728d7687fc0"></a><!-- doxytag: member="pcm.h::snd_pcm_hw_free" ref="gd9d9a6795127aaf349ccc728d7687fc0" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Remove PCM hardware configuration and free associated resources.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a55">/test/latency.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g98ba19d2800b7d601277fd8c068505da"></a><!-- doxytag: member="pcm.h::snd_pcm_hw_params" ref="g98ba19d2800b7d601277fd8c068505da" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </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#g232a2e2b6bb7bb2dca2885eec2e095b3">snd_pcm_hw_params_t</a> * </td>
<td class="paramname"> <em>params</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></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#g692ad9e5902d0623b56a0decee0fa686">snd_pcm_prepare</a> it.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>params</em> </td><td>Configuration space definition container </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
The configuration is chosen fixing single parameters in this order: first access, first format, first subformat, min channels, min rate, min period time, max buffer size, min tick time<p>
After this call, <a class="el" href="group___p_c_m.html#g692ad9e5902d0623b56a0decee0fa686">snd_pcm_prepare()</a> is called automatically and the stream is brought to <code><a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505ddfa179425d00d012af07ef15e1c066ea6">SND_PCM_STATE_PREPARED</a></code> state.<p>
The hardware parameters cannot be changed when the stream is running (active). The software parameters can be changed at any time. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a18">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a80">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g156d751cccef80727b32cbbee6844569"></a><!-- doxytag: member="pcm.h::snd_pcm_hw_params_current" ref="g156d751cccef80727b32cbbee6844569" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </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#g232a2e2b6bb7bb2dca2885eec2e095b3">snd_pcm_hw_params_t</a> * </td>
<td class="paramname"> <em>params</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Retreive current PCM hardware configuration chosen with <a class="el" href="group___p_c_m.html#g98ba19d2800b7d601277fd8c068505da">snd_pcm_hw_params</a>.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>params</em> </td><td>Configuration space definition container </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
</div>
</div><p>
<a class="anchor" name="g4fee1b4912e3497d01e94fe863d8dff1"></a><!-- doxytag: member="pcm.h::snd_pcm_hwsync" ref="g4fee1b4912e3497d01e94fe863d8dff1" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Synchronize stream position with hardware.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
Note this function does not update the actual r/w pointer for applications. The function <a class="el" href="group___p_c_m.html#g41ca534658076885d9b077ad674750cd">snd_pcm_avail_update()</a> have to be called before any mmap begin+commit operation.
</div>
</div><p>
<a class="anchor" name="gf7a1518a6833a1e2110ea22c5727a565"></a><!-- doxytag: member="pcm.h::snd_pcm_info" ref="gf7a1518a6833a1e2110ea22c5727a565" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </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#g2226bdcc6e780543beaadc319332e37b">snd_pcm_info_t</a> * </td>
<td class="paramname"> <em>info</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Obtain general (static) information for PCM handle.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>info</em> </td><td>Information container </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
</div>
</div><p>
<a class="anchor" name="gd8e6bfda4bd0908f874fbe420bbc063d"></a><!-- doxytag: member="pcm.h::snd_pcm_link" ref="gd8e6bfda4bd0908f874fbe420bbc063d" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm2</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Link two PCMs.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm1</em> </td><td>first PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>pcm2</em> </td><td>first PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
The two PCMs will start/stop/prepare in sync. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a47">/test/latency.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g396fcf972944424de85b3df7ccf51b40"></a><!-- doxytag: member="pcm.h::snd_pcm_name" ref="g396fcf972944424de85b3df7ccf51b40" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
get identifier of PCM handle
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>ascii identifier of PCM handle</dd></dl>
Returns the ASCII identifier of given PCM handle. It's the same identifier specified in <a class="el" href="group___p_c_m.html#gb7eaaec6f27e4ca48cada9795cd2479b">snd_pcm_open()</a>.
</div>
</div><p>
<a class="anchor" name="g083b56d6e5d04e46bc2f4b63e3a67f1d"></a><!-- doxytag: member="pcm.h::snd_pcm_nonblock" ref="g083b56d6e5d04e46bc2f4b63e3a67f1d" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"> <em>nonblock</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
set nonblock mode
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>nonblock</em> </td><td>0 = block, 1 = nonblock mode </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a52">/test/latency.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="gb7eaaec6f27e4ca48cada9795cd2479b"></a><!-- doxytag: member="pcm.h::snd_pcm_open" ref="gb7eaaec6f27e4ca48cada9795cd2479b" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> ** </td>
<td class="paramname"> <em>pcmp</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </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#g854f0966bd0d7248ed3d9e5c293136ed">snd_pcm_stream_t</a> </td>
<td class="paramname"> <em>stream</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"> <em>mode</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Opens a PCM.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcmp</em> </td><td>Returned PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>ASCII identifier of the PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>stream</em> </td><td>Wanted stream </td></tr>
<tr><td valign="top"></td><td valign="top"><em>mode</em> </td><td>Open mode (see <a class="el" href="group___p_c_m.html#g1a96c6dabb17e9e91e74f81237bf726a">SND_PCM_NONBLOCK</a>, <a class="el" href="group___p_c_m.html#g38a8281b66b92829ec24d61bf2c48da1">SND_PCM_ASYNC</a>) </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a43">/test/latency.c</a>, <a class="el" href="_2test_2pcm_8c-example.html#a115">/test/pcm.c</a>, and <a class="el" href="_2test_2pcm__min_8c-example.html#a123">/test/pcm_min.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g7e8bd4c5b4468996f9cf9ec6eea0b8d7"></a><!-- doxytag: member="pcm.h::snd_pcm_open_lconf" ref="g7e8bd4c5b4468996f9cf9ec6eea0b8d7" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> ** </td>
<td class="paramname"> <em>pcmp</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </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#g854f0966bd0d7248ed3d9e5c293136ed">snd_pcm_stream_t</a> </td>
<td class="paramname"> <em>stream</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </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#gb7dc173feea5bedcd999bba678eb53a7">snd_config_t</a> * </td>
<td class="paramname"> <em>lconf</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Opens a PCM using local configuration.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcmp</em> </td><td>Returned PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>ASCII identifier of the PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>stream</em> </td><td>Wanted stream </td></tr>
<tr><td valign="top"></td><td valign="top"><em>mode</em> </td><td>Open mode (see <a class="el" href="group___p_c_m.html#g1a96c6dabb17e9e91e74f81237bf726a">SND_PCM_NONBLOCK</a>, <a class="el" href="group___p_c_m.html#g38a8281b66b92829ec24d61bf2c48da1">SND_PCM_ASYNC</a>) </td></tr>
<tr><td valign="top"></td><td valign="top"><em>lconf</em> </td><td>Local configuration </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
</div>
</div><p>
<a class="anchor" name="ga94a91f769c34dff733b1639c98f3c47"></a><!-- doxytag: member="pcm.h::snd_pcm_pause" ref="ga94a91f769c34dff733b1639c98f3c47" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"> <em>enable</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Pause/resume PCM.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>enable</em> </td><td>0 = resume, 1 = pause </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
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#g41a6b095cfa73090d4bc4f7fd6bded08">::snd_pcm_hw_params_can_pause()</a> function.
</div>
</div><p>
<a class="anchor" name="gfc99365835bb429cac8c994fa56a42d7"></a><!-- doxytag: member="pcm.h::snd_pcm_poll_descriptors" ref="gfc99365835bb429cac8c994fa56a42d7" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct pollfd * </td>
<td class="paramname"> <em>pfds</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int </td>
<td class="paramname"> <em>space</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
get poll descriptors
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>pfds</em> </td><td>array of poll descriptors </td></tr>
<tr><td valign="top"></td><td valign="top"><em>space</em> </td><td>space in the poll descriptor array </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>count of filled descriptors</dd></dl>
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#gbb3a82026325a80f503b7c89532397f6">::snd_pcm_poll_descriptors_count()</a> function.<p>
The result is intended for direct use with the poll() syscall.<p>
For reading the returned events of poll descriptor after poll() system call, use <a class="el" href="group___p_c_m.html#g4aefafc201ed12f0b10fa1b7967705e7">::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#g4aefafc201ed12f0b10fa1b7967705e7">::snd_pcm_poll_descriptors_revents()</a> function does the right "demangling".<p>
You can use output from this function as arguments for the select() syscall, too. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a92">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="gbb3a82026325a80f503b7c89532397f6"></a><!-- doxytag: member="pcm.h::snd_pcm_poll_descriptors_count" ref="gbb3a82026325a80f503b7c89532397f6" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
get count of poll descriptors for PCM handle
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>count of poll descriptors </dd></dl>
<dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a91">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g4aefafc201ed12f0b10fa1b7967705e7"></a><!-- doxytag: member="pcm.h::snd_pcm_poll_descriptors_revents" ref="g4aefafc201ed12f0b10fa1b7967705e7" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct pollfd * </td>
<td class="paramname"> <em>pfds</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int </td>
<td class="paramname"> <em>nfds</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned short * </td>
<td class="paramname"> <em>revents</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
get returned events from poll descriptors
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>pfds</em> </td><td>array of poll descriptors </td></tr>
<tr><td valign="top"></td><td valign="top"><em>nfds</em> </td><td>count of poll descriptors </td></tr>
<tr><td valign="top"></td><td valign="top"><em>revents</em> </td><td>returned events </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>zero if success, otherwise a negative error code</dd></dl>
This function does "demangling" of the revents mask returned from the poll() syscall to correct semantics (POLLIN = read, POLLOUT = write).<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(). <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a90">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g692ad9e5902d0623b56a0decee0fa686"></a><!-- doxytag: member="pcm.h::snd_pcm_prepare" ref="g692ad9e5902d0623b56a0decee0fa686" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Prepare PCM for use.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a28">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a87">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g745cb155f2664255474d611568335d4d"></a><!-- doxytag: member="pcm.h::snd_pcm_readi" ref="g745cb155f2664255474d611568335d4d" 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#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> snd_pcm_readi </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </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#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> </td>
<td class="paramname"> <em>size</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Read interleaved frames from a PCM.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>buffer</em> </td><td>frames containing buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>frames to be written </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>a positive number of frames actually read otherwise a negative error code </dd></dl>
<dl compact><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> </td><td>PCM is not in the right state (<a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505ddfa179425d00d012af07ef15e1c066ea6">SND_PCM_STATE_PREPARED</a> or <a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505ddda46a834c177617864dd7c31bf3405ce">SND_PCM_STATE_RUNNING</a>) </td></tr>
<tr><td valign="top"></td><td valign="top"><em>-EPIPE</em> </td><td>an overrun occurred </td></tr>
<tr><td valign="top"></td><td valign="top"><em>-ESTRPIPE</em> </td><td>a suspend event occurred (stream is suspended and waiting for an application recovery)</td></tr>
</table>
</dl>
If the blocking behaviour was selected, then routine waits until all requested bytes are filled. The count of bytes can be less only if a signal or underrun occurred.<p>
If the non-blocking behaviour is selected, then routine doesn't wait at all. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a36">/test/latency.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="gfdbb013a65910f8b8dee29bd16a78685"></a><!-- doxytag: member="pcm.h::snd_pcm_readn" ref="gfdbb013a65910f8b8dee29bd16a78685" 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#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> snd_pcm_readn </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void ** </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#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> </td>
<td class="paramname"> <em>size</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Read non interleaved frames to a PCM.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>bufs</em> </td><td>frames containing buffers (one for each channel) </td></tr>
<tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>frames to be written </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>a positive number of frames actually read otherwise a negative error code </dd></dl>
<dl compact><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> </td><td>PCM is not in the right state (<a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505ddfa179425d00d012af07ef15e1c066ea6">SND_PCM_STATE_PREPARED</a> or <a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505ddda46a834c177617864dd7c31bf3405ce">SND_PCM_STATE_RUNNING</a>) </td></tr>
<tr><td valign="top"></td><td valign="top"><em>-EPIPE</em> </td><td>an overrun occurred </td></tr>
<tr><td valign="top"></td><td valign="top"><em>-ESTRPIPE</em> </td><td>a suspend event occurred (stream is suspended and waiting for an application recovery)</td></tr>
</table>
</dl>
If the blocking behaviour was selected, then routine waits until all requested bytes are filled. The count of bytes can be less only if a signal or underrun occurred.<p>
If the non-blocking behaviour is selected, then routine doesn't wait at all.
</div>
</div><p>
<a class="anchor" name="g9ec4481b5a13f33038b2b88a9cdfa372"></a><!-- doxytag: member="pcm.h::snd_pcm_recover" ref="g9ec4481b5a13f33038b2b88a9cdfa372" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"> <em>err</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"> <em>silent</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Recover the stream state from an error or suspend.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>err</em> </td><td>error number </td></tr>
<tr><td valign="top"></td><td valign="top"><em>silent</em> </td><td>do not print error reason </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 when error code was handled successfuly, otherwise a negative error code</dd></dl>
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>
Note that this function returs the original error code when it is not handled inside this function (for example -EAGAIN is returned back). <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm__min_8c-example.html#a130">/test/pcm_min.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g2579838482736c83db77782feb46f0ca"></a><!-- doxytag: member="pcm.h::snd_pcm_reset" ref="g2579838482736c83db77782feb46f0ca" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Reset PCM position.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
Reduce PCM delay to 0.
</div>
</div><p>
<a class="anchor" name="g3484c8039de196b37144869c5935109c"></a><!-- doxytag: member="pcm.h::snd_pcm_resume" ref="g3484c8039de196b37144869c5935109c" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Resume from suspend, no samples are lost.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl compact><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> </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> </td><td>hardware doesn't support this feature</td></tr>
</table>
</dl>
This function can be used when the stream is in the suspend state to do the fine resume from this state. Not all hardware supports this feature, when an -ENOSYS error is returned, use the <a class="el" href="group___p_c_m.html#g692ad9e5902d0623b56a0decee0fa686">::snd_pcm_prepare()</a> function to recovery. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a88">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g57575d5fc512027bca93ce4c0a2c47c8"></a><!-- doxytag: member="pcm.h::snd_pcm_rewind" ref="g57575d5fc512027bca93ce4c0a2c47c8" 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#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> snd_pcm_rewind </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </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#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> </td>
<td class="paramname"> <em>frames</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Move application frame position backward.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>frames</em> </td><td>wanted displacement in frames </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>a positive number for actual displacement otherwise a negative error code </dd></dl>
</div>
</div><p>
<a class="anchor" name="g8f56faf60ea6b60839e131df88f080d7"></a><!-- doxytag: member="pcm.h::snd_pcm_rewindable" ref="g8f56faf60ea6b60839e131df88f080d7" 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#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> snd_pcm_rewindable </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Get safe count of frames which can be rewinded.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>a positive number of frames or negative error code</dd></dl>
Note: The <a class="el" href="group___p_c_m.html#g57575d5fc512027bca93ce4c0a2c47c8">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.
</div>
</div><p>
<a class="anchor" name="g6aa164ed37308d66bcc079f5cd265a09"></a><!-- doxytag: member="pcm.h::snd_pcm_set_params" ref="g6aa164ed37308d66bcc079f5cd265a09" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </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#g5ae31ebbea7972ce97a498040df1839e">snd_pcm_format_t</a> </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#gb838921f42075ebe3f8744889a8ecd87">snd_pcm_access_t</a> </td>
<td class="paramname"> <em>access</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int </td>
<td class="paramname"> <em>channels</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int </td>
<td class="paramname"> <em>rate</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"> <em>soft_resample</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int </td>
<td class="paramname"> <em>latency</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Set the hardware and software parameters in a simple way.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>format</em> </td><td>required PCM format </td></tr>
<tr><td valign="top"></td><td valign="top"><em>access</em> </td><td>required PCM access </td></tr>
<tr><td valign="top"></td><td valign="top"><em>channels</em> </td><td>required PCM channels </td></tr>
<tr><td valign="top"></td><td valign="top"><em>rate</em> </td><td>required sample rate in Hz </td></tr>
<tr><td valign="top"></td><td valign="top"><em>soft_resample</em> </td><td>0 = disallow alsa-lib resample stream, 1 = allow resampling </td></tr>
<tr><td valign="top"></td><td valign="top"><em>latency</em> </td><td>required overall latency in us (0 = optimum latency for players) </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm__min_8c-example.html#a126">/test/pcm_min.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="ga59e471867bd560a08ee19d091c71451"></a><!-- doxytag: member="pcm.h::snd_pcm_start" ref="ga59e471867bd560a08ee19d091c71451" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Start a PCM.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl compact><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#a102">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g4bf83ebcddd9b6c838c45192740e0375"></a><!-- doxytag: member="pcm.h::snd_pcm_state" ref="g4bf83ebcddd9b6c838c45192740e0375" 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#gd08aecb11dff7aa18f2480f8ab1b72d1">snd_pcm_state_t</a> snd_pcm_state </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Return PCM state.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>PCM state <a class="el" href="group___p_c_m.html#gd08aecb11dff7aa18f2480f8ab1b72d1">snd_pcm_state_t</a> of given PCM handle</dd></dl>
This is a faster way to obtain only the PCM state without calling <a class="el" href="group___p_c_m.html#g3517971b4faf263cf91d146b5a07169d">::snd_pcm_status()</a>. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2pcm_8c-example.html#a93">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g3517971b4faf263cf91d146b5a07169d"></a><!-- doxytag: member="pcm.h::snd_pcm_status" ref="g3517971b4faf263cf91d146b5a07169d" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </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#g1f281a9476a599d4f320297e3a07ec79">snd_pcm_status_t</a> * </td>
<td class="paramname"> <em>status</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Obtain status (runtime) information for PCM handle.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>status</em> </td><td>Status container </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a32">/test/latency.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g8a6dfe581f9b2423280d2cd9ce06eb1f"></a><!-- doxytag: member="pcm.h::snd_pcm_stream" ref="g8a6dfe581f9b2423280d2cd9ce06eb1f" 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#g854f0966bd0d7248ed3d9e5c293136ed">snd_pcm_stream_t</a> snd_pcm_stream </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
get stream for a PCM handle
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>stream of PCM handle</dd></dl>
Returns the type <a class="el" href="group___p_c_m.html#g854f0966bd0d7248ed3d9e5c293136ed">snd_pcm_stream_t</a> of given PCM handle.
</div>
</div><p>
<a class="anchor" name="g848317f8dfab2e828e9db7bd106b3c6a"></a><!-- doxytag: member="pcm.h::snd_pcm_sw_params" ref="g848317f8dfab2e828e9db7bd106b3c6a" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </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#g999c8c52d8a8d521f1f2cfcd902d7098">snd_pcm_sw_params_t</a> * </td>
<td class="paramname"> <em>params</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Install PCM software configuration defined by params.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>params</em> </td><td>Configuration container </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code</dd></dl>
The software parameters can be changed at any time. The hardware parameters cannot be changed when the stream is running (active). <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a23">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a86">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g04f309dd4dbad5bcfbfbf8c0219051c0"></a><!-- doxytag: member="pcm.h::snd_pcm_sw_params_current" ref="g04f309dd4dbad5bcfbfbf8c0219051c0" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </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#g999c8c52d8a8d521f1f2cfcd902d7098">snd_pcm_sw_params_t</a> * </td>
<td class="paramname"> <em>params</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Return current software configuration for a PCM.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>params</em> </td><td>Software configuration container </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a19">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a82">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="gf417ca2e3e1282a04385c0ca85775053"></a><!-- doxytag: member="pcm.h::snd_pcm_type" ref="gf417ca2e3e1282a04385c0ca85775053" 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#g32ab38b53d7b554cf93546f6f1d325de">snd_pcm_type_t</a> snd_pcm_type </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
get type of PCM handle
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>type of PCM handle</dd></dl>
Returns the type <a class="el" href="group___p_c_m.html#g32ab38b53d7b554cf93546f6f1d325de">snd_pcm_type_t</a> of given PCM handle.
</div>
</div><p>
<a class="anchor" name="g2aaafe137f51e2bef723ecef821967ac"></a><!-- doxytag: member="pcm.h::snd_pcm_unlink" ref="g2aaafe137f51e2bef723ecef821967ac" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em> </td>
<td> ) </td>
<td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Remove a PCM from a linked group.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success otherwise a negative error code </dd></dl>
<dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a54">/test/latency.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="gd74d8ca5d9e05b6540a7d8892e6137ff"></a><!-- doxytag: member="pcm.h::snd_pcm_wait" ref="gd74d8ca5d9e05b6540a7d8892e6137ff" 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#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"> <em>timeout</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Wait for a PCM to become ready.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>timeout</em> </td><td>maximum time in milliseconds to wait, a negative value means infinity </td></tr>
</table>
</dl>
<dl compact><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 compact><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> </td><td>timeout occurred </td></tr>
<tr><td valign="top"></td><td valign="top"><em>1</em> </td><td>PCM stream is ready for I/O </td></tr>
</table>
</dl>
<dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a50">/test/latency.c</a>, and <a class="el" href="_2test_2pcm_8c-example.html#a106">/test/pcm.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="gf13067c0ebde29118ca05af76e5b17a9"></a><!-- doxytag: member="pcm.h::snd_pcm_writei" ref="gf13067c0ebde29118ca05af76e5b17a9" 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#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> snd_pcm_writei </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void * </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#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> </td>
<td class="paramname"> <em>size</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Write interleaved frames to a PCM.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>buffer</em> </td><td>frames containing buffer </td></tr>
<tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>frames to be written </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>a positive number of frames actually written otherwise a negative error code </dd></dl>
<dl compact><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> </td><td>PCM is not in the right state (<a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505ddfa179425d00d012af07ef15e1c066ea6">SND_PCM_STATE_PREPARED</a> or <a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505ddda46a834c177617864dd7c31bf3405ce">SND_PCM_STATE_RUNNING</a>) </td></tr>
<tr><td valign="top"></td><td valign="top"><em>-EPIPE</em> </td><td>an underrun occurred </td></tr>
<tr><td valign="top"></td><td valign="top"><em>-ESTRPIPE</em> </td><td>a suspend event occurred (stream is suspended and waiting for an application recovery)</td></tr>
</table>
</dl>
If the blocking behaviour is selected, then routine waits until all requested bytes are played or put to the playback ring buffer. The count of bytes can be less only if a signal or underrun occurred.<p>
If the non-blocking behaviour is selected, then routine doesn't wait at all. <dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="_2test_2latency_8c-example.html#a38">/test/latency.c</a>, <a class="el" href="_2test_2pcm_8c-example.html#a89">/test/pcm.c</a>, and <a class="el" href="_2test_2pcm__min_8c-example.html#a129">/test/pcm_min.c</a>.</dl>
</div>
</div><p>
<a class="anchor" name="g4f8b271ce99e7058fd1ff729abf96eb7"></a><!-- doxytag: member="pcm.h::snd_pcm_writen" ref="g4f8b271ce99e7058fd1ff729abf96eb7" 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#g842d603aa3a4bc5b4596b42490104da3">snd_pcm_sframes_t</a> snd_pcm_writen </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___p_c_m.html#gb5676348e7618b444e28907607660cef">snd_pcm_t</a> * </td>
<td class="paramname"> <em>pcm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void ** </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#g2c6283616ba424092089264ae7e193e6">snd_pcm_uframes_t</a> </td>
<td class="paramname"> <em>size</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td width="100%"></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Write non interleaved frames to a PCM.
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>pcm</em> </td><td>PCM handle </td></tr>
<tr><td valign="top"></td><td valign="top"><em>bufs</em> </td><td>frames containing buffers (one for each channel) </td></tr>
<tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>frames to be written </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>a positive number of frames actually written otherwise a negative error code </dd></dl>
<dl compact><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> </td><td>PCM is not in the right state (<a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505ddfa179425d00d012af07ef15e1c066ea6">SND_PCM_STATE_PREPARED</a> or <a class="el" href="group___p_c_m.html#ggfff41b69676ea4a7efa64dd5642505ddda46a834c177617864dd7c31bf3405ce">SND_PCM_STATE_RUNNING</a>) </td></tr>
<tr><td valign="top"></td><td valign="top"><em>-EPIPE</em> </td><td>an underrun occurred </td></tr>
<tr><td valign="top"></td><td valign="top"><em>-ESTRPIPE</em> </td><td>a suspend event occurred (stream is suspended and waiting for an application recovery)</td></tr>
</table>
</dl>
If the blocking behaviour is selected, then routine waits until all requested bytes are played or put to the playback ring buffer. The count of bytes can be less only if a signal or underrun occurred.<p>
If the non-blocking behaviour is selected, then routine doesn't wait at all.
</div>
</div><p>
<hr size="1"><address style="align: right;"><small>Generated on Tue Jan 20 22:42:10 2009 for ALSA project - the C library reference by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
</body>
</html>