<!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.3"/> <title>gavl: /home/iurt/rpmbuild/BUILD/gavl-1.4.0/include/gavl/gavltime.h 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="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">gavl </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.3 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li 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 List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_8d9966fd6a811526508c2e8ea93de85b.html">gavl</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="headertitle"> <div class="title">gavltime.h</div> </div> </div><!--header--> <div class="contents"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*****************************************************************</span></div> <div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * gavl - a general purpose audio/video processing library</span></div> <div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div> <div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Copyright (c) 2001 - 2011 Members of the Gmerlin project</span></div> <div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * gmerlin-general@lists.sourceforge.net</span></div> <div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * http://gmerlin.sourceforge.net</span></div> <div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> *</span></div> <div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * This program is free software: you can redistribute it and/or modify</span></div> <div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div> <div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * the Free Software Foundation, either version 2 of the License, or</span></div> <div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * (at your option) any later version.</span></div> <div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div> <div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div> <div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div> <div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div> <div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * GNU General Public License for more details.</span></div> <div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> *</span></div> <div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div> <div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div> <div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * *****************************************************************/</span></div> <div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div> <div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#ifndef GAVLTIME_H_INCLUDED</span></div> <div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor"></span><span class="preprocessor">#define GAVLTIME_H_INCLUDED</span></div> <div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#ifdef __cplusplus</span></div> <div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {</div> <div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#endif</span></div> <div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <inttypes.h></span></div> <div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include <gavl/gavldefs.h></span></div> <div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div> <div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="group__time.html#gaf598353cbda9a5ad6878e368b6a15811"> 38</a></span> <span class="preprocessor">#define GAVL_TIME_SCALE 1000000 </span></div> <div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="group__time.html#ga98a13c407599f7fd3186396337f2a313"> 43</a></span> <span class="preprocessor">#define GAVL_TIME_UNDEFINED 0x8000000000000000LL </span></div> <div class="line"><a name="l00046"></a><span class="lineno"><a class="code" href="group__time.html#gae6ef0c903b29a7584c2213c07d07cb5d"> 46</a></span> <span class="preprocessor">#define GAVL_TIME_MAX 0x7fffffffffffffffLL </span></div> <div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="group__time.html#gaede83abbdd6102bd8683f4b94a7bd647"> 53</a></span> <span class="preprocessor">typedef int64_t gavl_time_t;</span></div> <div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">/* Utility functions */</span></div> <div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div> <div class="line"><a name="l00061"></a><span class="lineno"> 61</span> GAVL_PUBLIC</div> <div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <a class="code" href="group__time.html#gaede83abbdd6102bd8683f4b94a7bd647" title="Times in gavl are 64 bit signed integers.">gavl_time_t</a> <a class="code" href="group__time.html#ga811bdb175fd50af21138857ca53f9d19" title="Convert a number of samples to a time for a given samplerate.">gavl_samples_to_time</a>(<span class="keywordtype">int</span> samplerate, int64_t samples);</div> <div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div> <div class="line"><a name="l00071"></a><span class="lineno"> 71</span> GAVL_PUBLIC</div> <div class="line"><a name="l00072"></a><span class="lineno"> 72</span> int64_t <a class="code" href="group__time.html#gae29e41e11252623db0588cd6b728bcf3" title="Convert a time to a number of audio samples for a given samplerate.">gavl_time_to_samples</a>(<span class="keywordtype">int</span> samplerate, <a class="code" href="group__time.html#gaede83abbdd6102bd8683f4b94a7bd647" title="Times in gavl are 64 bit signed integers.">gavl_time_t</a> time);</div> <div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div> <div class="line"><a name="l00078"></a><span class="lineno"> 78</span> GAVL_PUBLIC</div> <div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <a class="code" href="group__time.html#gaede83abbdd6102bd8683f4b94a7bd647" title="Times in gavl are 64 bit signed integers.">gavl_time_t</a> <a class="code" href="group__time.html#ga59df5a9311f8e15575c8a0f9414849af" title="Convert a number of video frames to a time for a given framerate.">gavl_frames_to_time</a>(<span class="keywordtype">int</span> rate_num, <span class="keywordtype">int</span> rate_den, int64_t frames);</div> <div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div> <div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div> <div class="line"><a name="l00090"></a><span class="lineno"> 90</span> GAVL_PUBLIC</div> <div class="line"><a name="l00091"></a><span class="lineno"> 91</span> int64_t <a class="code" href="group__time.html#ga2b8f1db0f226f1255afe2e0f21f47142" title="Convert a time to a number of video frames for a given framerate.">gavl_time_to_frames</a>(<span class="keywordtype">int</span> rate_num, <span class="keywordtype">int</span> rate_den, <a class="code" href="group__time.html#gaede83abbdd6102bd8683f4b94a7bd647" title="Times in gavl are 64 bit signed integers.">gavl_time_t</a> time); </div> <div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div> <div class="line"><a name="l00100"></a><span class="lineno"> 100</span> GAVL_PUBLIC</div> <div class="line"><a name="l00101"></a><span class="lineno"> 101</span> int64_t <a class="code" href="group__time.html#ga8b96d7ef34d17497a099fa8971eb5661" title="Convert a gavl time to a time scaled by another base.">gavl_time_scale</a>(<span class="keywordtype">int</span> scale, <a class="code" href="group__time.html#gaede83abbdd6102bd8683f4b94a7bd647" title="Times in gavl are 64 bit signed integers.">gavl_time_t</a> time);</div> <div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div> <div class="line"><a name="l00110"></a><span class="lineno"> 110</span> GAVL_PUBLIC</div> <div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <a class="code" href="group__time.html#gaede83abbdd6102bd8683f4b94a7bd647" title="Times in gavl are 64 bit signed integers.">gavl_time_t</a> <a class="code" href="group__time.html#ga4de3b9f7b985519953f332fbc283f2f6" title="Convert a time scaled by another base to a gavl time.">gavl_time_unscale</a>(<span class="keywordtype">int</span> scale, int64_t time);</div> <div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div> <div class="line"><a name="l00121"></a><span class="lineno"> 121</span> GAVL_PUBLIC</div> <div class="line"><a name="l00122"></a><span class="lineno"> 122</span> int64_t <a class="code" href="group__time.html#gac2a78a7aa1330d94ac8c24882714ff2f" title="Convert a time scaled by one base to a time scaled by another base.">gavl_time_rescale</a>(<span class="keywordtype">int</span> scale1, <span class="keywordtype">int</span> scale2, int64_t time);</div> <div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div> <div class="line"><a name="l00130"></a><span class="lineno"><a class="code" href="group__time.html#gaea115f2815e637bbcd60fbade805ef76"> 130</a></span> <span class="preprocessor">#define gavl_seconds_to_time(s) (gavl_time_t)((s)*(double)(GAVL_TIME_SCALE))</span></div> <div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00138"></a><span class="lineno"><a class="code" href="group__time.html#gafe7168a31ad0b28ead955797a62a5ab2"> 138</a></span> <span class="preprocessor">#define gavl_time_to_seconds(t) ((double)(t)/(double)(GAVL_TIME_SCALE))</span></div> <div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00145"></a><span class="lineno"> 145</span> GAVL_PUBLIC</div> <div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="keywordtype">void</span> <a class="code" href="group__time.html#ga3e883859ff24aa7af3a30cd6b1e80364" title="Sleep for a specified time.">gavl_time_delay</a>(<a class="code" href="group__time.html#gaede83abbdd6102bd8683f4b94a7bd647" title="Times in gavl are 64 bit signed integers.">gavl_time_t</a> * time);</div> <div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div> <div class="line"><a name="l00152"></a><span class="lineno"><a class="code" href="group__time.html#ga49869e05d18cb1dfde4e80343ae37d50"> 152</a></span> <span class="preprocessor">#define GAVL_TIME_STRING_LEN 11</span></div> <div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00163"></a><span class="lineno"> 163</span> GAVL_PUBLIC <span class="keywordtype">void</span></div> <div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <a class="code" href="group__time.html#gafede1bf6bd567f8133f49291b1c91e46" title="Convert a time to a string.">gavl_time_prettyprint</a>(<a class="code" href="group__time.html#gaede83abbdd6102bd8683f4b94a7bd647" title="Times in gavl are 64 bit signed integers.">gavl_time_t</a> time, <span class="keywordtype">char</span> str[<a class="code" href="group__time.html#ga49869e05d18cb1dfde4e80343ae37d50" title="Length of the string passed to gavl_time_prettyprint.">GAVL_TIME_STRING_LEN</a>]);</div> <div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div> <div class="line"><a name="l00170"></a><span class="lineno"><a class="code" href="group__time.html#ga0f4f6763633d6d42edd51b23017cfc37"> 170</a></span> <span class="preprocessor">#define GAVL_TIME_STRING_LEN_MS 15</span></div> <div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00183"></a><span class="lineno"> 183</span> GAVL_PUBLIC <span class="keywordtype">void</span></div> <div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <a class="code" href="group__time.html#ga5f5ae25902db97f374e1be584243a257" title="Convert a time to a string with millisecond precision.">gavl_time_prettyprint_ms</a>(<a class="code" href="group__time.html#gaede83abbdd6102bd8683f4b94a7bd647" title="Times in gavl are 64 bit signed integers.">gavl_time_t</a> time, <span class="keywordtype">char</span> str[<a class="code" href="group__time.html#ga0f4f6763633d6d42edd51b23017cfc37" title="Length of the string passed to gavl_time_prettyprint_ms.">GAVL_TIME_STRING_LEN_MS</a>]);</div> <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  </div> <div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div> <div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="comment">/* Scan time: format is hhh:mm:ss with hh: hours, mm: minutes, ss: seconds. Seconds can be a fractional</span></div> <div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="comment"> value (i.e. with decimal point) */</span></div> <div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div> <div class="line"><a name="l00190"></a><span class="lineno"> 190</span> GAVL_PUBLIC</div> <div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="keywordtype">int</span> gavl_time_parse(<span class="keyword">const</span> <span class="keywordtype">char</span> * str, <a class="code" href="group__time.html#gaede83abbdd6102bd8683f4b94a7bd647" title="Times in gavl are 64 bit signed integers.">gavl_time_t</a> * ret);</div> <div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div> <div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div> <div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="comment">/* Simple software timer */</span></div> <div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div> <div class="line"><a name="l00210"></a><span class="lineno"><a class="code" href="group__timer.html#gaae620a307ba8533e991c512c56b1fd24"> 210</a></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>gavl_timer_s <a class="code" href="group__timer.html#gaae620a307ba8533e991c512c56b1fd24" title="Opaque timer structure.">gavl_timer_t</a>;</div> <div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div> <div class="line"><a name="l00217"></a><span class="lineno"> 217</span> GAVL_PUBLIC</div> <div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <a class="code" href="group__timer.html#gaae620a307ba8533e991c512c56b1fd24" title="Opaque timer structure.">gavl_timer_t</a> * <a class="code" href="group__timer.html#ga09c6a3b1ac4c57ee13347d0d654473c5" title="Create a timer.">gavl_timer_create</a>();</div> <div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div> <div class="line"><a name="l00227"></a><span class="lineno"> 227</span> GAVL_PUBLIC</div> <div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="keywordtype">void</span> <a class="code" href="group__timer.html#ga4e340350de373c7551c0de1ad4acdedb" title="Destroy a timer.">gavl_timer_destroy</a>(<a class="code" href="group__timer.html#gaae620a307ba8533e991c512c56b1fd24" title="Opaque timer structure.">gavl_timer_t</a> * timer);</div> <div class="line"><a name="l00229"></a><span class="lineno"> 229</span> </div> <div class="line"><a name="l00235"></a><span class="lineno"> 235</span> GAVL_PUBLIC</div> <div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="keywordtype">void</span> <a class="code" href="group__timer.html#ga5d43483e1bbdd6aa228991ff373d9f08" title="Start a timer.">gavl_timer_start</a>(<a class="code" href="group__timer.html#gaae620a307ba8533e991c512c56b1fd24" title="Opaque timer structure.">gavl_timer_t</a> * timer);</div> <div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div> <div class="line"><a name="l00243"></a><span class="lineno"> 243</span> GAVL_PUBLIC</div> <div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="keywordtype">void</span> <a class="code" href="group__timer.html#ga2089d703fe1e66509293eed209f05c72" title="Stop a timer.">gavl_timer_stop</a>(<a class="code" href="group__timer.html#gaae620a307ba8533e991c512c56b1fd24" title="Opaque timer structure.">gavl_timer_t</a> * timer);</div> <div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div> <div class="line"><a name="l00252"></a><span class="lineno"> 252</span> GAVL_PUBLIC</div> <div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <a class="code" href="group__time.html#gaede83abbdd6102bd8683f4b94a7bd647" title="Times in gavl are 64 bit signed integers.">gavl_time_t</a> <a class="code" href="group__timer.html#ga8a7eb1f66bfb7d482f7097080d748a34" title="Get the current time of the timer.">gavl_timer_get</a>(<a class="code" href="group__timer.html#gaae620a307ba8533e991c512c56b1fd24" title="Opaque timer structure.">gavl_timer_t</a> * timer);</div> <div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div> <div class="line"><a name="l00261"></a><span class="lineno"> 261</span> GAVL_PUBLIC</div> <div class="line"><a name="l00262"></a><span class="lineno"> 262</span> <span class="keywordtype">void</span> <a class="code" href="group__timer.html#gab26ee9e5edf2758507f7ddf4dfb4d5ea" title="Set the current time of the timer.">gavl_timer_set</a>(<a class="code" href="group__timer.html#gaae620a307ba8533e991c512c56b1fd24" title="Opaque timer structure.">gavl_timer_t</a> * timer, <a class="code" href="group__time.html#gaede83abbdd6102bd8683f4b94a7bd647" title="Times in gavl are 64 bit signed integers.">gavl_time_t</a> t);</div> <div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div> <div class="line"><a name="l00275"></a><span class="lineno"> 275</span> GAVL_PUBLIC</div> <div class="line"><a name="l00276"></a><span class="lineno"> 276</span> uint64_t <a class="code" href="group__timer.html#ga7e7b71a5499480ed31eef3c0f29220a8" title="Get the current time for benchmarking.">gavl_benchmark_get_time</a>(<span class="keywordtype">int</span> flags);</div> <div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div> <div class="line"><a name="l00286"></a><span class="lineno"> 286</span> GAVL_PUBLIC</div> <div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="group__timer.html#ga457f0b1e56a60476d4860f5a2c0c421d" title="Get a description about the value returned by gavl_benchmark_get_time.">gavl_benchmark_get_desc</a>(<span class="keywordtype">int</span> flags);</div> <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  </div> <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  </div> <div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="preprocessor">#ifdef __cplusplus</span></div> <div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="preprocessor"></span>}</div> <div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="preprocessor">#endif</span></div> <div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="preprocessor"></span></div> <div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="preprocessor">#endif </span><span class="comment">/* GAVLTIME_H_INCLUDED */</span><span class="preprocessor"></span></div> <div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="preprocessor"></span></div> </div><!-- fragment --></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Fri Jan 11 2013 22:07:38 for gavl by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.3 </small></address> </body> </html>