File: decoding_8c-example.html

package info (click to toggle)
libkate 0.4.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,680 kB
  • sloc: ansic: 11,059; sh: 4,930; yacc: 2,358; python: 767; javascript: 407; lex: 363; makefile: 263
file content (143 lines) | stat: -rw-r--r-- 12,882 bytes parent folder | download
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">&#160;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&amp;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 &lt;stdio.h&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"><span class="preprocessor">#include &quot;common.h&quot;</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 &lt;<a class="code" href="oggkate_8h.html">kate/oggkate.h</a>&gt;</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(&amp;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>(&amp;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>(&amp;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&#39;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(&amp;oy,&amp;os,&amp;init,&amp;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>(&amp;ki,&amp;kc,&amp;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>(&amp;k,&amp;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(&amp;oy,&amp;os,&amp;init,&amp;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>(&amp;k,&amp;op)&gt;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>(&amp;k,&amp;ev)==0) {</div>
<div class="line">      printf(<span class="stringliteral">&quot;Kate stream has text: %s\n&quot;</span>,ev-&gt;<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&#39;s it, we can now cleanup */</span></div>
<div class="line">  ogg_stream_clear(&amp;os);</div>
<div class="line">  ogg_sync_clear(&amp;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>(&amp;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>(&amp;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>(&amp;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&#160;<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>