Sophie

Sophie

distrib > Mageia > 5 > x86_64 > by-pkgid > 7281b619e6b612f5388cfad6b0e56530 > files > 8

sdl2-docs-2.0.3-4.mga5.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.8"/>
<title>My Project: SDL_audio.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">My Project
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.8 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>

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

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">SDL_audio.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="SDL__stdinc_8h_source.html">SDL_stdinc.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="SDL__error_8h_source.html">SDL_error.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="SDL__endian_8h_source.html">SDL_endian.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="SDL__mutex_8h_source.html">SDL_mutex.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="SDL__thread_8h_source.html">SDL_thread.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="SDL__rwops_8h_source.html">SDL_rwops.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="begin__code_8h_source.html">begin_code.h</a>&quot;</code><br />
<code>#include &quot;<a class="el" href="close__code_8h_source.html">close_code.h</a>&quot;</code><br />
</div>
<p><a href="SDL__audio_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structSDL__AudioCVT.html">SDL_AudioCVT</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ac34fc6df953e2bae89919edaaa740ff3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#ac34fc6df953e2bae89919edaaa740ff3">SDL_AUDIOCVT_PACKED</a></td></tr>
<tr class="separator:ac34fc6df953e2bae89919edaaa740ff3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a611f76dc30ba9891239bcce3f9b472b5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a611f76dc30ba9891239bcce3f9b472b5">SDL_LoadWAV</a>(file, spec, audio_buf, audio_len)&#160;&#160;&#160;<a class="el" href="SDL__audio_8h.html#a7e5d38e8c1f8951704a76330c3b1ac81">SDL_LoadWAV_RW</a>(SDL_RWFromFile(file, &quot;rb&quot;),1, spec,audio_buf,audio_len)</td></tr>
<tr class="separator:a611f76dc30ba9891239bcce3f9b472b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa8e5e92d4424b0c599e7c813c91f720"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa8e5e92d4424b0c599e7c813c91f720"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_MIX_MAXVOLUME</b>&#160;&#160;&#160;128</td></tr>
<tr class="separator:afa8e5e92d4424b0c599e7c813c91f720"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Audio flags</div></td></tr>
<tr class="memitem:ade51417b52dbd9511d56066caae0038b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade51417b52dbd9511d56066caae0038b"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AUDIO_MASK_BITSIZE</b>&#160;&#160;&#160;(0xFF)</td></tr>
<tr class="separator:ade51417b52dbd9511d56066caae0038b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50b4779246a7fbf4a39205a396ec7ea6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50b4779246a7fbf4a39205a396ec7ea6"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AUDIO_MASK_DATATYPE</b>&#160;&#160;&#160;(1&lt;&lt;8)</td></tr>
<tr class="separator:a50b4779246a7fbf4a39205a396ec7ea6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab070cdd4d92ee3824cafefe24c620326"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab070cdd4d92ee3824cafefe24c620326"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AUDIO_MASK_ENDIAN</b>&#160;&#160;&#160;(1&lt;&lt;12)</td></tr>
<tr class="separator:ab070cdd4d92ee3824cafefe24c620326"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06fc66d3c421c6c9b733854b73d104ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06fc66d3c421c6c9b733854b73d104ce"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AUDIO_MASK_SIGNED</b>&#160;&#160;&#160;(1&lt;&lt;15)</td></tr>
<tr class="separator:a06fc66d3c421c6c9b733854b73d104ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe2f2a9193ad3a8fa822787098df266d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abe2f2a9193ad3a8fa822787098df266d"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AUDIO_BITSIZE</b>(x)&#160;&#160;&#160;(x &amp; SDL_AUDIO_MASK_BITSIZE)</td></tr>
<tr class="separator:abe2f2a9193ad3a8fa822787098df266d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86ee1651c17955594a547e96b9c94890"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a86ee1651c17955594a547e96b9c94890"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AUDIO_ISFLOAT</b>(x)&#160;&#160;&#160;(x &amp; SDL_AUDIO_MASK_DATATYPE)</td></tr>
<tr class="separator:a86ee1651c17955594a547e96b9c94890"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27e82da51370d77f83e4ea2098c9d38c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a27e82da51370d77f83e4ea2098c9d38c"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AUDIO_ISBIGENDIAN</b>(x)&#160;&#160;&#160;(x &amp; SDL_AUDIO_MASK_ENDIAN)</td></tr>
<tr class="separator:a27e82da51370d77f83e4ea2098c9d38c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a518fa9273a6a8b8b6f1d599ccca71434"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a518fa9273a6a8b8b6f1d599ccca71434"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AUDIO_ISSIGNED</b>(x)&#160;&#160;&#160;(x &amp; SDL_AUDIO_MASK_SIGNED)</td></tr>
<tr class="separator:a518fa9273a6a8b8b6f1d599ccca71434"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a197decf956e451a5a10e7221974b0548"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a197decf956e451a5a10e7221974b0548"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AUDIO_ISINT</b>(x)&#160;&#160;&#160;(!SDL_AUDIO_ISFLOAT(x))</td></tr>
<tr class="separator:a197decf956e451a5a10e7221974b0548"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2026be07a23986f2b7681a3500c8c341"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2026be07a23986f2b7681a3500c8c341"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AUDIO_ISLITTLEENDIAN</b>(x)&#160;&#160;&#160;(!SDL_AUDIO_ISBIGENDIAN(x))</td></tr>
<tr class="separator:a2026be07a23986f2b7681a3500c8c341"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9f715eb12c43474ad0aae52976e5095"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9f715eb12c43474ad0aae52976e5095"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AUDIO_ISUNSIGNED</b>(x)&#160;&#160;&#160;(!SDL_AUDIO_ISSIGNED(x))</td></tr>
<tr class="separator:aa9f715eb12c43474ad0aae52976e5095"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Audio format flags</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Defaults to LSB byte order. </p>
</div></td></tr>
<tr class="memitem:a6468b4b3fc53ada655eca866e491d75f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a6468b4b3fc53ada655eca866e491d75f">AUDIO_U8</a>&#160;&#160;&#160;0x0008</td></tr>
<tr class="separator:a6468b4b3fc53ada655eca866e491d75f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a883b3d4539451e49bf014dde0f9cca29"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a883b3d4539451e49bf014dde0f9cca29">AUDIO_S8</a>&#160;&#160;&#160;0x8008</td></tr>
<tr class="separator:a883b3d4539451e49bf014dde0f9cca29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06808f806896c4d211314990c354b7fc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a06808f806896c4d211314990c354b7fc">AUDIO_U16LSB</a>&#160;&#160;&#160;0x0010</td></tr>
<tr class="separator:a06808f806896c4d211314990c354b7fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23838d612e88ce72d82c3e51460f831b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a23838d612e88ce72d82c3e51460f831b">AUDIO_S16LSB</a>&#160;&#160;&#160;0x8010</td></tr>
<tr class="separator:a23838d612e88ce72d82c3e51460f831b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b8052d0c49d14a2e3edf08eade52d3a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a3b8052d0c49d14a2e3edf08eade52d3a">AUDIO_U16MSB</a>&#160;&#160;&#160;0x1010</td></tr>
<tr class="separator:a3b8052d0c49d14a2e3edf08eade52d3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3109dfb1d7aab29dff2b62d630e690ca"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a3109dfb1d7aab29dff2b62d630e690ca">AUDIO_S16MSB</a>&#160;&#160;&#160;0x9010</td></tr>
<tr class="separator:a3109dfb1d7aab29dff2b62d630e690ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adee2cdf7dbda44620da17cd58ca819ea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adee2cdf7dbda44620da17cd58ca819ea"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>AUDIO_U16</b>&#160;&#160;&#160;<a class="el" href="SDL__audio_8h.html#a06808f806896c4d211314990c354b7fc">AUDIO_U16LSB</a></td></tr>
<tr class="separator:adee2cdf7dbda44620da17cd58ca819ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f4950d8eee757ebed84e50fb9316b12"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f4950d8eee757ebed84e50fb9316b12"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>AUDIO_S16</b>&#160;&#160;&#160;<a class="el" href="SDL__audio_8h.html#a23838d612e88ce72d82c3e51460f831b">AUDIO_S16LSB</a></td></tr>
<tr class="separator:a4f4950d8eee757ebed84e50fb9316b12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">int32 support</div></td></tr>
<tr class="memitem:ac81f9cc5739cea67436daf2689d29559"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#ac81f9cc5739cea67436daf2689d29559">AUDIO_S32LSB</a>&#160;&#160;&#160;0x8020</td></tr>
<tr class="separator:ac81f9cc5739cea67436daf2689d29559"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30641d7487680630c231b3415ecd47b6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a30641d7487680630c231b3415ecd47b6">AUDIO_S32MSB</a>&#160;&#160;&#160;0x9020</td></tr>
<tr class="separator:a30641d7487680630c231b3415ecd47b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaffc0931336d0d79717a144039670223"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaffc0931336d0d79717a144039670223"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>AUDIO_S32</b>&#160;&#160;&#160;<a class="el" href="SDL__audio_8h.html#ac81f9cc5739cea67436daf2689d29559">AUDIO_S32LSB</a></td></tr>
<tr class="separator:aaffc0931336d0d79717a144039670223"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">float32 support</div></td></tr>
<tr class="memitem:afaef57ecb718053b572c539e27e72d61"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#afaef57ecb718053b572c539e27e72d61">AUDIO_F32LSB</a>&#160;&#160;&#160;0x8120</td></tr>
<tr class="separator:afaef57ecb718053b572c539e27e72d61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d57382c01fdcd78cbbbb480605d91ef"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a2d57382c01fdcd78cbbbb480605d91ef">AUDIO_F32MSB</a>&#160;&#160;&#160;0x9120</td></tr>
<tr class="separator:a2d57382c01fdcd78cbbbb480605d91ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4633772ee12935960a25ff8334c29990"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4633772ee12935960a25ff8334c29990"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>AUDIO_F32</b>&#160;&#160;&#160;<a class="el" href="SDL__audio_8h.html#afaef57ecb718053b572c539e27e72d61">AUDIO_F32LSB</a></td></tr>
<tr class="separator:a4633772ee12935960a25ff8334c29990"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Native audio byte ordering</div></td></tr>
<tr class="memitem:afafc9f93ee2c583130c4152e243ba5b8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afafc9f93ee2c583130c4152e243ba5b8"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>AUDIO_U16SYS</b>&#160;&#160;&#160;<a class="el" href="SDL__audio_8h.html#a06808f806896c4d211314990c354b7fc">AUDIO_U16LSB</a></td></tr>
<tr class="separator:afafc9f93ee2c583130c4152e243ba5b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4722de7e16982dd078f2b8cc64b9bae7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4722de7e16982dd078f2b8cc64b9bae7"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>AUDIO_S16SYS</b>&#160;&#160;&#160;<a class="el" href="SDL__audio_8h.html#a23838d612e88ce72d82c3e51460f831b">AUDIO_S16LSB</a></td></tr>
<tr class="separator:a4722de7e16982dd078f2b8cc64b9bae7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aafcbadd8f6fa14a878178bf18b883675"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aafcbadd8f6fa14a878178bf18b883675"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>AUDIO_S32SYS</b>&#160;&#160;&#160;<a class="el" href="SDL__audio_8h.html#ac81f9cc5739cea67436daf2689d29559">AUDIO_S32LSB</a></td></tr>
<tr class="separator:aafcbadd8f6fa14a878178bf18b883675"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af001a94efb4bea024c233cae0cf98e6b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af001a94efb4bea024c233cae0cf98e6b"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>AUDIO_F32SYS</b>&#160;&#160;&#160;<a class="el" href="SDL__audio_8h.html#afaef57ecb718053b572c539e27e72d61">AUDIO_F32LSB</a></td></tr>
<tr class="separator:af001a94efb4bea024c233cae0cf98e6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Allow change flags</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Which audio format changes are allowed when opening a device. </p>
</div></td></tr>
<tr class="memitem:a4b05381c3f0871e9a88b46959365f796"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b05381c3f0871e9a88b46959365f796"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AUDIO_ALLOW_FREQUENCY_CHANGE</b>&#160;&#160;&#160;0x00000001</td></tr>
<tr class="separator:a4b05381c3f0871e9a88b46959365f796"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32dbc13d28bdc43d7e07e080e24fb573"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32dbc13d28bdc43d7e07e080e24fb573"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AUDIO_ALLOW_FORMAT_CHANGE</b>&#160;&#160;&#160;0x00000002</td></tr>
<tr class="separator:a32dbc13d28bdc43d7e07e080e24fb573"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad9eab304c2cee512410508811268575"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad9eab304c2cee512410508811268575"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AUDIO_ALLOW_CHANNELS_CHANGE</b>&#160;&#160;&#160;0x00000004</td></tr>
<tr class="separator:aad9eab304c2cee512410508811268575"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbee9b7a641274139377898c21df92e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbee9b7a641274139377898c21df92e8"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AUDIO_ALLOW_ANY_CHANGE</b>&#160;&#160;&#160;(SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE)</td></tr>
<tr class="separator:acbee9b7a641274139377898c21df92e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a491ed103fd25d920c4e6b7495217ce66"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="SDL__stdinc_8h.html#a31fcc0a076c9068668173ee26d33e42b">Uint16</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a491ed103fd25d920c4e6b7495217ce66">SDL_AudioFormat</a></td></tr>
<tr class="memdesc:a491ed103fd25d920c4e6b7495217ce66"><td class="mdescLeft">&#160;</td><td class="mdescRight">Audio format flags.  <a href="#a491ed103fd25d920c4e6b7495217ce66">More...</a><br /></td></tr>
<tr class="separator:a491ed103fd25d920c4e6b7495217ce66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10d3bc96cdfc1d478f52c13d5ffd9316"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a10d3bc96cdfc1d478f52c13d5ffd9316"></a>
typedef <a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>stream</b></td></tr>
<tr class="separator:a10d3bc96cdfc1d478f52c13d5ffd9316"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac759c9f8b2506530e65879e566e59f02"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac759c9f8b2506530e65879e566e59f02"></a>
typedef <a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a> <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a>&#160;</td><td class="memItemRight" valign="bottom"><b>len</b></td></tr>
<tr class="separator:ac759c9f8b2506530e65879e566e59f02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77faa7fe3d22c03ee61466a901c22a25"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a77faa7fe3d22c03ee61466a901c22a25">SDL_AudioSpec</a></td></tr>
<tr class="separator:a77faa7fe3d22c03ee61466a901c22a25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a623c5b7577f9ec4174db688b61b73be7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a623c5b7577f9ec4174db688b61b73be7"></a>
typedef <a class="el" href="SDL__audio_8h.html#a491ed103fd25d920c4e6b7495217ce66">SDL_AudioFormat</a>&#160;</td><td class="memItemRight" valign="bottom"><b>format</b></td></tr>
<tr class="separator:a623c5b7577f9ec4174db688b61b73be7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc284f22978d12646dbffa692fe0c0ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afc284f22978d12646dbffa692fe0c0ae"></a>
typedef struct <a class="el" href="structSDL__AudioCVT.html">SDL_AudioCVT</a>&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AudioCVT</b></td></tr>
<tr class="separator:afc284f22978d12646dbffa692fe0c0ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a677d9d2a6f77a7502a0dc8b45ad211bb"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="SDL__stdinc_8h.html#add440eff171ea5f55cb00c4a9ab8672d">Uint32</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a677d9d2a6f77a7502a0dc8b45ad211bb">SDL_AudioDeviceID</a></td></tr>
<tr class="separator:a677d9d2a6f77a7502a0dc8b45ad211bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a52835ae37c4bb905b903cbaf5d04b05f"><td class="memItemLeft" align="right" valign="top">typedef&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a> (SDLCALL *SDL_AudioCallback)(void *userdata</td></tr>
<tr class="separator:a52835ae37c4bb905b903cbaf5d04b05f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a15b19f26c314e3640ea396251a1ff010"><td class="memItemLeft" align="right" valign="top">DECLSPEC const char *SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a15b19f26c314e3640ea396251a1ff010">SDL_GetCurrentAudioDriver</a> (<a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a>)</td></tr>
<tr class="separator:a15b19f26c314e3640ea396251a1ff010"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2edf30e7747584e28041b4986f89f440"><td class="memItemLeft" align="right" valign="top">DECLSPEC <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a2edf30e7747584e28041b4986f89f440">SDL_OpenAudio</a> (<a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a> *desired, <a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a> *obtained)</td></tr>
<tr class="separator:a2edf30e7747584e28041b4986f89f440"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae165f64b3f0fecfebe1c97731600ca59"><td class="memItemLeft" align="right" valign="top">DECLSPEC <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#ae165f64b3f0fecfebe1c97731600ca59">SDL_GetNumAudioDevices</a> (<a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> iscapture)</td></tr>
<tr class="separator:ae165f64b3f0fecfebe1c97731600ca59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a846bae7fa1183b644c96cbb49e2c8cf5"><td class="memItemLeft" align="right" valign="top">DECLSPEC const char *SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a846bae7fa1183b644c96cbb49e2c8cf5">SDL_GetAudioDeviceName</a> (<a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> index, <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> iscapture)</td></tr>
<tr class="separator:a846bae7fa1183b644c96cbb49e2c8cf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af54523e415de7c7fdd0d48a76ab58bb3"><td class="memItemLeft" align="right" valign="top">DECLSPEC <a class="el" href="SDL__audio_8h.html#a677d9d2a6f77a7502a0dc8b45ad211bb">SDL_AudioDeviceID</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#af54523e415de7c7fdd0d48a76ab58bb3">SDL_OpenAudioDevice</a> (const char *device, <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> iscapture, const <a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a> *desired, <a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a> *obtained, <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> allowed_changes)</td></tr>
<tr class="separator:af54523e415de7c7fdd0d48a76ab58bb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e5d38e8c1f8951704a76330c3b1ac81"><td class="memItemLeft" align="right" valign="top">DECLSPEC <a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a> *SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a7e5d38e8c1f8951704a76330c3b1ac81">SDL_LoadWAV_RW</a> (<a class="el" href="structSDL__RWops.html">SDL_RWops</a> *src, <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> freesrc, <a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a> *spec, <a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a> **audio_buf, <a class="el" href="SDL__stdinc_8h.html#add440eff171ea5f55cb00c4a9ab8672d">Uint32</a> *audio_len)</td></tr>
<tr class="separator:a7e5d38e8c1f8951704a76330c3b1ac81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a631aa8624575603df2c5ab9257feee59"><td class="memItemLeft" align="right" valign="top">DECLSPEC <a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a631aa8624575603df2c5ab9257feee59">SDL_FreeWAV</a> (<a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a> *audio_buf)</td></tr>
<tr class="separator:a631aa8624575603df2c5ab9257feee59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41e1602bc7cd4edb87ca779cf01d40bb"><td class="memItemLeft" align="right" valign="top">DECLSPEC <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a41e1602bc7cd4edb87ca779cf01d40bb">SDL_BuildAudioCVT</a> (<a class="el" href="structSDL__AudioCVT.html">SDL_AudioCVT</a> *cvt, <a class="el" href="SDL__audio_8h.html#a491ed103fd25d920c4e6b7495217ce66">SDL_AudioFormat</a> src_format, <a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a> src_channels, <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> src_rate, <a class="el" href="SDL__audio_8h.html#a491ed103fd25d920c4e6b7495217ce66">SDL_AudioFormat</a> dst_format, <a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a> dst_channels, <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> dst_rate)</td></tr>
<tr class="separator:a41e1602bc7cd4edb87ca779cf01d40bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e8660222356e07002dde4928118b7df"><td class="memItemLeft" align="right" valign="top">DECLSPEC <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a8e8660222356e07002dde4928118b7df">SDL_ConvertAudio</a> (<a class="el" href="structSDL__AudioCVT.html">SDL_AudioCVT</a> *cvt)</td></tr>
<tr class="separator:a8e8660222356e07002dde4928118b7df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9ad945b4b15d816802f5a79da06c9f9"><td class="memItemLeft" align="right" valign="top">DECLSPEC <a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#ab9ad945b4b15d816802f5a79da06c9f9">SDL_MixAudio</a> (<a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a> *dst, const <a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a> *src, <a class="el" href="SDL__stdinc_8h.html#add440eff171ea5f55cb00c4a9ab8672d">Uint32</a> len, <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> volume)</td></tr>
<tr class="separator:ab9ad945b4b15d816802f5a79da06c9f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27a0ad33d17f87a2d7574be78d2f39b7"><td class="memItemLeft" align="right" valign="top">DECLSPEC <a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#a27a0ad33d17f87a2d7574be78d2f39b7">SDL_MixAudioFormat</a> (<a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a> *dst, const <a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a> *src, <a class="el" href="SDL__audio_8h.html#a491ed103fd25d920c4e6b7495217ce66">SDL_AudioFormat</a> format, <a class="el" href="SDL__stdinc_8h.html#add440eff171ea5f55cb00c4a9ab8672d">Uint32</a> len, <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> volume)</td></tr>
<tr class="separator:a27a0ad33d17f87a2d7574be78d2f39b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa176acc650e66e1d38814cbed3ca258e"><td class="memItemLeft" align="right" valign="top">DECLSPEC <a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="SDL__audio_8h.html#aa176acc650e66e1d38814cbed3ca258e">SDL_CloseAudio</a> (<a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a>)</td></tr>
<tr class="separator:aa176acc650e66e1d38814cbed3ca258e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd910f31079d53b6c0ea8bf32dac0ce6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abd910f31079d53b6c0ea8bf32dac0ce6"></a>
DECLSPEC <a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_CloseAudioDevice</b> (<a class="el" href="SDL__audio_8h.html#a677d9d2a6f77a7502a0dc8b45ad211bb">SDL_AudioDeviceID</a> dev)</td></tr>
<tr class="separator:abd910f31079d53b6c0ea8bf32dac0ce6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Driver discovery functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>These functions return the list of built in audio drivers, in the order that they are normally initialized by default. </p>
</div></td></tr>
<tr class="memitem:ae3cb6a3321d9ee32f3c05ea0794c5fb8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3cb6a3321d9ee32f3c05ea0794c5fb8"></a>
DECLSPEC <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_GetNumAudioDrivers</b> (<a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a>)</td></tr>
<tr class="separator:ae3cb6a3321d9ee32f3c05ea0794c5fb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabc8b6439ff8d1195b9f49e9c00b15c1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aabc8b6439ff8d1195b9f49e9c00b15c1"></a>
DECLSPEC const char *SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_GetAudioDriver</b> (<a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> index)</td></tr>
<tr class="separator:aabc8b6439ff8d1195b9f49e9c00b15c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Initialization and cleanup</div></td></tr>
<tr class="memitem:ae3667d6ba706a3ca7affd8611632fa2c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3667d6ba706a3ca7affd8611632fa2c"></a>
DECLSPEC <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AudioInit</b> (const char *driver_name)</td></tr>
<tr class="separator:ae3667d6ba706a3ca7affd8611632fa2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a478c602cbfaab8663cb4f58a62600323"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a478c602cbfaab8663cb4f58a62600323"></a>
DECLSPEC <a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AudioQuit</b> (<a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a>)</td></tr>
<tr class="separator:a478c602cbfaab8663cb4f58a62600323"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Pause audio functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>These functions pause and unpause the audio callback processing. They should be called with a parameter of 0 after opening the audio device to start playing sound. This is so you can safely initialize data for your callback function after opening the audio device. Silence will be written to the audio device during the pause. </p>
</div></td></tr>
<tr class="memitem:aa68e60a33666ff4f2d36f3827b1d6061"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa68e60a33666ff4f2d36f3827b1d6061"></a>
DECLSPEC <a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_PauseAudio</b> (<a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> pause_on)</td></tr>
<tr class="separator:aa68e60a33666ff4f2d36f3827b1d6061"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4c8e2a896ccf86599435af81fca928c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4c8e2a896ccf86599435af81fca928c"></a>
DECLSPEC <a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_PauseAudioDevice</b> (<a class="el" href="SDL__audio_8h.html#a677d9d2a6f77a7502a0dc8b45ad211bb">SDL_AudioDeviceID</a> dev, <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> pause_on)</td></tr>
<tr class="separator:ab4c8e2a896ccf86599435af81fca928c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Audio lock functions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>The lock manipulated by these functions protects the callback function. During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that the callback function is not running. Do not call these from the callback function or you will cause deadlock. </p>
</div></td></tr>
<tr class="memitem:a7ffa484f230f6085e271a4f43e678f06"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7ffa484f230f6085e271a4f43e678f06"></a>
DECLSPEC <a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_LockAudio</b> (<a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a>)</td></tr>
<tr class="separator:a7ffa484f230f6085e271a4f43e678f06"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9769845303f88f084f051b99e55b62a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9769845303f88f084f051b99e55b62a1"></a>
DECLSPEC <a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_LockAudioDevice</b> (<a class="el" href="SDL__audio_8h.html#a677d9d2a6f77a7502a0dc8b45ad211bb">SDL_AudioDeviceID</a> dev)</td></tr>
<tr class="separator:a9769845303f88f084f051b99e55b62a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76d8179bee14dad268e65378058d897d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76d8179bee14dad268e65378058d897d"></a>
DECLSPEC <a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_UnlockAudio</b> (<a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a>)</td></tr>
<tr class="separator:a76d8179bee14dad268e65378058d897d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37427a5d47e10103f2fff8165d5f9000"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a37427a5d47e10103f2fff8165d5f9000"></a>
DECLSPEC <a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a> SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_UnlockAudioDevice</b> (<a class="el" href="SDL__audio_8h.html#a677d9d2a6f77a7502a0dc8b45ad211bb">SDL_AudioDeviceID</a> dev)</td></tr>
<tr class="separator:a37427a5d47e10103f2fff8165d5f9000"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Audio state</h2></td></tr>
<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrpcef14621c5df51e9b3ed9d0b005e108e"></a>Get the current audio state. </p>
</td></tr>
<tr class="memitem:a24a02745f01041dd2825d7e26502eef2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24a02745f01041dd2825d7e26502eef2"></a>enum &#160;</td><td class="memItemRight" valign="bottom"><b>SDL_AudioStatus</b> { <b>SDL_AUDIO_STOPPED</b> = 0, 
<b>SDL_AUDIO_PLAYING</b>, 
<b>SDL_AUDIO_PAUSED</b>
 }</td></tr>
<tr class="separator:a24a02745f01041dd2825d7e26502eef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a568e10207e6ff53f8e238a0d562ef594"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a568e10207e6ff53f8e238a0d562ef594"></a>
DECLSPEC SDL_AudioStatus SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_GetAudioStatus</b> (<a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a>)</td></tr>
<tr class="separator:a568e10207e6ff53f8e238a0d562ef594"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac86fde79b1afda3f0fb8e9a027434a69"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac86fde79b1afda3f0fb8e9a027434a69"></a>
DECLSPEC SDL_AudioStatus SDLCALL&#160;</td><td class="memItemRight" valign="bottom"><b>SDL_GetAudioDeviceStatus</b> (<a class="el" href="SDL__audio_8h.html#a677d9d2a6f77a7502a0dc8b45ad211bb">SDL_AudioDeviceID</a> dev)</td></tr>
<tr class="separator:ac86fde79b1afda3f0fb8e9a027434a69"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Access to the raw audio mixing buffer for the SDL library. </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="afaef57ecb718053b572c539e27e72d61"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define AUDIO_F32LSB&#160;&#160;&#160;0x8120</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>32-bit floating point samples </p>

</div>
</div>
<a class="anchor" id="a2d57382c01fdcd78cbbbb480605d91ef"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define AUDIO_F32MSB&#160;&#160;&#160;0x9120</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>As above, but big-endian byte order </p>

</div>
</div>
<a class="anchor" id="a23838d612e88ce72d82c3e51460f831b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define AUDIO_S16LSB&#160;&#160;&#160;0x8010</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Signed 16-bit samples </p>

</div>
</div>
<a class="anchor" id="a3109dfb1d7aab29dff2b62d630e690ca"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define AUDIO_S16MSB&#160;&#160;&#160;0x9010</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>As above, but big-endian byte order </p>

</div>
</div>
<a class="anchor" id="ac81f9cc5739cea67436daf2689d29559"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define AUDIO_S32LSB&#160;&#160;&#160;0x8020</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>32-bit integer samples </p>

</div>
</div>
<a class="anchor" id="a30641d7487680630c231b3415ecd47b6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define AUDIO_S32MSB&#160;&#160;&#160;0x9020</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>As above, but big-endian byte order </p>

</div>
</div>
<a class="anchor" id="a883b3d4539451e49bf014dde0f9cca29"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define AUDIO_S8&#160;&#160;&#160;0x8008</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Signed 8-bit samples </p>

</div>
</div>
<a class="anchor" id="a06808f806896c4d211314990c354b7fc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define AUDIO_U16LSB&#160;&#160;&#160;0x0010</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Unsigned 16-bit samples </p>

</div>
</div>
<a class="anchor" id="a3b8052d0c49d14a2e3edf08eade52d3a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define AUDIO_U16MSB&#160;&#160;&#160;0x1010</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>As above, but big-endian byte order </p>

</div>
</div>
<a class="anchor" id="a6468b4b3fc53ada655eca866e491d75f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define AUDIO_U8&#160;&#160;&#160;0x0008</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Unsigned 8-bit samples </p>

</div>
</div>
<a class="anchor" id="ac34fc6df953e2bae89919edaaa740ff3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SDL_AUDIOCVT_PACKED</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>A structure to hold a set of audio conversion filters and buffers. </p>

</div>
</div>
<a class="anchor" id="a611f76dc30ba9891239bcce3f9b472b5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SDL_LoadWAV</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">file, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">spec, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">audio_buf, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">audio_len&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;<a class="el" href="SDL__audio_8h.html#a7e5d38e8c1f8951704a76330c3b1ac81">SDL_LoadWAV_RW</a>(SDL_RWFromFile(file, &quot;rb&quot;),1, spec,audio_buf,audio_len)</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Loads a WAV from a file. Compatibility convenience function. </p>

</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="a677d9d2a6f77a7502a0dc8b45ad211bb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="SDL__stdinc_8h.html#add440eff171ea5f55cb00c4a9ab8672d">Uint32</a> <a class="el" href="SDL__audio_8h.html#a677d9d2a6f77a7502a0dc8b45ad211bb">SDL_AudioDeviceID</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>SDL Audio Device IDs.</p>
<p>A successful call to <a class="el" href="SDL__audio_8h.html#a2edf30e7747584e28041b4986f89f440">SDL_OpenAudio()</a> is always device id 1, and legacy SDL audio APIs assume you want this device ID. <a class="el" href="SDL__audio_8h.html#af54523e415de7c7fdd0d48a76ab58bb3">SDL_OpenAudioDevice()</a> calls always returns devices &gt;= 2 on success. The legacy calls are good both for backwards compatibility and when you don't care about multiple, specific, or capture devices. </p>

</div>
</div>
<a class="anchor" id="a491ed103fd25d920c4e6b7495217ce66"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="SDL__stdinc_8h.html#a31fcc0a076c9068668173ee26d33e42b">Uint16</a> <a class="el" href="SDL__audio_8h.html#a491ed103fd25d920c4e6b7495217ce66">SDL_AudioFormat</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Audio format flags. </p>
<p>These are what the 16 bits in SDL_AudioFormat currently mean... (Unspecified bits are always zero).</p>
<pre class="fragment">++-----------------------sample is signed if set
||
||       ++-----------sample is bigendian if set
||       ||
||       ||          ++---sample is float if set
||       ||          ||
||       ||          || +---sample bit size---+
||       ||          || |                     |
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
</pre><p>There are macros in SDL 2.0 and later to query these bits. </p>

</div>
</div>
<a class="anchor" id="a77faa7fe3d22c03ee61466a901c22a25"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a>  <a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The calculated values in this structure are calculated by <a class="el" href="SDL__audio_8h.html#a2edf30e7747584e28041b4986f89f440">SDL_OpenAudio()</a>. </p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a41e1602bc7cd4edb87ca779cf01d40bb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DECLSPEC <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> SDLCALL SDL_BuildAudioCVT </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structSDL__AudioCVT.html">SDL_AudioCVT</a> *&#160;</td>
          <td class="paramname"><em>cvt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="SDL__audio_8h.html#a491ed103fd25d920c4e6b7495217ce66">SDL_AudioFormat</a>&#160;</td>
          <td class="paramname"><em>src_format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a>&#160;</td>
          <td class="paramname"><em>src_channels</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a>&#160;</td>
          <td class="paramname"><em>src_rate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="SDL__audio_8h.html#a491ed103fd25d920c4e6b7495217ce66">SDL_AudioFormat</a>&#160;</td>
          <td class="paramname"><em>dst_format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a>&#160;</td>
          <td class="paramname"><em>dst_channels</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a>&#160;</td>
          <td class="paramname"><em>dst_rate</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function takes a source format and rate and a destination format and rate, and initializes the <code>cvt</code> structure with information needed by <a class="el" href="SDL__audio_8h.html#a8e8660222356e07002dde4928118b7df">SDL_ConvertAudio()</a> to convert a buffer of audio data from one format to the other.</p>
<dl class="section return"><dt>Returns</dt><dd>-1 if the format conversion is not supported, 0 if there's no conversion needed, or 1 if the audio filter is set up. </dd></dl>

</div>
</div>
<a class="anchor" id="aa176acc650e66e1d38814cbed3ca258e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DECLSPEC <a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a> SDLCALL SDL_CloseAudio </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a>&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function shuts down audio processing and closes the audio device. </p>

</div>
</div>
<a class="anchor" id="a8e8660222356e07002dde4928118b7df"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DECLSPEC <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> SDLCALL SDL_ConvertAudio </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structSDL__AudioCVT.html">SDL_AudioCVT</a> *&#160;</td>
          <td class="paramname"><em>cvt</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Once you have initialized the <code>cvt</code> structure using <a class="el" href="SDL__audio_8h.html#a41e1602bc7cd4edb87ca779cf01d40bb">SDL_BuildAudioCVT()</a>, created an audio buffer <code>cvt-&gt;buf</code>, and filled it with <code>cvt-&gt;len</code> bytes of audio data in the source format, this function will convert it in-place to the desired format.</p>
<p>The data conversion may expand the size of the audio data, so the buffer <code>cvt-&gt;buf</code> should be allocated after the <code>cvt</code> structure is initialized by <a class="el" href="SDL__audio_8h.html#a41e1602bc7cd4edb87ca779cf01d40bb">SDL_BuildAudioCVT()</a>, and should be <code>cvt-&gt;len*cvt-&gt;len_mult</code> bytes long. </p>

</div>
</div>
<a class="anchor" id="a631aa8624575603df2c5ab9257feee59"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DECLSPEC <a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a> SDLCALL SDL_FreeWAV </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a> *&#160;</td>
          <td class="paramname"><em>audio_buf</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function frees data previously allocated with <a class="el" href="SDL__audio_8h.html#a7e5d38e8c1f8951704a76330c3b1ac81">SDL_LoadWAV_RW()</a> </p>

</div>
</div>
<a class="anchor" id="a846bae7fa1183b644c96cbb49e2c8cf5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DECLSPEC const char* SDLCALL SDL_GetAudioDeviceName </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a>&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a>&#160;</td>
          <td class="paramname"><em>iscapture</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Get the human-readable name of a specific audio device. Must be a value between 0 and (number of audio devices-1). Only valid after a successfully initializing the audio subsystem. The values returned by this function reflect the latest call to <a class="el" href="SDL__audio_8h.html#ae165f64b3f0fecfebe1c97731600ca59">SDL_GetNumAudioDevices()</a>; recall that function to redetect available hardware.</p>
<p>The string returned by this function is UTF-8 encoded, read-only, and managed internally. You are not to free it. If you need to keep the string for any length of time, you should make your own copy of it, as it will be invalid next time any of several other SDL functions is called. </p>

</div>
</div>
<a class="anchor" id="a15b19f26c314e3640ea396251a1ff010"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DECLSPEC const char* SDLCALL SDL_GetCurrentAudioDriver </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a>&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function returns the name of the current audio driver, or NULL if no driver has been initialized. </p>

</div>
</div>
<a class="anchor" id="ae165f64b3f0fecfebe1c97731600ca59"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DECLSPEC <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> SDLCALL SDL_GetNumAudioDevices </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a>&#160;</td>
          <td class="paramname"><em>iscapture</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Get the number of available devices exposed by the current driver. Only valid after a successfully initializing the audio subsystem. Returns -1 if an explicit list of devices can't be determined; this is not an error. For example, if SDL is set up to talk to a remote audio server, it can't list every one available on the Internet, but it will still allow a specific host to be specified to <a class="el" href="SDL__audio_8h.html#af54523e415de7c7fdd0d48a76ab58bb3">SDL_OpenAudioDevice()</a>.</p>
<p>In many common cases, when this function returns a value &lt;= 0, it can still successfully open the default device (NULL for first argument of <a class="el" href="SDL__audio_8h.html#af54523e415de7c7fdd0d48a76ab58bb3">SDL_OpenAudioDevice()</a>). </p>

</div>
</div>
<a class="anchor" id="a7e5d38e8c1f8951704a76330c3b1ac81"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DECLSPEC <a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a>* SDLCALL SDL_LoadWAV_RW </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structSDL__RWops.html">SDL_RWops</a> *&#160;</td>
          <td class="paramname"><em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a>&#160;</td>
          <td class="paramname"><em>freesrc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a> *&#160;</td>
          <td class="paramname"><em>spec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a> **&#160;</td>
          <td class="paramname"><em>audio_buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="SDL__stdinc_8h.html#add440eff171ea5f55cb00c4a9ab8672d">Uint32</a> *&#160;</td>
          <td class="paramname"><em>audio_len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function loads a WAVE from the data source, automatically freeing that source if <code>freesrc</code> is non-zero. For example, to load a WAVE file, you could do: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;SDL_LoadWAV_RW(SDL_RWFromFile(&quot;sample.wav&quot;, &quot;rb&quot;), 1, ...);</div>
</div><!-- fragment --><p>If this function succeeds, it returns the given <a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a>, filled with the audio data format of the wave data, and sets <code>*audio_buf</code> to a malloc()'d buffer containing the audio data, and sets <code>*audio_len</code> to the length of that audio buffer, in bytes. You need to free the audio buffer with <a class="el" href="SDL__audio_8h.html#a631aa8624575603df2c5ab9257feee59">SDL_FreeWAV()</a> when you are done with it.</p>
<p>This function returns NULL and sets the SDL error message if the wave file cannot be opened, uses an unknown data format, or is corrupt. Currently raw and MS-ADPCM WAVE files are supported. </p>

</div>
</div>
<a class="anchor" id="ab9ad945b4b15d816802f5a79da06c9f9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DECLSPEC <a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a> SDLCALL SDL_MixAudio </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a> *&#160;</td>
          <td class="paramname"><em>dst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a> *&#160;</td>
          <td class="paramname"><em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="SDL__stdinc_8h.html#add440eff171ea5f55cb00c4a9ab8672d">Uint32</a>&#160;</td>
          <td class="paramname"><em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a>&#160;</td>
          <td class="paramname"><em>volume</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This takes two audio buffers of the playing audio format and mixes them, performing addition, volume adjustment, and overflow clipping. The volume ranges from 0 - 128, and should be set to ::SDL_MIX_MAXVOLUME for full audio volume. Note this does not change hardware volume. This is provided for convenience &ndash; you can mix your own audio data. </p>

</div>
</div>
<a class="anchor" id="a27a0ad33d17f87a2d7574be78d2f39b7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DECLSPEC <a class="el" href="SDL__audio_8h.html#a52835ae37c4bb905b903cbaf5d04b05f">void</a> SDLCALL SDL_MixAudioFormat </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a> *&#160;</td>
          <td class="paramname"><em>dst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="SDL__stdinc_8h.html#a2944638813a090aa23e62f4da842c3e2">Uint8</a> *&#160;</td>
          <td class="paramname"><em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="SDL__audio_8h.html#a491ed103fd25d920c4e6b7495217ce66">SDL_AudioFormat</a>&#160;</td>
          <td class="paramname"><em>format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="SDL__stdinc_8h.html#add440eff171ea5f55cb00c4a9ab8672d">Uint32</a>&#160;</td>
          <td class="paramname"><em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a>&#160;</td>
          <td class="paramname"><em>volume</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This works like <a class="el" href="SDL__audio_8h.html#ab9ad945b4b15d816802f5a79da06c9f9">SDL_MixAudio()</a>, but you specify the audio format instead of using the format of audio device 1. Thus it can be used when no audio device is open at all. </p>

</div>
</div>
<a class="anchor" id="a2edf30e7747584e28041b4986f89f440"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DECLSPEC <a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a> SDLCALL SDL_OpenAudio </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a> *&#160;</td>
          <td class="paramname"><em>desired</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a> *&#160;</td>
          <td class="paramname"><em>obtained</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function opens the audio device with the desired parameters, and returns 0 if successful, placing the actual hardware parameters in the structure pointed to by <code>obtained</code>. If <code>obtained</code> is NULL, the audio data passed to the callback function will be guaranteed to be in the requested format, and will be automatically converted to the hardware audio format if necessary. This function returns -1 if it failed to open the audio device, or couldn't set up the audio thread.</p>
<p>When filling in the desired audio spec structure,</p><ul>
<li><code>desired-&gt;freq</code> should be the desired audio frequency in samples-per- second.</li>
<li><code>desired-&gt;format</code> should be the desired audio format.</li>
<li><code>desired-&gt;samples</code> is the desired size of the audio buffer, in samples. This number should be a power of two, and may be adjusted by the audio driver to a value more suitable for the hardware. Good values seem to range between 512 and 8096 inclusive, depending on the application and CPU speed. Smaller values yield faster response time, but can lead to underflow if the application is doing heavy processing and cannot fill the audio buffer in time. A stereo sample consists of both right and left channels in LR ordering. Note that the number of samples is directly related to time by the following formula:<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;ms = (samples*1000)/freq </div>
</div><!-- fragment --></li>
<li><code>desired-&gt;size</code> is the size in bytes of the audio buffer, and is calculated by <a class="el" href="SDL__audio_8h.html#a2edf30e7747584e28041b4986f89f440">SDL_OpenAudio()</a>.</li>
<li><code>desired-&gt;silence</code> is the value used to set the buffer to silence, and is calculated by <a class="el" href="SDL__audio_8h.html#a2edf30e7747584e28041b4986f89f440">SDL_OpenAudio()</a>.</li>
<li><code>desired-&gt;callback</code> should be set to a function that will be called when the audio device is ready for more data. It is passed a pointer to the audio buffer, and the length in bytes of the audio buffer. This function usually runs in a separate thread, and so you should protect data structures that it accesses by calling SDL_LockAudio() and SDL_UnlockAudio() in your code.</li>
<li><code>desired-&gt;userdata</code> is passed as the first parameter to your callback function.</li>
</ul>
<p>The audio device starts out playing silence when it's opened, and should be enabled for playing by calling <code>SDL_PauseAudio(0)</code> when you are ready for your audio callback function to be called. Since the audio driver may modify the requested size of the audio buffer, you should allocate any local mixing buffers after you open the audio device. </p>

</div>
</div>
<a class="anchor" id="af54523e415de7c7fdd0d48a76ab58bb3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">DECLSPEC <a class="el" href="SDL__audio_8h.html#a677d9d2a6f77a7502a0dc8b45ad211bb">SDL_AudioDeviceID</a> SDLCALL SDL_OpenAudioDevice </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a>&#160;</td>
          <td class="paramname"><em>iscapture</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a> *&#160;</td>
          <td class="paramname"><em>desired</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a> *&#160;</td>
          <td class="paramname"><em>obtained</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="SDL__thread_8h.html#a6a64f9be4433e4de6e2f2f548cf3c08e">int</a>&#160;</td>
          <td class="paramname"><em>allowed_changes</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Open a specific audio device. Passing in a device name of NULL requests the most reasonable default (and is equivalent to calling <a class="el" href="SDL__audio_8h.html#a2edf30e7747584e28041b4986f89f440">SDL_OpenAudio()</a>).</p>
<p>The device name is a UTF-8 string reported by <a class="el" href="SDL__audio_8h.html#a846bae7fa1183b644c96cbb49e2c8cf5">SDL_GetAudioDeviceName()</a>, but some drivers allow arbitrary and driver-specific strings, such as a hostname/IP address for a remote audio server, or a filename in the diskaudio driver.</p>
<dl class="section return"><dt>Returns</dt><dd>0 on error, a valid device ID that is &gt;= 2 on success.</dd></dl>
<p><a class="el" href="SDL__audio_8h.html#a2edf30e7747584e28041b4986f89f440">SDL_OpenAudio()</a>, unlike this function, always acts on device ID 1. </p>

</div>
</div>
<a class="anchor" id="a52835ae37c4bb905b903cbaf5d04b05f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void </td>
          <td>(</td>
          <td class="paramtype">SDLCALL *&#160;</td>
          <td class="paramname"><em>SDL_AudioCallback</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This function is called when the audio device needs more data.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">userdata</td><td>An application-specific parameter saved in the <a class="el" href="structSDL__AudioSpec.html">SDL_AudioSpec</a> structure </td></tr>
    <tr><td class="paramname">stream</td><td>A pointer to the audio data buffer. </td></tr>
    <tr><td class="paramname">len</td><td>The length of that buffer in bytes.</td></tr>
  </table>
  </dd>
</dl>
<p>Once the callback returns, the buffer will no longer be valid. Stereo samples are stored in a LRLRLR ordering. </p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Oct 16 2014 16:33:09 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.8
</small></address>
</body>
</html>