ponytracker/documentation/html/fmod__codec_8h_source.html

264 lines
39 KiB
HTML
Raw Normal View History

<!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.6"/>
<title>PonyTracker: Fichier source de sources/fmod/include/fmod_codec.h</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 id="projectlogo"><img alt="Logo" src="vinyl.png"/></td>
<td style="padding-left: 0.5em;">
<div id="projectname">PonyTracker
</div>
<div id="projectbrief">Un projet de tracker de musique</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Généré par Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Recherche');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Page&#160;principale</span></a></li>
<li><a href="annotated.html"><span>Structures&#160;de&#160;données</span></a></li>
<li class="current"><a href="files.html"><span>Fichiers</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="Recherche" 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>Liste&#160;des&#160;fichiers</span></a></li>
<li><a href="globals.html"><span>Variables&#160;globale</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>Tout</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Structures de données</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Fichiers</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Fonctions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_08d237fc27d4ecd563f71c5d52f2fecc.html">sources</a></li><li class="navelem"><a class="el" href="dir_6c19ee39fd311a71af45ad229c43c5f0.html">fmod</a></li><li class="navelem"><a class="el" href="dir_3842d752ecd7b678829e19c90d796d7e.html">include</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">fmod_codec.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/* ==================================================================================================== */</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">/* FMOD Ex - codec development header file. Copyright (c), Firelight Technologies Pty, Ltd. 2004-2014. */</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">/* */</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">/* Use this header if you are wanting to develop your own file format plugin to use with */</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">/* FMOD&#39;s codec system. With this header you can make your own fileformat plugin that FMOD */</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">/* can register and use. See the documentation and examples on how to make a working plugin. */</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/* */</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">/* ==================================================================================================== */</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#ifndef _FMOD_CODEC_H</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define _FMOD_CODEC_H</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct_f_m_o_d___c_o_d_e_c___s_t_a_t_e.html">FMOD_CODEC_STATE</a> <a class="code" href="struct_f_m_o_d___c_o_d_e_c___s_t_a_t_e.html">FMOD_CODEC_STATE</a>;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct_f_m_o_d___c_o_d_e_c___w_a_v_e_f_o_r_m_a_t.html">FMOD_CODEC_WAVEFORMAT</a> <a class="code" href="struct_f_m_o_d___c_o_d_e_c___w_a_v_e_f_o_r_m_a_t.html">FMOD_CODEC_WAVEFORMAT</a>;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> Codec callbacks</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">*/</span> </div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">typedef</span> FMOD_RESULT (F_CALLBACK *FMOD_CODEC_OPENCALLBACK) (<a class="code" href="struct_f_m_o_d___c_o_d_e_c___s_t_a_t_e.html">FMOD_CODEC_STATE</a> *codec_state, FMOD_MODE usermode, <a class="code" href="struct_f_m_o_d___c_r_e_a_t_e_s_o_u_n_d_e_x_i_n_f_o.html">FMOD_CREATESOUNDEXINFO</a> *userexinfo);</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">typedef</span> FMOD_RESULT (F_CALLBACK *FMOD_CODEC_CLOSECALLBACK) (<a class="code" href="struct_f_m_o_d___c_o_d_e_c___s_t_a_t_e.html">FMOD_CODEC_STATE</a> *codec_state);</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">typedef</span> FMOD_RESULT (F_CALLBACK *FMOD_CODEC_READCALLBACK) (<a class="code" href="struct_f_m_o_d___c_o_d_e_c___s_t_a_t_e.html">FMOD_CODEC_STATE</a> *codec_state, <span class="keywordtype">void</span> *buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sizebytes, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *bytesread);</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">typedef</span> FMOD_RESULT (F_CALLBACK *FMOD_CODEC_GETLENGTHCALLBACK) (<a class="code" href="struct_f_m_o_d___c_o_d_e_c___s_t_a_t_e.html">FMOD_CODEC_STATE</a> *codec_state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *length, FMOD_TIMEUNIT lengthtype);</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">typedef</span> FMOD_RESULT (F_CALLBACK *FMOD_CODEC_SETPOSITIONCALLBACK) (<a class="code" href="struct_f_m_o_d___c_o_d_e_c___s_t_a_t_e.html">FMOD_CODEC_STATE</a> *codec_state, <span class="keywordtype">int</span> subsound, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> position, FMOD_TIMEUNIT postype);</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">typedef</span> FMOD_RESULT (F_CALLBACK *FMOD_CODEC_GETPOSITIONCALLBACK) (<a class="code" href="struct_f_m_o_d___c_o_d_e_c___s_t_a_t_e.html">FMOD_CODEC_STATE</a> *codec_state, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *position, FMOD_TIMEUNIT postype);</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">typedef</span> FMOD_RESULT (F_CALLBACK *FMOD_CODEC_SOUNDCREATECALLBACK) (<a class="code" href="struct_f_m_o_d___c_o_d_e_c___s_t_a_t_e.html">FMOD_CODEC_STATE</a> *codec_state, <span class="keywordtype">int</span> subsound, FMOD_SOUND *sound);</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">typedef</span> FMOD_RESULT (F_CALLBACK *FMOD_CODEC_METADATACALLBACK) (<a class="code" href="struct_f_m_o_d___c_o_d_e_c___s_t_a_t_e.html">FMOD_CODEC_STATE</a> *codec_state, FMOD_TAGTYPE tagtype, <span class="keywordtype">char</span> *name, <span class="keywordtype">void</span> *data, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> datalen, FMOD_TAGDATATYPE datatype, <span class="keywordtype">int</span> unique);</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">typedef</span> FMOD_RESULT (F_CALLBACK *FMOD_CODEC_GETWAVEFORMAT) (<a class="code" href="struct_f_m_o_d___c_o_d_e_c___s_t_a_t_e.html">FMOD_CODEC_STATE</a> *codec_state, <span class="keywordtype">int</span> index, <a class="code" href="struct_f_m_o_d___c_o_d_e_c___w_a_v_e_f_o_r_m_a_t.html">FMOD_CODEC_WAVEFORMAT</a> *waveformat);</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">[STRUCTURE] </span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">[</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> [DESCRIPTION]</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> When creating a codec, declare one of these and provide the relevant callbacks and name for FMOD to use when it opens and reads a file.</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> [REMARKS]</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> Members marked with [in] mean the variable can be written to. The user can set the value.&lt;br&gt;</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value.&lt;br&gt;</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> [PLATFORMS]</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> [SEE_ALSO]</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> FMOD_CODEC_STATE</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">]</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="struct_f_m_o_d___c_o_d_e_c___d_e_s_c_r_i_p_t_i_o_n.html"> 47</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct_f_m_o_d___c_o_d_e_c___d_e_s_c_r_i_p_t_i_o_n.html">FMOD_CODEC_DESCRIPTION</a></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *name; <span class="comment">/* [in] Name of the codec. */</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> version; <span class="comment">/* [in] Plugin writer&#39;s version number. */</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">int</span> defaultasstream; <span class="comment">/* [in] Tells FMOD to open the file as a stream when calling System::createSound, and not a static sample. Should normally be 0 (FALSE), because generally the user wants to decode the file into memory when using System::createSound. Mainly used for formats that decode for a very long time, or could use large amounts of memory when decoded. Usually sequenced formats such as mod/s3m/xm/it/midi fall into this category. It is mainly to stop users that don&#39;t know what they&#39;re doing from getting FMOD_ERR_MEMORY returned from createSound when they should have in fact called System::createStream or used FMOD_CREATESTREAM in System::createSound. */</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; FMOD_TIMEUNIT timeunits; <span class="comment">/* [in] When setposition codec is called, only these time formats will be passed to the codec. Use bitwise OR to accumulate different types. */</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; FMOD_CODEC_OPENCALLBACK open; <span class="comment">/* [in] Open callback for the codec for when FMOD tries to open a sound using this codec. */</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; FMOD_CODEC_CLOSECALLBACK close; <span class="comment">/* [in] Close callback for the codec for when FMOD tries to close a sound using this codec. */</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; FMOD_CODEC_READCALLBACK read; <span class="comment">/* [in] Read callback for the codec for when FMOD tries to read some data from the file to the destination format (specified in the open callback). */</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; FMOD_CODEC_GETLENGTHCALLBACK getlength; <span class="comment">/* [in] Callback to return the length of the song in whatever format required when Sound::getLength is called. */</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; FMOD_CODEC_SETPOSITIONCALLBACK setposition; <span class="comment">/* [in] Seek callback for the codec for when FMOD tries to seek within the file with Channel::setPosition. */</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; FMOD_CODEC_GETPOSITIONCALLBACK getposition; <span class="comment">/* [in] Tell callback for the codec for when FMOD tries to get the current position within the with Channel::getPosition. */</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; FMOD_CODEC_SOUNDCREATECALLBACK soundcreate; <span class="comment">/* [in] Sound creation callback for the codec when FMOD finishes creating the sound. (So the codec can set more parameters for the related created sound, ie loop points/mode or 3D attributes etc). */</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; FMOD_CODEC_GETWAVEFORMAT getwaveformat; <span class="comment">/* [in] Callback to tell FMOD about the waveformat of a particular subsound. This is to save memory, rather than saving 1000 FMOD_CODEC_WAVEFORMAT structures in the codec, the codec might have a more optimal way of storing this information. */</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;} <a class="code" href="struct_f_m_o_d___c_o_d_e_c___d_e_s_c_r_i_p_t_i_o_n.html">FMOD_CODEC_DESCRIPTION</a>;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment">[STRUCTURE] </span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">[</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> [DESCRIPTION]</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> Set these values marked &#39;in&#39; to tell fmod what sort of sound to create.&lt;br&gt;</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> The format, channels and frequency tell FMOD what sort of hardware buffer to create when you initialize your code. So if you wrote an MP3 codec that decoded to stereo 16bit integer PCM, you would specify FMOD_SOUND_FORMAT_PCM16, and channels would be equal to 2.&lt;br&gt;</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> Members marked as &#39;out&#39; are set by fmod. Do not modify these. Simply specify 0 for these values when declaring the structure, FMOD will fill in the values for you after creation with the correct function pointers.&lt;br&gt;</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> [REMARKS]</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> Members marked with [in] mean the variable can be written to. The user can set the value.&lt;br&gt;</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value.&lt;br&gt;</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> &lt;br&gt;</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> An FMOD file might be from disk, memory or network, however the file may be opened by the user.&lt;br&gt;</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> &lt;br&gt;</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> &#39;numsubsounds&#39; should be 0 if the file is a normal single sound stream or sound. Examples of this would be .WAV, .WMA, .MP3, .AIFF.&lt;br&gt;</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> &#39;numsubsounds&#39; should be 1+ if the file is a container format, and does not contain wav data itself. Examples of these types would be CDDA (multiple CD tracks), FSB (contains multiple sounds), MIDI/MOD/S3M/XM/IT (contain instruments).&lt;br&gt;</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> The arrays of format, channel, frequency, length and blockalign should point to arrays of information based on how many subsounds are in the format. If the number of subsounds is 0 then it should point to 1 of each attribute, the same as if the number of subsounds was 1. If subsounds was 100 for example, each pointer should point to an array of 100 of each attribute.&lt;br&gt;</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> When a sound has 1 or more subsounds, you must play the individual sounds specified by first obtaining the subsound with Sound::getSubSound.</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> </span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> [PLATFORMS]</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android</span></div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> [SEE_ALSO]</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> FMOD_SOUND_FORMAT</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> FMOD_FILE_READCALLBACK </span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"> FMOD_FILE_SEEKCALLBACK </span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> FMOD_CODEC_METADATACALLBACK</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> Sound::getSubSound</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> Sound::getNumSubSounds</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment">]</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="struct_f_m_o_d___c_o_d_e_c___w_a_v_e_f_o_r_m_a_t.html"> 95</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_f_m_o_d___c_o_d_e_c___w_a_v_e_f_o_r_m_a_t.html">FMOD_CODEC_WAVEFORMAT</a></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;{</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">char</span> name[256]; <span class="comment">/* [in] Name of sound.*/</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; FMOD_SOUND_FORMAT format; <span class="comment">/* [in] Format for (decompressed) codec output, ie FMOD_SOUND_FORMAT_PCM8, FMOD_SOUND_FORMAT_PCM16.*/</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordtype">int</span> channels; <span class="comment">/* [in] Number of channels used by codec, ie mono = 1, stereo = 2. */</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">int</span> frequency; <span class="comment">/* [in] Default frequency in hz of the codec, ie 44100. */</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lengthbytes; <span class="comment">/* [in] Length in bytes of the source data. */</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> lengthpcm; <span class="comment">/* [in] Length in decompressed, PCM samples of the file, ie length in seconds * frequency. Used for Sound::getLength and for memory allocation of static decompressed sample data. */</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">int</span> blockalign; <span class="comment">/* [in] Blockalign in decompressed, PCM samples of the optimal decode chunk size for this format. The codec read callback will be called in multiples of this value. */</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordtype">int</span> loopstart; <span class="comment">/* [in] Loopstart in decompressed, PCM samples of file. */</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordtype">int</span> loopend; <span class="comment">/* [in] Loopend in decompressed, PCM samples of file. */</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; FMOD_MODE mode; <span class="comment">/* [in] Mode to determine whether the sound should by default load as looping, non looping, 2d or 3d. */</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> channelmask; <span class="comment">/* [in] Microsoft speaker channel mask, as defined for WAVEFORMATEXTENSIBLE and is found in ksmedia.h. Leave at 0 to play in natural speaker order. */</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;};</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment">[STRUCTURE] </span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment">[</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> [DESCRIPTION]</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> Codec plugin structure that is passed into each callback.&lt;br&gt;</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"> &lt;br&gt;</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> Set these numsubsounds and waveformat members when called in FMOD_CODEC_OPENCALLBACK to tell fmod what sort of sound to create.&lt;br&gt;</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> &lt;br&gt;</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"> The format, channels and frequency tell FMOD what sort of hardware buffer to create when you initialize your code. So if you wrote an MP3 codec that decoded to stereo 16bit integer PCM, you would specify FMOD_SOUND_FORMAT_PCM16, and channels would be equal to 2.&lt;br&gt;</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> [REMARKS]</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> Members marked with [in] mean the variable can be written to. The user can set the value.&lt;br&gt;</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value.&lt;br&gt;</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> &lt;br&gt;</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> An FMOD file might be from disk, memory or internet, however the file may be opened by the user.&lt;br&gt;</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> &lt;br&gt;</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"> &#39;numsubsounds&#39; should be 0 if the file is a normal single sound stream or sound. Examples of this would be .WAV, .WMA, .MP3, .AIFF.&lt;br&gt;</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"> &#39;numsubsounds&#39; should be 1+ if the file is a container format, and does not contain wav data itself. Examples of these types would be CDDA (multiple CD tracks), FSB (contains multiple sounds), DLS (contain instruments).&lt;br&gt;</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> The arrays of format, channel, frequency, length and blockalign should point to arrays of information based on how many subsounds are in the format. If the number of subsounds is 0 then it should point to 1 of each attribute, the same as if the number of subsounds was 1. If subsounds was 100 for example, each pointer should point to an array of 100 of each attribute.&lt;br&gt;</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> When a sound has 1 or more subsounds, you must play the individual sounds specified by first obtaining the subsound with Sound::getSubSound.</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> </span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> [PLATFORMS]</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"> Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"> [SEE_ALSO]</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"> FMOD_SOUND_FORMAT</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"> FMOD_FILE_READCALLBACK </span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> FMOD_FILE_SEEKCALLBACK </span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"> FMOD_CODEC_METADATACALLBACK</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> Sound::getSubSound</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> Sound::getNumSubSounds</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment">]</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="struct_f_m_o_d___c_o_d_e_c___s_t_a_t_e.html"> 144</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_f_m_o_d___c_o_d_e_c___s_t_a_t_e.html">FMOD_CODEC_STATE</a></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;{</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordtype">int</span> numsubsounds; <span class="comment">/* [in] Number of &#39;subsounds&#39; in this sound. Anything other than 0 makes it a &#39;container&#39; format (ie CDDA/DLS/FSB etc which contain 1 or more su bsounds). For most normal, single sound codec such as WAV/AIFF/MP3, this should be 0 as they are not a container for subsounds, they are the sound by itself. */</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="struct_f_m_o_d___c_o_d_e_c___w_a_v_e_f_o_r_m_a_t.html">FMOD_CODEC_WAVEFORMAT</a> *waveformat; <span class="comment">/* [in] Pointer to an array of format structures containing information about each sample. Can be 0 or NULL if FMOD_CODEC_GETWAVEFORMAT callback is preferred. The number of entries here must equal the number of subsounds defined in the subsound parameter. If numsubsounds = 0 then there should be 1 instance of this structure. */</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordtype">void</span> *plugindata; <span class="comment">/* [in] Plugin writer created data the codec author wants to attach to this object. */</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; </div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordtype">void</span> *filehandle; <span class="comment">/* [out] This will return an internal FMOD file handle to use with the callbacks provided. */</span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> filesize; <span class="comment">/* [out] This will contain the size of the file in bytes. */</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; FMOD_FILE_READCALLBACK fileread; <span class="comment">/* [out] This will return a callable FMOD file function to use from codec. */</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; FMOD_FILE_SEEKCALLBACK fileseek; <span class="comment">/* [out] This will return a callable FMOD file function to use from codec. */</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; FMOD_CODEC_METADATACALLBACK metadata; <span class="comment">/* [out] This will return a callable FMOD metadata function to use from codec. */</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;};</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
<div class="ttc" id="struct_f_m_o_d___c_o_d_e_c___s_t_a_t_e_html"><div class="ttname"><a href="struct_f_m_o_d___c_o_d_e_c___s_t_a_t_e.html">FMOD_CODEC_STATE</a></div><div class="ttdef"><b>Definition:</b> fmod_codec.h:144</div></div>
<div class="ttc" id="struct_f_m_o_d___c_o_d_e_c___d_e_s_c_r_i_p_t_i_o_n_html"><div class="ttname"><a href="struct_f_m_o_d___c_o_d_e_c___d_e_s_c_r_i_p_t_i_o_n.html">FMOD_CODEC_DESCRIPTION</a></div><div class="ttdef"><b>Definition:</b> fmod_codec.h:47</div></div>
<div class="ttc" id="struct_f_m_o_d___c_o_d_e_c___w_a_v_e_f_o_r_m_a_t_html"><div class="ttname"><a href="struct_f_m_o_d___c_o_d_e_c___w_a_v_e_f_o_r_m_a_t.html">FMOD_CODEC_WAVEFORMAT</a></div><div class="ttdef"><b>Definition:</b> fmod_codec.h:95</div></div>
<div class="ttc" id="struct_f_m_o_d___c_r_e_a_t_e_s_o_u_n_d_e_x_i_n_f_o_html"><div class="ttname"><a href="struct_f_m_o_d___c_r_e_a_t_e_s_o_u_n_d_e_x_i_n_f_o.html">FMOD_CREATESOUNDEXINFO</a></div><div class="ttdef"><b>Definition:</b> fmod.h:1490</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Généré le Jeudi 15 Mai 2014 16:53:16 pour PonyTracker par &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>