<!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.1"/> <title>libltc: ltcdecode.c</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 id="projectlogo"><img alt="Logo" src="libltc.png"/></td> <td style="padding-left: 0.5em;"> <div id="projectname">libltc  <span id="projectnumber">1.1.3</span> </div> <div id="projectbrief">Linear/Logitudinal Time Code (LTC) Library</div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.3.1 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="headertitle"> <div class="title">ltcdecode.c</div> </div> </div><!--header--> <div class="contents"> <div class="fragment"><div class="line"></div> <div class="line"><span class="preprocessor">#include <stdio.h></span></div> <div class="line"><span class="preprocessor">#include <math.h></span></div> <div class="line"><span class="preprocessor">#include <<a class="code" href="ltc_8h.html" title="libltc - en+decode linear timecode">ltc.h</a>></span></div> <div class="line"></div> <div class="line"><span class="preprocessor">#define BUFFER_SIZE (1024)</span></div> <div class="line"><span class="preprocessor"></span></div> <div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) {</div> <div class="line"> <span class="keywordtype">int</span> apv = 1920;</div> <div class="line"> <a class="code" href="ltc_8h.html#a1d702f47d78768fd74aabd04b1e47091">ltcsnd_sample_t</a> sound[BUFFER_SIZE];</div> <div class="line"> <span class="keywordtype">size_t</span> n;</div> <div class="line"> <span class="keywordtype">long</span> <span class="keywordtype">int</span> total;</div> <div class="line"> FILE* f;</div> <div class="line"> <span class="keywordtype">char</span>* filename;</div> <div class="line"></div> <div class="line"> <a class="code" href="ltc_8h.html#ad3763ec6befdd820c15da6111a575606">LTCDecoder</a> *decoder;</div> <div class="line"> <a name="_a0"></a><a class="code" href="ltc_8h.html#structLTCFrameExt">LTCFrameExt</a> frame;</div> <div class="line"></div> <div class="line"> <span class="comment">// fIXME</span></div> <div class="line"> <span class="keywordflow">if</span> (argc > 1) {</div> <div class="line"> filename = argv[1];</div> <div class="line"> <span class="keywordflow">if</span> (argc > 2) {</div> <div class="line"> sscanf(argv[2], <span class="stringliteral">"%i"</span>, &apv);</div> <div class="line"> }</div> <div class="line"> } <span class="keywordflow">else</span> {</div> <div class="line"> printf(<span class="stringliteral">"Usage: %s <filename> [audio-frames-per-video-frame]\n"</span>, argv[0]);</div> <div class="line"> <span class="keywordflow">return</span> -1;</div> <div class="line"> }</div> <div class="line"></div> <div class="line"> f = fopen(filename, <span class="stringliteral">"r"</span>);</div> <div class="line"></div> <div class="line"> <span class="keywordflow">if</span> (!f) {</div> <div class="line"> fprintf(stderr, <span class="stringliteral">"error opening '%s'\n"</span>, filename);</div> <div class="line"> <span class="keywordflow">return</span> -1;</div> <div class="line"> }</div> <div class="line"> fprintf(stderr, <span class="stringliteral">"* reading from: %s\n"</span>, filename);</div> <div class="line"></div> <div class="line"> total = 0;</div> <div class="line"></div> <div class="line"> decoder = <a name="a1"></a><a class="code" href="ltc_8h.html#a0707029b20a1ea7305dd6ba85c0d03f8">ltc_decoder_create</a>(apv, 32);</div> <div class="line"></div> <div class="line"> <span class="keywordflow">do</span> {</div> <div class="line"> n = fread(sound, <span class="keyword">sizeof</span>(<a class="code" href="ltc_8h.html#a1d702f47d78768fd74aabd04b1e47091">ltcsnd_sample_t</a>), BUFFER_SIZE, f);</div> <div class="line"> <a name="a2"></a><a class="code" href="ltc_8h.html#aba7abd60b63023f67d17f30888fa492e">ltc_decoder_write</a>(decoder, sound, n, total);</div> <div class="line"></div> <div class="line"> <span class="keywordflow">while</span> (<a name="a3"></a><a class="code" href="ltc_8h.html#a3cb40ff1bede260caeafae14bafb9a95">ltc_decoder_read</a>(decoder, &frame)) {</div> <div class="line"> <a name="_a4"></a><a class="code" href="ltc_8h.html#structSMPTETimecode">SMPTETimecode</a> stime;</div> <div class="line"></div> <div class="line"> <a name="a5"></a><a class="code" href="ltc_8h.html#a6b29fed73072a500e4c3566bec8340a1">ltc_frame_to_time</a>(&stime, &frame.<a name="a6"></a><a class="code" href="ltc_8h.html#a86f7f99e839dc30ac5eb1d650061d1d1" title="the actual LTC frame. see LTCFrame">ltc</a>, 1);</div> <div class="line"></div> <div class="line"> printf(<span class="stringliteral">"%04d-%02d-%02d %s "</span>,</div> <div class="line"> ((stime.<a name="a7"></a><a class="code" href="ltc_8h.html#af4fc85d71e69e87bcfc269c6e4dfcf25" title="LTC-date uses 2-digit year 00.99.">years</a> < 67) ? 2000+stime.<a class="code" href="ltc_8h.html#af4fc85d71e69e87bcfc269c6e4dfcf25" title="LTC-date uses 2-digit year 00.99.">years</a> : 1900+stime.<a class="code" href="ltc_8h.html#af4fc85d71e69e87bcfc269c6e4dfcf25" title="LTC-date uses 2-digit year 00.99.">years</a>),</div> <div class="line"> stime.<a name="a8"></a><a class="code" href="ltc_8h.html#a33881ec86a28953e740e4b12195266e8" title="valid months are 1..12">months</a>,</div> <div class="line"> stime.<a name="a9"></a><a class="code" href="ltc_8h.html#aa58d86b05da0fb1aa5f8663fa9c743bc" title="day of month 1..31">days</a>,</div> <div class="line"> stime.<a name="a10"></a><a class="code" href="ltc_8h.html#abf056d6aa0c9046ed39c8b6f4ae568da" title="the timezone 6bytes: "+HHMM" textual representation">timezone</a></div> <div class="line"> );</div> <div class="line"></div> <div class="line"> printf(<span class="stringliteral">"%02d:%02d:%02d%c%02d | %8lld %8lld%s\n"</span>,</div> <div class="line"> stime.<a name="a11"></a><a class="code" href="ltc_8h.html#a46a49bf0cc03a662959d96145b543bf3" title="hour 0..23">hours</a>,</div> <div class="line"> stime.<a name="a12"></a><a class="code" href="ltc_8h.html#a3a61b5ec33a92b13bc7ce21cb54e55ce" title="minute 0..60">mins</a>,</div> <div class="line"> stime.<a name="a13"></a><a class="code" href="ltc_8h.html#acabc2874dae09c842660cda082cbd7d1" title="second 0..60">secs</a>,</div> <div class="line"> (frame.<a class="code" href="ltc_8h.html#a86f7f99e839dc30ac5eb1d650061d1d1" title="the actual LTC frame. see LTCFrame">ltc</a>.<a name="a14"></a><a class="code" href="ltc_8h.html#aae3b62d98a52478317057b87ba180b72" title="indicated drop-frame timecode">dfbit</a>) ? <span class="charliteral">'.'</span> : <span class="charliteral">':'</span>,</div> <div class="line"> stime.<a name="a15"></a><a class="code" href="ltc_8h.html#a1b22b2e8db1d8d2b526919e0f8cef0ee" title="sub-second frame 0..(FPS - 1)">frame</a>,</div> <div class="line"> frame.<a name="a16"></a><a class="code" href="ltc_8h.html#a64635a67a788d658c9312be212330a2c">off_start</a>,</div> <div class="line"> frame.<a name="a17"></a><a class="code" href="ltc_8h.html#a0200e7f1f9bf85a4ce78e9126946048b">off_end</a>,</div> <div class="line"> frame.<a name="a18"></a><a class="code" href="ltc_8h.html#a8695572f4b4f75bfaba7edd725b2fb4b" title="if non-zero, a reverse played LTC frame was detected. Since the frame was reversed, it started at off_end and finishes as off_start (off_end > off_start). (Note: in reverse playback the (reversed) sync-word of the next/previous frame is detected, this offset is corrected).">reverse</a> ? <span class="stringliteral">" R"</span> : <span class="stringliteral">""</span></div> <div class="line"> );</div> <div class="line"> }</div> <div class="line"></div> <div class="line"> total += n;</div> <div class="line"></div> <div class="line"> } <span class="keywordflow">while</span> (n);</div> <div class="line"></div> <div class="line"> fclose(f);</div> <div class="line"> <a name="a19"></a><a class="code" href="ltc_8h.html#ad7d79ffa10e4ac4726676d3427ad2f15">ltc_decoder_free</a>(decoder);</div> <div class="line"></div> <div class="line"> <span class="keywordflow">return</span> 0;</div> <div class="line">}</div> </div><!-- fragment --> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.3.1 </small></address> </body> </html>