<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.xiph.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fog08</id>
	<title>XiphWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.xiph.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fog08"/>
	<link rel="alternate" type="text/html" href="https://wiki.xiph.org/Special:Contributions/Fog08"/>
	<updated>2026-05-04T06:02:37Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Etheora&amp;diff=8599</id>
		<title>Etheora</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Etheora&amp;diff=8599"/>
		<updated>2008-02-25T21:50:31Z</updated>

		<summary type="html">&lt;p&gt;Fog08: etheora_dec_configure doesn&amp;#039;t exist in etheora.c, the name of the function is etheora_dec_setup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Etheora&#039;&#039;&#039; is a a simplified API for programming theora video encoding/decoding applications with ogg containers. It uses and  encapsulates libtheora + libogg API and structures, so users need to know very few  about video and data containers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview - Encoding == &lt;br /&gt;
&lt;br /&gt;
An encoding process is made by these steps:&lt;br /&gt;
&lt;br /&gt;
 /* a context declaration. */&lt;br /&gt;
 etheora_ctx ec;&lt;br /&gt;
&lt;br /&gt;
 /* encoder configuration. */&lt;br /&gt;
 etheora_enc_configure(&amp;amp;ec, width, height, ETHEORA_ASPECT_NORMAL,&lt;br /&gt;
 fopen(&amp;quot;output-video.ogv&amp;quot;), fopen(&amp;quot;debug_info.txt&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
 /* encoder start. */&lt;br /&gt;
 etheora_enc_start(&amp;amp;ec);&lt;br /&gt;
&lt;br /&gt;
 /* drawing next frame, by puting a r,g,b or y,u,v pixel in (i,j) coordinate */&lt;br /&gt;
 etheora_enc_rgb_draw(&amp;amp;ec, i, j, r, g, b);&lt;br /&gt;
 /* alternative: etheora_enc_yuv_draw()) */&lt;br /&gt;
&lt;br /&gt;
 /* submiting frame to encoding. */&lt;br /&gt;
 etheora_enc_nextframe(&amp;amp;ec);&lt;br /&gt;
&lt;br /&gt;
 /* submiting last frame to encoding by finishing the process. */&lt;br /&gt;
 etheora_enc_finish(&amp;amp;ec);&lt;br /&gt;
&lt;br /&gt;
The functions _yuv_ and _rgb_ works transparently with OC_PF_420, OC_PF_422 and OC_PF_PF_444, having the libtheora version used support for them or not.&lt;br /&gt;
&lt;br /&gt;
== Overview - Decoding == &lt;br /&gt;
&lt;br /&gt;
The decoding process is quite similar.&lt;br /&gt;
&lt;br /&gt;
 /* a context declaration. */&lt;br /&gt;
 etheora_ctx ec;&lt;br /&gt;
&lt;br /&gt;
 /* decoder configuration. */&lt;br /&gt;
 etheora_dec_setup(&amp;amp;ec, fopen(&amp;quot;input-video.ogv&amp;quot;), fopen(&amp;quot;debug_info.txt&amp;quot;)); &lt;br /&gt;
&lt;br /&gt;
 /* decoder start. */&lt;br /&gt;
 etheora_dec_start(&amp;amp;ec); &lt;br /&gt;
&lt;br /&gt;
 /* reading video data. */&lt;br /&gt;
 etheora_get_width(&amp;amp;ec);&lt;br /&gt;
 etheora_get_heigth(&amp;amp;ec);&lt;br /&gt;
 etheora_get_fps_numerator(&amp;amp;ec);&lt;br /&gt;
 etheora_get_fps_denominator(&amp;amp;ec);&lt;br /&gt;
 etheora_get_aspect_numerator(&amp;amp;ec);&lt;br /&gt;
 etheora_get_aspect_denominator(&amp;amp;ec);&lt;br /&gt;
&lt;br /&gt;
 /* getting next frame by decoding it. */&lt;br /&gt;
 etheora_dec_nextframe(&amp;amp;ec); &lt;br /&gt;
&lt;br /&gt;
 /* getting frame data, by reading a r,g,b or y,u,v pixel in (i,j) coordinate*/&lt;br /&gt;
 etheora_dec_rgb_read(&amp;amp;ec, i, j, &amp;amp;r, &amp;amp;g, &amp;amp;b)&lt;br /&gt;
 /* alternative: etheora_dec_yuv_read()) */&lt;br /&gt;
&lt;br /&gt;
 /* finishing the process. */&lt;br /&gt;
 etheora_dec_finish(&amp;amp;ec);&lt;br /&gt;
&lt;br /&gt;
The functions _yuv_ and _rgb_ works transparently with OC_PF_420, OC_PF_422 and OC_PF_PF_444, having the libtheora version used support for them or not.&lt;br /&gt;
&lt;br /&gt;
== Overview - Going Futher == &lt;br /&gt;
&lt;br /&gt;
Etheora is documented here:&lt;br /&gt;
http://svn.xiph.org/branches/etheora-0.1/doc/etheora_documentation.pdf&lt;br /&gt;
&lt;br /&gt;
Etheora code is here:&lt;br /&gt;
http://svn.xiph.org/branches/etheora-0.1/src/&lt;br /&gt;
&lt;br /&gt;
Etheora very simple examples are found here:&lt;br /&gt;
http://svn.xiph.org/branches/etheora-0.1/examples/&lt;br /&gt;
&lt;br /&gt;
Etheora still doesn&#039;t have audio/speech support. (Although it can get video data from videos with audio). And uses internally the old libtheora API (ie, not the theora-exp).&lt;br /&gt;
&lt;br /&gt;
== TODO == &lt;br /&gt;
&lt;br /&gt;
* Vorbis support&lt;br /&gt;
* Speex support&lt;br /&gt;
* Skeleton support&lt;br /&gt;
&lt;br /&gt;
== See also == &lt;br /&gt;
{{Template:Theora}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Theora]]&lt;/div&gt;</summary>
		<author><name>Fog08</name></author>
	</entry>
	<entry>
		<id>https://wiki.xiph.org/index.php?title=Etheora&amp;diff=8598</id>
		<title>Etheora</title>
		<link rel="alternate" type="text/html" href="https://wiki.xiph.org/index.php?title=Etheora&amp;diff=8598"/>
		<updated>2008-02-25T21:49:05Z</updated>

		<summary type="html">&lt;p&gt;Fog08: I think we must declare a context not a pointer to a context. If we were doing , we should allocate memory with malloc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Etheora&#039;&#039;&#039; is a a simplified API for programming theora video encoding/decoding applications with ogg containers. It uses and  encapsulates libtheora + libogg API and structures, so users need to know very few  about video and data containers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview - Encoding == &lt;br /&gt;
&lt;br /&gt;
An encoding process is made by these steps:&lt;br /&gt;
&lt;br /&gt;
 /* a context declaration. */&lt;br /&gt;
 etheora_ctx ec;&lt;br /&gt;
&lt;br /&gt;
 /* encoder configuration. */&lt;br /&gt;
 etheora_enc_configure(&amp;amp;ec, width, height, ETHEORA_ASPECT_NORMAL,&lt;br /&gt;
 fopen(&amp;quot;output-video.ogv&amp;quot;), fopen(&amp;quot;debug_info.txt&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
 /* encoder start. */&lt;br /&gt;
 etheora_enc_start(&amp;amp;ec);&lt;br /&gt;
&lt;br /&gt;
 /* drawing next frame, by puting a r,g,b or y,u,v pixel in (i,j) coordinate */&lt;br /&gt;
 etheora_enc_rgb_draw(&amp;amp;ec, i, j, r, g, b);&lt;br /&gt;
 /* alternative: etheora_enc_yuv_draw()) */&lt;br /&gt;
&lt;br /&gt;
 /* submiting frame to encoding. */&lt;br /&gt;
 etheora_enc_nextframe(&amp;amp;ec);&lt;br /&gt;
&lt;br /&gt;
 /* submiting last frame to encoding by finishing the process. */&lt;br /&gt;
 etheora_enc_finish(&amp;amp;ec);&lt;br /&gt;
&lt;br /&gt;
The functions _yuv_ and _rgb_ works transparently with OC_PF_420, OC_PF_422 and OC_PF_PF_444, having the libtheora version used support for them or not.&lt;br /&gt;
&lt;br /&gt;
== Overview - Decoding == &lt;br /&gt;
&lt;br /&gt;
The decoding process is quite similar.&lt;br /&gt;
&lt;br /&gt;
 /* a context declaration. */&lt;br /&gt;
 etheora_ctx ec;&lt;br /&gt;
&lt;br /&gt;
 /* decoder configuration. */&lt;br /&gt;
 etheora_dec_configure(&amp;amp;ec, fopen(&amp;quot;input-video.ogv&amp;quot;), fopen(&amp;quot;debug_info.txt&amp;quot;)); &lt;br /&gt;
&lt;br /&gt;
 /* decoder start. */&lt;br /&gt;
 etheora_dec_start(&amp;amp;ec); &lt;br /&gt;
&lt;br /&gt;
 /* reading video data. */&lt;br /&gt;
 etheora_get_width(&amp;amp;ec);&lt;br /&gt;
 etheora_get_heigth(&amp;amp;ec);&lt;br /&gt;
 etheora_get_fps_numerator(&amp;amp;ec);&lt;br /&gt;
 etheora_get_fps_denominator(&amp;amp;ec);&lt;br /&gt;
 etheora_get_aspect_numerator(&amp;amp;ec);&lt;br /&gt;
 etheora_get_aspect_denominator(&amp;amp;ec);&lt;br /&gt;
&lt;br /&gt;
 /* getting next frame by decoding it. */&lt;br /&gt;
 etheora_dec_nextframe(&amp;amp;ec); &lt;br /&gt;
&lt;br /&gt;
 /* getting frame data, by reading a r,g,b or y,u,v pixel in (i,j) coordinate*/&lt;br /&gt;
 etheora_dec_rgb_read(&amp;amp;ec, i, j, &amp;amp;r, &amp;amp;g, &amp;amp;b)&lt;br /&gt;
 /* alternative: etheora_dec_yuv_read()) */&lt;br /&gt;
&lt;br /&gt;
 /* finishing the process. */&lt;br /&gt;
 etheora_dec_finish(&amp;amp;ec);&lt;br /&gt;
&lt;br /&gt;
The functions _yuv_ and _rgb_ works transparently with OC_PF_420, OC_PF_422 and OC_PF_PF_444, having the libtheora version used support for them or not.&lt;br /&gt;
&lt;br /&gt;
== Overview - Going Futher == &lt;br /&gt;
&lt;br /&gt;
Etheora is documented here:&lt;br /&gt;
http://svn.xiph.org/branches/etheora-0.1/doc/etheora_documentation.pdf&lt;br /&gt;
&lt;br /&gt;
Etheora code is here:&lt;br /&gt;
http://svn.xiph.org/branches/etheora-0.1/src/&lt;br /&gt;
&lt;br /&gt;
Etheora very simple examples are found here:&lt;br /&gt;
http://svn.xiph.org/branches/etheora-0.1/examples/&lt;br /&gt;
&lt;br /&gt;
Etheora still doesn&#039;t have audio/speech support. (Although it can get video data from videos with audio). And uses internally the old libtheora API (ie, not the theora-exp).&lt;br /&gt;
&lt;br /&gt;
== TODO == &lt;br /&gt;
&lt;br /&gt;
* Vorbis support&lt;br /&gt;
* Speex support&lt;br /&gt;
* Skeleton support&lt;br /&gt;
&lt;br /&gt;
== See also == &lt;br /&gt;
{{Template:Theora}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Theora]]&lt;/div&gt;</summary>
		<author><name>Fog08</name></author>
	</entry>
</feed>