This file is indexed.

/usr/share/doc/pocketsphinx/html/pocketsphinx_8c_source.html is in pocketsphinx-doc 0.8.0+real5prealpha-1ubuntu2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
<!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.11"/>
<title>PocketSphinx: src/libpocketsphinx/pocketsphinx.c Source File</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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</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="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">PocketSphinx
   &#160;<span id="projectnumber">5prealpha</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></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>Globals</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('pocketsphinx_8c_source.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">pocketsphinx.c</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">/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">/* ====================================================================</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * Copyright (c) 2008 Carnegie Mellon University.  All rights</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * reserved.</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * Redistribution and use in source and binary forms, with or without</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * modification, are permitted provided that the following conditions</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * are met:</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> * 1. Redistributions of source code must retain the above copyright</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *    notice, this list of conditions and the following disclaimer.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> *    notice, this list of conditions and the following disclaimer in</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *    the documentation and/or other materials provided with the</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> *    distribution.</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> * This work was supported in part by funding from the Defense Advanced</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"> * Research Projects Agency and the National Science Foundation of the</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"> * United States of America, and the CMU Sphinx Speech Consortium.</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"> * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS&#39;&#39; AND</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment"> * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment"> * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment"> * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment"> * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment"> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment"> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="comment"> * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment"> * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment"> * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment"> * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment"> * ====================================================================</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"> */</span></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="comment">/* System headers. */</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;assert.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#ifdef HAVE_UNISTD_H</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &lt;unistd.h&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="comment">/* SphinxBase headers. */</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &lt;sphinxbase/err.h&gt;</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#include &lt;sphinxbase/strfuncs.h&gt;</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#include &lt;sphinxbase/filename.h&gt;</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#include &lt;sphinxbase/pio.h&gt;</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#include &lt;sphinxbase/jsgf.h&gt;</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#include &lt;sphinxbase/hash_table.h&gt;</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="comment">/* Local headers. */</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="preprocessor">#include &quot;cmdln_macro.h&quot;</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="pocketsphinx_8h.html">pocketsphinx.h</a>&quot;</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="pocketsphinx__internal_8h.html">pocketsphinx_internal.h</a>&quot;</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ps__lattice__internal_8h.html">ps_lattice_internal.h</a>&quot;</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="phone__loop__search_8h.html">phone_loop_search.h</a>&quot;</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">#include &quot;kws_search.h&quot;</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor">#include &quot;fsg_search_internal.h&quot;</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ngram__search_8h.html">ngram_search.h</a>&quot;</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ngram__search__fwdtree_8h.html">ngram_search_fwdtree.h</a>&quot;</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ngram__search__fwdflat_8h.html">ngram_search_fwdflat.h</a>&quot;</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="preprocessor">#include &quot;allphone_search.h&quot;</span></div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> arg_t ps_args_def[] = {</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    POCKETSPHINX_OPTIONS,</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;    CMDLN_EMPTY_OPTION</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;};</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="comment">/* I&#39;m not sure what the portable way to do this is. */</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;file_exists(<span class="keyword">const</span> <span class="keywordtype">char</span> *path)</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;{</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    FILE *tmp;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    tmp = fopen(path, <span class="stringliteral">&quot;rb&quot;</span>);</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    <span class="keywordflow">if</span> (tmp) fclose(tmp);</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="keywordflow">return</span> (tmp != NULL);</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;}</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="preprocessor">#ifdef MODELDIR</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;hmmdir_exists(<span class="keyword">const</span> <span class="keywordtype">char</span> *path)</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;{</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    FILE *tmp;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;    <span class="keywordtype">char</span> *mdef = string_join(path, <span class="stringliteral">&quot;/mdef&quot;</span>, NULL);</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    tmp = fopen(mdef, <span class="stringliteral">&quot;rb&quot;</span>);</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <span class="keywordflow">if</span> (tmp) fclose(tmp);</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;    ckd_free(mdef);</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    <span class="keywordflow">return</span> (tmp != NULL);</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;}</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="preprocessor">#endif</span></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="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;ps_add_file(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg,</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;            <span class="keyword">const</span> <span class="keywordtype">char</span> *hmmdir, <span class="keyword">const</span> <span class="keywordtype">char</span> *file)</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;{</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;    <span class="keywordtype">char</span> *tmp = string_join(hmmdir, <span class="stringliteral">&quot;/&quot;</span>, file, NULL);</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="keywordflow">if</span> (cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, arg) == NULL &amp;&amp; file_exists(tmp))</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;        cmd_ln_set_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, arg, tmp);</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    ckd_free(tmp);</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;}</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;<span class="comment">/* Feature and front-end parameters that may be in feat.params */</span></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> arg_t feat_defn[] = {</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    waveform_to_cepstral_command_line_macro(),</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    cepstral_to_feature_command_line_macro(),</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    CMDLN_EMPTY_OPTION</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;};</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;ps_expand_model_config(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;{</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <span class="keywordtype">char</span> <span class="keyword">const</span> *hmmdir, *featparams;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="comment">/* Disable memory mapping on Blackfin (FIXME: should be uClinux in general). */</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<span class="preprocessor">#ifdef __ADSPBLACKFIN__</span></div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;    E_INFO(<span class="stringliteral">&quot;Will not use mmap() on uClinux/Blackfin.&quot;</span>);</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;    cmd_ln_set_boolean_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-mmap&quot;</span>, FALSE);</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;    <span class="comment">/* Get acoustic model filenames and add them to the command-line */</span></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="keywordflow">if</span> ((hmmdir = cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-hmm&quot;</span>)) != NULL) {</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        ps_add_file(ps, <span class="stringliteral">&quot;-mdef&quot;</span>, hmmdir, <span class="stringliteral">&quot;mdef&quot;</span>);</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;        ps_add_file(ps, <span class="stringliteral">&quot;-mean&quot;</span>, hmmdir, <span class="stringliteral">&quot;means&quot;</span>);</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;        ps_add_file(ps, <span class="stringliteral">&quot;-var&quot;</span>, hmmdir, <span class="stringliteral">&quot;variances&quot;</span>);</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;        ps_add_file(ps, <span class="stringliteral">&quot;-tmat&quot;</span>, hmmdir, <span class="stringliteral">&quot;transition_matrices&quot;</span>);</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;        ps_add_file(ps, <span class="stringliteral">&quot;-mixw&quot;</span>, hmmdir, <span class="stringliteral">&quot;mixture_weights&quot;</span>);</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;        ps_add_file(ps, <span class="stringliteral">&quot;-sendump&quot;</span>, hmmdir, <span class="stringliteral">&quot;sendump&quot;</span>);</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;        ps_add_file(ps, <span class="stringliteral">&quot;-fdict&quot;</span>, hmmdir, <span class="stringliteral">&quot;noisedict&quot;</span>);</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;        ps_add_file(ps, <span class="stringliteral">&quot;-lda&quot;</span>, hmmdir, <span class="stringliteral">&quot;feature_transform&quot;</span>);</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;        ps_add_file(ps, <span class="stringliteral">&quot;-featparams&quot;</span>, hmmdir, <span class="stringliteral">&quot;feat.params&quot;</span>);</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;        ps_add_file(ps, <span class="stringliteral">&quot;-senmgau&quot;</span>, hmmdir, <span class="stringliteral">&quot;senmgau&quot;</span>);</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    }</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    <span class="comment">/* Look for feat.params in acoustic model dir. */</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <span class="keywordflow">if</span> ((featparams = cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-featparams&quot;</span>))) {</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;        <span class="keywordflow">if</span> (NULL !=</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;            cmd_ln_parse_file_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, feat_defn, featparams, FALSE))</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;            E_INFO(<span class="stringliteral">&quot;Parsed model-specific feature parameters from %s\n&quot;</span>,</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;                    featparams);</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    }</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <span class="comment">/* Print here because acmod_init might load feat.params file */</span></div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    <span class="keywordflow">if</span> (err_get_logfp() != NULL) {</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;        cmd_ln_print_values_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, err_get_logfp(), <a class="code" href="pocketsphinx_8h.html#ad873ea6e20f91a3284963d5c34331c58">ps_args</a>());</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    }</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;}</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;ps_free_searches(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</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="keywordflow">if</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#a43bca42790684eefb8d01a0aef6fa530">searches</a>) {</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;        hash_iter_t *search_it;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;        <span class="keywordflow">for</span> (search_it = hash_table_iter(ps-&gt;<a class="code" href="structps__decoder__s.html#a43bca42790684eefb8d01a0aef6fa530">searches</a>); search_it;</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;             search_it = hash_table_iter_next(search_it)) {</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;            ps_search_free(hash_entry_val(search_it-&gt;ent));</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        }</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;        hash_table_free(ps-&gt;<a class="code" href="structps__decoder__s.html#a43bca42790684eefb8d01a0aef6fa530">searches</a>);</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;    }</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#a43bca42790684eefb8d01a0aef6fa530">searches</a> = NULL;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a> = NULL;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;}</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="keyword">static</span> <a class="code" href="structps__search__s.html">ps_search_t</a> *</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;ps_find_search(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keywordtype">char</span> <span class="keyword">const</span> *name)</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;{</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;    <span class="keywordtype">void</span> *search = NULL;</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    hash_table_lookup(ps-&gt;<a class="code" href="structps__decoder__s.html#a43bca42790684eefb8d01a0aef6fa530">searches</a>, name, &amp;search);</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;    <span class="keywordflow">return</span> (<a class="code" href="structps__search__s.html">ps_search_t</a> *) search;</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;}</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a887e4cdcbef98d5594458c5934cc9471">  180</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a887e4cdcbef98d5594458c5934cc9471">ps_default_search_args</a>(cmd_ln_t *config)</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;{</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;<span class="preprocessor">#ifdef MODELDIR</span></div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <span class="comment">/* Set default acoustic and language models. */</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *hmmdir = cmd_ln_str_r(config, <span class="stringliteral">&quot;-hmm&quot;</span>);</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;    <span class="keywordflow">if</span> (hmmdir == NULL &amp;&amp; hmmdir_exists(MODELDIR <span class="stringliteral">&quot;/en-us/en-us&quot;</span>)) {</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;        hmmdir = MODELDIR <span class="stringliteral">&quot;/en-us/en-us&quot;</span>;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        cmd_ln_set_str_r(config, <span class="stringliteral">&quot;-hmm&quot;</span>, hmmdir);</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;    }</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *lmfile = cmd_ln_str_r(config, <span class="stringliteral">&quot;-lm&quot;</span>);</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    <span class="keywordflow">if</span> (lmfile == NULL &amp;&amp; !cmd_ln_str_r(config, <span class="stringliteral">&quot;-fsg&quot;</span>)</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;        &amp;&amp; !cmd_ln_str_r(config, <span class="stringliteral">&quot;-jsgf&quot;</span>)</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;        &amp;&amp; !cmd_ln_str_r(config, <span class="stringliteral">&quot;-lmctl&quot;</span>)</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;        &amp;&amp; !cmd_ln_str_r(config, <span class="stringliteral">&quot;-kws&quot;</span>)</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;        &amp;&amp; !cmd_ln_str_r(config, <span class="stringliteral">&quot;-keyphrase&quot;</span>)</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;        &amp;&amp; file_exists(MODELDIR <span class="stringliteral">&quot;/en-us/en-us.lm.bin&quot;</span>)) {</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;        lmfile = MODELDIR <span class="stringliteral">&quot;/en-us/en-us.lm.bin&quot;</span>;</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;        cmd_ln_set_str_r(config, <span class="stringliteral">&quot;-lm&quot;</span>, lmfile);</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    }</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *dictfile = cmd_ln_str_r(config, <span class="stringliteral">&quot;-dict&quot;</span>);</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;    <span class="keywordflow">if</span> (dictfile == NULL &amp;&amp; file_exists(MODELDIR <span class="stringliteral">&quot;/en-us/cmudict-en-us.dict&quot;</span>)) {</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;        dictfile = MODELDIR <span class="stringliteral">&quot;/en-us/cmudict-en-us.dict&quot;</span>;</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;        cmd_ln_set_str_r(config, <span class="stringliteral">&quot;-dict&quot;</span>, dictfile);</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    }</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <span class="comment">/* Expand acoustic and language model filenames relative to installation</span></div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;<span class="comment">     * path. */</span></div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    <span class="keywordflow">if</span> (hmmdir &amp;&amp; !path_is_absolute(hmmdir) &amp;&amp; !hmmdir_exists(hmmdir)) {</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;        <span class="keywordtype">char</span> *tmphmm = string_join(MODELDIR <span class="stringliteral">&quot;/hmm/&quot;</span>, hmmdir, NULL);</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;        <span class="keywordflow">if</span> (hmmdir_exists(tmphmm)) {</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;            cmd_ln_set_str_r(config, <span class="stringliteral">&quot;-hmm&quot;</span>, tmphmm);</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;            E_ERROR(<span class="stringliteral">&quot;Failed to find mdef file inside the model folder &quot;</span></div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;                    <span class="stringliteral">&quot;specified with -hmm `%s&#39;\n&quot;</span>, hmmdir);</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;        }</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;        ckd_free(tmphmm);</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    }</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;    <span class="keywordflow">if</span> (lmfile &amp;&amp; !path_is_absolute(lmfile) &amp;&amp; !file_exists(lmfile)) {</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;        <span class="keywordtype">char</span> *tmplm = string_join(MODELDIR <span class="stringliteral">&quot;/lm/&quot;</span>, lmfile, NULL);</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        cmd_ln_set_str_r(config, <span class="stringliteral">&quot;-lm&quot;</span>, tmplm);</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;        ckd_free(tmplm);</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    }</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    <span class="keywordflow">if</span> (dictfile &amp;&amp; !path_is_absolute(dictfile) &amp;&amp; !file_exists(dictfile)) {</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;        <span class="keywordtype">char</span> *tmpdict = string_join(MODELDIR <span class="stringliteral">&quot;/lm/&quot;</span>, dictfile, NULL);</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;        cmd_ln_set_str_r(config, <span class="stringliteral">&quot;-dict&quot;</span>, tmpdict);</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        ckd_free(tmpdict);</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    }</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;}</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a391679e7edb0de1e324aa302ee820287">  234</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a391679e7edb0de1e324aa302ee820287">ps_reinit</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, cmd_ln_t *config)</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;{</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *path;</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *keyphrase;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;    int32 lw;</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    <span class="keywordflow">if</span> (config &amp;&amp; config != ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>) {</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;        cmd_ln_free_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>);</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;        ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a> = cmd_ln_retain(config);</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    }</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    err_set_debug_level(cmd_ln_int32_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-debug&quot;</span>));</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;    <span class="comment">/* Set up logging. We need to do this earlier because we want to dump</span></div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;<span class="comment">     * the information to the configured log, not to the stderr. */</span></div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    <span class="keywordflow">if</span> (config &amp;&amp; cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-logfn&quot;</span>)) {</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        <span class="keywordflow">if</span> (err_set_logfile(cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-logfn&quot;</span>)) &lt; 0) {</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;            E_ERROR(<span class="stringliteral">&quot;Cannot redirect log output\n&quot;</span>);</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;        }</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    }</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    </div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#a8bb5ef8791798b8dd9bc82b1ec016663">mfclogdir</a> = cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-mfclogdir&quot;</span>);</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#aa2610c52a9267ee18ca095169bf34bfd">rawlogdir</a> = cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-rawlogdir&quot;</span>);</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#a0ed3476113fe3d63b13ac5e8da3f3b4f">senlogdir</a> = cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-senlogdir&quot;</span>);</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;    <span class="comment">/* Fill in some default arguments. */</span></div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;    ps_expand_model_config(ps);</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    <span class="comment">/* Free old searches (do this before other reinit) */</span></div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;    ps_free_searches(ps);</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#a43bca42790684eefb8d01a0aef6fa530">searches</a> = hash_table_new(3, HASH_CASE_YES);</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;    <span class="comment">/* Free old acmod. */</span></div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;    <a class="code" href="acmod_8c.html#a1e3345e8ef8b060fc04e88f86e6afa4a">acmod_free</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>);</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a> = NULL;</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    <span class="comment">/* Free old dictionary (must be done after the two things above) */</span></div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;    <a class="code" href="dict_8h.html#a51ee6c067decce8dbc182f95f7b33e91">dict_free</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">dict</a>);</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">dict</a> = NULL;</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;    <span class="comment">/* Free d2p */</span></div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;    <a class="code" href="dict2pid_8c.html#a293253226550e812c448ae096b364d0d">dict2pid_free</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#ae6515cbc261686f3f3bbd95719f79793">d2p</a>);</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#ae6515cbc261686f3f3bbd95719f79793">d2p</a> = NULL;</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;    <span class="comment">/* Logmath computation (used in acmod and search) */</span></div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;    <span class="keywordflow">if</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#abd17fe329f2fb219c5a534f3217c5b95">lmath</a> == NULL</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;        || (logmath_get_base(ps-&gt;<a class="code" href="structps__decoder__s.html#abd17fe329f2fb219c5a534f3217c5b95">lmath</a>) !=</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;            (float64)cmd_ln_float32_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-logbase&quot;</span>))) {</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;        <span class="keywordflow">if</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#abd17fe329f2fb219c5a534f3217c5b95">lmath</a>)</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;            logmath_free(ps-&gt;<a class="code" href="structps__decoder__s.html#abd17fe329f2fb219c5a534f3217c5b95">lmath</a>);</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;        ps-&gt;<a class="code" href="structps__decoder__s.html#abd17fe329f2fb219c5a534f3217c5b95">lmath</a> = logmath_init</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;            ((float64)cmd_ln_float32_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-logbase&quot;</span>), 0,</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;             cmd_ln_boolean_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-bestpath&quot;</span>));</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    }</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;    <span class="comment">/* Acoustic model (this is basically everything that</span></div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;<span class="comment">     * uttproc.c, senscr.c, and others used to do) */</span></div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;    <span class="keywordflow">if</span> ((ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a> = <a class="code" href="acmod_8c.html#a6f32b623cbc3d15a1e3c5d09aba7dabf">acmod_init</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#abd17fe329f2fb219c5a534f3217c5b95">lmath</a>, NULL, NULL)) == NULL)</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;    <span class="keywordflow">if</span> (cmd_ln_int32_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-pl_window&quot;</span>) &gt; 0) {</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;        <span class="comment">/* Initialize an auxiliary phone loop search, which will run in</span></div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;<span class="comment">         * &quot;parallel&quot; with FSG or N-Gram search. */</span></div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;        <span class="keywordflow">if</span> ((ps-&gt;<a class="code" href="structps__decoder__s.html#a0c6d141d7a71a1287be00a1ebcc7643d">phone_loop</a> =</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;             phone_loop_search_init(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">dict</a>)) == NULL)</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;        hash_table_enter(ps-&gt;<a class="code" href="structps__decoder__s.html#a43bca42790684eefb8d01a0aef6fa530">searches</a>,</div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;                         ps_search_name(ps-&gt;<a class="code" href="structps__decoder__s.html#a0c6d141d7a71a1287be00a1ebcc7643d">phone_loop</a>),</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;                         ps-&gt;<a class="code" href="structps__decoder__s.html#a0c6d141d7a71a1287be00a1ebcc7643d">phone_loop</a>);</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;    }</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;    <span class="comment">/* Dictionary and triphone mappings (depends on acmod). */</span></div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;    <span class="comment">/* FIXME: pass config, change arguments, implement LTS, etc. */</span></div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    <span class="keywordflow">if</span> ((ps-&gt;<a class="code" href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">dict</a> = <a class="code" href="dict_8h.html#a05d8dac3e5fe5399ccb8bf7776e203e2">dict_init</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#a351548ff5547c29b4a684e10434a51dd">mdef</a>)) == NULL)</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;    <span class="keywordflow">if</span> ((ps-&gt;<a class="code" href="structps__decoder__s.html#ae6515cbc261686f3f3bbd95719f79793">d2p</a> = <a class="code" href="dict2pid_8c.html#addd541f2275b79e284575fb11b7986e1">dict2pid_build</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#a351548ff5547c29b4a684e10434a51dd">mdef</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">dict</a>)) == NULL)</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;    lw = cmd_ln_float32_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-lw&quot;</span>);</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;    <span class="comment">/* Determine whether we are starting out in FSG or N-Gram search mode.</span></div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;<span class="comment">     * If neither is used skip search initialization. */</span></div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;    <span class="comment">/* Load KWS if one was specified in config */</span></div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;    <span class="keywordflow">if</span> ((keyphrase = cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-keyphrase&quot;</span>))) {</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="ps__search_8h.html#a7965534ad5e48f0b46f326d7da186a2a">ps_set_keyphrase</a>(ps, PS_DEFAULT_SEARCH, keyphrase))</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;        <a class="code" href="ps__search_8h.html#a4072a93e8ce9a4229d17c9bce6ad1083">ps_set_search</a>(ps, PS_DEFAULT_SEARCH);</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;    }</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;    <span class="keywordflow">if</span> ((path = cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-kws&quot;</span>))) {</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="ps__search_8h.html#a0780564ad3f12179b0291ac87774cea1">ps_set_kws</a>(ps, PS_DEFAULT_SEARCH, path))</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;        <a class="code" href="ps__search_8h.html#a4072a93e8ce9a4229d17c9bce6ad1083">ps_set_search</a>(ps, PS_DEFAULT_SEARCH);</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;    }</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;    <span class="comment">/* Load an FSG if one was specified in config */</span></div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;    <span class="keywordflow">if</span> ((path = cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-fsg&quot;</span>))) {</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;        fsg_model_t *fsg = fsg_model_readfile(path, ps-&gt;<a class="code" href="structps__decoder__s.html#abd17fe329f2fb219c5a534f3217c5b95">lmath</a>, lw);</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;        <span class="keywordflow">if</span> (!fsg)</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="ps__search_8h.html#afde3539cbbf8c67cb98a02ca779055af">ps_set_fsg</a>(ps, PS_DEFAULT_SEARCH, fsg)) {</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;            fsg_model_free(fsg);</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        }</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;        fsg_model_free(fsg);</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;        <a class="code" href="ps__search_8h.html#a4072a93e8ce9a4229d17c9bce6ad1083">ps_set_search</a>(ps, PS_DEFAULT_SEARCH);</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    }</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;    </div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;    <span class="comment">/* Or load a JSGF grammar */</span></div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;    <span class="keywordflow">if</span> ((path = cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-jsgf&quot;</span>))) {</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="ps__search_8h.html#ae845bbf6a3e5b859e833f6cc0d1ba55f">ps_set_jsgf_file</a>(ps, PS_DEFAULT_SEARCH, path)</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;            || <a class="code" href="ps__search_8h.html#a4072a93e8ce9a4229d17c9bce6ad1083">ps_set_search</a>(ps, PS_DEFAULT_SEARCH))</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;    }</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;    <span class="keywordflow">if</span> ((path = cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-allphone&quot;</span>))) {</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="ps__search_8h.html#a66bebfccb8ece9e7bff411329f25ee5e">ps_set_allphone_file</a>(ps, PS_DEFAULT_SEARCH, path)</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;                || <a class="code" href="ps__search_8h.html#a4072a93e8ce9a4229d17c9bce6ad1083">ps_set_search</a>(ps, PS_DEFAULT_SEARCH))</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;    }</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;    <span class="keywordflow">if</span> ((path = cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-lm&quot;</span>)) &amp;&amp; </div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;        !cmd_ln_boolean_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-allphone&quot;</span>)) {</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="ps__search_8h.html#a78372effd2aa6bddf7b71d6e2e9c3776">ps_set_lm_file</a>(ps, PS_DEFAULT_SEARCH, path)</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;            || <a class="code" href="ps__search_8h.html#a4072a93e8ce9a4229d17c9bce6ad1083">ps_set_search</a>(ps, PS_DEFAULT_SEARCH))</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;    }</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;    <span class="keywordflow">if</span> ((path = cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-lmctl&quot;</span>))) {</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *name;</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;        ngram_model_t *lmset;</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;        ngram_model_set_iter_t *lmset_it;</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;        <span class="keywordflow">if</span> (!(lmset = ngram_model_set_read(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, path, ps-&gt;<a class="code" href="structps__decoder__s.html#abd17fe329f2fb219c5a534f3217c5b95">lmath</a>))) {</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;            E_ERROR(<span class="stringliteral">&quot;Failed to read language model control file: %s\n&quot;</span>, path);</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;        }</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;        <span class="keywordflow">for</span>(lmset_it = ngram_model_set_iter(lmset);</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;            lmset_it; lmset_it = ngram_model_set_iter_next(lmset_it)) {    </div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;            ngram_model_t *lm = ngram_model_set_iter_model(lmset_it, &amp;name);            </div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;            E_INFO(<span class="stringliteral">&quot;adding search %s\n&quot;</span>, name);</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;            <span class="keywordflow">if</span> (<a class="code" href="ps__search_8h.html#aa76b495c63c665a21a49d7cb51c66d74">ps_set_lm</a>(ps, name, lm)) {</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;                ngram_model_set_iter_free(lmset_it);</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;                ngram_model_free(lmset);</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;            }</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;        }</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;        ngram_model_free(lmset);</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;        name = cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-lmname&quot;</span>);</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;        <span class="keywordflow">if</span> (name)</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;            <a class="code" href="ps__search_8h.html#a4072a93e8ce9a4229d17c9bce6ad1083">ps_set_search</a>(ps, name);</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;        <span class="keywordflow">else</span> {</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;            E_ERROR(<span class="stringliteral">&quot;No default LM name (-lmname) for `-lmctl&#39;\n&quot;</span>);</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;        }</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;    }</div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;    <span class="comment">/* Initialize performance timer. */</span></div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>.name = <span class="stringliteral">&quot;decode&quot;</span>;</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;    ptmr_init(&amp;ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>);</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;}</div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#ad033da98d0f7785d6ab89a41dac3cc7c">  404</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#ad033da98d0f7785d6ab89a41dac3cc7c">ps_init</a>(cmd_ln_t *config)</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;{</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;    <a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps;</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;    </div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;    <span class="keywordflow">if</span> (!config) {</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;        E_ERROR(<span class="stringliteral">&quot;No configuration specified&quot;</span>);</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;    }</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;    ps = ckd_calloc(1, <span class="keyword">sizeof</span>(*ps));</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#aa5ab90180288b6c9039eb86b496f76aa">refcount</a> = 1;</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="pocketsphinx_8h.html#a391679e7edb0de1e324aa302ee820287">ps_reinit</a>(ps, config) &lt; 0) {</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;        <a class="code" href="pocketsphinx_8h.html#ad8fd9b79ae9f87703af3f4755b3ab567">ps_free</a>(ps);</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;    }</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;    <span class="keywordflow">return</span> ps;</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;}</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;arg_t <span class="keyword">const</span> *</div><div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#ad873ea6e20f91a3284963d5c34331c58">  423</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#ad873ea6e20f91a3284963d5c34331c58">ps_args</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;{</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;    <span class="keywordflow">return</span> ps_args_def;</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;}</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *</div><div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a8d912ce9a5fea61b7b10db1750531c34">  429</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a8d912ce9a5fea61b7b10db1750531c34">ps_retain</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;{</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;    ++ps-&gt;<a class="code" href="structps__decoder__s.html#aa5ab90180288b6c9039eb86b496f76aa">refcount</a>;</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;    <span class="keywordflow">return</span> ps;</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;}</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00436"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#ad8fd9b79ae9f87703af3f4755b3ab567">  436</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#ad8fd9b79ae9f87703af3f4755b3ab567">ps_free</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;{</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;    <span class="keywordflow">if</span> (ps == NULL)</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;    <span class="keywordflow">if</span> (--ps-&gt;<a class="code" href="structps__decoder__s.html#aa5ab90180288b6c9039eb86b496f76aa">refcount</a> &gt; 0)</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;        <span class="keywordflow">return</span> ps-&gt;<a class="code" href="structps__decoder__s.html#aa5ab90180288b6c9039eb86b496f76aa">refcount</a>;</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;    ps_free_searches(ps);</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;    <a class="code" href="dict_8h.html#a51ee6c067decce8dbc182f95f7b33e91">dict_free</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">dict</a>);</div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;    <a class="code" href="dict2pid_8c.html#a293253226550e812c448ae096b364d0d">dict2pid_free</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#ae6515cbc261686f3f3bbd95719f79793">d2p</a>);</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;    <a class="code" href="acmod_8c.html#a1e3345e8ef8b060fc04e88f86e6afa4a">acmod_free</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>);</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;    logmath_free(ps-&gt;<a class="code" href="structps__decoder__s.html#abd17fe329f2fb219c5a534f3217c5b95">lmath</a>);</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;    cmd_ln_free_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>);</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;    ckd_free(ps);</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;}</div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;cmd_ln_t *</div><div class="line"><a name="l00453"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#abb9256d8f7217a1e929509090df1f35b">  453</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#abb9256d8f7217a1e929509090df1f35b">ps_get_config</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;{</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;    <span class="keywordflow">return</span> ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>;</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;}</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;logmath_t *</div><div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a249cfc383b7d9111a28b550945a606b5">  459</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a249cfc383b7d9111a28b550945a606b5">ps_get_logmath</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;{</div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;    <span class="keywordflow">return</span> ps-&gt;<a class="code" href="structps__decoder__s.html#abd17fe329f2fb219c5a534f3217c5b95">lmath</a>;</div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;}</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;fe_t *</div><div class="line"><a name="l00465"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a6237e2822756f230b88019b533a28724">  465</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a6237e2822756f230b88019b533a28724">ps_get_fe</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;{</div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;    <span class="keywordflow">return</span> ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#a56eaceb9b6a1cbcccd09cf42cfa87231">fe</a>;</div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;}</div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;feat_t *</div><div class="line"><a name="l00471"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a0d74d90f0db0782386487cc061a09218">  471</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a0d74d90f0db0782386487cc061a09218">ps_get_feat</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;{</div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;    <span class="keywordflow">return</span> ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#a37ec6c2b1f3ada764842e08481239b34">fcb</a>;</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;}</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;<a class="code" href="structps__mllr__s.html">ps_mllr_t</a> *</div><div class="line"><a name="l00477"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a85e04bcbf5366f1bdad555dbb4d73d5d">  477</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a85e04bcbf5366f1bdad555dbb4d73d5d">ps_update_mllr</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <a class="code" href="structps__mllr__s.html">ps_mllr_t</a> *mllr)</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;{</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="acmod_8c.html#a4205b92d38db562577eafc3c432593ab">acmod_update_mllr</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, mllr);</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;}</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;</div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00483"></a><span class="lineno"><a class="line" href="ps__search_8h.html#a4072a93e8ce9a4229d17c9bce6ad1083">  483</a></span>&#160;<a class="code" href="ps__search_8h.html#a4072a93e8ce9a4229d17c9bce6ad1083">ps_set_search</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)</div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;{</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;    <a class="code" href="structps__search__s.html">ps_search_t</a> *search = ps_find_search(ps, name);</div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;    <span class="keywordflow">if</span> (!search)</div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;    </div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a> = search;</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;    <span class="comment">/* Set pl window depending on the search */</span></div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;    <span class="keywordflow">if</span> (!strcmp(PS_SEARCH_TYPE_NGRAM, ps_search_type(search))) {</div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;        ps-&gt;<a class="code" href="structps__decoder__s.html#a0f0a6681ffd98af789f6bed556c814e4">pl_window</a> = cmd_ln_int32_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-pl_window&quot;</span>);</div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;        ps-&gt;<a class="code" href="structps__decoder__s.html#a0f0a6681ffd98af789f6bed556c814e4">pl_window</a> = 0;</div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;    }</div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;    </div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;}</div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;</div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>*</div><div class="line"><a name="l00501"></a><span class="lineno"><a class="line" href="ps__search_8h.html#ae2b728c9b05e733605d33fa19472ef8e">  501</a></span>&#160;<a class="code" href="ps__search_8h.html#ae2b728c9b05e733605d33fa19472ef8e">ps_get_search</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;{</div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;    hash_iter_t *search_it;</div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* name = NULL;</div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;    <span class="keywordflow">for</span> (search_it = hash_table_iter(ps-&gt;<a class="code" href="structps__decoder__s.html#a43bca42790684eefb8d01a0aef6fa530">searches</a>); search_it;</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;        search_it = hash_table_iter_next(search_it)) {</div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;        <span class="keywordflow">if</span> (hash_entry_val(search_it-&gt;ent) == ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>) {</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;            name = hash_entry_key(search_it-&gt;ent);</div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;            <span class="keywordflow">break</span>;</div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;        }</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;    }</div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;    <span class="keywordflow">return</span> name;</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;}</div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;<span class="keywordtype">int</span> </div><div class="line"><a name="l00516"></a><span class="lineno"><a class="line" href="ps__search_8h.html#a300fd82f4b1621663a0d870da61497b0">  516</a></span>&#160;<a class="code" href="ps__search_8h.html#a300fd82f4b1621663a0d870da61497b0">ps_unset_search</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;{</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;    <a class="code" href="structps__search__s.html">ps_search_t</a> *search = hash_table_delete(ps-&gt;<a class="code" href="structps__decoder__s.html#a43bca42790684eefb8d01a0aef6fa530">searches</a>, name);</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;    <span class="keywordflow">if</span> (!search)</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;    <span class="keywordflow">if</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a> == search)</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;        ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a> = NULL;</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;    ps_search_free(search);</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;}</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;<a class="code" href="structps__search__iter__s.html">ps_search_iter_t</a> *</div><div class="line"><a name="l00528"></a><span class="lineno"><a class="line" href="ps__search_8h.html#a661c72707484ec2528319c9f6976fb7c">  528</a></span>&#160;<a class="code" href="ps__search_8h.html#a661c72707484ec2528319c9f6976fb7c">ps_search_iter</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;{</div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;   <span class="keywordflow">return</span> (<a class="code" href="structps__search__iter__s.html">ps_search_iter_t</a> *)hash_table_iter(ps-&gt;<a class="code" href="structps__decoder__s.html#a43bca42790684eefb8d01a0aef6fa530">searches</a>);</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;}</div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;</div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;<a class="code" href="structps__search__iter__s.html">ps_search_iter_t</a> *</div><div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="ps__search_8h.html#a4bd6d4f2b19be2351987c11694eaec9a">  534</a></span>&#160;<a class="code" href="ps__search_8h.html#a4bd6d4f2b19be2351987c11694eaec9a">ps_search_iter_next</a>(<a class="code" href="structps__search__iter__s.html">ps_search_iter_t</a> *itor)</div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;{</div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;   <span class="keywordflow">return</span> (<a class="code" href="structps__search__iter__s.html">ps_search_iter_t</a> *)hash_table_iter_next((hash_iter_t *)itor);</div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;}</div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;</div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>* </div><div class="line"><a name="l00540"></a><span class="lineno"><a class="line" href="ps__search_8h.html#a86d9b5968b9fe317a6335345fb9a2dd0">  540</a></span>&#160;<a class="code" href="ps__search_8h.html#a86d9b5968b9fe317a6335345fb9a2dd0">ps_search_iter_val</a>(<a class="code" href="structps__search__iter__s.html">ps_search_iter_t</a> *itor)</div><div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;{</div><div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;   <span class="keywordflow">return</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>*)(((hash_iter_t *)itor)-&gt;ent-&gt;key);</div><div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;}</div><div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160;</div><div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;<span class="keywordtype">void</span> </div><div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="ps__search_8h.html#a41e404de59cbd7bfc32f2da3ec7e6137">  546</a></span>&#160;<a class="code" href="ps__search_8h.html#a41e404de59cbd7bfc32f2da3ec7e6137">ps_search_iter_free</a>(<a class="code" href="structps__search__iter__s.html">ps_search_iter_t</a> *itor)</div><div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;{</div><div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;    hash_table_iter_free((hash_iter_t *)itor);</div><div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;}</div><div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;</div><div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;ngram_model_t *</div><div class="line"><a name="l00552"></a><span class="lineno"><a class="line" href="ps__search_8h.html#af55ad6ec21a7e67845f3c74149a34b1a">  552</a></span>&#160;<a class="code" href="ps__search_8h.html#af55ad6ec21a7e67845f3c74149a34b1a">ps_get_lm</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)</div><div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160;{</div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;    <a class="code" href="structps__search__s.html">ps_search_t</a> *search =  ps_find_search(ps, name);</div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;    <span class="keywordflow">if</span> (search &amp;&amp; strcmp(PS_SEARCH_TYPE_NGRAM, ps_search_type(search)))</div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;    <span class="keywordflow">return</span> search ? ((<a class="code" href="structngram__search__s.html">ngram_search_t</a> *) search)-&gt;lmset : NULL;</div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;}</div><div class="line"><a name="l00559"></a><span class="lineno">  559</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno">  560</span>&#160;fsg_model_t *</div><div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="ps__search_8h.html#a3a15f664d2d004d610e999adb4339dbe">  561</a></span>&#160;<a class="code" href="ps__search_8h.html#a3a15f664d2d004d610e999adb4339dbe">ps_get_fsg</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keyword">const</span> <span class="keywordtype">char</span> *name)</div><div class="line"><a name="l00562"></a><span class="lineno">  562</span>&#160;{</div><div class="line"><a name="l00563"></a><span class="lineno">  563</span>&#160;    <a class="code" href="structps__search__s.html">ps_search_t</a> *search = ps_find_search(ps, name);</div><div class="line"><a name="l00564"></a><span class="lineno">  564</span>&#160;    <span class="keywordflow">if</span> (search &amp;&amp; strcmp(PS_SEARCH_TYPE_FSG, ps_search_type(search)))</div><div class="line"><a name="l00565"></a><span class="lineno">  565</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00566"></a><span class="lineno">  566</span>&#160;    <span class="keywordflow">return</span> search ? ((<a class="code" href="structfsg__search__s.html">fsg_search_t</a> *) search)-&gt;fsg : NULL;</div><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;}</div><div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;</div><div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>*</div><div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="ps__search_8h.html#a8e2e66391b7c1e6cd1aac24d635ed3ea">  570</a></span>&#160;<a class="code" href="ps__search_8h.html#a8e2e66391b7c1e6cd1aac24d635ed3ea">ps_get_kws</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keyword">const</span> <span class="keywordtype">char</span>* name)</div><div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;{</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;    <a class="code" href="structps__search__s.html">ps_search_t</a> *search = ps_find_search(ps, name);</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;    <span class="keywordflow">if</span> (search &amp;&amp; strcmp(PS_SEARCH_TYPE_KWS, ps_search_type(search)))</div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;    <span class="keywordflow">return</span> search ? kws_search_get_keywords(search) : NULL;</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;}</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;set_search_internal(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <a class="code" href="structps__search__s.html">ps_search_t</a> *search)</div><div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;{</div><div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;    <a class="code" href="structps__search__s.html">ps_search_t</a> *old_search;</div><div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;    </div><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;    <span class="keywordflow">if</span> (!search)</div><div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;</div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;    search-&gt;<a class="code" href="structps__search__s.html#a2a33b7698fb237b42e007788f65cd46c">pls</a> = ps-&gt;<a class="code" href="structps__decoder__s.html#a0c6d141d7a71a1287be00a1ebcc7643d">phone_loop</a>;</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;    old_search = (<a class="code" href="structps__search__s.html">ps_search_t</a> *) hash_table_replace(ps-&gt;<a class="code" href="structps__decoder__s.html#a43bca42790684eefb8d01a0aef6fa530">searches</a>, ps_search_name(search), search);</div><div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;    <span class="keywordflow">if</span> (old_search != search)</div><div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;        ps_search_free(old_search);</div><div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;</div><div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;}</div><div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00595"></a><span class="lineno"><a class="line" href="ps__search_8h.html#aa76b495c63c665a21a49d7cb51c66d74">  595</a></span>&#160;<a class="code" href="ps__search_8h.html#aa76b495c63c665a21a49d7cb51c66d74">ps_set_lm</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, ngram_model_t *lm)</div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;{</div><div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;    <a class="code" href="structps__search__s.html">ps_search_t</a> *search;</div><div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;    search = <a class="code" href="ngram__search_8c.html#a04f80b377c847026254fb85596e2f43c">ngram_search_init</a>(name, lm, ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">dict</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#ae6515cbc261686f3f3bbd95719f79793">d2p</a>);</div><div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;    <span class="keywordflow">return</span> set_search_internal(ps, search);</div><div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;}</div><div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;</div><div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="ps__search_8h.html#a78372effd2aa6bddf7b71d6e2e9c3776">  603</a></span>&#160;<a class="code" href="ps__search_8h.html#a78372effd2aa6bddf7b71d6e2e9c3776">ps_set_lm_file</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> <span class="keywordtype">char</span> *path)</div><div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;{</div><div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;  ngram_model_t *lm;</div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;  <span class="keywordtype">int</span> result;</div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;</div><div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;  lm = ngram_model_read(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, path, NGRAM_AUTO, ps-&gt;<a class="code" href="structps__decoder__s.html#abd17fe329f2fb219c5a534f3217c5b95">lmath</a>);</div><div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;  <span class="keywordflow">if</span> (!lm)</div><div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;      <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160;</div><div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;  result = <a class="code" href="ps__search_8h.html#aa76b495c63c665a21a49d7cb51c66d74">ps_set_lm</a>(ps, name, lm);</div><div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;  ngram_model_free(lm);</div><div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;}</div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;</div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="ps__search_8h.html#aa38c96913dd3a06cbab54ce834af5141">  618</a></span>&#160;<a class="code" href="ps__search_8h.html#aa38c96913dd3a06cbab54ce834af5141">ps_set_allphone</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, ngram_model_t *lm)</div><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;{</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;    <a class="code" href="structps__search__s.html">ps_search_t</a> *search;</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;    search = allphone_search_init(name, lm, ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">dict</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#ae6515cbc261686f3f3bbd95719f79793">d2p</a>);</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;    <span class="keywordflow">return</span> set_search_internal(ps, search);</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;}</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;</div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00626"></a><span class="lineno"><a class="line" href="ps__search_8h.html#a66bebfccb8ece9e7bff411329f25ee5e">  626</a></span>&#160;<a class="code" href="ps__search_8h.html#a66bebfccb8ece9e7bff411329f25ee5e">ps_set_allphone_file</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> <span class="keywordtype">char</span> *path)</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;{</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;  ngram_model_t *lm;</div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;  <span class="keywordtype">int</span> result;</div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;</div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;  lm = NULL;</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;  <span class="keywordflow">if</span> (path)</div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;    lm = ngram_model_read(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, path, NGRAM_AUTO, ps-&gt;<a class="code" href="structps__decoder__s.html#abd17fe329f2fb219c5a534f3217c5b95">lmath</a>);</div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;  result = <a class="code" href="ps__search_8h.html#aa38c96913dd3a06cbab54ce834af5141">ps_set_allphone</a>(ps, name, lm);</div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;  <span class="keywordflow">if</span> (lm)</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;      ngram_model_free(lm);</div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;}</div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;</div><div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00641"></a><span class="lineno"><a class="line" href="ps__search_8h.html#a0780564ad3f12179b0291ac87774cea1">  641</a></span>&#160;<a class="code" href="ps__search_8h.html#a0780564ad3f12179b0291ac87774cea1">ps_set_kws</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> <span class="keywordtype">char</span> *keyfile)</div><div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;{</div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;    <a class="code" href="structps__search__s.html">ps_search_t</a> *search;</div><div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;    search = kws_search_init(name, NULL, keyfile, ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">dict</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#ae6515cbc261686f3f3bbd95719f79793">d2p</a>);</div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;    <span class="keywordflow">return</span> set_search_internal(ps, search);</div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;}</div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;</div><div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00649"></a><span class="lineno"><a class="line" href="ps__search_8h.html#a7965534ad5e48f0b46f326d7da186a2a">  649</a></span>&#160;<a class="code" href="ps__search_8h.html#a7965534ad5e48f0b46f326d7da186a2a">ps_set_keyphrase</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> <span class="keywordtype">char</span> *keyphrase)</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;{</div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;    <a class="code" href="structps__search__s.html">ps_search_t</a> *search;</div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;    search = kws_search_init(name, keyphrase, NULL, ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">dict</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#ae6515cbc261686f3f3bbd95719f79793">d2p</a>);</div><div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;    <span class="keywordflow">return</span> set_search_internal(ps, search);</div><div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;}</div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;</div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00657"></a><span class="lineno"><a class="line" href="ps__search_8h.html#afde3539cbbf8c67cb98a02ca779055af">  657</a></span>&#160;<a class="code" href="ps__search_8h.html#afde3539cbbf8c67cb98a02ca779055af">ps_set_fsg</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, fsg_model_t *fsg)</div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;{</div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;    <a class="code" href="structps__search__s.html">ps_search_t</a> *search;</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;    search = fsg_search_init(name, fsg, ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">dict</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#ae6515cbc261686f3f3bbd95719f79793">d2p</a>);</div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;    <span class="keywordflow">return</span> set_search_internal(ps, search);</div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;}</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;<span class="keywordtype">int</span> </div><div class="line"><a name="l00665"></a><span class="lineno"><a class="line" href="ps__search_8h.html#ae845bbf6a3e5b859e833f6cc0d1ba55f">  665</a></span>&#160;<a class="code" href="ps__search_8h.html#ae845bbf6a3e5b859e833f6cc0d1ba55f">ps_set_jsgf_file</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> <span class="keywordtype">char</span> *path)</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;{</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;  fsg_model_t *fsg;</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;  jsgf_rule_t *rule;</div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;  <span class="keywordtype">char</span> <span class="keyword">const</span> *toprule;</div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;  jsgf_t *jsgf = jsgf_parse_file(path, NULL);</div><div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;  <span class="keywordtype">float</span> lw;</div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;  <span class="keywordtype">int</span> result;</div><div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;</div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;  <span class="keywordflow">if</span> (!jsgf)</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;      <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;</div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;  rule = NULL;</div><div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;  <span class="comment">/* Take the -toprule if specified. */</span></div><div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;  <span class="keywordflow">if</span> ((toprule = cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-toprule&quot;</span>))) {</div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;      rule = jsgf_get_rule(jsgf, toprule);</div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;      <span class="keywordflow">if</span> (rule == NULL) {</div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;          E_ERROR(<span class="stringliteral">&quot;Start rule %s not found\n&quot;</span>, toprule);</div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;          jsgf_grammar_free(jsgf);</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;          <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;      }</div><div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;      rule = jsgf_get_public_rule(jsgf);</div><div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;      <span class="keywordflow">if</span> (rule == NULL) {</div><div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;          E_ERROR(<span class="stringliteral">&quot;No public rules found in %s\n&quot;</span>, path);</div><div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;          jsgf_grammar_free(jsgf);</div><div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;          <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;      }</div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;  }</div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;</div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;  lw = cmd_ln_float32_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-lw&quot;</span>);</div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;  fsg = jsgf_build_fsg(jsgf, rule, ps-&gt;<a class="code" href="structps__decoder__s.html#abd17fe329f2fb219c5a534f3217c5b95">lmath</a>, lw);</div><div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;  result = <a class="code" href="ps__search_8h.html#afde3539cbbf8c67cb98a02ca779055af">ps_set_fsg</a>(ps, name, fsg);</div><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;  fsg_model_free(fsg);</div><div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;  jsgf_grammar_free(jsgf);</div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;}</div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;</div><div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;<span class="keywordtype">int</span> </div><div class="line"><a name="l00704"></a><span class="lineno"><a class="line" href="ps__search_8h.html#a3c51b0eab27ac9df20ee54e1d87b3ca3">  704</a></span>&#160;<a class="code" href="ps__search_8h.html#a3c51b0eab27ac9df20ee54e1d87b3ca3">ps_set_jsgf_string</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keyword">const</span> <span class="keywordtype">char</span> *name, <span class="keyword">const</span> <span class="keywordtype">char</span> *jsgf_string)</div><div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;{</div><div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;  fsg_model_t *fsg;</div><div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;  jsgf_rule_t *rule;</div><div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;  <span class="keywordtype">char</span> <span class="keyword">const</span> *toprule;</div><div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;  jsgf_t *jsgf = jsgf_parse_string(jsgf_string, NULL);</div><div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;  <span class="keywordtype">float</span> lw;</div><div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;  <span class="keywordtype">int</span> result;</div><div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;</div><div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;  <span class="keywordflow">if</span> (!jsgf)</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;      <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;</div><div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;  rule = NULL;</div><div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;  <span class="comment">/* Take the -toprule if specified. */</span></div><div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;  <span class="keywordflow">if</span> ((toprule = cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-toprule&quot;</span>))) {</div><div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;      rule = jsgf_get_rule(jsgf, toprule);</div><div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;      <span class="keywordflow">if</span> (rule == NULL) {</div><div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;          E_ERROR(<span class="stringliteral">&quot;Start rule %s not found\n&quot;</span>, toprule);</div><div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;          <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;      }</div><div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;      rule = jsgf_get_public_rule(jsgf);</div><div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;      <span class="keywordflow">if</span> (rule == NULL) {</div><div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;          E_ERROR(<span class="stringliteral">&quot;No public rules found in input string\n&quot;</span>);</div><div class="line"><a name="l00728"></a><span class="lineno">  728</span>&#160;          <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;      }</div><div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;  }</div><div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;</div><div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;  lw = cmd_ln_float32_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-lw&quot;</span>);</div><div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;  fsg = jsgf_build_fsg(jsgf, rule, ps-&gt;<a class="code" href="structps__decoder__s.html#abd17fe329f2fb219c5a534f3217c5b95">lmath</a>, lw);</div><div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;  result = <a class="code" href="ps__search_8h.html#afde3539cbbf8c67cb98a02ca779055af">ps_set_fsg</a>(ps, name, fsg);</div><div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;  fsg_model_free(fsg);</div><div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;}</div><div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;</div><div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;</div><div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00741"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a824f46e51681d931b7e2706a86c3d86f">  741</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a824f46e51681d931b7e2706a86c3d86f">ps_load_dict</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keywordtype">char</span> <span class="keyword">const</span> *dictfile,</div><div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;             <span class="keywordtype">char</span> <span class="keyword">const</span> *fdictfile, <span class="keywordtype">char</span> <span class="keyword">const</span> *format)</div><div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;{</div><div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;    cmd_ln_t *newconfig;</div><div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;    <a class="code" href="structdict2pid__t.html">dict2pid_t</a> *d2p;</div><div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;    <a class="code" href="structdict__t.html">dict_t</a> *dict;</div><div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;    hash_iter_t *search_it;</div><div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;</div><div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;    <span class="comment">/* Create a new scratch config to load this dict (so existing one</span></div><div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;<span class="comment">     * won&#39;t be affected if it fails) */</span></div><div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;    newconfig = cmd_ln_init(NULL, <a class="code" href="pocketsphinx_8h.html#ad873ea6e20f91a3284963d5c34331c58">ps_args</a>(), TRUE, NULL);</div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;    cmd_ln_set_boolean_r(newconfig, <span class="stringliteral">&quot;-dictcase&quot;</span>,</div><div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;                         cmd_ln_boolean_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-dictcase&quot;</span>));</div><div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;    cmd_ln_set_str_r(newconfig, <span class="stringliteral">&quot;-dict&quot;</span>, dictfile);</div><div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;    <span class="keywordflow">if</span> (fdictfile)</div><div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;        cmd_ln_set_str_r(newconfig, <span class="stringliteral">&quot;-fdict&quot;</span>, fdictfile);</div><div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;    <span class="keywordflow">else</span></div><div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;        cmd_ln_set_str_r(newconfig, <span class="stringliteral">&quot;-fdict&quot;</span>,</div><div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;                         cmd_ln_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-fdict&quot;</span>));</div><div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;</div><div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;    <span class="comment">/* Try to load it. */</span></div><div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;    <span class="keywordflow">if</span> ((dict = <a class="code" href="dict_8h.html#a05d8dac3e5fe5399ccb8bf7776e203e2">dict_init</a>(newconfig, ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#a351548ff5547c29b4a684e10434a51dd">mdef</a>)) == NULL) {</div><div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;        cmd_ln_free_r(newconfig);</div><div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;    }</div><div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;</div><div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;    <span class="comment">/* Reinit the dict2pid. */</span></div><div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;    <span class="keywordflow">if</span> ((d2p = <a class="code" href="dict2pid_8c.html#addd541f2275b79e284575fb11b7986e1">dict2pid_build</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#a351548ff5547c29b4a684e10434a51dd">mdef</a>, dict)) == NULL) {</div><div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;        cmd_ln_free_r(newconfig);</div><div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;    }</div><div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;</div><div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;    <span class="comment">/* Success!  Update the existing config to reflect new dicts and</span></div><div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;<span class="comment">     * drop everything into place. */</span></div><div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;    cmd_ln_free_r(newconfig);</div><div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;    cmd_ln_set_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-dict&quot;</span>, dictfile);</div><div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;    <span class="keywordflow">if</span> (fdictfile)</div><div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;        cmd_ln_set_str_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-fdict&quot;</span>, fdictfile);</div><div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;    <a class="code" href="dict_8h.html#a51ee6c067decce8dbc182f95f7b33e91">dict_free</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">dict</a>);</div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">dict</a> = dict;</div><div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;    <a class="code" href="dict2pid_8c.html#a293253226550e812c448ae096b364d0d">dict2pid_free</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#ae6515cbc261686f3f3bbd95719f79793">d2p</a>);</div><div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#ae6515cbc261686f3f3bbd95719f79793">d2p</a> = d2p;</div><div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;</div><div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;    <span class="comment">/* And tell all searches to reconfigure themselves. */</span></div><div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;    <span class="keywordflow">for</span> (search_it = hash_table_iter(ps-&gt;<a class="code" href="structps__decoder__s.html#a43bca42790684eefb8d01a0aef6fa530">searches</a>); search_it;</div><div class="line"><a name="l00786"></a><span class="lineno">  786</span>&#160;       search_it = hash_table_iter_next(search_it)) {</div><div class="line"><a name="l00787"></a><span class="lineno">  787</span>&#160;        <span class="keywordflow">if</span> (ps_search_reinit(hash_entry_val(search_it-&gt;ent), dict, d2p) &lt; 0) {</div><div class="line"><a name="l00788"></a><span class="lineno">  788</span>&#160;            hash_table_iter_free(search_it);</div><div class="line"><a name="l00789"></a><span class="lineno">  789</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00790"></a><span class="lineno">  790</span>&#160;        }</div><div class="line"><a name="l00791"></a><span class="lineno">  791</span>&#160;    }</div><div class="line"><a name="l00792"></a><span class="lineno">  792</span>&#160;</div><div class="line"><a name="l00793"></a><span class="lineno">  793</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00794"></a><span class="lineno">  794</span>&#160;}</div><div class="line"><a name="l00795"></a><span class="lineno">  795</span>&#160;</div><div class="line"><a name="l00796"></a><span class="lineno">  796</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00797"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a5e278377cc57d921591ce95b980760d5">  797</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a5e278377cc57d921591ce95b980760d5">ps_save_dict</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keywordtype">char</span> <span class="keyword">const</span> *dictfile,</div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;             <span class="keywordtype">char</span> <span class="keyword">const</span> *format)</div><div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;{</div><div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="dict_8h.html#a4bfa8e3b7b9ff30165375d1c97bb04b8">dict_write</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">dict</a>, dictfile, format);</div><div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;}</div><div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;</div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00804"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a5f3c4fcdbef34915c4e785ac9a1c6005">  804</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a5f3c4fcdbef34915c4e785ac9a1c6005">ps_add_word</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps,</div><div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;            <span class="keywordtype">char</span> <span class="keyword">const</span> *word,</div><div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;            <span class="keywordtype">char</span> <span class="keyword">const</span> *phones,</div><div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;            <span class="keywordtype">int</span> update)</div><div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;{</div><div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;    int32 wid;</div><div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;    <a class="code" href="s3types_8h.html#ae5f70241ce62a79747f0611029a6409d">s3cipid_t</a> *pron;</div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;    hash_iter_t *search_it;</div><div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;    <span class="keywordtype">char</span> **phonestr, *tmp;</div><div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;    <span class="keywordtype">int</span> np, i, rv;</div><div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;</div><div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;    <span class="comment">/* Parse phones into an array of phone IDs. */</span></div><div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;    tmp = ckd_salloc(phones);</div><div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;    np = str2words(tmp, NULL, 0);</div><div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;    phonestr = ckd_calloc(np, <span class="keyword">sizeof</span>(*phonestr));</div><div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;    str2words(tmp, phonestr, np);</div><div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;    pron = ckd_calloc(np, <span class="keyword">sizeof</span>(*pron));</div><div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;    <span class="keywordflow">for</span> (i = 0; i &lt; np; ++i) {</div><div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;        pron[i] = <a class="code" href="bin__mdef_8h.html#af592f710731474b77166a29530716672">bin_mdef_ciphone_id</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#a351548ff5547c29b4a684e10434a51dd">mdef</a>, phonestr[i]);</div><div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;        <span class="keywordflow">if</span> (pron[i] == -1) {</div><div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;            E_ERROR(<span class="stringliteral">&quot;Unknown phone %s in phone string %s\n&quot;</span>,</div><div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;                    phonestr[i], tmp);</div><div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;            ckd_free(phonestr);</div><div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;            ckd_free(tmp);</div><div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;            ckd_free(pron);</div><div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;        }</div><div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;    }</div><div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;    <span class="comment">/* No longer needed. */</span></div><div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;    ckd_free(phonestr);</div><div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;    ckd_free(tmp);</div><div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;</div><div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;    <span class="comment">/* Add it to the dictionary. */</span></div><div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;    <span class="keywordflow">if</span> ((wid = <a class="code" href="dict_8h.html#a24888ac8e24259e553c43c4655b38432">dict_add_word</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">dict</a>, word, pron, np)) == -1) {</div><div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;        ckd_free(pron);</div><div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;    }</div><div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;    <span class="comment">/* No longer needed. */</span></div><div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;    ckd_free(pron);</div><div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;</div><div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;    <span class="comment">/* Now we also have to add it to dict2pid. */</span></div><div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;    <a class="code" href="dict2pid_8c.html#aa94120dcea4b17807576e29484b8a008">dict2pid_add_word</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#ae6515cbc261686f3f3bbd95719f79793">d2p</a>, wid);</div><div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;</div><div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;    <span class="comment">/* TODO: we definitely need to refactor this */</span></div><div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;    <span class="keywordflow">for</span> (search_it = hash_table_iter(ps-&gt;<a class="code" href="structps__decoder__s.html#a43bca42790684eefb8d01a0aef6fa530">searches</a>); search_it;</div><div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;         search_it = hash_table_iter_next(search_it)) {</div><div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;        <a class="code" href="structps__search__s.html">ps_search_t</a> *search = hash_entry_val(search_it-&gt;ent);</div><div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;        <span class="keywordflow">if</span> (!strcmp(PS_SEARCH_TYPE_NGRAM, ps_search_type(search))) {</div><div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;            ngram_model_t *lmset = ((<a class="code" href="structngram__search__s.html">ngram_search_t</a> *) search)-&gt;lmset;</div><div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;            <span class="keywordflow">if</span> (ngram_model_add_word(lmset, word, 1.0) == NGRAM_INVALID_WID) {</div><div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;                hash_table_iter_free(search_it);</div><div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;                <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;            }</div><div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;        }</div><div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;</div><div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;        <span class="keywordflow">if</span> (update) {</div><div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;            <span class="keywordflow">if</span> ((rv = ps_search_reinit(search, ps-&gt;<a class="code" href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">dict</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#ae6515cbc261686f3f3bbd95719f79793">d2p</a>) &lt; 0)) {</div><div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;                hash_table_iter_free(search_it);</div><div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;                <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;            }</div><div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;        }</div><div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;    }</div><div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;</div><div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;    <span class="comment">/* Rebuild the widmap and search tree if requested. */</span></div><div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;    <span class="keywordflow">return</span> wid;</div><div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;}</div><div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;</div><div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;<span class="keywordtype">char</span> *</div><div class="line"><a name="l00872"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#ab0a242c645a68a553c2e7c62c96e4ce2">  872</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#ab0a242c645a68a553c2e7c62c96e4ce2">ps_lookup_word</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keyword">const</span> <span class="keywordtype">char</span> *word)</div><div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;{</div><div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;    s3wid_t wid;</div><div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;    int32 phlen, j;</div><div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;    <span class="keywordtype">char</span> *phones;</div><div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;    <a class="code" href="structdict__t.html">dict_t</a> *dict = ps-&gt;<a class="code" href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">dict</a>;</div><div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;    </div><div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;    wid = <a class="code" href="dict_8h.html#ad3729eb1a02a9a321e17933f7e90c80e">dict_wordid</a>(dict, word);</div><div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;    <span class="keywordflow">if</span> (wid == <a class="code" href="s3types_8h.html#a5c42410b7125da611210c5a4be29898b">BAD_S3WID</a>)</div><div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;</div><div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;    <span class="keywordflow">for</span> (phlen = j = 0; j &lt; dict_pronlen(dict, wid); ++j)</div><div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;        phlen += strlen(<a class="code" href="dict_8h.html#a8587d077f5303554df0e26a181bfb0bf">dict_ciphone_str</a>(dict, wid, j)) + 1;</div><div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;    phones = ckd_calloc(1, phlen);</div><div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;    <span class="keywordflow">for</span> (j = 0; j &lt; dict_pronlen(dict, wid); ++j) {</div><div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;        strcat(phones, <a class="code" href="dict_8h.html#a8587d077f5303554df0e26a181bfb0bf">dict_ciphone_str</a>(dict, wid, j));</div><div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;        <span class="keywordflow">if</span> (j != dict_pronlen(dict, wid) - 1)</div><div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;            strcat(phones, <span class="stringliteral">&quot; &quot;</span>);</div><div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;    }</div><div class="line"><a name="l00891"></a><span class="lineno">  891</span>&#160;    <span class="keywordflow">return</span> phones;</div><div class="line"><a name="l00892"></a><span class="lineno">  892</span>&#160;}</div><div class="line"><a name="l00893"></a><span class="lineno">  893</span>&#160;</div><div class="line"><a name="l00894"></a><span class="lineno">  894</span>&#160;<span class="keywordtype">long</span></div><div class="line"><a name="l00895"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a43b378f9c42bcb19fdff0ebe71c25adb">  895</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a43b378f9c42bcb19fdff0ebe71c25adb">ps_decode_raw</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, FILE *rawfh,</div><div class="line"><a name="l00896"></a><span class="lineno">  896</span>&#160;              <span class="keywordtype">long</span> maxsamps)</div><div class="line"><a name="l00897"></a><span class="lineno">  897</span>&#160;{</div><div class="line"><a name="l00898"></a><span class="lineno">  898</span>&#160;    int16 *data;</div><div class="line"><a name="l00899"></a><span class="lineno">  899</span>&#160;    <span class="keywordtype">long</span> total, pos, endpos;</div><div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;</div><div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;    <a class="code" href="pocketsphinx_8h.html#a89be3b2a8f83291a225db0bcd9ee65b2">ps_start_stream</a>(ps);</div><div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;    <a class="code" href="pocketsphinx_8h.html#ade3909b1c12c1b70afe284639e70cbff">ps_start_utt</a>(ps);</div><div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;</div><div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;    <span class="comment">/* If this file is seekable or maxsamps is specified, then decode</span></div><div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;<span class="comment">     * the whole thing at once. */</span></div><div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;    <span class="keywordflow">if</span> (maxsamps != -1) {</div><div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;        data = ckd_calloc(maxsamps, <span class="keyword">sizeof</span>(*data));</div><div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;        total = fread(data, <span class="keyword">sizeof</span>(*data), maxsamps, rawfh);</div><div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;        <a class="code" href="pocketsphinx_8h.html#a572ad08651b4caae820d178a12c8f95f">ps_process_raw</a>(ps, data, total, FALSE, TRUE);</div><div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;        ckd_free(data);</div><div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((pos = ftell(rawfh)) &gt;= 0) {</div><div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;        fseek(rawfh, 0, SEEK_END);</div><div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;        endpos = ftell(rawfh);</div><div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;        fseek(rawfh, pos, SEEK_SET);</div><div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;        maxsamps = endpos - pos;</div><div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;</div><div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;        data = ckd_calloc(maxsamps, <span class="keyword">sizeof</span>(*data));</div><div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;        total = fread(data, <span class="keyword">sizeof</span>(*data), maxsamps, rawfh);</div><div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;        <a class="code" href="pocketsphinx_8h.html#a572ad08651b4caae820d178a12c8f95f">ps_process_raw</a>(ps, data, total, FALSE, TRUE);</div><div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;        ckd_free(data);</div><div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;        <span class="comment">/* Otherwise decode it in a stream. */</span></div><div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;        total = 0;</div><div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;        <span class="keywordflow">while</span> (!feof(rawfh)) {</div><div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;            int16 data[256];</div><div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;            <span class="keywordtype">size_t</span> nread;</div><div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;</div><div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;            nread = fread(data, <span class="keyword">sizeof</span>(*data), <span class="keyword">sizeof</span>(data)/<span class="keyword">sizeof</span>(*data), rawfh);</div><div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;            <a class="code" href="pocketsphinx_8h.html#a572ad08651b4caae820d178a12c8f95f">ps_process_raw</a>(ps, data, nread, FALSE, FALSE);</div><div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;            total += nread;</div><div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;        }</div><div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;    }</div><div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;    <a class="code" href="pocketsphinx_8h.html#ab9339de730713b68cbd68a7f36dc8730">ps_end_utt</a>(ps);</div><div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;    <span class="keywordflow">return</span> total;</div><div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;}</div><div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;</div><div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00938"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a89be3b2a8f83291a225db0bcd9ee65b2">  938</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a89be3b2a8f83291a225db0bcd9ee65b2">ps_start_stream</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</div><div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;{</div><div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;    <a class="code" href="acmod_8c.html#ae065d2fafc704177e7537988c9d3b5c1">acmod_start_stream</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>);</div><div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;    <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;}</div><div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;</div><div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l00945"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#ade3909b1c12c1b70afe284639e70cbff">  945</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#ade3909b1c12c1b70afe284639e70cbff">ps_start_utt</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</div><div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;{</div><div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;    <span class="keywordtype">int</span> rv;</div><div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;    <span class="keywordtype">char</span> uttid[16];</div><div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;    </div><div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;    <span class="keywordflow">if</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#a06adf606c11e6f4b9869742510a5c23b">state</a> == <a class="code" href="acmod_8h.html#a6a74b084234e0e7d5e72161545c5040ba71f39dbe81403dbb045f4312d1bbaae3">ACMOD_STARTED</a> || ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#a06adf606c11e6f4b9869742510a5c23b">state</a> == <a class="code" href="acmod_8h.html#a6a74b084234e0e7d5e72161545c5040ba1ed8df720ee7006ebaada8c75371d94c">ACMOD_PROCESSING</a>) {</div><div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;        E_ERROR(<span class="stringliteral">&quot;Utterance already started\n&quot;</span>);</div><div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;    }</div><div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;</div><div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;    <span class="keywordflow">if</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a> == NULL) {</div><div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;        E_ERROR(<span class="stringliteral">&quot;No search module is selected, did you forget to &quot;</span></div><div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;                <span class="stringliteral">&quot;specify a language model or grammar?\n&quot;</span>);</div><div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;    }</div><div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;</div><div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;    ptmr_reset(&amp;ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>);</div><div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;    ptmr_start(&amp;ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>);</div><div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;</div><div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;    sprintf(uttid, <span class="stringliteral">&quot;%09u&quot;</span>, ps-&gt;<a class="code" href="structps__decoder__s.html#a0f597370dd162c2799efe216c9b991fc">uttno</a>);</div><div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;    ++ps-&gt;<a class="code" href="structps__decoder__s.html#a0f597370dd162c2799efe216c9b991fc">uttno</a>;</div><div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;</div><div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;    <span class="comment">/* Remove any residual word lattice and hypothesis. */</span></div><div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;    <a class="code" href="ps__lattice_8h.html#a3f90e846bde47cd1acdff165b92f5c22">ps_lattice_free</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>-&gt;<a class="code" href="structps__search__s.html#a897f46c55d17e817ff1364f555b31463">dag</a>);</div><div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>-&gt;<a class="code" href="structps__search__s.html#a897f46c55d17e817ff1364f555b31463">dag</a> = NULL;</div><div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>-&gt;<a class="code" href="structps__search__s.html#aa3020ef7bd4e56713dfe2fbad52e6e4f">last_link</a> = NULL;</div><div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>-&gt;<a class="code" href="structps__search__s.html#a721a656d0e34f7604ea8c52a1bdf14ff">post</a> = 0;</div><div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;    ckd_free(ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>-&gt;<a class="code" href="structps__search__s.html#aa398c736a887af97e42b2a562359adc3">hyp_str</a>);</div><div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;    ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>-&gt;<a class="code" href="structps__search__s.html#aa398c736a887af97e42b2a562359adc3">hyp_str</a> = NULL;</div><div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;    <span class="keywordflow">if</span> ((rv = <a class="code" href="acmod_8c.html#aa3a5a89f76338e3e1bcfa7a2cecc5845">acmod_start_utt</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>)) &lt; 0)</div><div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;        <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;</div><div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;    <span class="comment">/* Start logging features and audio if requested. */</span></div><div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;    <span class="keywordflow">if</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#a8bb5ef8791798b8dd9bc82b1ec016663">mfclogdir</a>) {</div><div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;        <span class="keywordtype">char</span> *logfn = string_join(ps-&gt;<a class="code" href="structps__decoder__s.html#a8bb5ef8791798b8dd9bc82b1ec016663">mfclogdir</a>, <span class="stringliteral">&quot;/&quot;</span>,</div><div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;                                  uttid, <span class="stringliteral">&quot;.mfc&quot;</span>, NULL);</div><div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;        FILE *mfcfh;</div><div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;        E_INFO(<span class="stringliteral">&quot;Writing MFCC log file: %s\n&quot;</span>, logfn);</div><div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;        <span class="keywordflow">if</span> ((mfcfh = fopen(logfn, <span class="stringliteral">&quot;wb&quot;</span>)) == NULL) {</div><div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;            E_ERROR_SYSTEM(<span class="stringliteral">&quot;Failed to open MFCC log file %s&quot;</span>, logfn);</div><div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;            ckd_free(logfn);</div><div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;        }</div><div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;        ckd_free(logfn);</div><div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;        <a class="code" href="acmod_8c.html#a5753caa516c75bdc74b385d7aa66a97c">acmod_set_mfcfh</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, mfcfh);</div><div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;    }</div><div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;    <span class="keywordflow">if</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#aa2610c52a9267ee18ca095169bf34bfd">rawlogdir</a>) {</div><div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;        <span class="keywordtype">char</span> *logfn = string_join(ps-&gt;<a class="code" href="structps__decoder__s.html#aa2610c52a9267ee18ca095169bf34bfd">rawlogdir</a>, <span class="stringliteral">&quot;/&quot;</span>,</div><div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;                                  uttid, <span class="stringliteral">&quot;.raw&quot;</span>, NULL);</div><div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;        FILE *rawfh;</div><div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;        E_INFO(<span class="stringliteral">&quot;Writing raw audio log file: %s\n&quot;</span>, logfn);</div><div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;        <span class="keywordflow">if</span> ((rawfh = fopen(logfn, <span class="stringliteral">&quot;wb&quot;</span>)) == NULL) {</div><div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;            E_ERROR_SYSTEM(<span class="stringliteral">&quot;Failed to open raw audio log file %s&quot;</span>, logfn);</div><div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;            ckd_free(logfn);</div><div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;        }</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;        ckd_free(logfn);</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;        <a class="code" href="acmod_8c.html#a6979441ae866ea846ef41f8471b105a0">acmod_set_rawfh</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, rawfh);</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;    }</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;    <span class="keywordflow">if</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#a0ed3476113fe3d63b13ac5e8da3f3b4f">senlogdir</a>) {</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;        <span class="keywordtype">char</span> *logfn = string_join(ps-&gt;<a class="code" href="structps__decoder__s.html#a0ed3476113fe3d63b13ac5e8da3f3b4f">senlogdir</a>, <span class="stringliteral">&quot;/&quot;</span>,</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;                                  uttid, <span class="stringliteral">&quot;.sen&quot;</span>, NULL);</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;        FILE *senfh;</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;        E_INFO(<span class="stringliteral">&quot;Writing senone score log file: %s\n&quot;</span>, logfn);</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;        <span class="keywordflow">if</span> ((senfh = fopen(logfn, <span class="stringliteral">&quot;wb&quot;</span>)) == NULL) {</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160;            E_ERROR_SYSTEM(<span class="stringliteral">&quot;Failed to open senone score log file %s&quot;</span>, logfn);</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160;            ckd_free(logfn);</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;            <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;        }</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160;        ckd_free(logfn);</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;        <a class="code" href="acmod_8c.html#ab35cb48cdf326a3fb5223589d73ae0ce">acmod_set_senfh</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, senfh);</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;    }</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;    <span class="comment">/* Start auxiliary phone loop search. */</span></div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;    <span class="keywordflow">if</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#a0c6d141d7a71a1287be00a1ebcc7643d">phone_loop</a>)</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;        ps_search_start(ps-&gt;<a class="code" href="structps__decoder__s.html#a0c6d141d7a71a1287be00a1ebcc7643d">phone_loop</a>);</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;    <span class="keywordflow">return</span> ps_search_start(ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>);</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;}</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;<span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;ps_search_forward(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;{</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;    <span class="keywordtype">int</span> nfr;</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;    nfr = 0;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;    <span class="keywordflow">while</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#a861cc097befe7e81473f0ae0972186e0">n_feat_frame</a> &gt; 0) {</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;        <span class="keywordtype">int</span> k;</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160;        <span class="keywordflow">if</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#a0f0a6681ffd98af789f6bed556c814e4">pl_window</a> &gt; 0)</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;            <span class="keywordflow">if</span> ((k = ps_search_step(ps-&gt;<a class="code" href="structps__decoder__s.html#a0c6d141d7a71a1287be00a1ebcc7643d">phone_loop</a>, ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#aec694af0767ac5e8f1022b6252111885">output_frame</a>)) &lt; 0)</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;                <span class="keywordflow">return</span> k;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;        <span class="keywordflow">if</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#aec694af0767ac5e8f1022b6252111885">output_frame</a> &gt;= ps-&gt;<a class="code" href="structps__decoder__s.html#a0f0a6681ffd98af789f6bed556c814e4">pl_window</a>)</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;            <span class="keywordflow">if</span> ((k = ps_search_step(ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>,</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;                                    ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#aec694af0767ac5e8f1022b6252111885">output_frame</a> - ps-&gt;<a class="code" href="structps__decoder__s.html#a0f0a6681ffd98af789f6bed556c814e4">pl_window</a>)) &lt; 0)</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160;                <span class="keywordflow">return</span> k;</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;        <a class="code" href="acmod_8c.html#a338971ea0aa27fb4796d224e4767642b">acmod_advance</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>);</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;        ++ps-&gt;<a class="code" href="structps__decoder__s.html#a2886b321c576c7def449ebb2f37899fd">n_frame</a>;</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;        ++nfr;</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;    }</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;    <span class="keywordflow">return</span> nfr;</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;}</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l01048"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a466d1d718873e7b1cf0881e4f552a4a2"> 1048</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a466d1d718873e7b1cf0881e4f552a4a2">ps_decode_senscr</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, FILE *senfh)</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;{</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;    <span class="keywordtype">int</span> nfr, n_searchfr;</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;    <a class="code" href="pocketsphinx_8h.html#ade3909b1c12c1b70afe284639e70cbff">ps_start_utt</a>(ps);</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;    n_searchfr = 0;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;    <a class="code" href="acmod_8c.html#a58bd6038bec5d3901ac2057cacdd778a">acmod_set_insenfh</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, senfh);</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;    <span class="keywordflow">while</span> ((nfr = <a class="code" href="acmod_8c.html#a5c193164be78ad42944b7fb1be6299a2">acmod_read_scores</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>)) &gt; 0) {</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;        <span class="keywordflow">if</span> ((nfr = ps_search_forward(ps)) &lt; 0) {</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;            <a class="code" href="pocketsphinx_8h.html#ab9339de730713b68cbd68a7f36dc8730">ps_end_utt</a>(ps);</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;            <span class="keywordflow">return</span> nfr;</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;        }</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;        n_searchfr += nfr;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;    }</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;    <a class="code" href="pocketsphinx_8h.html#ab9339de730713b68cbd68a7f36dc8730">ps_end_utt</a>(ps);</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;    <a class="code" href="acmod_8c.html#a58bd6038bec5d3901ac2057cacdd778a">acmod_set_insenfh</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, NULL);</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;    <span class="keywordflow">return</span> n_searchfr;</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;}</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l01069"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a572ad08651b4caae820d178a12c8f95f"> 1069</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a572ad08651b4caae820d178a12c8f95f">ps_process_raw</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps,</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;               int16 <span class="keyword">const</span> *data,</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;               <span class="keywordtype">size_t</span> n_samples,</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;               <span class="keywordtype">int</span> no_search,</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;               <span class="keywordtype">int</span> full_utt)</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;{</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;    <span class="keywordtype">int</span> n_searchfr = 0;</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;    <span class="keywordflow">if</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#a06adf606c11e6f4b9869742510a5c23b">state</a> == <a class="code" href="acmod_8h.html#a6a74b084234e0e7d5e72161545c5040ba09f7964816ae844c445acd4cf3e33253">ACMOD_IDLE</a>) {</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;        E_ERROR(<span class="stringliteral">&quot;Failed to process data, utterance is not started. Use start_utt to start it\n&quot;</span>);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;        <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;    }</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;    <span class="keywordflow">if</span> (no_search)</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;        <a class="code" href="acmod_8c.html#a1555dac8fa27f644d709c5c89bbfa881">acmod_set_grow</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, TRUE);</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;    <span class="keywordflow">while</span> (n_samples) {</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;        <span class="keywordtype">int</span> nfr;</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;        <span class="comment">/* Process some data into features. */</span></div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;        <span class="keywordflow">if</span> ((nfr = <a class="code" href="acmod_8c.html#a23e63c8833e6128ae248e183d42f9b2b">acmod_process_raw</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, &amp;data,</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;                                     &amp;n_samples, full_utt)) &lt; 0)</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;            <span class="keywordflow">return</span> nfr;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;        <span class="comment">/* Score and search as much data as possible */</span></div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;        <span class="keywordflow">if</span> (no_search)</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;            <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;        <span class="keywordflow">if</span> ((nfr = ps_search_forward(ps)) &lt; 0)</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;            <span class="keywordflow">return</span> nfr;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;        n_searchfr += nfr;</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;    }</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;    <span class="keywordflow">return</span> n_searchfr;</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;}</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;<a class="code" href="pocketsphinx_8h.html#adc0ab735d6460142126bc31a9e9d2ba0">ps_process_cep</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps,</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;               mfcc_t **data,</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;               int32 n_frames,</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;               <span class="keywordtype">int</span> no_search,</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;               <span class="keywordtype">int</span> full_utt)</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;{</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;    <span class="keywordtype">int</span> n_searchfr = 0;</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;    <span class="keywordflow">if</span> (no_search)</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;        <a class="code" href="acmod_8c.html#a1555dac8fa27f644d709c5c89bbfa881">acmod_set_grow</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, TRUE);</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;    <span class="keywordflow">while</span> (n_frames) {</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;        <span class="keywordtype">int</span> nfr;</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;        <span class="comment">/* Process some data into features. */</span></div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;        <span class="keywordflow">if</span> ((nfr = <a class="code" href="acmod_8c.html#a9464f7708a361171469d613d401619fe">acmod_process_cep</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, &amp;data,</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;                                     &amp;n_frames, full_utt)) &lt; 0)</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;            <span class="keywordflow">return</span> nfr;</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;        <span class="comment">/* Score and search as much data as possible */</span></div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;        <span class="keywordflow">if</span> (no_search)</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;            <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160;        <span class="keywordflow">if</span> ((nfr = ps_search_forward(ps)) &lt; 0)</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;            <span class="keywordflow">return</span> nfr;</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;        n_searchfr += nfr;</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;    }</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;    <span class="keywordflow">return</span> n_searchfr;</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;}</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l01136"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#ab9339de730713b68cbd68a7f36dc8730"> 1136</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#ab9339de730713b68cbd68a7f36dc8730">ps_end_utt</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;{</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;    <span class="keywordtype">int</span> rv, i;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;    <span class="keywordflow">if</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#a06adf606c11e6f4b9869742510a5c23b">state</a> == <a class="code" href="acmod_8h.html#a6a74b084234e0e7d5e72161545c5040ba3d936d27ce644db26a862830f3b6d188">ACMOD_ENDED</a> || ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#a06adf606c11e6f4b9869742510a5c23b">state</a> == <a class="code" href="acmod_8h.html#a6a74b084234e0e7d5e72161545c5040ba09f7964816ae844c445acd4cf3e33253">ACMOD_IDLE</a>) {</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;        E_ERROR(<span class="stringliteral">&quot;Utterance is not started\n&quot;</span>);</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;        <span class="keywordflow">return</span> -1;</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;    }</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;    <a class="code" href="acmod_8c.html#a262372bdd6063f61e64b5417a449c1a9">acmod_end_utt</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>);</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;    <span class="comment">/* Search any remaining frames. */</span></div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;    <span class="keywordflow">if</span> ((rv = ps_search_forward(ps)) &lt; 0) {</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;        ptmr_stop(&amp;ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>);</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;        <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;    }</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;    <span class="comment">/* Finish phone loop search. */</span></div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;    <span class="keywordflow">if</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#a0c6d141d7a71a1287be00a1ebcc7643d">phone_loop</a>) {</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;        <span class="keywordflow">if</span> ((rv = ps_search_finish(ps-&gt;<a class="code" href="structps__decoder__s.html#a0c6d141d7a71a1287be00a1ebcc7643d">phone_loop</a>)) &lt; 0) {</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;            ptmr_stop(&amp;ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>);</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;            <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;        }</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;    }</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;    <span class="comment">/* Search any frames remaining in the lookahead window. */</span></div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;    <span class="keywordflow">if</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#aec694af0767ac5e8f1022b6252111885">output_frame</a> &gt;= ps-&gt;<a class="code" href="structps__decoder__s.html#a0f0a6681ffd98af789f6bed556c814e4">pl_window</a>) {</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;        <span class="keywordflow">for</span> (i = ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#aec694af0767ac5e8f1022b6252111885">output_frame</a> - ps-&gt;<a class="code" href="structps__decoder__s.html#a0f0a6681ffd98af789f6bed556c814e4">pl_window</a>;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;             i &lt; ps-&gt;acmod-&gt;output_frame; ++i)</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;            ps_search_step(ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>, i);</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;    }</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;    <span class="comment">/* Finish main search. */</span></div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;    <span class="keywordflow">if</span> ((rv = ps_search_finish(ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>)) &lt; 0) {</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;        ptmr_stop(&amp;ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>);</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;        <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;    }</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;    ptmr_stop(&amp;ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>);</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;    <span class="comment">/* Log a backtrace if requested. */</span></div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;    <span class="keywordflow">if</span> (cmd_ln_boolean_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-backtrace&quot;</span>)) {</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span>* hyp;</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;        <a class="code" href="structps__seg__s.html">ps_seg_t</a> *seg;</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160;        int32 score;</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;        hyp = <a class="code" href="pocketsphinx_8h.html#ada74b12d71e9d4db5d959b94004ff812">ps_get_hyp</a>(ps, &amp;score);</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;        </div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;        <span class="keywordflow">if</span> (hyp != NULL) {</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;            E_INFO(<span class="stringliteral">&quot;%s (%d)\n&quot;</span>, hyp, score);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;            E_INFO_NOFN(<span class="stringliteral">&quot;%-20s %-5s %-5s %-5s %-10s %-10s %-3s\n&quot;</span>,</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;                    <span class="stringliteral">&quot;word&quot;</span>, <span class="stringliteral">&quot;start&quot;</span>, <span class="stringliteral">&quot;end&quot;</span>, <span class="stringliteral">&quot;pprob&quot;</span>, <span class="stringliteral">&quot;ascr&quot;</span>, <span class="stringliteral">&quot;lscr&quot;</span>, <span class="stringliteral">&quot;lback&quot;</span>);</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;            <span class="keywordflow">for</span> (seg = <a class="code" href="pocketsphinx_8h.html#a2216f6ff53f6bc9c78f285ee3fe0d665">ps_seg_iter</a>(ps, &amp;score); seg;</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;                 seg = <a class="code" href="pocketsphinx_8h.html#ae16ba181f654ffc9bfbbe861e9315f12">ps_seg_next</a>(seg)) {</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;                <span class="keywordtype">char</span> <span class="keyword">const</span> *word;</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;                <span class="keywordtype">int</span> sf, ef;</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;                int32 post, lscr, ascr, lback;</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;                word = <a class="code" href="pocketsphinx_8h.html#a8a4fed34b58885627b53e99e90514169">ps_seg_word</a>(seg);</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;                <a class="code" href="pocketsphinx_8h.html#a045a044726b816678965514f2ee7d8c7">ps_seg_frames</a>(seg, &amp;sf, &amp;ef);</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;                post = <a class="code" href="pocketsphinx_8h.html#adfd45d93c3fc9de6b7be89d5417f6abb">ps_seg_prob</a>(seg, &amp;ascr, &amp;lscr, &amp;lback);</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;                E_INFO_NOFN(<span class="stringliteral">&quot;%-20s %-5d %-5d %-1.3f %-10d %-10d %-3d\n&quot;</span>,</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;                            word, sf, ef, logmath_exp(<a class="code" href="pocketsphinx_8h.html#a249cfc383b7d9111a28b550945a606b5">ps_get_logmath</a>(ps), post),</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;                        ascr, lscr, lback);</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;            }</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;        }</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;    }</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;    <span class="keywordflow">return</span> rv;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;}</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;<span class="keywordtype">char</span> <span class="keyword">const</span> *</div><div class="line"><a name="l01202"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#ada74b12d71e9d4db5d959b94004ff812"> 1202</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#ada74b12d71e9d4db5d959b94004ff812">ps_get_hyp</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, int32 *out_best_score)</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;{</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;    <span class="keywordtype">char</span> <span class="keyword">const</span> *hyp;</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;    ptmr_start(&amp;ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>);</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;    hyp = ps_search_hyp(ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>, out_best_score, NULL);</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;    ptmr_stop(&amp;ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>);</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;    <span class="keywordflow">return</span> hyp;</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;}</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;<span class="keywordtype">char</span> <span class="keyword">const</span> *</div><div class="line"><a name="l01213"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#af3431cf96766564d6ab2a3cc8e056860"> 1213</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#af3431cf96766564d6ab2a3cc8e056860">ps_get_hyp_final</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, int32 *out_is_final)</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;{</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;    <span class="keywordtype">char</span> <span class="keyword">const</span> *hyp;</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;    ptmr_start(&amp;ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>);</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;    hyp = ps_search_hyp(ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>, NULL, out_is_final);</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;    ptmr_stop(&amp;ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>);</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;    <span class="keywordflow">return</span> hyp;</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;}</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;int32</div><div class="line"><a name="l01225"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#ac8ac154482457740173caa1c0d699c49"> 1225</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#ac8ac154482457740173caa1c0d699c49">ps_get_prob</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;{</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;    int32 prob;</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;    ptmr_start(&amp;ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>);</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;    prob = ps_search_prob(ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>);</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;    ptmr_stop(&amp;ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>);</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;    <span class="keywordflow">return</span> prob;</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;}</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;<a class="code" href="structps__seg__s.html">ps_seg_t</a> *</div><div class="line"><a name="l01236"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a2216f6ff53f6bc9c78f285ee3fe0d665"> 1236</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a2216f6ff53f6bc9c78f285ee3fe0d665">ps_seg_iter</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, int32 *out_best_score)</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;{</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;    <a class="code" href="structps__seg__s.html">ps_seg_t</a> *itor;</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;    ptmr_start(&amp;ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>);</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;    itor = ps_search_seg_iter(ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>, out_best_score);</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;    ptmr_stop(&amp;ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>);</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;    <span class="keywordflow">return</span> itor;</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;}</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;<a class="code" href="structps__seg__s.html">ps_seg_t</a> *</div><div class="line"><a name="l01247"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#ae16ba181f654ffc9bfbbe861e9315f12"> 1247</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#ae16ba181f654ffc9bfbbe861e9315f12">ps_seg_next</a>(<a class="code" href="structps__seg__s.html">ps_seg_t</a> *seg)</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;{</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;    <span class="keywordflow">return</span> ps_search_seg_next(seg);</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;}</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;<span class="keywordtype">char</span> <span class="keyword">const</span> *</div><div class="line"><a name="l01253"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a8a4fed34b58885627b53e99e90514169"> 1253</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a8a4fed34b58885627b53e99e90514169">ps_seg_word</a>(<a class="code" href="structps__seg__s.html">ps_seg_t</a> *seg)</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;{</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;    <span class="keywordflow">return</span> seg-&gt;<a class="code" href="structps__seg__s.html#a97a0dc7db931c7e3f98d23d21ce27f04">word</a>;</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;}</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l01259"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a045a044726b816678965514f2ee7d8c7"> 1259</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a045a044726b816678965514f2ee7d8c7">ps_seg_frames</a>(<a class="code" href="structps__seg__s.html">ps_seg_t</a> *seg, <span class="keywordtype">int</span> *out_sf, <span class="keywordtype">int</span> *out_ef)</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;{</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;    <span class="keywordtype">int</span> uf;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;    uf = <a class="code" href="acmod_8c.html#a8b52ce1289cc84deda1cf98b4cebbca2">acmod_stream_offset</a>(seg-&gt;<a class="code" href="structps__seg__s.html#a14168ddcb60e094dad36c7c920a79bb3">search</a>-&gt;<a class="code" href="structps__search__s.html#a0fdf6fe8c4d9c28f10c48c09517c6b91">acmod</a>);</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;    <span class="keywordflow">if</span> (out_sf) *out_sf = seg-&gt;<a class="code" href="structps__seg__s.html#a885a599726cd0efba573d106d016e6e2">sf</a> + uf;</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;    <span class="keywordflow">if</span> (out_ef) *out_ef = seg-&gt;<a class="code" href="structps__seg__s.html#ab25ecc6af8d2695c6097cf7e934eadd4">ef</a> + uf;</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;}</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;int32</div><div class="line"><a name="l01268"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#adfd45d93c3fc9de6b7be89d5417f6abb"> 1268</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#adfd45d93c3fc9de6b7be89d5417f6abb">ps_seg_prob</a>(<a class="code" href="structps__seg__s.html">ps_seg_t</a> *seg, int32 *out_ascr, int32 *out_lscr, int32 *out_lback)</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;{</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;    <span class="keywordflow">if</span> (out_ascr) *out_ascr = seg-&gt;<a class="code" href="structps__seg__s.html#a6f7706ec4c0d0ec8ecafaf0f29f41f4b">ascr</a>;</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;    <span class="keywordflow">if</span> (out_lscr) *out_lscr = seg-&gt;<a class="code" href="structps__seg__s.html#a69e605f422eeed1a9c67437e8ddd8b08">lscr</a>;</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;    <span class="keywordflow">if</span> (out_lback) *out_lback = seg-&gt;<a class="code" href="structps__seg__s.html#a4d86c21f1ed2dc3eb3b1b1b37ce9bb48">lback</a>;</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;    <span class="keywordflow">return</span> seg-&gt;<a class="code" href="structps__seg__s.html#ae683244d90d0a5339930b47757778432">prob</a>;</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;}</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l01277"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#ac02cea69794b0fbd17e6a4c5265b2255"> 1277</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#ac02cea69794b0fbd17e6a4c5265b2255">ps_seg_free</a>(<a class="code" href="structps__seg__s.html">ps_seg_t</a> *seg)</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;{</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;    ps_search_seg_free(seg);</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;}</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;<a class="code" href="structps__lattice__s.html">ps_lattice_t</a> *</div><div class="line"><a name="l01283"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#ac7e8897e5eed452f284bef3ee53d2429"> 1283</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#ac7e8897e5eed452f284bef3ee53d2429">ps_get_lattice</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;{</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;    <span class="keywordflow">return</span> ps_search_lattice(ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>);</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;}</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;<a class="code" href="structps__astar__s.html">ps_nbest_t</a> *</div><div class="line"><a name="l01289"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#af4bb6ba47844a135745db428919d9810"> 1289</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#af4bb6ba47844a135745db428919d9810">ps_nbest</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keywordtype">int</span> sf, <span class="keywordtype">int</span> ef,</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;         <span class="keywordtype">char</span> <span class="keyword">const</span> *ctx1, <span class="keywordtype">char</span> <span class="keyword">const</span> *ctx2)</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;{</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;    <a class="code" href="structps__lattice__s.html">ps_lattice_t</a> *dag;</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;    ngram_model_t *lmset;</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;    <a class="code" href="structps__astar__s.html">ps_astar_t</a> *nbest;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;    float32 lwf;</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;    int32 w1, w2;</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;    <span class="keywordflow">if</span> (ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a> == NULL)</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;    <span class="keywordflow">if</span> ((dag = <a class="code" href="pocketsphinx_8h.html#ac7e8897e5eed452f284bef3ee53d2429">ps_get_lattice</a>(ps)) == NULL)</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;    <span class="comment">/* FIXME: This is all quite specific to N-Gram search.  Either we</span></div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;<span class="comment">     * should make N-best a method for each search module or it needs</span></div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;<span class="comment">     * to be abstracted to work for N-Gram and FSG. */</span></div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;    <span class="keywordflow">if</span> (0 != strcmp(ps_search_type(ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>), PS_SEARCH_TYPE_NGRAM)) {</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;        lmset = NULL;</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;        lwf = 1.0f;</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;    } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;        lmset = ((<a class="code" href="structngram__search__s.html">ngram_search_t</a> *)ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>)-&gt;lmset;</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;        lwf = ((<a class="code" href="structngram__search__s.html">ngram_search_t</a> *)ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>)-&gt;bestpath_fwdtree_lw_ratio;</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;    }</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;    w1 = ctx1 ? <a class="code" href="dict_8h.html#ad3729eb1a02a9a321e17933f7e90c80e">dict_wordid</a>(ps_search_dict(ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>), ctx1) : -1;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;    w2 = ctx2 ? <a class="code" href="dict_8h.html#ad3729eb1a02a9a321e17933f7e90c80e">dict_wordid</a>(ps_search_dict(ps-&gt;<a class="code" href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">search</a>), ctx2) : -1;</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;    nbest = <a class="code" href="ps__lattice_8c.html#aaf9aedd3cd8bd1d45053e10828215a25">ps_astar_start</a>(dag, lmset, lwf, sf, ef, w1, w2);</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;    <span class="keywordflow">return</span> (<a class="code" href="structps__astar__s.html">ps_nbest_t</a> *)nbest;</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;}</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l01322"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a83379b2da95eebdf5070d29196a9b067"> 1322</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a83379b2da95eebdf5070d29196a9b067">ps_nbest_free</a>(<a class="code" href="structps__astar__s.html">ps_nbest_t</a> *nbest)</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;{</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;    <a class="code" href="ps__lattice_8c.html#abfb03e9e0fcbe3def45120f5ba43be14">ps_astar_finish</a>(nbest);</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;}</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;<a class="code" href="structps__astar__s.html">ps_nbest_t</a> *</div><div class="line"><a name="l01328"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a0942b8c0570009319a5be20ef1b52821"> 1328</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a0942b8c0570009319a5be20ef1b52821">ps_nbest_next</a>(<a class="code" href="structps__astar__s.html">ps_nbest_t</a> *nbest)</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;{</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;    <a class="code" href="structps__latpath__s.html">ps_latpath_t</a> *next;</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;    next = <a class="code" href="ps__lattice_8c.html#a6bea95f8fb827af790bbe6ce1920908c">ps_astar_next</a>(nbest);</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;    <span class="keywordflow">if</span> (next == NULL) {</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;        <a class="code" href="pocketsphinx_8h.html#a83379b2da95eebdf5070d29196a9b067">ps_nbest_free</a>(nbest);</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;    }</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;    <span class="keywordflow">return</span> nbest;</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;}</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;<span class="keywordtype">char</span> <span class="keyword">const</span> *</div><div class="line"><a name="l01341"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a250c5f72d3addd0d0254f3ceeaa17ace"> 1341</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a250c5f72d3addd0d0254f3ceeaa17ace">ps_nbest_hyp</a>(<a class="code" href="structps__astar__s.html">ps_nbest_t</a> *nbest, int32 *out_score)</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;{</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;    assert(nbest != NULL);</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;    <span class="keywordflow">if</span> (nbest-&gt;top == NULL)</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;    <span class="keywordflow">if</span> (out_score) *out_score = nbest-&gt;top-&gt;<a class="code" href="structps__latpath__s.html#a9249fb528f754db992df1d494a69b580">score</a>;</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="ps__lattice_8c.html#ac7372b5c5ec111f6814ce1ba495593e4">ps_astar_hyp</a>(nbest, nbest-&gt;top);</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;}</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;<a class="code" href="structps__seg__s.html">ps_seg_t</a> *</div><div class="line"><a name="l01352"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a1d2b6fd873d8213bd53a915ff2758785"> 1352</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a1d2b6fd873d8213bd53a915ff2758785">ps_nbest_seg</a>(<a class="code" href="structps__astar__s.html">ps_nbest_t</a> *nbest, int32 *out_score)</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;{</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;    <span class="keywordflow">if</span> (nbest-&gt;top == NULL)</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;        <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;    <span class="keywordflow">if</span> (out_score) *out_score = nbest-&gt;top-&gt;<a class="code" href="structps__latpath__s.html#a9249fb528f754db992df1d494a69b580">score</a>;</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;    <span class="keywordflow">return</span> <a class="code" href="ps__lattice_8c.html#ac8e3dff7276c03c93377d0cb79fbdbd7">ps_astar_seg_iter</a>(nbest, nbest-&gt;top, 1.0);</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;}</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;<span class="keywordtype">int</span></div><div class="line"><a name="l01361"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#abb3527e41c2f4cd64dccbdbd5f812d1d"> 1361</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#abb3527e41c2f4cd64dccbdbd5f812d1d">ps_get_n_frames</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;{</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160;    <span class="keywordflow">return</span> ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#aec694af0767ac5e8f1022b6252111885">output_frame</a> + 1;</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;}</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l01367"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#aac7070c934a2d03d0d5b34e19614360f"> 1367</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#aac7070c934a2d03d0d5b34e19614360f">ps_get_utt_time</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keywordtype">double</span> *out_nspeech,</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;                <span class="keywordtype">double</span> *out_ncpu, <span class="keywordtype">double</span> *out_nwall)</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;{</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;    int32 frate;</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;    frate = cmd_ln_int32_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-frate&quot;</span>);</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;    *out_nspeech = (double)ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#aec694af0767ac5e8f1022b6252111885">output_frame</a> / frate;</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;    *out_ncpu = ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>.t_cpu;</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;    *out_nwall = ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>.t_elapsed;</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;}</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l01379"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a61fb92154c5c731cf4a24e0976263da0"> 1379</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a61fb92154c5c731cf4a24e0976263da0">ps_get_all_time</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, <span class="keywordtype">double</span> *out_nspeech,</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;                <span class="keywordtype">double</span> *out_ncpu, <span class="keywordtype">double</span> *out_nwall)</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;{</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;    int32 frate;</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;    frate = cmd_ln_int32_r(ps-&gt;<a class="code" href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">config</a>, <span class="stringliteral">&quot;-frate&quot;</span>);</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160;    *out_nspeech = (double)ps-&gt;<a class="code" href="structps__decoder__s.html#a2886b321c576c7def449ebb2f37899fd">n_frame</a> / frate;</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;    *out_ncpu = ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>.t_tot_cpu;</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160;    *out_nwall = ps-&gt;<a class="code" href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">perf</a>.t_tot_elapsed;</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160;}</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;uint8 </div><div class="line"><a name="l01391"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a25a1d0e35f0c1ca8b018e1a27c0c1966"> 1391</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a25a1d0e35f0c1ca8b018e1a27c0c1966">ps_get_in_speech</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps)</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;{</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;    <span class="keywordflow">return</span> fe_get_vad_state(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>-&gt;<a class="code" href="structacmod__s.html#a56eaceb9b6a1cbcccd09cf42cfa87231">fe</a>);</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;}</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l01397"></a><span class="lineno"><a class="line" href="pocketsphinx__internal_8h.html#a9e0d66662ea7c64f8bddbbfe57496896"> 1397</a></span>&#160;<a class="code" href="pocketsphinx__internal_8h.html#a9e0d66662ea7c64f8bddbbfe57496896">ps_search_init</a>(<a class="code" href="structps__search__s.html">ps_search_t</a> *search, <a class="code" href="structps__searchfuncs__s.html">ps_searchfuncs_t</a> *vt,</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;               <span class="keyword">const</span> <span class="keywordtype">char</span> *type,</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;               <span class="keyword">const</span> <span class="keywordtype">char</span> *name,</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160;               cmd_ln_t *config, <a class="code" href="structacmod__s.html">acmod_t</a> *acmod, <a class="code" href="structdict__t.html">dict_t</a> *dict,</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;               <a class="code" href="structdict2pid__t.html">dict2pid_t</a> *d2p)</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;{</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;    search-&gt;<a class="code" href="structps__search__s.html#aa51e88956bbe9c05359d32526180809b">vt</a> = vt;</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;    search-&gt;name = ckd_salloc(name);</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;    search-&gt;type = ckd_salloc(type);</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;    search-&gt;<a class="code" href="structps__search__s.html#aa6e3e18165bbc70084a06575d5703042">config</a> = config;</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;    search-&gt;<a class="code" href="structps__search__s.html#a0fdf6fe8c4d9c28f10c48c09517c6b91">acmod</a> = acmod;</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;    <span class="keywordflow">if</span> (d2p)</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#a81b461e7ef3a080d046039e186134a15">d2p</a> = <a class="code" href="dict2pid_8c.html#a85a8de8009445e1129766186ddaa949a">dict2pid_retain</a>(d2p);</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;    <span class="keywordflow">else</span></div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#a81b461e7ef3a080d046039e186134a15">d2p</a> = NULL;</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160;    <span class="keywordflow">if</span> (dict) {</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#a918f243fa966e72c47f697fb9e60089d">dict</a> = <a class="code" href="dict_8h.html#a0edf70be186e8940af9d21243083cb8b">dict_retain</a>(dict);</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#ae1a9fa33bfc851ec91ce96870714b3cc">start_wid</a> = dict_startwid(dict);</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#a0fb4d79f1084bdbbc0a808513f7c1ca7">finish_wid</a> = dict_finishwid(dict);</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#ab6851b4675f38ab6b3683d75521f000b">silence_wid</a> = dict_silwid(dict);</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#ad4d98deb905bd664ec44313ea0065b1a">n_words</a> = <a class="code" href="dict_8h.html#a361b948b42f9cfdf5c7fa9dfc8a71a94">dict_size</a>(dict);</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;    }</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;    <span class="keywordflow">else</span> {</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#a918f243fa966e72c47f697fb9e60089d">dict</a> = NULL;</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#ae1a9fa33bfc851ec91ce96870714b3cc">start_wid</a> = search-&gt;<a class="code" href="structps__search__s.html#a0fb4d79f1084bdbbc0a808513f7c1ca7">finish_wid</a> = search-&gt;<a class="code" href="structps__search__s.html#ab6851b4675f38ab6b3683d75521f000b">silence_wid</a> = -1;</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#ad4d98deb905bd664ec44313ea0065b1a">n_words</a> = 0;</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;    }</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160;}</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160;</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l01428"></a><span class="lineno"><a class="line" href="pocketsphinx__internal_8h.html#a39db3228c813a2943d47ff3f13e6ef08"> 1428</a></span>&#160;<a class="code" href="pocketsphinx__internal_8h.html#a39db3228c813a2943d47ff3f13e6ef08">ps_search_base_free</a>(<a class="code" href="structps__search__s.html">ps_search_t</a> *search)</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;{</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;    <span class="comment">/* FIXME: We will have refcounting on acmod, config, etc, at which</span></div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;<span class="comment">     * point we will free them here too. */</span></div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;    ckd_free(search-&gt;name);</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;    ckd_free(search-&gt;type);</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;    <a class="code" href="dict_8h.html#a51ee6c067decce8dbc182f95f7b33e91">dict_free</a>(search-&gt;<a class="code" href="structps__search__s.html#a918f243fa966e72c47f697fb9e60089d">dict</a>);</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;    <a class="code" href="dict2pid_8c.html#a293253226550e812c448ae096b364d0d">dict2pid_free</a>(search-&gt;<a class="code" href="structps__search__s.html#a81b461e7ef3a080d046039e186134a15">d2p</a>);</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;    ckd_free(search-&gt;<a class="code" href="structps__search__s.html#aa398c736a887af97e42b2a562359adc3">hyp_str</a>);</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;    <a class="code" href="ps__lattice_8h.html#a3f90e846bde47cd1acdff165b92f5c22">ps_lattice_free</a>(search-&gt;<a class="code" href="structps__search__s.html#a897f46c55d17e817ff1364f555b31463">dag</a>);</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;}</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160;</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l01441"></a><span class="lineno"><a class="line" href="pocketsphinx__internal_8h.html#a307801961f27bd5f4b82a3e6b83e0ca1"> 1441</a></span>&#160;<a class="code" href="pocketsphinx__internal_8h.html#a307801961f27bd5f4b82a3e6b83e0ca1">ps_search_base_reinit</a>(<a class="code" href="structps__search__s.html">ps_search_t</a> *search, <a class="code" href="structdict__t.html">dict_t</a> *dict,</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160;                      <a class="code" href="structdict2pid__t.html">dict2pid_t</a> *d2p)</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;{</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;    <a class="code" href="dict_8h.html#a51ee6c067decce8dbc182f95f7b33e91">dict_free</a>(search-&gt;<a class="code" href="structps__search__s.html#a918f243fa966e72c47f697fb9e60089d">dict</a>);</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;    <a class="code" href="dict2pid_8c.html#a293253226550e812c448ae096b364d0d">dict2pid_free</a>(search-&gt;<a class="code" href="structps__search__s.html#a81b461e7ef3a080d046039e186134a15">d2p</a>);</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160;    <span class="comment">/* FIXME: _retain() should just return NULL if passed NULL. */</span></div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160;    <span class="keywordflow">if</span> (dict) {</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#a918f243fa966e72c47f697fb9e60089d">dict</a> = <a class="code" href="dict_8h.html#a0edf70be186e8940af9d21243083cb8b">dict_retain</a>(dict);</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#ae1a9fa33bfc851ec91ce96870714b3cc">start_wid</a> = dict_startwid(dict);</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#a0fb4d79f1084bdbbc0a808513f7c1ca7">finish_wid</a> = dict_finishwid(dict);</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#ab6851b4675f38ab6b3683d75521f000b">silence_wid</a> = dict_silwid(dict);</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#ad4d98deb905bd664ec44313ea0065b1a">n_words</a> = <a class="code" href="dict_8h.html#a361b948b42f9cfdf5c7fa9dfc8a71a94">dict_size</a>(dict);</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;    }</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;    <span class="keywordflow">else</span> {</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#a918f243fa966e72c47f697fb9e60089d">dict</a> = NULL;</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#ae1a9fa33bfc851ec91ce96870714b3cc">start_wid</a> = search-&gt;<a class="code" href="structps__search__s.html#a0fb4d79f1084bdbbc0a808513f7c1ca7">finish_wid</a> = search-&gt;<a class="code" href="structps__search__s.html#ab6851b4675f38ab6b3683d75521f000b">silence_wid</a> = -1;</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#ad4d98deb905bd664ec44313ea0065b1a">n_words</a> = 0;</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;    }</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;    <span class="keywordflow">if</span> (d2p)</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#a81b461e7ef3a080d046039e186134a15">d2p</a> = <a class="code" href="dict2pid_8c.html#a85a8de8009445e1129766186ddaa949a">dict2pid_retain</a>(d2p);</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;    <span class="keywordflow">else</span></div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;        search-&gt;<a class="code" href="structps__search__s.html#a81b461e7ef3a080d046039e186134a15">d2p</a> = NULL;</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;}</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l01466"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a4aef468e7959d9a7605f344d6759721c"> 1466</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a4aef468e7959d9a7605f344d6759721c">ps_set_rawdata_size</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, int32 size) </div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;{</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;    <a class="code" href="acmod_8c.html#a8c8dce7790c4486d1ee1b20d810805bf">acmod_set_rawdata_size</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, size);</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;}</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;<span class="keywordtype">void</span></div><div class="line"><a name="l01472"></a><span class="lineno"><a class="line" href="pocketsphinx_8h.html#a0ea0a24f578b1eeff2fccdb0b61e5527"> 1472</a></span>&#160;<a class="code" href="pocketsphinx_8h.html#a0ea0a24f578b1eeff2fccdb0b61e5527">ps_get_rawdata</a>(<a class="code" href="structps__decoder__s.html">ps_decoder_t</a> *ps, int16 **buffer, int32 *size)</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;{</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;    <a class="code" href="acmod_8c.html#a0804fc79c26de167a95ece1189effbec">acmod_get_rawdata</a>(ps-&gt;<a class="code" href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">acmod</a>, buffer, size);</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;}</div><div class="ttc" id="acmod_8c_html_a0804fc79c26de167a95ece1189effbec"><div class="ttname"><a href="acmod_8c.html#a0804fc79c26de167a95ece1189effbec">acmod_get_rawdata</a></div><div class="ttdeci">void acmod_get_rawdata(acmod_t *acmod, int16 **buffer, int32 *size)</div><div class="ttdoc">Retrieves the raw data collected during utterance decoding. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l01352">acmod.c:1352</a></div></div>
<div class="ttc" id="structfsg__search__s_html"><div class="ttname"><a href="structfsg__search__s.html">fsg_search_s</a></div><div class="ttdoc">Implementation of FSG search (and &quot;FSG set&quot;) structure. </div><div class="ttdef"><b>Definition:</b> <a href="fsg__search__internal_8h_source.html#l00068">fsg_search_internal.h:68</a></div></div>
<div class="ttc" id="structps__decoder__s_html_ab42d1d1e300d2a6df5dd3cd796a27d43"><div class="ttname"><a href="structps__decoder__s.html#ab42d1d1e300d2a6df5dd3cd796a27d43">ps_decoder_s::perf</a></div><div class="ttdeci">ptmr_t perf</div><div class="ttdoc">Performance counter for all of decoding. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00222">pocketsphinx_internal.h:222</a></div></div>
<div class="ttc" id="dict_8h_html_a05d8dac3e5fe5399ccb8bf7776e203e2"><div class="ttname"><a href="dict_8h.html#a05d8dac3e5fe5399ccb8bf7776e203e2">dict_init</a></div><div class="ttdeci">dict_t * dict_init(cmd_ln_t *config, bin_mdef_t *mdef)</div><div class="ttdoc">Initialize a new dictionary. </div><div class="ttdef"><b>Definition:</b> <a href="dict_8c_source.html#l00252">dict.c:252</a></div></div>
<div class="ttc" id="pocketsphinx__internal_8h_html"><div class="ttname"><a href="pocketsphinx__internal_8h.html">pocketsphinx_internal.h</a></div><div class="ttdoc">Internal implementation of PocketSphinx decoder. </div></div>
<div class="ttc" id="pocketsphinx_8h_html_aac7070c934a2d03d0d5b34e19614360f"><div class="ttname"><a href="pocketsphinx_8h.html#aac7070c934a2d03d0d5b34e19614360f">ps_get_utt_time</a></div><div class="ttdeci">POCKETSPHINX_EXPORT void ps_get_utt_time(ps_decoder_t *ps, double *out_nspeech, double *out_ncpu, double *out_nwall)</div><div class="ttdoc">Get performance information for the current utterance. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01367">pocketsphinx.c:1367</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a0d74d90f0db0782386487cc061a09218"><div class="ttname"><a href="pocketsphinx_8h.html#a0d74d90f0db0782386487cc061a09218">ps_get_feat</a></div><div class="ttdeci">POCKETSPHINX_EXPORT feat_t * ps_get_feat(ps_decoder_t *ps)</div><div class="ttdoc">Get the dynamic feature computation object for this decoder. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00471">pocketsphinx.c:471</a></div></div>
<div class="ttc" id="acmod_8c_html_a5c193164be78ad42944b7fb1be6299a2"><div class="ttname"><a href="acmod_8c.html#a5c193164be78ad42944b7fb1be6299a2">acmod_read_scores</a></div><div class="ttdeci">int acmod_read_scores(acmod_t *acmod)</div><div class="ttdoc">Read one frame of scores from senone score dump file. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l01032">acmod.c:1032</a></div></div>
<div class="ttc" id="acmod_8h_html_a6a74b084234e0e7d5e72161545c5040ba09f7964816ae844c445acd4cf3e33253"><div class="ttname"><a href="acmod_8h.html#a6a74b084234e0e7d5e72161545c5040ba09f7964816ae844c445acd4cf3e33253">ACMOD_IDLE</a></div><div class="ttdoc">Not in an utterance. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8h_source.html#l00068">acmod.h:68</a></div></div>
<div class="ttc" id="ps__lattice_8c_html_abfb03e9e0fcbe3def45120f5ba43be14"><div class="ttname"><a href="ps__lattice_8c.html#abfb03e9e0fcbe3def45120f5ba43be14">ps_astar_finish</a></div><div class="ttdeci">void ps_astar_finish(ps_astar_t *nbest)</div><div class="ttdoc">Finish N-best search, releasing resources associated with it. </div><div class="ttdef"><b>Definition:</b> <a href="ps__lattice_8c_source.html#l01925">ps_lattice.c:1925</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a4aef468e7959d9a7605f344d6759721c"><div class="ttname"><a href="pocketsphinx_8h.html#a4aef468e7959d9a7605f344d6759721c">ps_set_rawdata_size</a></div><div class="ttdeci">POCKETSPHINX_EXPORT void ps_set_rawdata_size(ps_decoder_t *ps, int32 size)</div><div class="ttdoc">Sets the limit of the raw audio data to store in decoder to retrieve it later on ps_get_rawdata. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01466">pocketsphinx.c:1466</a></div></div>
<div class="ttc" id="ps__search_8h_html_af55ad6ec21a7e67845f3c74149a34b1a"><div class="ttname"><a href="ps__search_8h.html#af55ad6ec21a7e67845f3c74149a34b1a">ps_get_lm</a></div><div class="ttdeci">POCKETSPHINX_EXPORT ngram_model_t * ps_get_lm(ps_decoder_t *ps, const char *name)</div><div class="ttdoc">Get the language model set object for this decoder. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00552">pocketsphinx.c:552</a></div></div>
<div class="ttc" id="ps__lattice_8c_html_a6bea95f8fb827af790bbe6ce1920908c"><div class="ttname"><a href="ps__lattice_8c.html#a6bea95f8fb827af790bbe6ce1920908c">ps_astar_next</a></div><div class="ttdeci">ps_latpath_t * ps_astar_next(ps_astar_t *nbest)</div><div class="ttdoc">Find next best hypothesis of A* on a word graph. </div><div class="ttdef"><b>Definition:</b> <a href="ps__lattice_8c_source.html#l01771">ps_lattice.c:1771</a></div></div>
<div class="ttc" id="ps__lattice_8c_html_ac7372b5c5ec111f6814ce1ba495593e4"><div class="ttname"><a href="ps__lattice_8c.html#ac7372b5c5ec111f6814ce1ba495593e4">ps_astar_hyp</a></div><div class="ttdeci">char const * ps_astar_hyp(ps_astar_t *nbest, ps_latpath_t *path)</div><div class="ttdoc">Get hypothesis string from A* search. </div><div class="ttdef"><b>Definition:</b> <a href="ps__lattice_8c_source.html#l01804">ps_lattice.c:1804</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a2216f6ff53f6bc9c78f285ee3fe0d665"><div class="ttname"><a href="pocketsphinx_8h.html#a2216f6ff53f6bc9c78f285ee3fe0d665">ps_seg_iter</a></div><div class="ttdeci">POCKETSPHINX_EXPORT ps_seg_t * ps_seg_iter(ps_decoder_t *ps, int32 *out_best_score)</div><div class="ttdoc">Get an iterator over the word segmentation for the best hypothesis. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01236">pocketsphinx.c:1236</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_adc0ab735d6460142126bc31a9e9d2ba0"><div class="ttname"><a href="pocketsphinx_8h.html#adc0ab735d6460142126bc31a9e9d2ba0">ps_process_cep</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_process_cep(ps_decoder_t *ps, mfcc_t **data, int n_frames, int no_search, int full_utt)</div><div class="ttdoc">Decode acoustic feature data. </div></div>
<div class="ttc" id="structps__search__s_html"><div class="ttname"><a href="structps__search__s.html">ps_search_s</a></div><div class="ttdoc">Base structure for search module. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00098">pocketsphinx_internal.h:98</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_ad873ea6e20f91a3284963d5c34331c58"><div class="ttname"><a href="pocketsphinx_8h.html#ad873ea6e20f91a3284963d5c34331c58">ps_args</a></div><div class="ttdeci">POCKETSPHINX_EXPORT arg_t const * ps_args(void)</div><div class="ttdoc">Returns the argument definitions used in ps_init(). </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00423">pocketsphinx.c:423</a></div></div>
<div class="ttc" id="acmod_8h_html_a6a74b084234e0e7d5e72161545c5040ba71f39dbe81403dbb045f4312d1bbaae3"><div class="ttname"><a href="acmod_8h.html#a6a74b084234e0e7d5e72161545c5040ba71f39dbe81403dbb045f4312d1bbaae3">ACMOD_STARTED</a></div><div class="ttdoc">Utterance started, no data yet. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8h_source.html#l00069">acmod.h:69</a></div></div>
<div class="ttc" id="structps__decoder__s_html_aef6228c17907cc1d0cef835b238b5d91"><div class="ttname"><a href="structps__decoder__s.html#aef6228c17907cc1d0cef835b238b5d91">ps_decoder_s::dict</a></div><div class="ttdeci">dict_t * dict</div><div class="ttdoc">Pronunciation dictionary. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00208">pocketsphinx_internal.h:208</a></div></div>
<div class="ttc" id="acmod_8c_html_a58bd6038bec5d3901ac2057cacdd778a"><div class="ttname"><a href="acmod_8c.html#a58bd6038bec5d3901ac2057cacdd778a">acmod_set_insenfh</a></div><div class="ttdeci">int acmod_set_insenfh(acmod_t *acmod, FILE *senfh)</div><div class="ttdoc">Set up a senone score dump file for input. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l00884">acmod.c:884</a></div></div>
<div class="ttc" id="ps__search_8h_html_a8e2e66391b7c1e6cd1aac24d635ed3ea"><div class="ttname"><a href="ps__search_8h.html#a8e2e66391b7c1e6cd1aac24d635ed3ea">ps_get_kws</a></div><div class="ttdeci">POCKETSPHINX_EXPORT const char * ps_get_kws(ps_decoder_t *ps, const char *name)</div><div class="ttdoc">Get the current Key phrase to spot. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00570">pocketsphinx.c:570</a></div></div>
<div class="ttc" id="acmod_8c_html_a8b52ce1289cc84deda1cf98b4cebbca2"><div class="ttname"><a href="acmod_8c.html#a8b52ce1289cc84deda1cf98b4cebbca2">acmod_stream_offset</a></div><div class="ttdeci">int32 acmod_stream_offset(acmod_t *acmod)</div><div class="ttdoc">Get the offset of the utterance start of the current stream, helpful for stream-wide timing...</div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l01328">acmod.c:1328</a></div></div>
<div class="ttc" id="ps__search_8h_html_afde3539cbbf8c67cb98a02ca779055af"><div class="ttname"><a href="ps__search_8h.html#afde3539cbbf8c67cb98a02ca779055af">ps_set_fsg</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_set_fsg(ps_decoder_t *ps, const char *name, fsg_model_t *fsg)</div><div class="ttdoc">Adds new search based on finite state grammar. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00657">pocketsphinx.c:657</a></div></div>
<div class="ttc" id="dict_8h_html_ad3729eb1a02a9a321e17933f7e90c80e"><div class="ttname"><a href="dict_8h.html#ad3729eb1a02a9a321e17933f7e90c80e">dict_wordid</a></div><div class="ttdeci">POCKETSPHINX_EXPORT s3wid_t dict_wordid(dict_t *d, const char *word)</div><div class="ttdoc">Return word id for given word string if present. </div><div class="ttdef"><b>Definition:</b> <a href="dict_8c_source.html#l00399">dict.c:399</a></div></div>
<div class="ttc" id="acmod_8c_html_a4205b92d38db562577eafc3c432593ab"><div class="ttname"><a href="acmod_8c.html#a4205b92d38db562577eafc3c432593ab">acmod_update_mllr</a></div><div class="ttdeci">ps_mllr_t * acmod_update_mllr(acmod_t *acmod, ps_mllr_t *mllr)</div><div class="ttdoc">Adapt acoustic model using a linear transform. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l00341">acmod.c:341</a></div></div>
<div class="ttc" id="acmod_8c_html_a9464f7708a361171469d613d401619fe"><div class="ttname"><a href="acmod_8c.html#a9464f7708a361171469d613d401619fe">acmod_process_cep</a></div><div class="ttdeci">int acmod_process_cep(acmod_t *acmod, mfcc_t ***inout_cep, int *inout_n_frames, int full_utt)</div><div class="ttdoc">Feed acoustic feature data into the acoustic model for scoring. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l00719">acmod.c:719</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a824f46e51681d931b7e2706a86c3d86f"><div class="ttname"><a href="pocketsphinx_8h.html#a824f46e51681d931b7e2706a86c3d86f">ps_load_dict</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_load_dict(ps_decoder_t *ps, char const *dictfile, char const *fdictfile, char const *format)</div><div class="ttdoc">Reload the pronunciation dictionary from a file. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00741">pocketsphinx.c:741</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a83379b2da95eebdf5070d29196a9b067"><div class="ttname"><a href="pocketsphinx_8h.html#a83379b2da95eebdf5070d29196a9b067">ps_nbest_free</a></div><div class="ttdeci">POCKETSPHINX_EXPORT void ps_nbest_free(ps_nbest_t *nbest)</div><div class="ttdoc">Finish N-best search early, releasing resources. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01322">pocketsphinx.c:1322</a></div></div>
<div class="ttc" id="structps__search__s_html_ab6851b4675f38ab6b3683d75521f000b"><div class="ttname"><a href="structps__search__s.html#ab6851b4675f38ab6b3683d75521f000b">ps_search_s::silence_wid</a></div><div class="ttdeci">int32 silence_wid</div><div class="ttdoc">Silence word ID. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00118">pocketsphinx_internal.h:118</a></div></div>
<div class="ttc" id="acmod_8h_html_a6a74b084234e0e7d5e72161545c5040ba1ed8df720ee7006ebaada8c75371d94c"><div class="ttname"><a href="acmod_8h.html#a6a74b084234e0e7d5e72161545c5040ba1ed8df720ee7006ebaada8c75371d94c">ACMOD_PROCESSING</a></div><div class="ttdoc">Utterance in progress. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8h_source.html#l00070">acmod.h:70</a></div></div>
<div class="ttc" id="pocketsphinx__internal_8h_html_a307801961f27bd5f4b82a3e6b83e0ca1"><div class="ttname"><a href="pocketsphinx__internal_8h.html#a307801961f27bd5f4b82a3e6b83e0ca1">ps_search_base_reinit</a></div><div class="ttdeci">void ps_search_base_reinit(ps_search_t *search, dict_t *dict, dict2pid_t *d2p)</div><div class="ttdoc">Re-initialize base structure with new dictionary. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01441">pocketsphinx.c:1441</a></div></div>
<div class="ttc" id="structps__search__s_html_a0fdf6fe8c4d9c28f10c48c09517c6b91"><div class="ttname"><a href="structps__search__s.html#a0fdf6fe8c4d9c28f10c48c09517c6b91">ps_search_s::acmod</a></div><div class="ttdeci">acmod_t * acmod</div><div class="ttdoc">Acoustic model. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00106">pocketsphinx_internal.h:106</a></div></div>
<div class="ttc" id="dict_8h_html_a51ee6c067decce8dbc182f95f7b33e91"><div class="ttname"><a href="dict_8h.html#a51ee6c067decce8dbc182f95f7b33e91">dict_free</a></div><div class="ttdeci">int dict_free(dict_t *d)</div><div class="ttdoc">Release a pointer to a dictionary. </div><div class="ttdef"><b>Definition:</b> <a href="dict_8c_source.html#l00468">dict.c:468</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_af4bb6ba47844a135745db428919d9810"><div class="ttname"><a href="pocketsphinx_8h.html#af4bb6ba47844a135745db428919d9810">ps_nbest</a></div><div class="ttdeci">POCKETSPHINX_EXPORT ps_nbest_t * ps_nbest(ps_decoder_t *ps, int sf, int ef, char const *ctx1, char const *ctx2)</div><div class="ttdoc">Get an iterator over the best hypotheses, optionally within a selected region of the utterance...</div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01289">pocketsphinx.c:1289</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html"><div class="ttname"><a href="pocketsphinx_8h.html">pocketsphinx.h</a></div><div class="ttdoc">Main header file for the PocketSphinx decoder. </div></div>
<div class="ttc" id="pocketsphinx_8h_html_a1d2b6fd873d8213bd53a915ff2758785"><div class="ttname"><a href="pocketsphinx_8h.html#a1d2b6fd873d8213bd53a915ff2758785">ps_nbest_seg</a></div><div class="ttdeci">POCKETSPHINX_EXPORT ps_seg_t * ps_nbest_seg(ps_nbest_t *nbest, int32 *out_score)</div><div class="ttdoc">Get the word segmentation from an N-best list iterator. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01352">pocketsphinx.c:1352</a></div></div>
<div class="ttc" id="acmod_8c_html_a8c8dce7790c4486d1ee1b20d810805bf"><div class="ttname"><a href="acmod_8c.html#a8c8dce7790c4486d1ee1b20d810805bf">acmod_set_rawdata_size</a></div><div class="ttdeci">void acmod_set_rawdata_size(acmod_t *acmod, int32 size)</div><div class="ttdoc">Sets the limit of the raw audio data to store. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l01341">acmod.c:1341</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a045a044726b816678965514f2ee7d8c7"><div class="ttname"><a href="pocketsphinx_8h.html#a045a044726b816678965514f2ee7d8c7">ps_seg_frames</a></div><div class="ttdeci">POCKETSPHINX_EXPORT void ps_seg_frames(ps_seg_t *seg, int *out_sf, int *out_ef)</div><div class="ttdoc">Get inclusive start and end frames from a segmentation iterator. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01259">pocketsphinx.c:1259</a></div></div>
<div class="ttc" id="acmod_8c_html_ae065d2fafc704177e7537988c9d3b5c1"><div class="ttname"><a href="acmod_8c.html#ae065d2fafc704177e7537988c9d3b5c1">acmod_start_stream</a></div><div class="ttdeci">void acmod_start_stream(acmod_t *acmod)</div><div class="ttdoc">Reset the current stream. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l01334">acmod.c:1334</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a85e04bcbf5366f1bdad555dbb4d73d5d"><div class="ttname"><a href="pocketsphinx_8h.html#a85e04bcbf5366f1bdad555dbb4d73d5d">ps_update_mllr</a></div><div class="ttdeci">POCKETSPHINX_EXPORT ps_mllr_t * ps_update_mllr(ps_decoder_t *ps, ps_mllr_t *mllr)</div><div class="ttdoc">Adapt current acoustic model using a linear transform. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00477">pocketsphinx.c:477</a></div></div>
<div class="ttc" id="structps__search__s_html_a0fb4d79f1084bdbbc0a808513f7c1ca7"><div class="ttname"><a href="structps__search__s.html#a0fb4d79f1084bdbbc0a808513f7c1ca7">ps_search_s::finish_wid</a></div><div class="ttdeci">int32 finish_wid</div><div class="ttdoc">Finish word ID. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00119">pocketsphinx_internal.h:119</a></div></div>
<div class="ttc" id="structacmod__s_html_a56eaceb9b6a1cbcccd09cf42cfa87231"><div class="ttname"><a href="structacmod__s.html#a56eaceb9b6a1cbcccd09cf42cfa87231">acmod_s::fe</a></div><div class="ttdeci">fe_t * fe</div><div class="ttdoc">Acoustic feature computation. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8h_source.html#l00155">acmod.h:155</a></div></div>
<div class="ttc" id="bin__mdef_8h_html_af592f710731474b77166a29530716672"><div class="ttname"><a href="bin__mdef_8h.html#af592f710731474b77166a29530716672">bin_mdef_ciphone_id</a></div><div class="ttdeci">int bin_mdef_ciphone_id(bin_mdef_t *m, const char *ciphone)</div><div class="ttdoc">Context-independent phone lookup. </div><div class="ttdef"><b>Definition:</b> <a href="bin__mdef_8c_source.html#l00691">bin_mdef.c:691</a></div></div>
<div class="ttc" id="structps__seg__s_html_a69e605f422eeed1a9c67437e8ddd8b08"><div class="ttname"><a href="structps__seg__s.html#a69e605f422eeed1a9c67437e8ddd8b08">ps_seg_s::lscr</a></div><div class="ttdeci">int32 lscr</div><div class="ttdoc">Language model score. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00185">pocketsphinx_internal.h:185</a></div></div>
<div class="ttc" id="structps__search__s_html_ad4d98deb905bd664ec44313ea0065b1a"><div class="ttname"><a href="structps__search__s.html#ad4d98deb905bd664ec44313ea0065b1a">ps_search_s::n_words</a></div><div class="ttdeci">int32 n_words</div><div class="ttdoc">Number of words known to search (may be less than in the dictionary) </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00113">pocketsphinx_internal.h:113</a></div></div>
<div class="ttc" id="ps__search_8h_html_a0780564ad3f12179b0291ac87774cea1"><div class="ttname"><a href="ps__search_8h.html#a0780564ad3f12179b0291ac87774cea1">ps_set_kws</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_set_kws(ps_decoder_t *ps, const char *name, const char *keyfile)</div><div class="ttdoc">Adds keywords from a file to spotting. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00641">pocketsphinx.c:641</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a25a1d0e35f0c1ca8b018e1a27c0c1966"><div class="ttname"><a href="pocketsphinx_8h.html#a25a1d0e35f0c1ca8b018e1a27c0c1966">ps_get_in_speech</a></div><div class="ttdeci">POCKETSPHINX_EXPORT uint8 ps_get_in_speech(ps_decoder_t *ps)</div><div class="ttdoc">Checks if the last feed audio buffer contained speech. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01391">pocketsphinx.c:1391</a></div></div>
<div class="ttc" id="acmod_8h_html_a6a74b084234e0e7d5e72161545c5040ba3d936d27ce644db26a862830f3b6d188"><div class="ttname"><a href="acmod_8h.html#a6a74b084234e0e7d5e72161545c5040ba3d936d27ce644db26a862830f3b6d188">ACMOD_ENDED</a></div><div class="ttdoc">Utterance ended, still buffering. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8h_source.html#l00071">acmod.h:71</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a5e278377cc57d921591ce95b980760d5"><div class="ttname"><a href="pocketsphinx_8h.html#a5e278377cc57d921591ce95b980760d5">ps_save_dict</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_save_dict(ps_decoder_t *ps, char const *dictfile, char const *format)</div><div class="ttdoc">Dump the current pronunciation dictionary to a file. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00797">pocketsphinx.c:797</a></div></div>
<div class="ttc" id="s3types_8h_html_a5c42410b7125da611210c5a4be29898b"><div class="ttname"><a href="s3types_8h.html#a5c42410b7125da611210c5a4be29898b">BAD_S3WID</a></div><div class="ttdeci">#define BAD_S3WID</div><div class="ttdoc">Dictionary word id. </div><div class="ttdef"><b>Definition:</b> <a href="s3types_8h_source.html#l00090">s3types.h:90</a></div></div>
<div class="ttc" id="ps__search_8h_html_a661c72707484ec2528319c9f6976fb7c"><div class="ttname"><a href="ps__search_8h.html#a661c72707484ec2528319c9f6976fb7c">ps_search_iter</a></div><div class="ttdeci">POCKETSPHINX_EXPORT ps_search_iter_t * ps_search_iter(ps_decoder_t *ps)</div><div class="ttdoc">Returns iterator over current searches. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00528">pocketsphinx.c:528</a></div></div>
<div class="ttc" id="structps__decoder__s_html_a8bb5ef8791798b8dd9bc82b1ec016663"><div class="ttname"><a href="structps__decoder__s.html#a8bb5ef8791798b8dd9bc82b1ec016663">ps_decoder_s::mfclogdir</a></div><div class="ttdeci">char const * mfclogdir</div><div class="ttdoc">Log directory for MFCC files. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00224">pocketsphinx_internal.h:224</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a887e4cdcbef98d5594458c5934cc9471"><div class="ttname"><a href="pocketsphinx_8h.html#a887e4cdcbef98d5594458c5934cc9471">ps_default_search_args</a></div><div class="ttdeci">POCKETSPHINX_EXPORT void ps_default_search_args(cmd_ln_t *)</div><div class="ttdoc">Sets default grammar and language model if they are not set explicitly and are present in the default...</div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00180">pocketsphinx.c:180</a></div></div>
<div class="ttc" id="ps__lattice__internal_8h_html"><div class="ttname"><a href="ps__lattice__internal_8h.html">ps_lattice_internal.h</a></div><div class="ttdoc">Word graph search implementation. </div></div>
<div class="ttc" id="pocketsphinx_8h_html_a250c5f72d3addd0d0254f3ceeaa17ace"><div class="ttname"><a href="pocketsphinx_8h.html#a250c5f72d3addd0d0254f3ceeaa17ace">ps_nbest_hyp</a></div><div class="ttdeci">POCKETSPHINX_EXPORT char const * ps_nbest_hyp(ps_nbest_t *nbest, int32 *out_score)</div><div class="ttdoc">Get the hypothesis string from an N-best list iterator. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01341">pocketsphinx.c:1341</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_ab0a242c645a68a553c2e7c62c96e4ce2"><div class="ttname"><a href="pocketsphinx_8h.html#ab0a242c645a68a553c2e7c62c96e4ce2">ps_lookup_word</a></div><div class="ttdeci">POCKETSPHINX_EXPORT char * ps_lookup_word(ps_decoder_t *ps, const char *word)</div><div class="ttdoc">Lookup for the word in the dictionary and return phone transcription for it. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00872">pocketsphinx.c:872</a></div></div>
<div class="ttc" id="structps__decoder__s_html_aa5ab90180288b6c9039eb86b496f76aa"><div class="ttname"><a href="structps__decoder__s.html#aa5ab90180288b6c9039eb86b496f76aa">ps_decoder_s::refcount</a></div><div class="ttdeci">int refcount</div><div class="ttdoc">Reference count. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00204">pocketsphinx_internal.h:204</a></div></div>
<div class="ttc" id="dict2pid_8c_html_a293253226550e812c448ae096b364d0d"><div class="ttname"><a href="dict2pid_8c.html#a293253226550e812c448ae096b364d0d">dict2pid_free</a></div><div class="ttdeci">int dict2pid_free(dict2pid_t *d2p)</div><div class="ttdoc">Free the memory dict2pid structure. </div><div class="ttdef"><b>Definition:</b> <a href="dict2pid_8c_source.html#l00507">dict2pid.c:507</a></div></div>
<div class="ttc" id="dict_8h_html_a8587d077f5303554df0e26a181bfb0bf"><div class="ttname"><a href="dict_8h.html#a8587d077f5303554df0e26a181bfb0bf">dict_ciphone_str</a></div><div class="ttdeci">const char * dict_ciphone_str(dict_t *d, s3wid_t wid, int32 pos)</div><div class="ttdoc">Return value: CI phone string for the given word, phone position. </div><div class="ttdef"><b>Definition:</b> <a href="dict_8c_source.html#l00069">dict.c:69</a></div></div>
<div class="ttc" id="structps__astar__s_html"><div class="ttname"><a href="structps__astar__s.html">ps_astar_s</a></div><div class="ttdoc">A* search structure. </div><div class="ttdef"><b>Definition:</b> <a href="ps__lattice__internal_8h_source.html#l00163">ps_lattice_internal.h:163</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_ac7e8897e5eed452f284bef3ee53d2429"><div class="ttname"><a href="pocketsphinx_8h.html#ac7e8897e5eed452f284bef3ee53d2429">ps_get_lattice</a></div><div class="ttdeci">POCKETSPHINX_EXPORT ps_lattice_t * ps_get_lattice(ps_decoder_t *ps)</div><div class="ttdoc">Get word lattice. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01283">pocketsphinx.c:1283</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a0942b8c0570009319a5be20ef1b52821"><div class="ttname"><a href="pocketsphinx_8h.html#a0942b8c0570009319a5be20ef1b52821">ps_nbest_next</a></div><div class="ttdeci">POCKETSPHINX_EXPORT ps_nbest_t * ps_nbest_next(ps_nbest_t *nbest)</div><div class="ttdoc">Move an N-best list iterator forward. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01328">pocketsphinx.c:1328</a></div></div>
<div class="ttc" id="structps__seg__s_html_ae683244d90d0a5339930b47757778432"><div class="ttname"><a href="structps__seg__s.html#ae683244d90d0a5339930b47757778432">ps_seg_s::prob</a></div><div class="ttdeci">int32 prob</div><div class="ttdoc">Log posterior probability. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00186">pocketsphinx_internal.h:186</a></div></div>
<div class="ttc" id="dict_8h_html_a0edf70be186e8940af9d21243083cb8b"><div class="ttname"><a href="dict_8h.html#a0edf70be186e8940af9d21243083cb8b">dict_retain</a></div><div class="ttdeci">dict_t * dict_retain(dict_t *d)</div><div class="ttdoc">Retain a pointer to an dict_t. </div><div class="ttdef"><b>Definition:</b> <a href="dict_8c_source.html#l00461">dict.c:461</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a43b378f9c42bcb19fdff0ebe71c25adb"><div class="ttname"><a href="pocketsphinx_8h.html#a43b378f9c42bcb19fdff0ebe71c25adb">ps_decode_raw</a></div><div class="ttdeci">POCKETSPHINX_EXPORT long ps_decode_raw(ps_decoder_t *ps, FILE *rawfh, long maxsamps)</div><div class="ttdoc">Decode a raw audio stream. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00895">pocketsphinx.c:895</a></div></div>
<div class="ttc" id="structps__seg__s_html_a97a0dc7db931c7e3f98d23d21ce27f04"><div class="ttname"><a href="structps__seg__s.html#a97a0dc7db931c7e3f98d23d21ce27f04">ps_seg_s::word</a></div><div class="ttdeci">char const * word</div><div class="ttdoc">Word string (pointer into dictionary hash) </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00181">pocketsphinx_internal.h:181</a></div></div>
<div class="ttc" id="acmod_8c_html_ab35cb48cdf326a3fb5223589d73ae0ce"><div class="ttname"><a href="acmod_8c.html#ab35cb48cdf326a3fb5223589d73ae0ce">acmod_set_senfh</a></div><div class="ttdeci">int acmod_set_senfh(acmod_t *acmod, FILE *logfh)</div><div class="ttdoc">Start logging senone scores to a filehandle. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l00366">acmod.c:366</a></div></div>
<div class="ttc" id="structps__decoder__s_html_af834d2bc1d44c1d9ef607b025413a0b8"><div class="ttname"><a href="structps__decoder__s.html#af834d2bc1d44c1d9ef607b025413a0b8">ps_decoder_s::acmod</a></div><div class="ttdeci">acmod_t * acmod</div><div class="ttdoc">Acoustic model. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00207">pocketsphinx_internal.h:207</a></div></div>
<div class="ttc" id="structps__seg__s_html_a14168ddcb60e094dad36c7c920a79bb3"><div class="ttname"><a href="structps__seg__s.html#a14168ddcb60e094dad36c7c920a79bb3">ps_seg_s::search</a></div><div class="ttdeci">ps_search_t * search</div><div class="ttdoc">Search object from whence this came. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00180">pocketsphinx_internal.h:180</a></div></div>
<div class="ttc" id="structps__decoder__s_html_ad337270efc93613cf8dd7594f6515799"><div class="ttname"><a href="structps__decoder__s.html#ad337270efc93613cf8dd7594f6515799">ps_decoder_s::search</a></div><div class="ttdeci">ps_search_t * search</div><div class="ttdoc">Currently active search module. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00216">pocketsphinx_internal.h:216</a></div></div>
<div class="ttc" id="ngram__search__fwdtree_8h_html"><div class="ttname"><a href="ngram__search__fwdtree_8h.html">ngram_search_fwdtree.h</a></div><div class="ttdoc">Lexicon tree based Viterbi search. </div></div>
<div class="ttc" id="structps__decoder__s_html_a43bca42790684eefb8d01a0aef6fa530"><div class="ttname"><a href="structps__decoder__s.html#a43bca42790684eefb8d01a0aef6fa530">ps_decoder_s::searches</a></div><div class="ttdeci">hash_table_t * searches</div><div class="ttdoc">Set of search modules. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00213">pocketsphinx_internal.h:213</a></div></div>
<div class="ttc" id="acmod_8c_html_a6979441ae866ea846ef41f8471b105a0"><div class="ttname"><a href="acmod_8c.html#a6979441ae866ea846ef41f8471b105a0">acmod_set_rawfh</a></div><div class="ttdeci">int acmod_set_rawfh(acmod_t *acmod, FILE *logfh)</div><div class="ttdoc">Start logging raw audio to a filehandle. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l00389">acmod.c:389</a></div></div>
<div class="ttc" id="pocketsphinx__internal_8h_html_a9e0d66662ea7c64f8bddbbfe57496896"><div class="ttname"><a href="pocketsphinx__internal_8h.html#a9e0d66662ea7c64f8bddbbfe57496896">ps_search_init</a></div><div class="ttdeci">void ps_search_init(ps_search_t *search, ps_searchfuncs_t *vt, const char *type, const char *name, cmd_ln_t *config, acmod_t *acmod, dict_t *dict, dict2pid_t *d2p)</div><div class="ttdoc">Initialize base structure. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01397">pocketsphinx.c:1397</a></div></div>
<div class="ttc" id="dict_8h_html_a4bfa8e3b7b9ff30165375d1c97bb04b8"><div class="ttname"><a href="dict_8h.html#a4bfa8e3b7b9ff30165375d1c97bb04b8">dict_write</a></div><div class="ttdeci">int dict_write(dict_t *dict, char const *filename, char const *format)</div><div class="ttdoc">Write dictionary to a file. </div><div class="ttdef"><b>Definition:</b> <a href="dict_8c_source.html#l00221">dict.c:221</a></div></div>
<div class="ttc" id="structps__search__iter__s_html"><div class="ttname"><a href="structps__search__iter__s.html">ps_search_iter_s</a></div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00230">pocketsphinx_internal.h:230</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_ac8ac154482457740173caa1c0d699c49"><div class="ttname"><a href="pocketsphinx_8h.html#ac8ac154482457740173caa1c0d699c49">ps_get_prob</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int32 ps_get_prob(ps_decoder_t *ps)</div><div class="ttdoc">Get posterior probability. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01225">pocketsphinx.c:1225</a></div></div>
<div class="ttc" id="structps__decoder__s_html_abd17fe329f2fb219c5a534f3217c5b95"><div class="ttname"><a href="structps__decoder__s.html#abd17fe329f2fb219c5a534f3217c5b95">ps_decoder_s::lmath</a></div><div class="ttdeci">logmath_t * lmath</div><div class="ttdoc">Log math computation. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00210">pocketsphinx_internal.h:210</a></div></div>
<div class="ttc" id="structps__search__s_html_ae1a9fa33bfc851ec91ce96870714b3cc"><div class="ttname"><a href="structps__search__s.html#ae1a9fa33bfc851ec91ce96870714b3cc">ps_search_s::start_wid</a></div><div class="ttdeci">int32 start_wid</div><div class="ttdoc">Start word ID. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00117">pocketsphinx_internal.h:117</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_ae16ba181f654ffc9bfbbe861e9315f12"><div class="ttname"><a href="pocketsphinx_8h.html#ae16ba181f654ffc9bfbbe861e9315f12">ps_seg_next</a></div><div class="ttdeci">POCKETSPHINX_EXPORT ps_seg_t * ps_seg_next(ps_seg_t *seg)</div><div class="ttdoc">Get the next segment in a word segmentation. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01247">pocketsphinx.c:1247</a></div></div>
<div class="ttc" id="structngram__search__s_html"><div class="ttname"><a href="structngram__search__s.html">ngram_search_s</a></div><div class="ttdoc">N-Gram search module structure. </div><div class="ttdef"><b>Definition:</b> <a href="ngram__search_8h_source.html#l00197">ngram_search.h:197</a></div></div>
<div class="ttc" id="ps__search_8h_html_aa76b495c63c665a21a49d7cb51c66d74"><div class="ttname"><a href="ps__search_8h.html#aa76b495c63c665a21a49d7cb51c66d74">ps_set_lm</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_set_lm(ps_decoder_t *ps, const char *name, ngram_model_t *lm)</div><div class="ttdoc">Adds new search based on N-gram language model. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00595">pocketsphinx.c:595</a></div></div>
<div class="ttc" id="structps__search__s_html_a81b461e7ef3a080d046039e186134a15"><div class="ttname"><a href="structps__search__s.html#a81b461e7ef3a080d046039e186134a15">ps_search_s::d2p</a></div><div class="ttdeci">dict2pid_t * d2p</div><div class="ttdoc">Dictionary to senone mappings. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00108">pocketsphinx_internal.h:108</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_ada74b12d71e9d4db5d959b94004ff812"><div class="ttname"><a href="pocketsphinx_8h.html#ada74b12d71e9d4db5d959b94004ff812">ps_get_hyp</a></div><div class="ttdeci">POCKETSPHINX_EXPORT char const * ps_get_hyp(ps_decoder_t *ps, int32 *out_best_score)</div><div class="ttdoc">Get hypothesis string and path score. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01202">pocketsphinx.c:1202</a></div></div>
<div class="ttc" id="structps__decoder__s_html"><div class="ttname"><a href="structps__decoder__s.html">ps_decoder_s</a></div><div class="ttdoc">Decoder object. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00201">pocketsphinx_internal.h:201</a></div></div>
<div class="ttc" id="structps__decoder__s_html_aa2610c52a9267ee18ca095169bf34bfd"><div class="ttname"><a href="structps__decoder__s.html#aa2610c52a9267ee18ca095169bf34bfd">ps_decoder_s::rawlogdir</a></div><div class="ttdeci">char const * rawlogdir</div><div class="ttdoc">Log directory for audio files. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00225">pocketsphinx_internal.h:225</a></div></div>
<div class="ttc" id="pocketsphinx__internal_8h_html_a39db3228c813a2943d47ff3f13e6ef08"><div class="ttname"><a href="pocketsphinx__internal_8h.html#a39db3228c813a2943d47ff3f13e6ef08">ps_search_base_free</a></div><div class="ttdeci">void ps_search_base_free(ps_search_t *search)</div><div class="ttdoc">Free search. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01428">pocketsphinx.c:1428</a></div></div>
<div class="ttc" id="ps__search_8h_html_a3c51b0eab27ac9df20ee54e1d87b3ca3"><div class="ttname"><a href="ps__search_8h.html#a3c51b0eab27ac9df20ee54e1d87b3ca3">ps_set_jsgf_string</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_set_jsgf_string(ps_decoder_t *ps, const char *name, const char *jsgf_string)</div><div class="ttdoc">Adds new search using JSGF model. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00704">pocketsphinx.c:704</a></div></div>
<div class="ttc" id="structacmod__s_html_aec694af0767ac5e8f1022b6252111885"><div class="ttname"><a href="structacmod__s.html#aec694af0767ac5e8f1022b6252111885">acmod_s::output_frame</a></div><div class="ttdeci">frame_idx_t output_frame</div><div class="ttdoc">Index of next frame of dynamic features. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8h_source.html#l00194">acmod.h:194</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_ad8fd9b79ae9f87703af3f4755b3ab567"><div class="ttname"><a href="pocketsphinx_8h.html#ad8fd9b79ae9f87703af3f4755b3ab567">ps_free</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_free(ps_decoder_t *ps)</div><div class="ttdoc">Finalize the decoder. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00436">pocketsphinx.c:436</a></div></div>
<div class="ttc" id="s3types_8h_html_ae5f70241ce62a79747f0611029a6409d"><div class="ttname"><a href="s3types_8h.html#ae5f70241ce62a79747f0611029a6409d">s3cipid_t</a></div><div class="ttdeci">int16 s3cipid_t</div><div class="ttdoc">Size definitions for more semantially meaningful units. </div><div class="ttdef"><b>Definition:</b> <a href="s3types_8h_source.html#l00063">s3types.h:63</a></div></div>
<div class="ttc" id="ngram__search_8h_html"><div class="ttname"><a href="ngram__search_8h.html">ngram_search.h</a></div><div class="ttdoc">N-Gram based multi-pass search (&quot;FBS&quot;) </div></div>
<div class="ttc" id="pocketsphinx_8h_html_ac02cea69794b0fbd17e6a4c5265b2255"><div class="ttname"><a href="pocketsphinx_8h.html#ac02cea69794b0fbd17e6a4c5265b2255">ps_seg_free</a></div><div class="ttdeci">POCKETSPHINX_EXPORT void ps_seg_free(ps_seg_t *seg)</div><div class="ttdoc">Finish iterating over a word segmentation early, freeing resources. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01277">pocketsphinx.c:1277</a></div></div>
<div class="ttc" id="structps__seg__s_html_ab25ecc6af8d2695c6097cf7e934eadd4"><div class="ttname"><a href="structps__seg__s.html#ab25ecc6af8d2695c6097cf7e934eadd4">ps_seg_s::ef</a></div><div class="ttdeci">frame_idx_t ef</div><div class="ttdoc">End frame. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00183">pocketsphinx_internal.h:183</a></div></div>
<div class="ttc" id="structps__seg__s_html_a6f7706ec4c0d0ec8ecafaf0f29f41f4b"><div class="ttname"><a href="structps__seg__s.html#a6f7706ec4c0d0ec8ecafaf0f29f41f4b">ps_seg_s::ascr</a></div><div class="ttdeci">int32 ascr</div><div class="ttdoc">Acoustic score. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00184">pocketsphinx_internal.h:184</a></div></div>
<div class="ttc" id="structps__decoder__s_html_a0565ed97b32408bd05c8104f020cef05"><div class="ttname"><a href="structps__decoder__s.html#a0565ed97b32408bd05c8104f020cef05">ps_decoder_s::config</a></div><div class="ttdeci">cmd_ln_t * config</div><div class="ttdoc">Configuration. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00203">pocketsphinx_internal.h:203</a></div></div>
<div class="ttc" id="acmod_8c_html_a262372bdd6063f61e64b5417a449c1a9"><div class="ttname"><a href="acmod_8c.html#a262372bdd6063f61e64b5417a449c1a9">acmod_end_utt</a></div><div class="ttdeci">int acmod_end_utt(acmod_t *acmod)</div><div class="ttdoc">Mark the end of an utterance. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l00443">acmod.c:443</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a8d912ce9a5fea61b7b10db1750531c34"><div class="ttname"><a href="pocketsphinx_8h.html#a8d912ce9a5fea61b7b10db1750531c34">ps_retain</a></div><div class="ttdeci">POCKETSPHINX_EXPORT ps_decoder_t * ps_retain(ps_decoder_t *ps)</div><div class="ttdoc">Retain a pointer to the decoder. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00429">pocketsphinx.c:429</a></div></div>
<div class="ttc" id="dict2pid_8c_html_aa94120dcea4b17807576e29484b8a008"><div class="ttname"><a href="dict2pid_8c.html#aa94120dcea4b17807576e29484b8a008">dict2pid_add_word</a></div><div class="ttdeci">int dict2pid_add_word(dict2pid_t *d2p, int32 wid)</div><div class="ttdoc">Add a word to the dict2pid structure (after adding it to dict). </div><div class="ttdef"><b>Definition:</b> <a href="dict2pid_8c_source.html#l00298">dict2pid.c:298</a></div></div>
<div class="ttc" id="acmod_8c_html_a338971ea0aa27fb4796d224e4767642b"><div class="ttname"><a href="acmod_8c.html#a338971ea0aa27fb4796d224e4767642b">acmod_advance</a></div><div class="ttdeci">int acmod_advance(acmod_t *acmod)</div><div class="ttdoc">Advance the frame index. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l00919">acmod.c:919</a></div></div>
<div class="ttc" id="structacmod__s_html_a06adf606c11e6f4b9869742510a5c23b"><div class="ttname"><a href="structacmod__s.html#a06adf606c11e6f4b9869742510a5c23b">acmod_s::state</a></div><div class="ttdeci">uint8 state</div><div class="ttdoc">State of utterance processing. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8h_source.html#l00187">acmod.h:187</a></div></div>
<div class="ttc" id="acmod_8c_html_a5753caa516c75bdc74b385d7aa66a97c"><div class="ttname"><a href="acmod_8c.html#a5753caa516c75bdc74b385d7aa66a97c">acmod_set_mfcfh</a></div><div class="ttdeci">int acmod_set_mfcfh(acmod_t *acmod, FILE *logfh)</div><div class="ttdoc">Start logging MFCCs to a filehandle. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l00377">acmod.c:377</a></div></div>
<div class="ttc" id="acmod_8c_html_a1e3345e8ef8b060fc04e88f86e6afa4a"><div class="ttname"><a href="acmod_8c.html#a1e3345e8ef8b060fc04e88f86e6afa4a">acmod_free</a></div><div class="ttdeci">void acmod_free(acmod_t *acmod)</div><div class="ttdoc">Finalize an acoustic model. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l00301">acmod.c:301</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_abb9256d8f7217a1e929509090df1f35b"><div class="ttname"><a href="pocketsphinx_8h.html#abb9256d8f7217a1e929509090df1f35b">ps_get_config</a></div><div class="ttdeci">POCKETSPHINX_EXPORT cmd_ln_t * ps_get_config(ps_decoder_t *ps)</div><div class="ttdoc">Get the configuration object for this decoder. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00453">pocketsphinx.c:453</a></div></div>
<div class="ttc" id="ps__search_8h_html_a78372effd2aa6bddf7b71d6e2e9c3776"><div class="ttname"><a href="ps__search_8h.html#a78372effd2aa6bddf7b71d6e2e9c3776">ps_set_lm_file</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_set_lm_file(ps_decoder_t *ps, const char *name, const char *path)</div><div class="ttdoc">Adds new search based on N-gram language model. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00603">pocketsphinx.c:603</a></div></div>
<div class="ttc" id="structps__decoder__s_html_a0c6d141d7a71a1287be00a1ebcc7643d"><div class="ttname"><a href="structps__decoder__s.html#a0c6d141d7a71a1287be00a1ebcc7643d">ps_decoder_s::phone_loop</a></div><div class="ttdeci">ps_search_t * phone_loop</div><div class="ttdoc">Phone loop search for lookahead. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00217">pocketsphinx_internal.h:217</a></div></div>
<div class="ttc" id="structps__mllr__s_html"><div class="ttname"><a href="structps__mllr__s.html">ps_mllr_s</a></div><div class="ttdoc">Feature space linear transform structure. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8h_source.html#l00082">acmod.h:82</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a572ad08651b4caae820d178a12c8f95f"><div class="ttname"><a href="pocketsphinx_8h.html#a572ad08651b4caae820d178a12c8f95f">ps_process_raw</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_process_raw(ps_decoder_t *ps, int16 const *data, size_t n_samples, int no_search, int full_utt)</div><div class="ttdoc">Decode raw audio data. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01069">pocketsphinx.c:1069</a></div></div>
<div class="ttc" id="ps__search_8h_html_a66bebfccb8ece9e7bff411329f25ee5e"><div class="ttname"><a href="ps__search_8h.html#a66bebfccb8ece9e7bff411329f25ee5e">ps_set_allphone_file</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_set_allphone_file(ps_decoder_t *ps, const char *name, const char *path)</div><div class="ttdoc">Adds new search based on phone N-gram language model. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00626">pocketsphinx.c:626</a></div></div>
<div class="ttc" id="structdict__t_html"><div class="ttname"><a href="structdict__t.html">dict_t</a></div><div class="ttdoc">a structure for a dictionary. </div><div class="ttdef"><b>Definition:</b> <a href="dict_8h_source.html#l00076">dict.h:76</a></div></div>
<div class="ttc" id="structacmod__s_html_a37ec6c2b1f3ada764842e08481239b34"><div class="ttname"><a href="structacmod__s.html#a37ec6c2b1f3ada764842e08481239b34">acmod_s::fcb</a></div><div class="ttdeci">feat_t * fcb</div><div class="ttdoc">Dynamic feature computation. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8h_source.html#l00156">acmod.h:156</a></div></div>
<div class="ttc" id="structps__lattice__s_html"><div class="ttname"><a href="structps__lattice__s.html">ps_lattice_s</a></div><div class="ttdoc">Word graph structure used in bestpath/nbest search. </div><div class="ttdef"><b>Definition:</b> <a href="ps__lattice__internal_8h_source.html#l00061">ps_lattice_internal.h:61</a></div></div>
<div class="ttc" id="structps__decoder__s_html_a0ed3476113fe3d63b13ac5e8da3f3b4f"><div class="ttname"><a href="structps__decoder__s.html#a0ed3476113fe3d63b13ac5e8da3f3b4f">ps_decoder_s::senlogdir</a></div><div class="ttdeci">char const * senlogdir</div><div class="ttdoc">Log directory for senone score files. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00226">pocketsphinx_internal.h:226</a></div></div>
<div class="ttc" id="structps__search__s_html_aa51e88956bbe9c05359d32526180809b"><div class="ttname"><a href="structps__search__s.html#aa51e88956bbe9c05359d32526180809b">ps_search_s::vt</a></div><div class="ttdeci">ps_searchfuncs_t * vt</div><div class="ttdoc">V-table of search methods. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00099">pocketsphinx_internal.h:99</a></div></div>
<div class="ttc" id="ps__search_8h_html_a300fd82f4b1621663a0d870da61497b0"><div class="ttname"><a href="ps__search_8h.html#a300fd82f4b1621663a0d870da61497b0">ps_unset_search</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_unset_search(ps_decoder_t *ps, const char *name)</div><div class="ttdoc">Unsets the search and releases related resources. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00516">pocketsphinx.c:516</a></div></div>
<div class="ttc" id="ps__lattice_8c_html_aaf9aedd3cd8bd1d45053e10828215a25"><div class="ttname"><a href="ps__lattice_8c.html#aaf9aedd3cd8bd1d45053e10828215a25">ps_astar_start</a></div><div class="ttdeci">ps_astar_t * ps_astar_start(ps_lattice_t *dag, ngram_model_t *lmset, float32 lwf, int sf, int ef, int w1, int w2)</div><div class="ttdoc">Begin N-Gram based A* search on a word graph. </div><div class="ttdef"><b>Definition:</b> <a href="ps__lattice_8c_source.html#l01712">ps_lattice.c:1712</a></div></div>
<div class="ttc" id="structps__decoder__s_html_a2886b321c576c7def449ebb2f37899fd"><div class="ttname"><a href="structps__decoder__s.html#a2886b321c576c7def449ebb2f37899fd">ps_decoder_s::n_frame</a></div><div class="ttdeci">uint32 n_frame</div><div class="ttdoc">Total number of frames processed. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00223">pocketsphinx_internal.h:223</a></div></div>
<div class="ttc" id="ps__search_8h_html_a4bd6d4f2b19be2351987c11694eaec9a"><div class="ttname"><a href="ps__search_8h.html#a4bd6d4f2b19be2351987c11694eaec9a">ps_search_iter_next</a></div><div class="ttdeci">POCKETSPHINX_EXPORT ps_search_iter_t * ps_search_iter_next(ps_search_iter_t *itor)</div><div class="ttdoc">Updates search iterator to point to the next position. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00534">pocketsphinx.c:534</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a391679e7edb0de1e324aa302ee820287"><div class="ttname"><a href="pocketsphinx_8h.html#a391679e7edb0de1e324aa302ee820287">ps_reinit</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_reinit(ps_decoder_t *ps, cmd_ln_t *config)</div><div class="ttdoc">Reinitialize the decoder with updated configuration. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00234">pocketsphinx.c:234</a></div></div>
<div class="ttc" id="ps__search_8h_html_ae845bbf6a3e5b859e833f6cc0d1ba55f"><div class="ttname"><a href="ps__search_8h.html#ae845bbf6a3e5b859e833f6cc0d1ba55f">ps_set_jsgf_file</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_set_jsgf_file(ps_decoder_t *ps, const char *name, const char *path)</div><div class="ttdoc">Adds new search using JSGF model. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00665">pocketsphinx.c:665</a></div></div>
<div class="ttc" id="phone__loop__search_8h_html"><div class="ttname"><a href="phone__loop__search_8h.html">phone_loop_search.h</a></div><div class="ttdoc">Fast and rough context-independent phoneme loop search. </div></div>
<div class="ttc" id="structps__decoder__s_html_ae6515cbc261686f3f3bbd95719f79793"><div class="ttname"><a href="structps__decoder__s.html#ae6515cbc261686f3f3bbd95719f79793">ps_decoder_s::d2p</a></div><div class="ttdeci">dict2pid_t * d2p</div><div class="ttdoc">Dictionary to senone mapping. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00209">pocketsphinx_internal.h:209</a></div></div>
<div class="ttc" id="ps__search_8h_html_a3a15f664d2d004d610e999adb4339dbe"><div class="ttname"><a href="ps__search_8h.html#a3a15f664d2d004d610e999adb4339dbe">ps_get_fsg</a></div><div class="ttdeci">POCKETSPHINX_EXPORT fsg_model_t * ps_get_fsg(ps_decoder_t *ps, const char *name)</div><div class="ttdoc">Get the finite-state grammar set object for this decoder. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00561">pocketsphinx.c:561</a></div></div>
<div class="ttc" id="dict2pid_8c_html_a85a8de8009445e1129766186ddaa949a"><div class="ttname"><a href="dict2pid_8c.html#a85a8de8009445e1129766186ddaa949a">dict2pid_retain</a></div><div class="ttdeci">dict2pid_t * dict2pid_retain(dict2pid_t *d2p)</div><div class="ttdoc">Retain a pointer to dict2pid. </div><div class="ttdef"><b>Definition:</b> <a href="dict2pid_8c_source.html#l00500">dict2pid.c:500</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_ab9339de730713b68cbd68a7f36dc8730"><div class="ttname"><a href="pocketsphinx_8h.html#ab9339de730713b68cbd68a7f36dc8730">ps_end_utt</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_end_utt(ps_decoder_t *ps)</div><div class="ttdoc">End utterance processing. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01136">pocketsphinx.c:1136</a></div></div>
<div class="ttc" id="structps__search__s_html_a721a656d0e34f7604ea8c52a1bdf14ff"><div class="ttname"><a href="structps__search__s.html#a721a656d0e34f7604ea8c52a1bdf14ff">ps_search_s::post</a></div><div class="ttdeci">int32 post</div><div class="ttdoc">Utterance posterior probability. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00112">pocketsphinx_internal.h:112</a></div></div>
<div class="ttc" id="structps__search__s_html_aa398c736a887af97e42b2a562359adc3"><div class="ttname"><a href="structps__search__s.html#aa398c736a887af97e42b2a562359adc3">ps_search_s::hyp_str</a></div><div class="ttdeci">char * hyp_str</div><div class="ttdoc">Current hypothesis string. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00109">pocketsphinx_internal.h:109</a></div></div>
<div class="ttc" id="structps__latpath__s_html"><div class="ttname"><a href="structps__latpath__s.html">ps_latpath_s</a></div><div class="ttdoc">Partial path structure used in N-best (A*) search. </div><div class="ttdef"><b>Definition:</b> <a href="ps__lattice__internal_8h_source.html#l00153">ps_lattice_internal.h:153</a></div></div>
<div class="ttc" id="structps__search__s_html_a918f243fa966e72c47f697fb9e60089d"><div class="ttname"><a href="structps__search__s.html#a918f243fa966e72c47f697fb9e60089d">ps_search_s::dict</a></div><div class="ttdeci">dict_t * dict</div><div class="ttdoc">Pronunciation dictionary. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00107">pocketsphinx_internal.h:107</a></div></div>
<div class="ttc" id="acmod_8c_html_a23e63c8833e6128ae248e183d42f9b2b"><div class="ttname"><a href="acmod_8c.html#a23e63c8833e6128ae248e183d42f9b2b">acmod_process_raw</a></div><div class="ttdeci">int acmod_process_raw(acmod_t *acmod, int16 const **inout_raw, size_t *inout_n_samps, int full_utt)</div><div class="ttdoc">TODO: Set queue length for utterance processing. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l00627">acmod.c:627</a></div></div>
<div class="ttc" id="ngram__search__fwdflat_8h_html"><div class="ttname"><a href="ngram__search__fwdflat_8h.html">ngram_search_fwdflat.h</a></div><div class="ttdoc">Flat lexicon based Viterbi search. </div></div>
<div class="ttc" id="pocketsphinx_8h_html_a5f3c4fcdbef34915c4e785ac9a1c6005"><div class="ttname"><a href="pocketsphinx_8h.html#a5f3c4fcdbef34915c4e785ac9a1c6005">ps_add_word</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_add_word(ps_decoder_t *ps, char const *word, char const *phones, int update)</div><div class="ttdoc">Add a word to the pronunciation dictionary. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00804">pocketsphinx.c:804</a></div></div>
<div class="ttc" id="structps__seg__s_html_a4d86c21f1ed2dc3eb3b1b1b37ce9bb48"><div class="ttname"><a href="structps__seg__s.html#a4d86c21f1ed2dc3eb3b1b1b37ce9bb48">ps_seg_s::lback</a></div><div class="ttdeci">int32 lback</div><div class="ttdoc">Language model backoff. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00189">pocketsphinx_internal.h:189</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a61fb92154c5c731cf4a24e0976263da0"><div class="ttname"><a href="pocketsphinx_8h.html#a61fb92154c5c731cf4a24e0976263da0">ps_get_all_time</a></div><div class="ttdeci">POCKETSPHINX_EXPORT void ps_get_all_time(ps_decoder_t *ps, double *out_nspeech, double *out_ncpu, double *out_nwall)</div><div class="ttdoc">Get overall performance information. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01379">pocketsphinx.c:1379</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a249cfc383b7d9111a28b550945a606b5"><div class="ttname"><a href="pocketsphinx_8h.html#a249cfc383b7d9111a28b550945a606b5">ps_get_logmath</a></div><div class="ttdeci">POCKETSPHINX_EXPORT logmath_t * ps_get_logmath(ps_decoder_t *ps)</div><div class="ttdoc">Get the log-math computation object for this decoder. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00459">pocketsphinx.c:459</a></div></div>
<div class="ttc" id="acmod_8c_html_aa3a5a89f76338e3e1bcfa7a2cecc5845"><div class="ttname"><a href="acmod_8c.html#aa3a5a89f76338e3e1bcfa7a2cecc5845">acmod_start_utt</a></div><div class="ttdeci">int acmod_start_utt(acmod_t *acmod)</div><div class="ttdoc">Mark the start of an utterance. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l00425">acmod.c:425</a></div></div>
<div class="ttc" id="ps__search_8h_html_a7965534ad5e48f0b46f326d7da186a2a"><div class="ttname"><a href="ps__search_8h.html#a7965534ad5e48f0b46f326d7da186a2a">ps_set_keyphrase</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_set_keyphrase(ps_decoder_t *ps, const char *name, const char *keyphrase)</div><div class="ttdoc">Adds new keyword to spot. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00649">pocketsphinx.c:649</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_adfd45d93c3fc9de6b7be89d5417f6abb"><div class="ttname"><a href="pocketsphinx_8h.html#adfd45d93c3fc9de6b7be89d5417f6abb">ps_seg_prob</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int32 ps_seg_prob(ps_seg_t *seg, int32 *out_ascr, int32 *out_lscr, int32 *out_lback)</div><div class="ttdoc">Get language, acoustic, and posterior probabilities from a segmentation iterator. ...</div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01268">pocketsphinx.c:1268</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_af3431cf96766564d6ab2a3cc8e056860"><div class="ttname"><a href="pocketsphinx_8h.html#af3431cf96766564d6ab2a3cc8e056860">ps_get_hyp_final</a></div><div class="ttdeci">POCKETSPHINX_EXPORT char const * ps_get_hyp_final(ps_decoder_t *ps, int32 *out_is_final)</div><div class="ttdoc">Get hypothesis string and final flag. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01213">pocketsphinx.c:1213</a></div></div>
<div class="ttc" id="dict_8h_html_a24888ac8e24259e553c43c4655b38432"><div class="ttname"><a href="dict_8h.html#a24888ac8e24259e553c43c4655b38432">dict_add_word</a></div><div class="ttdeci">s3wid_t dict_add_word(dict_t *d, char const *word, s3cipid_t const *p, int32 np)</div><div class="ttdoc">Add a word with the given ciphone pronunciation list to the dictionary. </div><div class="ttdef"><b>Definition:</b> <a href="dict_8c_source.html#l00080">dict.c:80</a></div></div>
<div class="ttc" id="structacmod__s_html_a351548ff5547c29b4a684e10434a51dd"><div class="ttname"><a href="structacmod__s.html#a351548ff5547c29b4a684e10434a51dd">acmod_s::mdef</a></div><div class="ttdeci">bin_mdef_t * mdef</div><div class="ttdoc">Model definition. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8h_source.html#l00159">acmod.h:159</a></div></div>
<div class="ttc" id="ps__search_8h_html_a41e404de59cbd7bfc32f2da3ec7e6137"><div class="ttname"><a href="ps__search_8h.html#a41e404de59cbd7bfc32f2da3ec7e6137">ps_search_iter_free</a></div><div class="ttdeci">POCKETSPHINX_EXPORT void ps_search_iter_free(ps_search_iter_t *itor)</div><div class="ttdoc">Delete an unfinished search iterator. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00546">pocketsphinx.c:546</a></div></div>
<div class="ttc" id="structps__search__s_html_aa3020ef7bd4e56713dfe2fbad52e6e4f"><div class="ttname"><a href="structps__search__s.html#aa3020ef7bd4e56713dfe2fbad52e6e4f">ps_search_s::last_link</a></div><div class="ttdeci">ps_latlink_t * last_link</div><div class="ttdoc">Final link in best path. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00111">pocketsphinx_internal.h:111</a></div></div>
<div class="ttc" id="dict2pid_8c_html_addd541f2275b79e284575fb11b7986e1"><div class="ttname"><a href="dict2pid_8c.html#addd541f2275b79e284575fb11b7986e1">dict2pid_build</a></div><div class="ttdeci">dict2pid_t * dict2pid_build(bin_mdef_t *mdef, dict_t *dict)</div><div class="ttdoc">Build the dict2pid structure for the given model/dictionary. </div><div class="ttdef"><b>Definition:</b> <a href="dict2pid_8c_source.html#l00388">dict2pid.c:388</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a89be3b2a8f83291a225db0bcd9ee65b2"><div class="ttname"><a href="pocketsphinx_8h.html#a89be3b2a8f83291a225db0bcd9ee65b2">ps_start_stream</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_start_stream(ps_decoder_t *ps)</div><div class="ttdoc">Start processing of the stream of speech. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00938">pocketsphinx.c:938</a></div></div>
<div class="ttc" id="ps__search_8h_html_aa38c96913dd3a06cbab54ce834af5141"><div class="ttname"><a href="ps__search_8h.html#aa38c96913dd3a06cbab54ce834af5141">ps_set_allphone</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_set_allphone(ps_decoder_t *ps, const char *name, ngram_model_t *lm)</div><div class="ttdoc">Adds new search based on phone N-gram language model. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00618">pocketsphinx.c:618</a></div></div>
<div class="ttc" id="acmod_8c_html_a6f32b623cbc3d15a1e3c5d09aba7dabf"><div class="ttname"><a href="acmod_8c.html#a6f32b623cbc3d15a1e3c5d09aba7dabf">acmod_init</a></div><div class="ttdeci">acmod_t * acmod_init(cmd_ln_t *config, logmath_t *lmath, fe_t *fe, feat_t *fcb)</div><div class="ttdoc">Initialize an acoustic model. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l00230">acmod.c:230</a></div></div>
<div class="ttc" id="structacmod__s_html_a861cc097befe7e81473f0ae0972186e0"><div class="ttname"><a href="structacmod__s.html#a861cc097befe7e81473f0ae0972186e0">acmod_s::n_feat_frame</a></div><div class="ttdeci">frame_idx_t n_feat_frame</div><div class="ttdoc">Number of frames active in feat_buf. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8h_source.html#l00199">acmod.h:199</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a6237e2822756f230b88019b533a28724"><div class="ttname"><a href="pocketsphinx_8h.html#a6237e2822756f230b88019b533a28724">ps_get_fe</a></div><div class="ttdeci">POCKETSPHINX_EXPORT fe_t * ps_get_fe(ps_decoder_t *ps)</div><div class="ttdoc">Get the feature extraction object for this decoder. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00465">pocketsphinx.c:465</a></div></div>
<div class="ttc" id="structps__searchfuncs__s_html"><div class="ttname"><a href="structps__searchfuncs__s.html">ps_searchfuncs_s</a></div><div class="ttdoc">V-table for search algorithm. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00082">pocketsphinx_internal.h:82</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_ade3909b1c12c1b70afe284639e70cbff"><div class="ttname"><a href="pocketsphinx_8h.html#ade3909b1c12c1b70afe284639e70cbff">ps_start_utt</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_start_utt(ps_decoder_t *ps)</div><div class="ttdoc">Start utterance processing. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00945">pocketsphinx.c:945</a></div></div>
<div class="ttc" id="structps__search__s_html_a2a33b7698fb237b42e007788f65cd46c"><div class="ttname"><a href="structps__search__s.html#a2a33b7698fb237b42e007788f65cd46c">ps_search_s::pls</a></div><div class="ttdeci">ps_search_t * pls</div><div class="ttdoc">Phoneme loop for lookahead. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00104">pocketsphinx_internal.h:104</a></div></div>
<div class="ttc" id="ps__lattice_8c_html_ac8e3dff7276c03c93377d0cb79fbdbd7"><div class="ttname"><a href="ps__lattice_8c.html#ac8e3dff7276c03c93377d0cb79fbdbd7">ps_astar_seg_iter</a></div><div class="ttdeci">ps_seg_t * ps_astar_seg_iter(ps_astar_t *astar, ps_latpath_t *path, float32 lwf)</div><div class="ttdoc">Get hypothesis segmentation from A* search. </div><div class="ttdef"><b>Definition:</b> <a href="ps__lattice_8c_source.html#l01898">ps_lattice.c:1898</a></div></div>
<div class="ttc" id="structps__search__s_html_a897f46c55d17e817ff1364f555b31463"><div class="ttname"><a href="structps__search__s.html#a897f46c55d17e817ff1364f555b31463">ps_search_s::dag</a></div><div class="ttdeci">ps_lattice_t * dag</div><div class="ttdoc">Current hypothesis word graph. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00110">pocketsphinx_internal.h:110</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_ad033da98d0f7785d6ab89a41dac3cc7c"><div class="ttname"><a href="pocketsphinx_8h.html#ad033da98d0f7785d6ab89a41dac3cc7c">ps_init</a></div><div class="ttdeci">POCKETSPHINX_EXPORT ps_decoder_t * ps_init(cmd_ln_t *config)</div><div class="ttdoc">Initialize the decoder from a configuration object. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00404">pocketsphinx.c:404</a></div></div>
<div class="ttc" id="structps__seg__s_html"><div class="ttname"><a href="structps__seg__s.html">ps_seg_s</a></div><div class="ttdoc">Base structure for hypothesis segmentation iterator. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00178">pocketsphinx_internal.h:178</a></div></div>
<div class="ttc" id="structps__search__s_html_aa6e3e18165bbc70084a06575d5703042"><div class="ttname"><a href="structps__search__s.html#aa6e3e18165bbc70084a06575d5703042">ps_search_s::config</a></div><div class="ttdeci">cmd_ln_t * config</div><div class="ttdoc">Configuration. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00105">pocketsphinx_internal.h:105</a></div></div>
<div class="ttc" id="dict_8h_html_a361b948b42f9cfdf5c7fa9dfc8a71a94"><div class="ttname"><a href="dict_8h.html#a361b948b42f9cfdf5c7fa9dfc8a71a94">dict_size</a></div><div class="ttdeci">#define dict_size(d)</div><div class="ttdoc">Packaged macro access to dictionary members. </div><div class="ttdef"><b>Definition:</b> <a href="dict_8h_source.html#l00151">dict.h:151</a></div></div>
<div class="ttc" id="structps__latpath__s_html_a9249fb528f754db992df1d494a69b580"><div class="ttname"><a href="structps__latpath__s.html#a9249fb528f754db992df1d494a69b580">ps_latpath_s::score</a></div><div class="ttdeci">int32 score</div><div class="ttdoc">Exact score from start node up to node-&gt;sf. </div><div class="ttdef"><b>Definition:</b> <a href="ps__lattice__internal_8h_source.html#l00157">ps_lattice_internal.h:157</a></div></div>
<div class="ttc" id="ps__lattice_8h_html_a3f90e846bde47cd1acdff165b92f5c22"><div class="ttname"><a href="ps__lattice_8h.html#a3f90e846bde47cd1acdff165b92f5c22">ps_lattice_free</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_lattice_free(ps_lattice_t *dag)</div><div class="ttdoc">Free a lattice. </div><div class="ttdef"><b>Definition:</b> <a href="ps__lattice_8c_source.html#l00665">ps_lattice.c:665</a></div></div>
<div class="ttc" id="ps__search_8h_html_a86d9b5968b9fe317a6335345fb9a2dd0"><div class="ttname"><a href="ps__search_8h.html#a86d9b5968b9fe317a6335345fb9a2dd0">ps_search_iter_val</a></div><div class="ttdeci">POCKETSPHINX_EXPORT const char * ps_search_iter_val(ps_search_iter_t *itor)</div><div class="ttdoc">Retrieves the name of the search the iterator points to. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00540">pocketsphinx.c:540</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_abb3527e41c2f4cd64dccbdbd5f812d1d"><div class="ttname"><a href="pocketsphinx_8h.html#abb3527e41c2f4cd64dccbdbd5f812d1d">ps_get_n_frames</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_get_n_frames(ps_decoder_t *ps)</div><div class="ttdoc">Get the number of frames of data searched. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01361">pocketsphinx.c:1361</a></div></div>
<div class="ttc" id="ngram__search_8c_html_a04f80b377c847026254fb85596e2f43c"><div class="ttname"><a href="ngram__search_8c.html#a04f80b377c847026254fb85596e2f43c">ngram_search_init</a></div><div class="ttdeci">ps_search_t * ngram_search_init(const char *name, ngram_model_t *lm, cmd_ln_t *config, acmod_t *acmod, dict_t *dict, dict2pid_t *d2p)</div><div class="ttdoc">Initialize the N-Gram search module. </div><div class="ttdef"><b>Definition:</b> <a href="ngram__search_8c_source.html#l00140">ngram_search.c:140</a></div></div>
<div class="ttc" id="structacmod__s_html"><div class="ttname"><a href="structacmod__s.html">acmod_s</a></div><div class="ttdoc">Acoustic model structure. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8h_source.html#l00148">acmod.h:148</a></div></div>
<div class="ttc" id="structdict2pid__t_html"><div class="ttname"><a href="structdict2pid__t.html">dict2pid_t</a></div><div class="ttdoc">Building composite triphone (as well as word internal triphones) with the dictionary. </div><div class="ttdef"><b>Definition:</b> <a href="dict2pid_8h_source.html#l00084">dict2pid.h:84</a></div></div>
<div class="ttc" id="acmod_8c_html_a1555dac8fa27f644d709c5c89bbfa881"><div class="ttname"><a href="acmod_8c.html#a1555dac8fa27f644d709c5c89bbfa881">acmod_set_grow</a></div><div class="ttdeci">int acmod_set_grow(acmod_t *acmod, int grow_feat)</div><div class="ttdoc">Set memory allocation policy for utterance processing. </div><div class="ttdef"><b>Definition:</b> <a href="acmod_8c_source.html#l00412">acmod.c:412</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a466d1d718873e7b1cf0881e4f552a4a2"><div class="ttname"><a href="pocketsphinx_8h.html#a466d1d718873e7b1cf0881e4f552a4a2">ps_decode_senscr</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_decode_senscr(ps_decoder_t *ps, FILE *senfh)</div><div class="ttdoc">Decode a senone score dump file. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01048">pocketsphinx.c:1048</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a8a4fed34b58885627b53e99e90514169"><div class="ttname"><a href="pocketsphinx_8h.html#a8a4fed34b58885627b53e99e90514169">ps_seg_word</a></div><div class="ttdeci">POCKETSPHINX_EXPORT char const * ps_seg_word(ps_seg_t *seg)</div><div class="ttdoc">Get word string from a segmentation iterator. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01253">pocketsphinx.c:1253</a></div></div>
<div class="ttc" id="structps__decoder__s_html_a0f597370dd162c2799efe216c9b991fc"><div class="ttname"><a href="structps__decoder__s.html#a0f597370dd162c2799efe216c9b991fc">ps_decoder_s::uttno</a></div><div class="ttdeci">uint32 uttno</div><div class="ttdoc">Utterance counter. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00221">pocketsphinx_internal.h:221</a></div></div>
<div class="ttc" id="structps__seg__s_html_a885a599726cd0efba573d106d016e6e2"><div class="ttname"><a href="structps__seg__s.html#a885a599726cd0efba573d106d016e6e2">ps_seg_s::sf</a></div><div class="ttdeci">frame_idx_t sf</div><div class="ttdoc">Start frame. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00182">pocketsphinx_internal.h:182</a></div></div>
<div class="ttc" id="ps__search_8h_html_ae2b728c9b05e733605d33fa19472ef8e"><div class="ttname"><a href="ps__search_8h.html#ae2b728c9b05e733605d33fa19472ef8e">ps_get_search</a></div><div class="ttdeci">POCKETSPHINX_EXPORT const char * ps_get_search(ps_decoder_t *ps)</div><div class="ttdoc">Returns name of curent search in decoder. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00501">pocketsphinx.c:501</a></div></div>
<div class="ttc" id="structps__decoder__s_html_a0f0a6681ffd98af789f6bed556c814e4"><div class="ttname"><a href="structps__decoder__s.html#a0f0a6681ffd98af789f6bed556c814e4">ps_decoder_s::pl_window</a></div><div class="ttdeci">int pl_window</div><div class="ttdoc">Window size for phoneme lookahead. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx__internal_8h_source.html#l00218">pocketsphinx_internal.h:218</a></div></div>
<div class="ttc" id="pocketsphinx_8h_html_a0ea0a24f578b1eeff2fccdb0b61e5527"><div class="ttname"><a href="pocketsphinx_8h.html#a0ea0a24f578b1eeff2fccdb0b61e5527">ps_get_rawdata</a></div><div class="ttdeci">POCKETSPHINX_EXPORT void ps_get_rawdata(ps_decoder_t *ps, int16 **buffer, int32 *size)</div><div class="ttdoc">Retrieves the raw data collected during utterance decoding. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l01472">pocketsphinx.c:1472</a></div></div>
<div class="ttc" id="ps__search_8h_html_a4072a93e8ce9a4229d17c9bce6ad1083"><div class="ttname"><a href="ps__search_8h.html#a4072a93e8ce9a4229d17c9bce6ad1083">ps_set_search</a></div><div class="ttdeci">POCKETSPHINX_EXPORT int ps_set_search(ps_decoder_t *ps, const char *name)</div><div class="ttdoc">Actives search with the provided name. </div><div class="ttdef"><b>Definition:</b> <a href="pocketsphinx_8c_source.html#l00483">pocketsphinx.c:483</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_8d034a1e03e98d9b7ac467250bbebdea.html">libpocketsphinx</a></li><li class="navelem"><b>pocketsphinx.c</b></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>