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
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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=11"/>
<meta name="generator" content="Doxygen 1.9.4"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libkate: decoding.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 id="projectrow">
<td id="projectalign">
<div id="projectname">libkate<span id="projectnumber"> 0.4.3</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search');
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">decoding.c</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><span class="comment">/*</span></div>
<div class="line"><span class="comment"> This shows the steps necessary to encode a Kate stream.</span></div>
<div class="line"><span class="comment"> For clarity, error checking is omitted.</span></div>
<div class="line"><span class="comment"> For simplicity, the input is assumed to be a single Kate stream.</span></div>
<div class="line"><span class="comment"> Usually, Kate streams will be multiplexed with other streams (either</span></div>
<div class="line"><span class="comment"> other Kate streams, or audio, or video). In these cases, the Ogg</span></div>
<div class="line"><span class="comment"> part will have to be more complex, but the Kate specific code will</span></div>
<div class="line"><span class="comment"> be the same.</span></div>
<div class="line"><span class="comment"> */</span></div>
<div class="line"> </div>
<div class="line"><span class="preprocessor">#include <stdio.h></span></div>
<div class="line"><span class="preprocessor">#include <string.h></span></div>
<div class="line"><span class="preprocessor">#include "common.h"</span></div>
<div class="line"> </div>
<div class="line"><span class="comment">/* All the libkate API is available from the main kate header file: */</span></div>
<div class="line"> </div>
<div class="line"><span class="preprocessor">#include <<a class="code" href="oggkate_8h.html">kate/oggkate.h</a>></span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">int</span> main()</div>
<div class="line">{</div>
<div class="line"> ogg_sync_state oy;</div>
<div class="line"> ogg_stream_state os;</div>
<div class="line"> <span class="keywordtype">int</span> init=0;</div>
<div class="line"> ogg_packet op;</div>
<div class="line"> <a id="_a0" name="_a0"></a><a class="code hl_struct" href="structkate__state.html">kate_state</a> k;</div>
<div class="line"> <a id="_a1" name="_a1"></a><a class="code hl_struct" href="structkate__info.html">kate_info</a> ki;</div>
<div class="line"> <a id="_a2" name="_a2"></a><a class="code hl_struct" href="structkate__comment.html">kate_comment</a> kc;</div>
<div class="line"> <span class="keyword">const</span> <a id="_a3" name="_a3"></a><a class="code hl_struct" href="structkate__event.html">kate_event</a> *ev;</div>
<div class="line"> </div>
<div class="line"> <span class="comment">/* for the benefit of windows, which mangles data otherwise */</span></div>
<div class="line"> set_binary_file(stdin);</div>
<div class="line"> </div>
<div class="line"> <span class="comment">/* we initialize ogg and kate info/comment structures */</span></div>
<div class="line"> ogg_sync_init(&oy);</div>
<div class="line"> <a id="a4" name="a4"></a><a class="code hl_function" href="group__info.html#gab9031b2c167954bc7d754b30774f0241">kate_info_init</a>(&ki);</div>
<div class="line"> <a id="a5" name="a5"></a><a class="code hl_function" href="group__comments.html#ga4f717746ed53e557e57bb1e2b40dbd84">kate_comment_init</a>(&kc);</div>
<div class="line"> </div>
<div class="line"> <span class="comment">/*</span></div>
<div class="line"><span class="comment"> First, read the headers, which must appear first in a Kate stream. When</span></div>
<div class="line"><span class="comment"> kate_decode_header returns a positive number, all headers have been seen</span></div>
<div class="line"><span class="comment"> and we're ready to decode data.</span></div>
<div class="line"><span class="comment"> */</span></div>
<div class="line"> <span class="keywordflow">do</span> {</div>
<div class="line"> get_packet(&oy,&os,&init,&op);</div>
<div class="line"> } <span class="keywordflow">while</span> (<a id="a6" name="a6"></a><a class="code hl_function" href="oggkate_8h.html#ad9a723eff7f66cadae79719d09aebd4d">kate_ogg_decode_headerin</a>(&ki,&kc,&op)==0);</div>
<div class="line"> </div>
<div class="line"> <span class="comment">/*</span></div>
<div class="line"><span class="comment"> We now have all the information we need from the headers, so we can</span></div>
<div class="line"><span class="comment"> initialize kate for decoding</span></div>
<div class="line"><span class="comment"> */</span></div>
<div class="line"> <a id="a7" name="a7"></a><a class="code hl_function" href="group__decoding.html#gaecc12ec59e4b3256f50b5c135d4fe90f">kate_decode_init</a>(&k,&ki);</div>
<div class="line"> </div>
<div class="line"> <span class="comment">/*</span></div>
<div class="line"><span class="comment"> We can now read data, until kate_decode_packetin returns a positive</span></div>
<div class="line"><span class="comment"> number, signaling the end of the stream</span></div>
<div class="line"><span class="comment"> */</span></div>
<div class="line"> <span class="keywordflow">while</span> (1) {</div>
<div class="line"> <span class="keywordflow">if</span> (get_packet(&oy,&os,&init,&op)) <span class="keywordflow">break</span>;</div>
<div class="line"> <span class="keywordflow">if</span> (<a id="a8" name="a8"></a><a class="code hl_function" href="oggkate_8h.html#a66a5a414cf4ad9b094b27a78c00e83a7">kate_ogg_decode_packetin</a>(&k,&op)>0) <span class="keywordflow">break</span>;</div>
<div class="line"> </div>
<div class="line"> <span class="comment">/* we may have an event (eg, text) */</span></div>
<div class="line"> <span class="keywordflow">if</span> (<a id="a9" name="a9"></a><a class="code hl_function" href="group__decoding.html#gacdc7b2786e9fb2c8c685ebe3f483852c">kate_decode_eventout</a>(&k,&ev)==0) {</div>
<div class="line"> printf(<span class="stringliteral">"Kate stream has text: %s\n"</span>,ev-><a id="a10" name="a10"></a><a class="code hl_variable" href="structkate__event.html#ae10745a5078521816cc07a09654fbfd4">text</a>);</div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line"> </div>
<div class="line"> <span class="comment">/* That's it, we can now cleanup */</span></div>
<div class="line"> ogg_stream_clear(&os);</div>
<div class="line"> ogg_sync_clear(&oy);</div>
<div class="line"> </div>
<div class="line"> <a id="a11" name="a11"></a><a class="code hl_function" href="kate_8h.html#a8617b44c49f19262a9e03c0dcb45d971">kate_clear</a>(&k);</div>
<div class="line"> <a id="a12" name="a12"></a><a class="code hl_function" href="group__info.html#gaa8ba295f7925e8926ed46510c28be60d">kate_info_clear</a>(&ki);</div>
<div class="line"> <a id="a13" name="a13"></a><a class="code hl_function" href="group__comments.html#ga92e532be93459a5b1d6835b64c1129da">kate_comment_clear</a>(&kc);</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">return</span> 0;</div>
<div class="line">}</div>
<div class="line"> </div>
<div class="ttc" id="agroup__comments_html_ga4f717746ed53e557e57bb1e2b40dbd84"><div class="ttname"><a href="group__comments.html#ga4f717746ed53e557e57bb1e2b40dbd84">kate_comment_init</a></div><div class="ttdeci">int kate_comment_init(kate_comment *kc)</div><div class="ttdef"><b>Definition:</b> kate_comment.c:29</div></div>
<div class="ttc" id="agroup__comments_html_ga92e532be93459a5b1d6835b64c1129da"><div class="ttname"><a href="group__comments.html#ga92e532be93459a5b1d6835b64c1129da">kate_comment_clear</a></div><div class="ttdeci">int kate_comment_clear(kate_comment *kc)</div><div class="ttdef"><b>Definition:</b> kate_comment.c:48</div></div>
<div class="ttc" id="agroup__decoding_html_gacdc7b2786e9fb2c8c685ebe3f483852c"><div class="ttname"><a href="group__decoding.html#gacdc7b2786e9fb2c8c685ebe3f483852c">kate_decode_eventout</a></div><div class="ttdeci">int kate_decode_eventout(kate_state *k, kate_const kate_event **ev)</div><div class="ttdef"><b>Definition:</b> kate_decode.c:1589</div></div>
<div class="ttc" id="agroup__decoding_html_gaecc12ec59e4b3256f50b5c135d4fe90f"><div class="ttname"><a href="group__decoding.html#gaecc12ec59e4b3256f50b5c135d4fe90f">kate_decode_init</a></div><div class="ttdeci">int kate_decode_init(kate_state *k, kate_info *ki)</div><div class="ttdef"><b>Definition:</b> kate_decode.c:1160</div></div>
<div class="ttc" id="agroup__info_html_gaa8ba295f7925e8926ed46510c28be60d"><div class="ttname"><a href="group__info.html#gaa8ba295f7925e8926ed46510c28be60d">kate_info_clear</a></div><div class="ttdeci">int kate_info_clear(kate_info *ki)</div><div class="ttdef"><b>Definition:</b> kate_info.c:539</div></div>
<div class="ttc" id="agroup__info_html_gab9031b2c167954bc7d754b30774f0241"><div class="ttname"><a href="group__info.html#gab9031b2c167954bc7d754b30774f0241">kate_info_init</a></div><div class="ttdeci">int kate_info_init(kate_info *ki)</div><div class="ttdef"><b>Definition:</b> kate_info.c:29</div></div>
<div class="ttc" id="akate_8h_html_a8617b44c49f19262a9e03c0dcb45d971"><div class="ttname"><a href="kate_8h.html#a8617b44c49f19262a9e03c0dcb45d971">kate_clear</a></div><div class="ttdeci">int kate_clear(kate_state *k)</div><div class="ttdef"><b>Definition:</b> kate.c:74</div></div>
<div class="ttc" id="aoggkate_8h_html"><div class="ttname"><a href="oggkate_8h.html">oggkate.h</a></div></div>
<div class="ttc" id="aoggkate_8h_html_a66a5a414cf4ad9b094b27a78c00e83a7"><div class="ttname"><a href="oggkate_8h.html#a66a5a414cf4ad9b094b27a78c00e83a7">kate_ogg_decode_packetin</a></div><div class="ttdeci">int kate_ogg_decode_packetin(kate_state *k, ogg_packet *op)</div><div class="ttdef"><b>Definition:</b> kate_ogg.c:260</div></div>
<div class="ttc" id="aoggkate_8h_html_ad9a723eff7f66cadae79719d09aebd4d"><div class="ttname"><a href="oggkate_8h.html#ad9a723eff7f66cadae79719d09aebd4d">kate_ogg_decode_headerin</a></div><div class="ttdeci">int kate_ogg_decode_headerin(kate_info *ki, kate_comment *kc, ogg_packet *op)</div><div class="ttdef"><b>Definition:</b> kate_ogg.c:244</div></div>
<div class="ttc" id="astructkate__comment_html"><div class="ttname"><a href="structkate__comment.html">kate_comment</a></div><div class="ttdef"><b>Definition:</b> kate.h:347</div></div>
<div class="ttc" id="astructkate__event_html"><div class="ttname"><a href="structkate__event.html">kate_event</a></div><div class="ttdef"><b>Definition:</b> kate.h:358</div></div>
<div class="ttc" id="astructkate__event_html_ae10745a5078521816cc07a09654fbfd4"><div class="ttname"><a href="structkate__event.html#ae10745a5078521816cc07a09654fbfd4">kate_event::text</a></div><div class="ttdeci">kate_const char * text</div><div class="ttdef"><b>Definition:</b> kate.h:371</div></div>
<div class="ttc" id="astructkate__info_html"><div class="ttname"><a href="structkate__info.html">kate_info</a></div><div class="ttdef"><b>Definition:</b> kate.h:274</div></div>
<div class="ttc" id="astructkate__state_html"><div class="ttname"><a href="structkate__state.html">kate_state</a></div><div class="ttdef"><b>Definition:</b> kate.h:336</div></div>
</div><!-- fragment --> </div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
</small></address>
</body>
</html>
|