<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multimedia.cx/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PaulWise</id>
	<title>MultimediaWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multimedia.cx/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PaulWise"/>
	<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php/Special:Contributions/PaulWise"/>
	<updated>2026-05-13T22:29:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Voxware_Metasound&amp;diff=12114</id>
		<title>Voxware Metasound</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Voxware_Metasound&amp;diff=12114"/>
		<updated>2010-01-03T08:28:52Z</updated>

		<summary type="html">&lt;p&gt;PaulWise: link to archive.org for the encoder/decoder&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*Format tag: 0x75&lt;br /&gt;
*Sample: http://samples.mplayerhq.hu/A-codecs/VoxWare/&lt;br /&gt;
*win32 EN/DEcoder: http://web.archive.org/web/*/http://www.rjamorim.com/rrw/voxware.html (maybe useful for RE) (original domain taken by spammers)&lt;br /&gt;
&lt;br /&gt;
Audio codec presumably created by [[VoxWare]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Undiscovered Audio Codecs]]&lt;br /&gt;
[[Category:Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>PaulWise</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Indeo_5&amp;diff=10537</id>
		<title>Indeo 5</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Indeo_5&amp;diff=10537"/>
		<updated>2008-11-10T05:40:53Z</updated>

		<summary type="html">&lt;p&gt;PaulWise: fix links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FOURCCs: IV50&lt;br /&gt;
* Company: [[Intel]], then [[Ligos]]&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/V-codecs/IV50/&lt;br /&gt;
* Samples: http://ligos.com/videoclips/lions/lion_sif_ind5.zip&lt;br /&gt;
* Docs: http://www.ligos.com/pdf_docs/Indeo_doc.pdf&lt;br /&gt;
* Docs: http://www.ligos.com/pdf_docs/Indeo_FAQ.pdf&lt;br /&gt;
* Patent links: http://www.freepatentsonline.com/5532940.pdf&lt;br /&gt;
* Patent links: http://www.patentstorm.us/patents/5532940-description.html&lt;br /&gt;
== General description ==&lt;br /&gt;
&lt;br /&gt;
=== Frame layout ===&lt;br /&gt;
&lt;br /&gt;
The general indeo5 frames layout is composed of one global header, followed by the content of the three YUV plans.&lt;br /&gt;
&lt;br /&gt;
In this document, the global header is split into 3 parts:&lt;br /&gt;
* [[#Frame_header|Frame header]]: describe the kind of frame (I/P/B)&lt;br /&gt;
* [[#GOP_header|GOP header]]: some data which is true for all the frame in this GOP (present only in the first (I) frame of the GOP)&lt;br /&gt;
* [[#More_header|More header]]: some more data which is true only for this single frame&lt;br /&gt;
&lt;br /&gt;
Each YUV plan begin with a [[#Plan_header|Plan header]], containing values which are valid only for this single plan.&lt;br /&gt;
&lt;br /&gt;
=== Encoding ===&lt;br /&gt;
&lt;br /&gt;
This codec is based on the slant transform. Other used standard techniques are huffman coding and motion compensation.&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
&lt;br /&gt;
Headers are described in some tables. Each row of those tables describes a value which may be read from the frame. Those tables and rows are presented in the order of appearance in the frame.&lt;br /&gt;
&lt;br /&gt;
Here are the meaning of each columns:&lt;br /&gt;
* '''size''': The size of this value in bits. Bits are counted in LSB to MSB order. As an example, with the byte 01110000b, reading 3 bits then 5 bits will return 000b then 01110b. Reading more than 8 bits thus reads as a little-endian value. Think of the get_bits function as filling up the return value from its LSB, using the bits from each byte starting from their LSB.&lt;br /&gt;
* '''name''': Kind of variable name, used to reference the value. When a value is named valueX, it generally means we don't know it's purpose. Lines named alignmentX means that bits reader need to skip bits until next byte boundary.&lt;br /&gt;
* '''condition''': The value is present in the frame only if this condition is matched. No condition means that the value is always present.&lt;br /&gt;
* '''nb times''': How many times the value is repeated.&lt;br /&gt;
* '''comments''': Some details about the content of the value. It may also explain that a value is repeated until a certain condition is reached.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Headers ==&lt;br /&gt;
&lt;br /&gt;
=== Frame header ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! size !! name !! condition !! nb times !! comments&lt;br /&gt;
|-&lt;br /&gt;
| 5 || const1 || || || = 0x1F always&lt;br /&gt;
|-&lt;br /&gt;
| 3  || frame_flags || || ||&lt;br /&gt;
* frame_flags &amp;amp; 0x01 =&amp;gt; backward predictive&lt;br /&gt;
* frame_flags &amp;amp; 0x02 =&amp;gt; forward predictive&lt;br /&gt;
* frame_flags &amp;amp; 0x04 =&amp;gt; null frame&lt;br /&gt;
common values:&lt;br /&gt;
* 0 =&amp;gt; I frame&lt;br /&gt;
* 1 =&amp;gt; P frame&lt;br /&gt;
* 3 =&amp;gt; B frame&lt;br /&gt;
* 6 and 7 are illegal&lt;br /&gt;
|-&lt;br /&gt;
| 8 || id_in_gop || || || frame number in GOP (0 for I frame)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
null frames don't contain anything else than this header.&lt;br /&gt;
&lt;br /&gt;
=== GOP header ===&lt;br /&gt;
&lt;br /&gt;
This header is present in I frames only. The values in this header are valid during the whole GOP starting at this frame.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! size !! name !! condition !! nb times !! comments&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;gh_flags&amp;quot;&amp;gt;gh_flags&amp;lt;/span&amp;gt; || || || [[#gh_flags|gh_flags]] &amp;amp; 0x02 =&amp;gt; YV12 (default YVU9)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 16 || &amp;lt;span id=&amp;quot;value1&amp;quot;&amp;gt;value1&amp;lt;/span&amp;gt; || [[#gh_flags|gh_flags]] &amp;amp; 0x01 || || discard in decoding&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 32 || &amp;lt;span id=&amp;quot;value2&amp;quot;&amp;gt;value2&amp;lt;/span&amp;gt; || [[#gh_flags|gh_flags]] &amp;amp; 0x20 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  2 || &amp;lt;span id=&amp;quot;value3&amp;quot;&amp;gt;value3&amp;lt;/span&amp;gt; || [[#gh_flags|gh_flags]] &amp;amp; 0x40 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  3 || &amp;lt;span id=&amp;quot;value4&amp;quot;&amp;gt;value4&amp;lt;/span&amp;gt; || || || legal values are 0, 1, 2 and 6&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  4 || &amp;lt;span id=&amp;quot;res_id&amp;quot;&amp;gt;res_id&amp;lt;/span&amp;gt; || || || see [[#Resolution_table|Resolution table]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 13 || &amp;lt;span id=&amp;quot;height&amp;quot;&amp;gt;height&amp;lt;/span&amp;gt; || rowspan=&amp;quot;2&amp;quot; | [[#res_id|res_id]] == 15 || || frame height&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 13 || &amp;lt;span id=&amp;quot;width&amp;quot;&amp;gt;width&amp;lt;/span&amp;gt; || || frame width&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  6 || &amp;lt;span id=&amp;quot;value5&amp;quot;&amp;gt;value5&amp;lt;/span&amp;gt; || || rowspan=&amp;quot;2&amp;quot; | 2*n (n == 1 always?) ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  2 || &amp;lt;span id=&amp;quot;value6&amp;quot;&amp;gt;value6&amp;lt;/span&amp;gt; || [[#value5|value5]] &amp;gt;&amp;gt; 3 || need to be = 0&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  4 || &amp;lt;span id=&amp;quot;value7&amp;quot;&amp;gt;value7&amp;lt;/span&amp;gt; || rowspan=&amp;quot;2&amp;quot; | [[#gh_flags|gh_flags]] &amp;amp; 0x08 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 24 || &amp;lt;span id=&amp;quot;value8&amp;quot;&amp;gt;value8&amp;lt;/span&amp;gt; || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | ?? || &amp;lt;span id=&amp;quot;alignment1&amp;quot;&amp;gt;alignment1&amp;lt;/span&amp;gt; || || || align bits reader on next byte&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 24 || &amp;lt;span id=&amp;quot;value9&amp;quot;&amp;gt;value9&amp;lt;/span&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 16 || &amp;lt;span id=&amp;quot;value10&amp;quot;&amp;gt;value10&amp;lt;/span&amp;gt; || [[#value9|value9]] &amp;amp; 0x800000 || || loops while value10 &amp;amp; 0x8000 (probably some kind of VLC ?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== More header ===&lt;br /&gt;
&lt;br /&gt;
This header is present in all kinds of frame except null.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! size !! name !! condition !! nb times !! comments&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;mh_flags&amp;quot;&amp;gt;mh_flags&amp;lt;/span&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 24 || &amp;lt;span id=&amp;quot;frame_size&amp;quot;&amp;gt;frame_size&amp;lt;/span&amp;gt; || [[#mh_flags|mh_flags]] &amp;amp; 0x01 || || tolal size of frame data&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 16 || &amp;lt;span id=&amp;quot;value11&amp;quot;&amp;gt;value11&amp;lt;/span&amp;gt; || [[#mh_flags|mh_flags]] &amp;amp; 0x10 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;counter1&amp;quot;&amp;gt;counter1&amp;lt;/span&amp;gt; || rowspan=&amp;quot;2&amp;quot; | [[#mh_flags|mh_flags]] &amp;amp; 0x20 || || rowspan=&amp;quot;2&amp;quot; | this whole block loops while [[#counter1|counter1]] != 0&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;value12&amp;quot;&amp;gt;value12&amp;lt;/span&amp;gt; || [[#counter1|counter1]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  3 || &amp;lt;span id=&amp;quot;value13&amp;quot;&amp;gt;value13&amp;lt;/span&amp;gt; || [[#mh_flags|mh_flags]] &amp;amp; 0x40 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  4 || &amp;lt;span id=&amp;quot;counter2&amp;quot;&amp;gt;counter2&amp;lt;/span&amp;gt; || rowspan=&amp;quot;2&amp;quot; | [[#value13|value13]] == 7 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  4 || &amp;lt;span id=&amp;quot;value14&amp;quot;&amp;gt;value14&amp;lt;/span&amp;gt; || [[#counter2|counter2]] ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  3 || &amp;lt;span id=&amp;quot;value15&amp;quot;&amp;gt;value15&amp;lt;/span&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | ?? || &amp;lt;span id=&amp;quot;alignment2&amp;quot;&amp;gt;alignment2&amp;lt;/span&amp;gt; || || || align bits reader on next byte&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Plane header ===&lt;br /&gt;
&lt;br /&gt;
This header is present at the beginning of every plane.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! size !! name !! condition !! nb times !! comments&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;ph_flags&amp;quot;&amp;gt;ph_flags&amp;lt;/span&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 24 || &amp;lt;span id=&amp;quot;plan_size&amp;quot;&amp;gt;plan_size&amp;lt;/span&amp;gt; || [[#mh_flags|mh_flags]] &amp;amp; 0x80 || || tolal size of plan data&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;counter3&amp;quot;&amp;gt;counter3&amp;lt;/span&amp;gt; || rowspan=&amp;quot;3&amp;quot; | [[#ph_flags|ph_flags]] &amp;amp; 0x10 || || must be &amp;lt; 0x3E&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;value16&amp;quot;&amp;gt;value16&amp;lt;/span&amp;gt; || rowspan=&amp;quot;2&amp;quot; | [[#counter3|counter3]] ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;value17&amp;quot;&amp;gt;value17&amp;lt;/span&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  3 || &amp;lt;span id=&amp;quot;value18&amp;quot;&amp;gt;value18&amp;lt;/span&amp;gt; || [[#ph_flags|ph_flags]] &amp;amp; 0x40 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  3 || &amp;lt;span id=&amp;quot;table1_id&amp;quot;&amp;gt;table1_id&amp;lt;/span&amp;gt; || [[#ph_flags|ph_flags]] &amp;amp; 0x80 || || see [[#Table_1|Table 1]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  4 || &amp;lt;span id=&amp;quot;counter4&amp;quot;&amp;gt;counter4&amp;lt;/span&amp;gt; || rowspan=&amp;quot;2&amp;quot; | [[#table1_id|table1_id]] == 7 || || rowspan=&amp;quot;2&amp;quot; | used instead of [[#Table1|Table1]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  4 || &amp;lt;span id=&amp;quot;value19&amp;quot;&amp;gt;value19&amp;lt;/span&amp;gt; || [[#counter4|counter4]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  1 || &amp;lt;span id=&amp;quot;value20&amp;quot;&amp;gt;value20&amp;lt;/span&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 16 || &amp;lt;span id=&amp;quot;value21&amp;quot;&amp;gt;value21&amp;lt;/span&amp;gt; || [[#value20|value20]] || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  5 || &amp;lt;span id=&amp;quot;value22&amp;quot;&amp;gt;value22&amp;lt;/span&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | ?? || &amp;lt;span id=&amp;quot;alignment3&amp;quot;&amp;gt;alignment3&amp;lt;/span&amp;gt; || || || align bits reader on next byte&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;counter5&amp;quot;&amp;gt;counter5&amp;lt;/span&amp;gt; || rowspan=&amp;quot;4&amp;quot; | [[#ph_flags|ph_flags]] &amp;amp; 0x20 || || rowspan=&amp;quot;3&amp;quot; | all of this is repeated as long as [[#value23|value23]] is true&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;skip1&amp;quot;&amp;gt;skip1&amp;lt;/span&amp;gt; || [[#counter5|counter5]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  1 || &amp;lt;span id=&amp;quot;value23&amp;quot;&amp;gt;value23&amp;lt;/span&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | ?? || &amp;lt;span id=&amp;quot;alignment4&amp;quot;&amp;gt;alignment4&amp;lt;/span&amp;gt; || || align bits reader on next byte&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planes ==&lt;br /&gt;
=== Plane data ===&lt;br /&gt;
&lt;br /&gt;
Needs more analysis. Follows plane header.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! size !! name !! condition !! nb times !! comments&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  1 || &amp;lt;span id=&amp;quot;value24&amp;quot;&amp;gt;value24&amp;lt;/span&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  1 || &amp;lt;span id=&amp;quot;value25&amp;quot;&amp;gt;value25&amp;lt;/span&amp;gt; || ! [[#value24|value24]] || || plan_data_size = value25&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;value26&amp;quot;&amp;gt;value26&amp;lt;/span&amp;gt; || [[#value25|value25]] == 1 || || plan_data_size = value26&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 24 || &amp;lt;span id=&amp;quot;value27&amp;quot;&amp;gt;value27&amp;lt;/span&amp;gt; || [[#value26|value26]] == 0xFF || || plan_data_size = value27&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Block header ===&lt;br /&gt;
&lt;br /&gt;
Each plane is split into a number of blocks in the x and y directions. There is one of these headers one after another for each block in the plane.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! size !! name !! condition !! nb times !! comments&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  1 || &amp;lt;span id=&amp;quot;value28&amp;quot;&amp;gt;value28&amp;lt;/span&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  vlc || &amp;lt;span id=&amp;quot;value29&amp;quot;&amp;gt;value29&amp;lt;/span&amp;gt; || value28 &amp;amp;&amp;amp; plane_state17 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  1 || &amp;lt;span id=&amp;quot;value30&amp;quot;&amp;gt;value30&amp;lt;/span&amp;gt; || !value28 &amp;amp;&amp;amp; plane_state12 &amp;amp;&amp;amp; plane_state1 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  4 || &amp;lt;span id=&amp;quot;value31&amp;quot;&amp;gt;value31&amp;lt;/span&amp;gt; || !value28 &amp;amp;&amp;amp; four_blocks || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  1 || &amp;lt;span id=&amp;quot;value32&amp;quot;&amp;gt;value32&amp;lt;/span&amp;gt; || !value28 &amp;amp;&amp;amp; !four_blocks || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  vlc || &amp;lt;span id=&amp;quot;value33&amp;quot;&amp;gt;value33&amp;lt;/span&amp;gt; || !value28 &amp;amp;&amp;amp; plane_state14 &amp;amp;&amp;amp; !plane_state13 &amp;amp;&amp;amp; (plane_state17 &amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt; value31/2) || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  vlc || &amp;lt;span id=&amp;quot;value34&amp;quot;&amp;gt;value34&amp;lt;/span&amp;gt; || rowspan=2 | !value28 &amp;amp;&amp;amp; !(block_state4 &amp;amp; 2) &amp;amp;&amp;amp; !plane_state12 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  vlc || &amp;lt;span id=&amp;quot;value35&amp;quot;&amp;gt;value35&amp;lt;/span&amp;gt; || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The 'plane_state' states come from plane parsing; they are yet to be connected to the previous data.&lt;br /&gt;
&lt;br /&gt;
block_state4 is too complicated to explain here, sorry!&lt;br /&gt;
&lt;br /&gt;
=== Block data ===&lt;br /&gt;
&lt;br /&gt;
Follows block header. One of these for each plane that has 'plane_flags&amp;amp;1'. The variable 'run' starts at -1 and carries over from one coded plane to the next. I don't really know what I'm doing with vlc's so the names might not be correct... but their functional description is.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! size !! name !! condition !! nb times !! comments&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  vlc || &amp;lt;span id=&amp;quot;vlc&amp;quot;&amp;gt;vlc&amp;lt;/span&amp;gt; || || rowspan=4 valign=top | while (vlc != vlcEnd) ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  vlc || &amp;lt;span id=&amp;quot;run_add&amp;quot;&amp;gt;run_add&amp;lt;/span&amp;gt; || rowspan=3 | vlc == vlcEsc || run += run_add + 1&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  vlc || &amp;lt;span id=&amp;quot;lindex_lo&amp;quot;&amp;gt;lindex_lo&amp;lt;/span&amp;gt; || rowspan=2 | lindex = lindex_lo &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; (lindex_hi&amp;lt;&amp;lt;6)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  vlc || &amp;lt;span id=&amp;quot;lindex_hi&amp;quot;&amp;gt;lindex_hi&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If vlc != vlcEsc then run_add is run_table[vlc], lindex is lindex_table[vlc].&lt;br /&gt;
&lt;br /&gt;
After each loop, stored coefficient is: block[ scan_table[run] ] = level_tables[run][lindex-1].&lt;br /&gt;
&lt;br /&gt;
The values of vlcEnd and vlcEsc are variable, as is the vlc table itself. However, they are all fixed for all the planes in the same block. run_table, lindex_table, scan_table are also fixed-per-block. level_tables is per-plane.&lt;br /&gt;
&lt;br /&gt;
== Annexes ==&lt;br /&gt;
&lt;br /&gt;
=== Resolution table ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
! bgcolor=&amp;quot;#f0f0f0&amp;quot; | res_id&lt;br /&gt;
| 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10 || 11&lt;br /&gt;
|-&lt;br /&gt;
! bgcolor=&amp;quot;#f0f0f0&amp;quot; | width&lt;br /&gt;
| 640 || 320 || 160 || 704 || 352 || 352 || 176 || 240 || 640 || 704 || 80 || 88&lt;br /&gt;
|-&lt;br /&gt;
! bgcolor=&amp;quot;#f0f0f0&amp;quot; | height&lt;br /&gt;
| 480 || 240 || 120 || 224 || 240 || 288 || 144 || 180 || 240 || 240 || 60 || 72&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Table 1 ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
! bgcolor=&amp;quot;#f0f0f0&amp;quot; | table1_id&lt;br /&gt;
| 0 || 1 || 2 || 3 || 4 || 5 || 6 || default&lt;br /&gt;
|-&lt;br /&gt;
! bgcolor=&amp;quot;#f0f0f0&amp;quot; | counter4&lt;br /&gt;
| 10 || 11 || 12 || 13 || 11 || 13 || 13 || 9&lt;br /&gt;
|-&lt;br /&gt;
! valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#f0f0f0&amp;quot; | value19&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
default is used when !([[#ph_flags|ph_flags]] &amp;amp; 0x80)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Undiscovered Video Codecs]]&lt;br /&gt;
[[Category:Video Codecs]]&lt;/div&gt;</summary>
		<author><name>PaulWise</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Indeo_5&amp;diff=10536</id>
		<title>Indeo 5</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Indeo_5&amp;diff=10536"/>
		<updated>2008-11-10T05:40:02Z</updated>

		<summary type="html">&lt;p&gt;PaulWise: add second samples link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FOURCCs: IV50&lt;br /&gt;
* Company: [[Intel]], then [[Ligos]]&lt;br /&gt;
* Samples: [http://samples.mplayerhq.hu/V-codecs/IV50/ http://samples.mplayerhq.hu/V-codecs/IV50/]&lt;br /&gt;
* Samples: [http://ligos.com/videoclips/lions/lion_sif_ind5.zip]&lt;br /&gt;
* Docs: http://www.ligos.com/pdf_docs/Indeo_doc.pdf&lt;br /&gt;
* Docs: http://www.ligos.com/pdf_docs/Indeo_FAQ.pdf&lt;br /&gt;
* Patent links: http://www.freepatentsonline.com/5532940.pdf&lt;br /&gt;
* Patent links: http://www.patentstorm.us/patents/5532940-description.html&lt;br /&gt;
== General description ==&lt;br /&gt;
&lt;br /&gt;
=== Frame layout ===&lt;br /&gt;
&lt;br /&gt;
The general indeo5 frames layout is composed of one global header, followed by the content of the three YUV plans.&lt;br /&gt;
&lt;br /&gt;
In this document, the global header is split into 3 parts:&lt;br /&gt;
* [[#Frame_header|Frame header]]: describe the kind of frame (I/P/B)&lt;br /&gt;
* [[#GOP_header|GOP header]]: some data which is true for all the frame in this GOP (present only in the first (I) frame of the GOP)&lt;br /&gt;
* [[#More_header|More header]]: some more data which is true only for this single frame&lt;br /&gt;
&lt;br /&gt;
Each YUV plan begin with a [[#Plan_header|Plan header]], containing values which are valid only for this single plan.&lt;br /&gt;
&lt;br /&gt;
=== Encoding ===&lt;br /&gt;
&lt;br /&gt;
This codec is based on the slant transform. Other used standard techniques are huffman coding and motion compensation.&lt;br /&gt;
&lt;br /&gt;
=== Conventions ===&lt;br /&gt;
&lt;br /&gt;
Headers are described in some tables. Each row of those tables describes a value which may be read from the frame. Those tables and rows are presented in the order of appearance in the frame.&lt;br /&gt;
&lt;br /&gt;
Here are the meaning of each columns:&lt;br /&gt;
* '''size''': The size of this value in bits. Bits are counted in LSB to MSB order. As an example, with the byte 01110000b, reading 3 bits then 5 bits will return 000b then 01110b. Reading more than 8 bits thus reads as a little-endian value. Think of the get_bits function as filling up the return value from its LSB, using the bits from each byte starting from their LSB.&lt;br /&gt;
* '''name''': Kind of variable name, used to reference the value. When a value is named valueX, it generally means we don't know it's purpose. Lines named alignmentX means that bits reader need to skip bits until next byte boundary.&lt;br /&gt;
* '''condition''': The value is present in the frame only if this condition is matched. No condition means that the value is always present.&lt;br /&gt;
* '''nb times''': How many times the value is repeated.&lt;br /&gt;
* '''comments''': Some details about the content of the value. It may also explain that a value is repeated until a certain condition is reached.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Headers ==&lt;br /&gt;
&lt;br /&gt;
=== Frame header ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! size !! name !! condition !! nb times !! comments&lt;br /&gt;
|-&lt;br /&gt;
| 5 || const1 || || || = 0x1F always&lt;br /&gt;
|-&lt;br /&gt;
| 3  || frame_flags || || ||&lt;br /&gt;
* frame_flags &amp;amp; 0x01 =&amp;gt; backward predictive&lt;br /&gt;
* frame_flags &amp;amp; 0x02 =&amp;gt; forward predictive&lt;br /&gt;
* frame_flags &amp;amp; 0x04 =&amp;gt; null frame&lt;br /&gt;
common values:&lt;br /&gt;
* 0 =&amp;gt; I frame&lt;br /&gt;
* 1 =&amp;gt; P frame&lt;br /&gt;
* 3 =&amp;gt; B frame&lt;br /&gt;
* 6 and 7 are illegal&lt;br /&gt;
|-&lt;br /&gt;
| 8 || id_in_gop || || || frame number in GOP (0 for I frame)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
null frames don't contain anything else than this header.&lt;br /&gt;
&lt;br /&gt;
=== GOP header ===&lt;br /&gt;
&lt;br /&gt;
This header is present in I frames only. The values in this header are valid during the whole GOP starting at this frame.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! size !! name !! condition !! nb times !! comments&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;gh_flags&amp;quot;&amp;gt;gh_flags&amp;lt;/span&amp;gt; || || || [[#gh_flags|gh_flags]] &amp;amp; 0x02 =&amp;gt; YV12 (default YVU9)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 16 || &amp;lt;span id=&amp;quot;value1&amp;quot;&amp;gt;value1&amp;lt;/span&amp;gt; || [[#gh_flags|gh_flags]] &amp;amp; 0x01 || || discard in decoding&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 32 || &amp;lt;span id=&amp;quot;value2&amp;quot;&amp;gt;value2&amp;lt;/span&amp;gt; || [[#gh_flags|gh_flags]] &amp;amp; 0x20 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  2 || &amp;lt;span id=&amp;quot;value3&amp;quot;&amp;gt;value3&amp;lt;/span&amp;gt; || [[#gh_flags|gh_flags]] &amp;amp; 0x40 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  3 || &amp;lt;span id=&amp;quot;value4&amp;quot;&amp;gt;value4&amp;lt;/span&amp;gt; || || || legal values are 0, 1, 2 and 6&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  4 || &amp;lt;span id=&amp;quot;res_id&amp;quot;&amp;gt;res_id&amp;lt;/span&amp;gt; || || || see [[#Resolution_table|Resolution table]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 13 || &amp;lt;span id=&amp;quot;height&amp;quot;&amp;gt;height&amp;lt;/span&amp;gt; || rowspan=&amp;quot;2&amp;quot; | [[#res_id|res_id]] == 15 || || frame height&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 13 || &amp;lt;span id=&amp;quot;width&amp;quot;&amp;gt;width&amp;lt;/span&amp;gt; || || frame width&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  6 || &amp;lt;span id=&amp;quot;value5&amp;quot;&amp;gt;value5&amp;lt;/span&amp;gt; || || rowspan=&amp;quot;2&amp;quot; | 2*n (n == 1 always?) ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  2 || &amp;lt;span id=&amp;quot;value6&amp;quot;&amp;gt;value6&amp;lt;/span&amp;gt; || [[#value5|value5]] &amp;gt;&amp;gt; 3 || need to be = 0&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  4 || &amp;lt;span id=&amp;quot;value7&amp;quot;&amp;gt;value7&amp;lt;/span&amp;gt; || rowspan=&amp;quot;2&amp;quot; | [[#gh_flags|gh_flags]] &amp;amp; 0x08 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 24 || &amp;lt;span id=&amp;quot;value8&amp;quot;&amp;gt;value8&amp;lt;/span&amp;gt; || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | ?? || &amp;lt;span id=&amp;quot;alignment1&amp;quot;&amp;gt;alignment1&amp;lt;/span&amp;gt; || || || align bits reader on next byte&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 24 || &amp;lt;span id=&amp;quot;value9&amp;quot;&amp;gt;value9&amp;lt;/span&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 16 || &amp;lt;span id=&amp;quot;value10&amp;quot;&amp;gt;value10&amp;lt;/span&amp;gt; || [[#value9|value9]] &amp;amp; 0x800000 || || loops while value10 &amp;amp; 0x8000 (probably some kind of VLC ?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== More header ===&lt;br /&gt;
&lt;br /&gt;
This header is present in all kinds of frame except null.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! size !! name !! condition !! nb times !! comments&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;mh_flags&amp;quot;&amp;gt;mh_flags&amp;lt;/span&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 24 || &amp;lt;span id=&amp;quot;frame_size&amp;quot;&amp;gt;frame_size&amp;lt;/span&amp;gt; || [[#mh_flags|mh_flags]] &amp;amp; 0x01 || || tolal size of frame data&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 16 || &amp;lt;span id=&amp;quot;value11&amp;quot;&amp;gt;value11&amp;lt;/span&amp;gt; || [[#mh_flags|mh_flags]] &amp;amp; 0x10 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;counter1&amp;quot;&amp;gt;counter1&amp;lt;/span&amp;gt; || rowspan=&amp;quot;2&amp;quot; | [[#mh_flags|mh_flags]] &amp;amp; 0x20 || || rowspan=&amp;quot;2&amp;quot; | this whole block loops while [[#counter1|counter1]] != 0&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;value12&amp;quot;&amp;gt;value12&amp;lt;/span&amp;gt; || [[#counter1|counter1]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  3 || &amp;lt;span id=&amp;quot;value13&amp;quot;&amp;gt;value13&amp;lt;/span&amp;gt; || [[#mh_flags|mh_flags]] &amp;amp; 0x40 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  4 || &amp;lt;span id=&amp;quot;counter2&amp;quot;&amp;gt;counter2&amp;lt;/span&amp;gt; || rowspan=&amp;quot;2&amp;quot; | [[#value13|value13]] == 7 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  4 || &amp;lt;span id=&amp;quot;value14&amp;quot;&amp;gt;value14&amp;lt;/span&amp;gt; || [[#counter2|counter2]] ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  3 || &amp;lt;span id=&amp;quot;value15&amp;quot;&amp;gt;value15&amp;lt;/span&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | ?? || &amp;lt;span id=&amp;quot;alignment2&amp;quot;&amp;gt;alignment2&amp;lt;/span&amp;gt; || || || align bits reader on next byte&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Plane header ===&lt;br /&gt;
&lt;br /&gt;
This header is present at the beginning of every plane.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! size !! name !! condition !! nb times !! comments&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;ph_flags&amp;quot;&amp;gt;ph_flags&amp;lt;/span&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 24 || &amp;lt;span id=&amp;quot;plan_size&amp;quot;&amp;gt;plan_size&amp;lt;/span&amp;gt; || [[#mh_flags|mh_flags]] &amp;amp; 0x80 || || tolal size of plan data&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;counter3&amp;quot;&amp;gt;counter3&amp;lt;/span&amp;gt; || rowspan=&amp;quot;3&amp;quot; | [[#ph_flags|ph_flags]] &amp;amp; 0x10 || || must be &amp;lt; 0x3E&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;value16&amp;quot;&amp;gt;value16&amp;lt;/span&amp;gt; || rowspan=&amp;quot;2&amp;quot; | [[#counter3|counter3]] ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;value17&amp;quot;&amp;gt;value17&amp;lt;/span&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  3 || &amp;lt;span id=&amp;quot;value18&amp;quot;&amp;gt;value18&amp;lt;/span&amp;gt; || [[#ph_flags|ph_flags]] &amp;amp; 0x40 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  3 || &amp;lt;span id=&amp;quot;table1_id&amp;quot;&amp;gt;table1_id&amp;lt;/span&amp;gt; || [[#ph_flags|ph_flags]] &amp;amp; 0x80 || || see [[#Table_1|Table 1]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  4 || &amp;lt;span id=&amp;quot;counter4&amp;quot;&amp;gt;counter4&amp;lt;/span&amp;gt; || rowspan=&amp;quot;2&amp;quot; | [[#table1_id|table1_id]] == 7 || || rowspan=&amp;quot;2&amp;quot; | used instead of [[#Table1|Table1]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  4 || &amp;lt;span id=&amp;quot;value19&amp;quot;&amp;gt;value19&amp;lt;/span&amp;gt; || [[#counter4|counter4]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  1 || &amp;lt;span id=&amp;quot;value20&amp;quot;&amp;gt;value20&amp;lt;/span&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 16 || &amp;lt;span id=&amp;quot;value21&amp;quot;&amp;gt;value21&amp;lt;/span&amp;gt; || [[#value20|value20]] || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  5 || &amp;lt;span id=&amp;quot;value22&amp;quot;&amp;gt;value22&amp;lt;/span&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | ?? || &amp;lt;span id=&amp;quot;alignment3&amp;quot;&amp;gt;alignment3&amp;lt;/span&amp;gt; || || || align bits reader on next byte&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;counter5&amp;quot;&amp;gt;counter5&amp;lt;/span&amp;gt; || rowspan=&amp;quot;4&amp;quot; | [[#ph_flags|ph_flags]] &amp;amp; 0x20 || || rowspan=&amp;quot;3&amp;quot; | all of this is repeated as long as [[#value23|value23]] is true&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;skip1&amp;quot;&amp;gt;skip1&amp;lt;/span&amp;gt; || [[#counter5|counter5]]&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  1 || &amp;lt;span id=&amp;quot;value23&amp;quot;&amp;gt;value23&amp;lt;/span&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | ?? || &amp;lt;span id=&amp;quot;alignment4&amp;quot;&amp;gt;alignment4&amp;lt;/span&amp;gt; || || align bits reader on next byte&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Planes ==&lt;br /&gt;
=== Plane data ===&lt;br /&gt;
&lt;br /&gt;
Needs more analysis. Follows plane header.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! size !! name !! condition !! nb times !! comments&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  1 || &amp;lt;span id=&amp;quot;value24&amp;quot;&amp;gt;value24&amp;lt;/span&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  1 || &amp;lt;span id=&amp;quot;value25&amp;quot;&amp;gt;value25&amp;lt;/span&amp;gt; || ! [[#value24|value24]] || || plan_data_size = value25&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  8 || &amp;lt;span id=&amp;quot;value26&amp;quot;&amp;gt;value26&amp;lt;/span&amp;gt; || [[#value25|value25]] == 1 || || plan_data_size = value26&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; | 24 || &amp;lt;span id=&amp;quot;value27&amp;quot;&amp;gt;value27&amp;lt;/span&amp;gt; || [[#value26|value26]] == 0xFF || || plan_data_size = value27&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Block header ===&lt;br /&gt;
&lt;br /&gt;
Each plane is split into a number of blocks in the x and y directions. There is one of these headers one after another for each block in the plane.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! size !! name !! condition !! nb times !! comments&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  1 || &amp;lt;span id=&amp;quot;value28&amp;quot;&amp;gt;value28&amp;lt;/span&amp;gt; || || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  vlc || &amp;lt;span id=&amp;quot;value29&amp;quot;&amp;gt;value29&amp;lt;/span&amp;gt; || value28 &amp;amp;&amp;amp; plane_state17 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  1 || &amp;lt;span id=&amp;quot;value30&amp;quot;&amp;gt;value30&amp;lt;/span&amp;gt; || !value28 &amp;amp;&amp;amp; plane_state12 &amp;amp;&amp;amp; plane_state1 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  4 || &amp;lt;span id=&amp;quot;value31&amp;quot;&amp;gt;value31&amp;lt;/span&amp;gt; || !value28 &amp;amp;&amp;amp; four_blocks || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  1 || &amp;lt;span id=&amp;quot;value32&amp;quot;&amp;gt;value32&amp;lt;/span&amp;gt; || !value28 &amp;amp;&amp;amp; !four_blocks || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  vlc || &amp;lt;span id=&amp;quot;value33&amp;quot;&amp;gt;value33&amp;lt;/span&amp;gt; || !value28 &amp;amp;&amp;amp; plane_state14 &amp;amp;&amp;amp; !plane_state13 &amp;amp;&amp;amp; (plane_state17 &amp;lt;nowiki&amp;gt;||&amp;lt;/nowiki&amp;gt; value31/2) || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  vlc || &amp;lt;span id=&amp;quot;value34&amp;quot;&amp;gt;value34&amp;lt;/span&amp;gt; || rowspan=2 | !value28 &amp;amp;&amp;amp; !(block_state4 &amp;amp; 2) &amp;amp;&amp;amp; !plane_state12 || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  vlc || &amp;lt;span id=&amp;quot;value35&amp;quot;&amp;gt;value35&amp;lt;/span&amp;gt; || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The 'plane_state' states come from plane parsing; they are yet to be connected to the previous data.&lt;br /&gt;
&lt;br /&gt;
block_state4 is too complicated to explain here, sorry!&lt;br /&gt;
&lt;br /&gt;
=== Block data ===&lt;br /&gt;
&lt;br /&gt;
Follows block header. One of these for each plane that has 'plane_flags&amp;amp;1'. The variable 'run' starts at -1 and carries over from one coded plane to the next. I don't really know what I'm doing with vlc's so the names might not be correct... but their functional description is.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#f0f0f0&amp;quot; |&lt;br /&gt;
! size !! name !! condition !! nb times !! comments&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  vlc || &amp;lt;span id=&amp;quot;vlc&amp;quot;&amp;gt;vlc&amp;lt;/span&amp;gt; || || rowspan=4 valign=top | while (vlc != vlcEnd) ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  vlc || &amp;lt;span id=&amp;quot;run_add&amp;quot;&amp;gt;run_add&amp;lt;/span&amp;gt; || rowspan=3 | vlc == vlcEsc || run += run_add + 1&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  vlc || &amp;lt;span id=&amp;quot;lindex_lo&amp;quot;&amp;gt;lindex_lo&amp;lt;/span&amp;gt; || rowspan=2 | lindex = lindex_lo &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; (lindex_hi&amp;lt;&amp;lt;6)&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;right&amp;quot; |  vlc || &amp;lt;span id=&amp;quot;lindex_hi&amp;quot;&amp;gt;lindex_hi&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If vlc != vlcEsc then run_add is run_table[vlc], lindex is lindex_table[vlc].&lt;br /&gt;
&lt;br /&gt;
After each loop, stored coefficient is: block[ scan_table[run] ] = level_tables[run][lindex-1].&lt;br /&gt;
&lt;br /&gt;
The values of vlcEnd and vlcEsc are variable, as is the vlc table itself. However, they are all fixed for all the planes in the same block. run_table, lindex_table, scan_table are also fixed-per-block. level_tables is per-plane.&lt;br /&gt;
&lt;br /&gt;
== Annexes ==&lt;br /&gt;
&lt;br /&gt;
=== Resolution table ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
! bgcolor=&amp;quot;#f0f0f0&amp;quot; | res_id&lt;br /&gt;
| 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10 || 11&lt;br /&gt;
|-&lt;br /&gt;
! bgcolor=&amp;quot;#f0f0f0&amp;quot; | width&lt;br /&gt;
| 640 || 320 || 160 || 704 || 352 || 352 || 176 || 240 || 640 || 704 || 80 || 88&lt;br /&gt;
|-&lt;br /&gt;
! bgcolor=&amp;quot;#f0f0f0&amp;quot; | height&lt;br /&gt;
| 480 || 240 || 120 || 224 || 240 || 288 || 144 || 180 || 240 || 240 || 60 || 72&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Table 1 ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse: collapse; border-style: dashed; border-color: #2f6fab;&amp;quot;&lt;br /&gt;
! bgcolor=&amp;quot;#f0f0f0&amp;quot; | table1_id&lt;br /&gt;
| 0 || 1 || 2 || 3 || 4 || 5 || 6 || default&lt;br /&gt;
|-&lt;br /&gt;
! bgcolor=&amp;quot;#f0f0f0&amp;quot; | counter4&lt;br /&gt;
| 10 || 11 || 12 || 13 || 11 || 13 || 13 || 9&lt;br /&gt;
|-&lt;br /&gt;
! valign=&amp;quot;top&amp;quot; bgcolor=&amp;quot;#f0f0f0&amp;quot; | value19&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
| 3&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
default is used when !([[#ph_flags|ph_flags]] &amp;amp; 0x80)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Undiscovered Video Codecs]]&lt;br /&gt;
[[Category:Video Codecs]]&lt;/div&gt;</summary>
		<author><name>PaulWise</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=User:PaulWise&amp;diff=7079</id>
		<title>User:PaulWise</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=User:PaulWise&amp;diff=7079"/>
		<updated>2007-02-27T06:44:27Z</updated>

		<summary type="html">&lt;p&gt;PaulWise: add my homepage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Website: http://pabs.zip.to&lt;/div&gt;</summary>
		<author><name>PaulWise</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Digitrakker&amp;diff=7078</id>
		<title>Digitrakker</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Digitrakker&amp;diff=7078"/>
		<updated>2007-02-27T06:43:47Z</updated>

		<summary type="html">&lt;p&gt;PaulWise: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extension: mdl&lt;br /&gt;
* Website: [http://web.archive.org/web/*/www.informatik.uni-oldenburg.de/~bexxx/productions.html http://www.informatik.uni-oldenburg.de/~bexxx/productions.html]&lt;br /&gt;
* Format: FORMAT.TXT in [http://web.archive.org/web/*/www.informatik.uni-oldenburg.de/~bexxx/productions/digitr31.zip digitr31.zip]&lt;br /&gt;
&lt;br /&gt;
[[Category: Music Pattern Formats]]&lt;/div&gt;</summary>
		<author><name>PaulWise</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Digitrakker&amp;diff=7077</id>
		<title>Digitrakker</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Digitrakker&amp;diff=7077"/>
		<updated>2007-02-27T06:42:55Z</updated>

		<summary type="html">&lt;p&gt;PaulWise: add links to Digitrakker format information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Extension: mdl&lt;br /&gt;
* Website: http://web.archive.org/web/*/www.informatik.uni-oldenburg.de/~bexxx/productions.html&lt;br /&gt;
* Format description: FORMAT.TXT in [http://web.archive.org/web/*/www.informatik.uni-oldenburg.de/~bexxx/productions/digitr31.zip digitr31.zip]&lt;br /&gt;
&lt;br /&gt;
[[Category: Music Pattern Formats]]&lt;/div&gt;</summary>
		<author><name>PaulWise</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Reverse_Engineering_Tools&amp;diff=6910</id>
		<title>Reverse Engineering Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Reverse_Engineering_Tools&amp;diff=6910"/>
		<updated>2007-02-02T06:08:21Z</updated>

		<summary type="html">&lt;p&gt;PaulWise: ethereal -&amp;gt; wireshark&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a list of free (mostly as in beer) tools that can be used to aid Reverse Engineering.&lt;br /&gt;
The list is divided into software that can be run under Win32 only, Win32/Wine and Linux/Unix.&lt;br /&gt;
&lt;br /&gt;
==Disassemblers==&lt;br /&gt;
=== Win32/Wine ===&lt;br /&gt;
* [[IDA Pro]]&lt;br /&gt;
&lt;br /&gt;
=== Win32 only ===&lt;br /&gt;
* [[OllyDbg]]&lt;br /&gt;
&lt;br /&gt;
=== Linux/Unix ===&lt;br /&gt;
* [[objdump]]&lt;br /&gt;
* [[hte|HT Editor]]&lt;br /&gt;
* [[Boomerang]]&lt;br /&gt;
* [[Rewind]]&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
* [http://www.multimedia.cx/pre/re-retroguard.html Java De-obfuscation]&lt;br /&gt;
* [http://www.kpdus.com/jad.html jad - Java Disassembler]&lt;br /&gt;
&lt;br /&gt;
=== Cross Platform ===&lt;br /&gt;
* [[Sang Cho's Win32 Disassembler]]&lt;br /&gt;
* [http://rr0d.droids-corp.org/ Rasta Ring 0 Debugger (RR0D)]&lt;br /&gt;
&lt;br /&gt;
== Network Analysis ==&lt;br /&gt;
* [[WireShark]]&lt;br /&gt;
* [[Internet Junkbuster]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [[Hachoir]]: File parser framework written in Python&lt;br /&gt;
&lt;br /&gt;
[[Category:RE Tools]]&lt;/div&gt;</summary>
		<author><name>PaulWise</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=WireShark&amp;diff=6909</id>
		<title>WireShark</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=WireShark&amp;diff=6909"/>
		<updated>2007-02-02T06:07:45Z</updated>

		<summary type="html">&lt;p&gt;PaulWise: ethereal -&amp;gt; wireshark&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Website: http://www.wireshark.org/&lt;br /&gt;
&lt;br /&gt;
Wireshark is a free, open source network protocol analyzer. It can be useful for capturing data packets on the network wire for later analysis to understand how proprietary multimedia networking protocols operate.&lt;br /&gt;
&lt;br /&gt;
[[Category:RE Tools]]&lt;/div&gt;</summary>
		<author><name>PaulWise</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Ethereal&amp;diff=6908</id>
		<title>Ethereal</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Ethereal&amp;diff=6908"/>
		<updated>2007-02-02T06:07:00Z</updated>

		<summary type="html">&lt;p&gt;PaulWise: Ethereal moved to WireShark: Ethereal has been renamed to wireshark&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[WireShark]]&lt;/div&gt;</summary>
		<author><name>PaulWise</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=WireShark&amp;diff=6907</id>
		<title>WireShark</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=WireShark&amp;diff=6907"/>
		<updated>2007-02-02T06:07:00Z</updated>

		<summary type="html">&lt;p&gt;PaulWise: Ethereal moved to WireShark: Ethereal has been renamed to wireshark&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Website: http://ethereal.com/&lt;br /&gt;
&lt;br /&gt;
Ethereal is a free, open source network protocol analyzer. It can be useful for capturing data packets on the network wire for later analysis to understand how proprietary multimedia networking protocols operate.&lt;br /&gt;
&lt;br /&gt;
[[Category:RE Tools]]&lt;/div&gt;</summary>
		<author><name>PaulWise</name></author>
	</entry>
</feed>