<?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=Mat</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=Mat"/>
	<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php/Special:Contributions/Mat"/>
	<updated>2026-04-24T08:54:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Interesting_Patches&amp;diff=10246</id>
		<title>Interesting Patches</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Interesting_Patches&amp;diff=10246"/>
		<updated>2008-06-28T07:28:35Z</updated>

		<summary type="html">&lt;p&gt;Mat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page tries to collect some useful patches that didn't make into SVN for some reason or another.&lt;br /&gt;
&lt;br /&gt;
== native [[Zlib]] decoder by Mans Rullgard ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-July/032820.html&lt;br /&gt;
&lt;br /&gt;
In the same thread, there are patches to use the native decoder in several FFmpeg decoders.&lt;br /&gt;
&lt;br /&gt;
== [[WMV3]] encoder by Denis Fortin ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-June/031699.html&lt;br /&gt;
&lt;br /&gt;
== [[H.263]] rtp patch ==&lt;br /&gt;
http://www.voxgratia.org/bin/ffmpeg-0.4.7.patch.zip, originally at http://www.salyens.com/downloads/index.html#ffmpeg-0.4.7, now removed.&lt;br /&gt;
&lt;br /&gt;
== [[Apple RPZA]] encoder by Todd Kirby ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2005-June/001673.html&lt;br /&gt;
&lt;br /&gt;
== 1 and 2 bit [[Apple QuickTime RLE|QTRLE]] decoder by Roberto Togni ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-January/022046.html&lt;br /&gt;
&lt;br /&gt;
== Test Pattern Generator Demuxer by Nicholas George ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-October/036838.html&lt;br /&gt;
&lt;br /&gt;
== Test Pattern Generator Demuxer by [[User:Angustia|Ramiro Ribeiro Polla]] ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-April/028226.html&lt;br /&gt;
Or &lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/49447&lt;br /&gt;
&lt;br /&gt;
== PES packetizer by Xiaohui Sun ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-September/034849.html&lt;br /&gt;
&lt;br /&gt;
Part of the work of [[FFmpeg Summer Of Code#TS Muxer|Summer Of Code TS Muxer]]&lt;br /&gt;
&lt;br /&gt;
== Imlib2script: a scriptable vhook by [[User:Wzrlpy|Víctor Paesa]] ==&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/52341&lt;br /&gt;
&lt;br /&gt;
== vf_imlib2: a libavfilter filter by [[User:Wzrlpy|Víctor Paesa]] ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-soc/2007-December/002162.html&lt;br /&gt;
&lt;br /&gt;
== File concatenation by Wolfram Gloger ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-July/032131.html&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;mem&amp;quot; file protocol by Lagrange Multiplier ==&lt;br /&gt;
The &amp;quot;mem&amp;quot; protocol simply uses RAM as a source for input multimedia data, akin to how the &amp;quot;file&amp;quot; and &amp;quot;pipe&amp;quot; protocols use filesystem files and pipes as sources.&lt;br /&gt;
&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-May/028489.html&lt;br /&gt;
&lt;br /&gt;
== Presets/profiles for usual targets by Panagiotis Issaris ==&lt;br /&gt;
Allow to keep in a text file groups of command options, and apply them at once by specifying the target name.&lt;br /&gt;
&lt;br /&gt;
Handy for iPod, PSP, or any other picky multimedia player that otherwise requires lengthy command lines.&lt;br /&gt;
&lt;br /&gt;
http://article.gmane.org/gmane.comp.video.ffmpeg.devel/37244&lt;br /&gt;
&lt;br /&gt;
== PiP (Picture in Picture): a vhook filter by Mihail Stoyanov ==&lt;br /&gt;
http://article.gmane.org/gmane.comp.video.ffmpeg.devel/38896&lt;br /&gt;
&lt;br /&gt;
== [[MLP]]/[[TrueHD]] decoder by Ian Caulfield ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-January/040234.html&lt;br /&gt;
&lt;br /&gt;
More details in the [[Small FFmpeg Tasks#Cleanup of MLP decoder|Small FFmpeg Tasks]] page.&lt;br /&gt;
&lt;br /&gt;
== [[AMV]] encoder ==&lt;br /&gt;
http://code.google.com/p/amv-codec-tools/&lt;br /&gt;
&lt;br /&gt;
See this post [http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-October/037356.html] to see what is missing to get it into SVN.&lt;br /&gt;
&lt;br /&gt;
== [[Electronic Arts Formats]] demuxer/decoder by Peter Ross==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-October/036938.html&lt;br /&gt;
The format demuxer modifications and the EA video codecs have not yet been applied to FFmpeg.&lt;br /&gt;
&lt;br /&gt;
== Experimental MSVC port by Ole André Vadla Ravnås ==&lt;br /&gt;
Code in the [http://bazaar-vcs.org bazaar] branch at http://people.collabora.co.uk/~oleavr/OABuild/bzr/ffmpeg/&lt;br /&gt;
&lt;br /&gt;
Patch at http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-March/044463.html&lt;br /&gt;
&lt;br /&gt;
== H264 encoder by Jori Liesenborgs &amp;amp; Panagiotis Issaris ==&lt;br /&gt;
http://research.edm.uhasselt.be/~h264/&lt;br /&gt;
&lt;br /&gt;
== DTS/AC3 in wav autodetection ==&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/49812/focus=49909&lt;br /&gt;
Clean up this patch and also add detection of AC3 in wav, it is similar. Samples for both can be found here: http://www.sr.se/cgi-bin/mall/artikel.asp?ProgramID=2445&amp;amp;Artikel=739973&lt;br /&gt;
&lt;br /&gt;
== [[Bink Audio]] decoder by Peter Ross ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-April/045346.html&lt;br /&gt;
&lt;br /&gt;
Note: An updated patch is available from the [[User:Suxen drol|author]].&lt;br /&gt;
&lt;br /&gt;
== G722 decoder by Chas Williams ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2008-June/048457.html&lt;br /&gt;
&lt;br /&gt;
It is basically an adaptation to FFmpeg of the [http://www.soft-switch.org/ SirenDSP] decoder.&lt;br /&gt;
&lt;br /&gt;
== [[Chinese AVS]] video encoder by [[User:StefanG|Stefan Gehrer]] ==&lt;br /&gt;
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2007-July/033286.html&lt;br /&gt;
&lt;br /&gt;
==  Lossless msmpeg4v3 to mpeg4 transcoder ==&lt;br /&gt;
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/17074&lt;br /&gt;
&lt;br /&gt;
[[Category:FFmpeg]]&lt;/div&gt;</summary>
		<author><name>Mat</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=H.264&amp;diff=7986</id>
		<title>H.264</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=H.264&amp;diff=7986"/>
		<updated>2007-05-28T19:32:56Z</updated>

		<summary type="html">&lt;p&gt;Mat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FOURCCs: AVC1, DAVC, H264, X264, VSSH&lt;br /&gt;
* Matroska CodecID: V_MPEG4/ISO/AVC&lt;br /&gt;
* Technical Description: [http://akuvian.org/src/x264/ITU-T_H264.pdf.gz http://akuvian.org/src/x264/ITU-T_H264.pdf.gz]&lt;br /&gt;
* Draft Specs from 2003: [http://www.dspr.com/www/technology/JVT-G050.pdf http://www.dspr.com/www/technology/JVT-G050.pdf]&lt;br /&gt;
* Specs : http://www.itu.int/rec/T-REC-H.264/en&lt;br /&gt;
* Samples:&lt;br /&gt;
** AVC1: http://samples.mplayerhq.hu/V-codecs/AVC1/&lt;br /&gt;
** H264: http://samples.mplayerhq.hu/V-codecs/h264/&lt;br /&gt;
** VSSH: http://samples.mplayerhq.hu/V-codecs/VSSH/&lt;br /&gt;
&lt;br /&gt;
MPEG-4 part 10 video, also known as AVC, or &amp;quot;Advanced Video Coding.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Here is a good picture comparing VC-1 and AVC.[http://home.wanadoo.nl/mvp35/S3_P3_Jeffrey_slide_10.png http://home.wanadoo.nl/mvp35/S3_P3_Jeffrey_slide_10.png]&lt;br /&gt;
&lt;br /&gt;
[[Category:Video Codecs]]&lt;/div&gt;</summary>
		<author><name>Mat</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=H.261&amp;diff=7985</id>
		<title>H.261</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=H.261&amp;diff=7985"/>
		<updated>2007-05-28T19:24:16Z</updated>

		<summary type="html">&lt;p&gt;Mat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FourCCs: D261, H261, L261, M261, V261&lt;br /&gt;
* Organization: [[ITU]]&lt;br /&gt;
* Specs : http://www.itu.int/rec/T-REC-H.261-199303-I/en&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/V-codecs/h261/&lt;br /&gt;
&lt;br /&gt;
H.261 is an early standard for video compression used in telecommunication applications.&lt;br /&gt;
&lt;br /&gt;
These implementations are believed to be identical to the standard H.261:&lt;br /&gt;
* D261: Originated at [[DEC]]&lt;br /&gt;
* L261: Originated at [[LEAD Technologies]]&lt;br /&gt;
* M261: Originated at [[Microsoft]]&lt;br /&gt;
* V261: Originated at [[Lucent]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Video Codecs]]&lt;/div&gt;</summary>
		<author><name>Mat</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=H.263&amp;diff=7984</id>
		<title>H.263</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=H.263&amp;diff=7984"/>
		<updated>2007-05-28T19:23:20Z</updated>

		<summary type="html">&lt;p&gt;Mat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FourCCs: D263, H263, L263, M263, S263, U263, X263&lt;br /&gt;
* Organization: [[ITU]]&lt;br /&gt;
* Specs : http://www.itu.int/rec/T-REC-H.263-200501-I/en&lt;br /&gt;
* Samples:&lt;br /&gt;
** h263: http://samples.mplayerhq.hu/V-codecs/h263/&lt;br /&gt;
** U263: http://samples.mplayerhq.hu/V-codecs/U263/&lt;br /&gt;
&lt;br /&gt;
H.263 is a video coding standard developed for telecommunications applications. Many other codecs are known to have borrowed concepts from the standard.&lt;br /&gt;
&lt;br /&gt;
This site containts more information as well as source code: [http://www.h263l.com/ http://www.h263l.com].&lt;br /&gt;
&lt;br /&gt;
These implementations are suspected to be identical to the standard H.263:&lt;br /&gt;
* D263: Originated at [[DEC]].&lt;br /&gt;
* L263: Originated at [[LEAD Technologies]]&lt;br /&gt;
* M263: Originated at [[Microsoft]]&lt;br /&gt;
* X263: Originated at [[Xirlink]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Video Codecs]]&lt;/div&gt;</summary>
		<author><name>Mat</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=H.261&amp;diff=7983</id>
		<title>H.261</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=H.261&amp;diff=7983"/>
		<updated>2007-05-28T19:22:01Z</updated>

		<summary type="html">&lt;p&gt;Mat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FourCCs: D261, H261, L261, M261, V261&lt;br /&gt;
* Organization: [[ITU]]&lt;br /&gt;
* Draft Specs : http://www.itu.int/rec/T-REC-H.261-199012-S/en&lt;br /&gt;
* Samples: http://samples.mplayerhq.hu/V-codecs/h261/&lt;br /&gt;
&lt;br /&gt;
H.261 is an early standard for video compression used in telecommunication applications.&lt;br /&gt;
&lt;br /&gt;
These implementations are believed to be identical to the standard H.261:&lt;br /&gt;
* D261: Originated at [[DEC]]&lt;br /&gt;
* L261: Originated at [[LEAD Technologies]]&lt;br /&gt;
* M261: Originated at [[Microsoft]]&lt;br /&gt;
* V261: Originated at [[Lucent]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Video Codecs]]&lt;/div&gt;</summary>
		<author><name>Mat</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Valgrind&amp;diff=7738</id>
		<title>Valgrind</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Valgrind&amp;diff=7738"/>
		<updated>2007-04-21T20:17:10Z</updated>

		<summary type="html">&lt;p&gt;Mat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://valgrind.org/ Valgrind] is an suite of tools for debugging and profiling Linux programs.&lt;br /&gt;
&lt;br /&gt;
The Callgrind tools allow to profile a program.&lt;br /&gt;
&lt;br /&gt;
When it is used with &amp;quot;--dump-instr=yes --trace-jump=yes&amp;quot; and the result is displayed with [http://kcachegrind.sourceforge.net/cgi-bin/show.cgi/KcacheGrindIndex], you could see :&lt;br /&gt;
 - function call tracing&lt;br /&gt;
 - executed calltree graphing&lt;br /&gt;
 - jmp tracing and graphing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemple ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ valgrind --tool=callgrind --dump-instr=yes --trace-jump=yes ffplay&lt;br /&gt;
 $ kcachegrind callgrind.$pid&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: RE Tools]]&lt;/div&gt;</summary>
		<author><name>Mat</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Reverse_Engineering_Tools&amp;diff=7737</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=7737"/>
		<updated>2007-04-21T20:05:12Z</updated>

		<summary type="html">&lt;p&gt;Mat: /* Linux/Unix */&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;
* [[strings]]&lt;br /&gt;
* [[valgrind]]&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>Mat</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Reverse_Engineering_Tools&amp;diff=7736</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=7736"/>
		<updated>2007-04-21T20:05:01Z</updated>

		<summary type="html">&lt;p&gt;Mat: /* Linux/Unix */&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;
* [[strings]]&lt;br /&gt;
* [[valgring]]&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>Mat</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Apple_Lossless_Audio_Coding&amp;diff=5283</id>
		<title>Apple Lossless Audio Coding</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Apple_Lossless_Audio_Coding&amp;diff=5283"/>
		<updated>2006-06-04T18:01:00Z</updated>

		<summary type="html">&lt;p&gt;Mat: /* Frame Header */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FOURCCS: alac&lt;br /&gt;
* Company: [[Apple]]&lt;br /&gt;
* Technical Description: http://craz.net/programs/itunes/alac.html&lt;br /&gt;
* Samples: http://mplayerhq.hu/MPlayer/samples/A-codecs/lossless/ (luckynight.m4a)&lt;br /&gt;
&lt;br /&gt;
Lossless audio coding using linear prediction with Golomb-Rice coding of the difference.  Similar to FLAC, although the bitstreams are not compatible.  Usually stored in an [[Apple QuickTime|MP4]] container, as a private extension since it is not part of the MPEG-4 standard.&lt;br /&gt;
&lt;br /&gt;
=== Extradata ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|- &lt;br /&gt;
|atom size || 32 || (0x24), big-endian&lt;br /&gt;
|-&lt;br /&gt;
|tag || 32 || 'alac'&lt;br /&gt;
|-&lt;br /&gt;
|??? || 32 || zero ?&lt;br /&gt;
|-&lt;br /&gt;
|max sample per frame || 32 ||&lt;br /&gt;
|-&lt;br /&gt;
|??? || 8 || zero ?&lt;br /&gt;
|-&lt;br /&gt;
|sample size || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|rice history mult || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|rice initial history || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|rice kmodifier || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|channels || 8 || ?&lt;br /&gt;
|-&lt;br /&gt;
|??? || 16 ||&lt;br /&gt;
|-&lt;br /&gt;
|max coded frame size || 32 ||&lt;br /&gt;
|-&lt;br /&gt;
|bitrate || 32 || ?&lt;br /&gt;
|-&lt;br /&gt;
|samplerate || 32 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Frame Header ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|- &lt;br /&gt;
| channels || 3 || Number of channel -1 (Should be the same than in extradata ???)&lt;br /&gt;
|-&lt;br /&gt;
| ??? || 4 || ??? (seem to be always 0)&lt;br /&gt;
|-&lt;br /&gt;
| ??? || 12 || ??? (seem to be always 0)&lt;br /&gt;
|-&lt;br /&gt;
| hasoutputsamples || 1 || the number of samples is stored in the header&lt;br /&gt;
|-&lt;br /&gt;
| wasted_bytes || 2 || unknow (same as flac ???)&lt;br /&gt;
|-&lt;br /&gt;
| isverbatim || 1 || if 1, the data is not compressed&lt;br /&gt;
|-&lt;br /&gt;
| if (hasoutputsamples) { || ||&lt;br /&gt;
|-&lt;br /&gt;
| outputsamples || 32 || number of samples (sometimes the value is wrong [1])&lt;br /&gt;
|-&lt;br /&gt;
| } || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[1]  http://www1.mplayerhq.hu/MPlayer/samples/A-codecs/lossless/luckynight.m4a need + 32 and http://www1.mplayerhq.hu/MPlayer/samples/A-codecs/lossless/ALAC/old_midi_stuff.m4a + 112&lt;br /&gt;
&lt;br /&gt;
=== Verbatim frame ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| data || sample_size * outputsamples * channels || Unencoded subblock&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compressed frame ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| interlacing_shift || 8 || should be 0 if no channel interlacing. &lt;br /&gt;
|-&lt;br /&gt;
| interlacing_leftweight || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
| for each channel {&lt;br /&gt;
|-&lt;br /&gt;
| prediction_type || 4 || should be 0&lt;br /&gt;
|-&lt;br /&gt;
| prediction_quantitization || 4 || &lt;br /&gt;
|-&lt;br /&gt;
| ricemodifier || 3 ||&lt;br /&gt;
|-&lt;br /&gt;
| predictor_coef_num || 5 ||&lt;br /&gt;
|-&lt;br /&gt;
| predictor_coef_table || 16 * predictor_coef_num ||&lt;br /&gt;
|-&lt;br /&gt;
| }&lt;br /&gt;
|-&lt;br /&gt;
| for each channel {&lt;br /&gt;
|-&lt;br /&gt;
| compressed data || || modfied Rice coding and Adaptive FIR filter&lt;br /&gt;
|-&lt;br /&gt;
| }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Channel Interlacing&lt;br /&gt;
&lt;br /&gt;
It is a mid/side stereo with weight.&lt;br /&gt;
channel 0 is the mid(average) channel, channel 1 is the side(difference) channel.&lt;br /&gt;
&lt;br /&gt;
:''right = mid - ((difference * interlacing_leftweight) &amp;gt;&amp;gt; interlacing_shift)''&lt;br /&gt;
:''left = right + difference''&lt;br /&gt;
&lt;br /&gt;
It seems we have interlacing_leftweight == interlacing_shift in most of the samples&lt;br /&gt;
&lt;br /&gt;
=== Frame Footer ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| EOF || 3 || should be always 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Lossless Audio Codecs]]&lt;br /&gt;
[[Category:Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Mat</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Apple_Lossless_Audio_Coding&amp;diff=5282</id>
		<title>Apple Lossless Audio Coding</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Apple_Lossless_Audio_Coding&amp;diff=5282"/>
		<updated>2006-06-04T18:00:24Z</updated>

		<summary type="html">&lt;p&gt;Mat: /* Frame Header */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FOURCCS: alac&lt;br /&gt;
* Company: [[Apple]]&lt;br /&gt;
* Technical Description: http://craz.net/programs/itunes/alac.html&lt;br /&gt;
* Samples: http://mplayerhq.hu/MPlayer/samples/A-codecs/lossless/ (luckynight.m4a)&lt;br /&gt;
&lt;br /&gt;
Lossless audio coding using linear prediction with Golomb-Rice coding of the difference.  Similar to FLAC, although the bitstreams are not compatible.  Usually stored in an [[Apple QuickTime|MP4]] container, as a private extension since it is not part of the MPEG-4 standard.&lt;br /&gt;
&lt;br /&gt;
=== Extradata ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|- &lt;br /&gt;
|atom size || 32 || (0x24), big-endian&lt;br /&gt;
|-&lt;br /&gt;
|tag || 32 || 'alac'&lt;br /&gt;
|-&lt;br /&gt;
|??? || 32 || zero ?&lt;br /&gt;
|-&lt;br /&gt;
|max sample per frame || 32 ||&lt;br /&gt;
|-&lt;br /&gt;
|??? || 8 || zero ?&lt;br /&gt;
|-&lt;br /&gt;
|sample size || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|rice history mult || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|rice initial history || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|rice kmodifier || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|channels || 8 || ?&lt;br /&gt;
|-&lt;br /&gt;
|??? || 16 ||&lt;br /&gt;
|-&lt;br /&gt;
|max coded frame size || 32 ||&lt;br /&gt;
|-&lt;br /&gt;
|bitrate || 32 || ?&lt;br /&gt;
|-&lt;br /&gt;
|samplerate || 32 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Frame Header ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|- &lt;br /&gt;
| channels || 3 || Number of channel -1 (Should be the same than in extradata ???)&lt;br /&gt;
|-&lt;br /&gt;
| ??? || 4 || ??? (seem to be always 0)&lt;br /&gt;
|-&lt;br /&gt;
| ??? || 12 || ??? (seem to be always 0)&lt;br /&gt;
|-&lt;br /&gt;
| hasoutputsamples || 1 || the number of samples is stored in the header&lt;br /&gt;
|-&lt;br /&gt;
| wasted_bytes || 2 || unknow (same as flac ???)&lt;br /&gt;
|-&lt;br /&gt;
| isverbatim || 1 || if 1, the data is not compressed&lt;br /&gt;
|-&lt;br /&gt;
| if (hassize) { || ||&lt;br /&gt;
|-&lt;br /&gt;
| outputsamples || 32 || number of samples (sometimes the value is wrong [1])&lt;br /&gt;
|-&lt;br /&gt;
| } || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[1]  http://www1.mplayerhq.hu/MPlayer/samples/A-codecs/lossless/luckynight.m4a need + 32 and http://www1.mplayerhq.hu/MPlayer/samples/A-codecs/lossless/ALAC/old_midi_stuff.m4a + 112&lt;br /&gt;
&lt;br /&gt;
=== Verbatim frame ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| data || sample_size * outputsamples * channels || Unencoded subblock&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compressed frame ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| interlacing_shift || 8 || should be 0 if no channel interlacing. &lt;br /&gt;
|-&lt;br /&gt;
| interlacing_leftweight || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
| for each channel {&lt;br /&gt;
|-&lt;br /&gt;
| prediction_type || 4 || should be 0&lt;br /&gt;
|-&lt;br /&gt;
| prediction_quantitization || 4 || &lt;br /&gt;
|-&lt;br /&gt;
| ricemodifier || 3 ||&lt;br /&gt;
|-&lt;br /&gt;
| predictor_coef_num || 5 ||&lt;br /&gt;
|-&lt;br /&gt;
| predictor_coef_table || 16 * predictor_coef_num ||&lt;br /&gt;
|-&lt;br /&gt;
| }&lt;br /&gt;
|-&lt;br /&gt;
| for each channel {&lt;br /&gt;
|-&lt;br /&gt;
| compressed data || || modfied Rice coding and Adaptive FIR filter&lt;br /&gt;
|-&lt;br /&gt;
| }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Channel Interlacing&lt;br /&gt;
&lt;br /&gt;
It is a mid/side stereo with weight.&lt;br /&gt;
channel 0 is the mid(average) channel, channel 1 is the side(difference) channel.&lt;br /&gt;
&lt;br /&gt;
:''right = mid - ((difference * interlacing_leftweight) &amp;gt;&amp;gt; interlacing_shift)''&lt;br /&gt;
:''left = right + difference''&lt;br /&gt;
&lt;br /&gt;
It seems we have interlacing_leftweight == interlacing_shift in most of the samples&lt;br /&gt;
&lt;br /&gt;
=== Frame Footer ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| EOF || 3 || should be always 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Lossless Audio Codecs]]&lt;br /&gt;
[[Category:Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Mat</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Apple_Lossless_Audio_Coding&amp;diff=5281</id>
		<title>Apple Lossless Audio Coding</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Apple_Lossless_Audio_Coding&amp;diff=5281"/>
		<updated>2006-06-04T17:52:57Z</updated>

		<summary type="html">&lt;p&gt;Mat: /* Frame Header */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FOURCCS: alac&lt;br /&gt;
* Company: [[Apple]]&lt;br /&gt;
* Technical Description: http://craz.net/programs/itunes/alac.html&lt;br /&gt;
* Samples: http://mplayerhq.hu/MPlayer/samples/A-codecs/lossless/ (luckynight.m4a)&lt;br /&gt;
&lt;br /&gt;
Lossless audio coding using linear prediction with Golomb-Rice coding of the difference.  Similar to FLAC, although the bitstreams are not compatible.  Usually stored in an [[Apple QuickTime|MP4]] container, as a private extension since it is not part of the MPEG-4 standard.&lt;br /&gt;
&lt;br /&gt;
=== Extradata ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|- &lt;br /&gt;
|atom size || 32 || (0x24), big-endian&lt;br /&gt;
|-&lt;br /&gt;
|tag || 32 || 'alac'&lt;br /&gt;
|-&lt;br /&gt;
|??? || 32 || zero ?&lt;br /&gt;
|-&lt;br /&gt;
|max sample per frame || 32 ||&lt;br /&gt;
|-&lt;br /&gt;
|??? || 8 || zero ?&lt;br /&gt;
|-&lt;br /&gt;
|sample size || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|rice history mult || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|rice initial history || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|rice kmodifier || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|channels || 8 || ?&lt;br /&gt;
|-&lt;br /&gt;
|??? || 16 ||&lt;br /&gt;
|-&lt;br /&gt;
|max coded frame size || 32 ||&lt;br /&gt;
|-&lt;br /&gt;
|bitrate || 32 || ?&lt;br /&gt;
|-&lt;br /&gt;
|samplerate || 32 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Frame Header ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|- &lt;br /&gt;
| channels || 3 || Number of channel -1 (Should be the same than in extradata ???)&lt;br /&gt;
|-&lt;br /&gt;
| ??? || 4 || ???&lt;br /&gt;
|-&lt;br /&gt;
| ??? || 12 || ???&lt;br /&gt;
|-&lt;br /&gt;
| hasoutputsamples || 1 || the number of samples is stored in the header&lt;br /&gt;
|-&lt;br /&gt;
| wasted_bytes || 2 || unknow (same as flac ???)&lt;br /&gt;
|-&lt;br /&gt;
| isverbatim || 1 || if 1, the data is not compressed&lt;br /&gt;
|-&lt;br /&gt;
| if (hassize) { || ||&lt;br /&gt;
|-&lt;br /&gt;
| outputsamples || 32 || number of samples (sometimes the value is wrong [1])&lt;br /&gt;
|-&lt;br /&gt;
| } || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[1]  http://www1.mplayerhq.hu/MPlayer/samples/A-codecs/lossless/luckynight.m4a need + 32 and http://www1.mplayerhq.hu/MPlayer/samples/A-codecs/lossless/ALAC/old_midi_stuff.m4a + 112&lt;br /&gt;
&lt;br /&gt;
=== Verbatim frame ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| data || sample_size * outputsamples * channels || Unencoded subblock&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compressed frame ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| interlacing_shift || 8 || should be 0 if no channel interlacing. &lt;br /&gt;
|-&lt;br /&gt;
| interlacing_leftweight || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
| for each channel {&lt;br /&gt;
|-&lt;br /&gt;
| prediction_type || 4 || should be 0&lt;br /&gt;
|-&lt;br /&gt;
| prediction_quantitization || 4 || &lt;br /&gt;
|-&lt;br /&gt;
| ricemodifier || 3 ||&lt;br /&gt;
|-&lt;br /&gt;
| predictor_coef_num || 5 ||&lt;br /&gt;
|-&lt;br /&gt;
| predictor_coef_table || 16 * predictor_coef_num ||&lt;br /&gt;
|-&lt;br /&gt;
| }&lt;br /&gt;
|-&lt;br /&gt;
| for each channel {&lt;br /&gt;
|-&lt;br /&gt;
| compressed data || || modfied Rice coding and Adaptive FIR filter&lt;br /&gt;
|-&lt;br /&gt;
| }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Channel Interlacing&lt;br /&gt;
&lt;br /&gt;
It is a mid/side stereo with weight.&lt;br /&gt;
channel 0 is the mid(average) channel, channel 1 is the side(difference) channel.&lt;br /&gt;
&lt;br /&gt;
:''right = mid - ((difference * interlacing_leftweight) &amp;gt;&amp;gt; interlacing_shift)''&lt;br /&gt;
:''left = right + difference''&lt;br /&gt;
&lt;br /&gt;
It seems we have interlacing_leftweight == interlacing_shift in most of the samples&lt;br /&gt;
&lt;br /&gt;
=== Frame Footer ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| EOF || 3 || should be always 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Lossless Audio Codecs]]&lt;br /&gt;
[[Category:Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Mat</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Apple_Lossless_Audio_Coding&amp;diff=5052</id>
		<title>Apple Lossless Audio Coding</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Apple_Lossless_Audio_Coding&amp;diff=5052"/>
		<updated>2006-05-26T16:50:21Z</updated>

		<summary type="html">&lt;p&gt;Mat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FOURCCS: alac&lt;br /&gt;
* Company: [[Apple]]&lt;br /&gt;
* Technical Description: http://craz.net/programs/itunes/alac.html&lt;br /&gt;
* Samples: http://mplayerhq.hu/MPlayer/samples/A-codecs/lossless/ (luckynight.m4a)&lt;br /&gt;
&lt;br /&gt;
Lossless audio coding using linear prediction with Golomb-Rice coding of the difference.  Similar to FLAC, although the bitstreams are not compatible.  Usually stored in an [[Apple QuickTime|MP4]] container, as a private extension since it is not part of the MPEG-4 standard.&lt;br /&gt;
&lt;br /&gt;
=== Extradata ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|- &lt;br /&gt;
|atom size || 32 || (0x24), big-endian&lt;br /&gt;
|-&lt;br /&gt;
|tag || 32 || 'alac'&lt;br /&gt;
|-&lt;br /&gt;
|??? || 32 || zero ?&lt;br /&gt;
|-&lt;br /&gt;
|max sample per frame || 32 ||&lt;br /&gt;
|-&lt;br /&gt;
|??? || 8 || zero ?&lt;br /&gt;
|-&lt;br /&gt;
|sample size || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|rice history mult || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|rice initial history || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|rice kmodifier || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|channels || 8 || ?&lt;br /&gt;
|-&lt;br /&gt;
|??? || 16 ||&lt;br /&gt;
|-&lt;br /&gt;
|max coded frame size || 32 ||&lt;br /&gt;
|-&lt;br /&gt;
|bitrate || 32 || ?&lt;br /&gt;
|-&lt;br /&gt;
|samplerate || 32 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Frame Header ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|- &lt;br /&gt;
| channels || 3 || Number of channel -1 (Should be the same than in extradata ???)&lt;br /&gt;
|-&lt;br /&gt;
| ??? || 4 || ???&lt;br /&gt;
|-&lt;br /&gt;
| ??? || 12 || ???&lt;br /&gt;
|-&lt;br /&gt;
| hasoutputsamples || 1 || the number of samples is stored in the header&lt;br /&gt;
|-&lt;br /&gt;
| wasted_bytes || 2 || unknow (same as flac ???)&lt;br /&gt;
|-&lt;br /&gt;
| isverbatim || 1 || if 1, the data is not compressed&lt;br /&gt;
|-&lt;br /&gt;
| if (hassize) { || ||&lt;br /&gt;
|-&lt;br /&gt;
| outputsamples || 32 || number of samples&lt;br /&gt;
|-&lt;br /&gt;
| } || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Verbatim frame ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| data || sample_size * outputsamples * channels || Unencoded subblock&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compressed frame ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| interlacing_shift || 8 || should be 0 if no channel interlacing. &lt;br /&gt;
|-&lt;br /&gt;
| interlacing_leftweight || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
| for each channel {&lt;br /&gt;
|-&lt;br /&gt;
| prediction_type || 4 || should be 0&lt;br /&gt;
|-&lt;br /&gt;
| prediction_quantitization || 4 || &lt;br /&gt;
|-&lt;br /&gt;
| ricemodifier || 3 ||&lt;br /&gt;
|-&lt;br /&gt;
| predictor_coef_num || 5 ||&lt;br /&gt;
|-&lt;br /&gt;
| predictor_coef_table || 16 * predictor_coef_num ||&lt;br /&gt;
|-&lt;br /&gt;
| }&lt;br /&gt;
|-&lt;br /&gt;
| for each channel {&lt;br /&gt;
|-&lt;br /&gt;
| compressed data || || modfied Rice coding and Adaptive FIR filter&lt;br /&gt;
|-&lt;br /&gt;
| }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Channel Interlacing&lt;br /&gt;
&lt;br /&gt;
It is a mid/side stereo with weight.&lt;br /&gt;
channel 0 is the mid(average) channel, channel 1 is the side(difference) channel.&lt;br /&gt;
&lt;br /&gt;
:''right = mid - ((difference * interlacing_leftweight) &amp;gt;&amp;gt; interlacing_shift)''&lt;br /&gt;
:''left = right + difference''&lt;br /&gt;
&lt;br /&gt;
It seems we have interlacing_leftweight == interlacing_shift in most of the samples&lt;br /&gt;
&lt;br /&gt;
=== Frame Footer ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| EOF || 3 || should be always 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Lossless Audio Codecs]]&lt;br /&gt;
[[Category:Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Mat</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Apple_Lossless_Audio_Coding&amp;diff=5033</id>
		<title>Apple Lossless Audio Coding</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Apple_Lossless_Audio_Coding&amp;diff=5033"/>
		<updated>2006-05-25T21:18:35Z</updated>

		<summary type="html">&lt;p&gt;Mat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FOURCCS: alac&lt;br /&gt;
* Company: [[Apple]]&lt;br /&gt;
* Technical Description: [http://craz.net/programs/itunes/alac.html http://craz.net/programs/itunes/alac.html]&lt;br /&gt;
&lt;br /&gt;
Lossless audio coding using linear prediction with Golomb-Rice coding of the difference.  Similar to FLAC, although the bitstreams are not compatible.  Usually stored in an [[Apple QuickTime|MP4]] container, as a private extension since it is not part of the MPEG-4 standard.&lt;br /&gt;
&lt;br /&gt;
=== Extradata ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|- &lt;br /&gt;
|atom size || 32 || (0x24), big-endian&lt;br /&gt;
|-&lt;br /&gt;
|tag || 32 || 'alac'&lt;br /&gt;
|-&lt;br /&gt;
|??? || 32 || zero ?&lt;br /&gt;
|-&lt;br /&gt;
|max sample per frame || 32 ||&lt;br /&gt;
|-&lt;br /&gt;
|??? || 8 || zero ?&lt;br /&gt;
|-&lt;br /&gt;
|sample size || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|rice history mult || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|rice initial history || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|rice kmodifier || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
|channels || 8 || ?&lt;br /&gt;
|-&lt;br /&gt;
|??? || 16 ||&lt;br /&gt;
|-&lt;br /&gt;
|max coded frame size || 32 ||&lt;br /&gt;
|-&lt;br /&gt;
|bitrate || 32 || ?&lt;br /&gt;
|-&lt;br /&gt;
|samplerate || 32 ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Frame Header ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|- &lt;br /&gt;
| channels || 3 || Number of channel -1 (Should be the same than in extradata ???)&lt;br /&gt;
|-&lt;br /&gt;
| ??? || 4 || ???&lt;br /&gt;
|-&lt;br /&gt;
| ??? || 12 || ???&lt;br /&gt;
|-&lt;br /&gt;
| hasoutputsamples || 1 || the number of samples is stored in the header&lt;br /&gt;
|-&lt;br /&gt;
| wasted_bytes || 2 || unknow (same as flac ???)&lt;br /&gt;
|-&lt;br /&gt;
| isverbatim || 1 || if 1, the data is not compressed&lt;br /&gt;
|-&lt;br /&gt;
| if (hassize) { || ||&lt;br /&gt;
|-&lt;br /&gt;
| outputsamples || 32 || number of samples&lt;br /&gt;
|-&lt;br /&gt;
| } || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Verbatim frame ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| data || sample_size * outputsamples * channels || Unencoded subblock&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compressed frame ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| interlacing_shift || 8 || should be 0 if no channel interlacing. &lt;br /&gt;
|-&lt;br /&gt;
| interlacing_leftweight || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
| for each channel {&lt;br /&gt;
|-&lt;br /&gt;
| prediction_type || 4 || should be 0&lt;br /&gt;
|-&lt;br /&gt;
| prediction_quantitization || 4 || &lt;br /&gt;
|-&lt;br /&gt;
| ricemodifier || 3 ||&lt;br /&gt;
|-&lt;br /&gt;
| predictor_coef_num || 5 ||&lt;br /&gt;
|-&lt;br /&gt;
| predictor_coef_table || 16 * predictor_coef_num ||&lt;br /&gt;
|-&lt;br /&gt;
| }&lt;br /&gt;
|-&lt;br /&gt;
| for each channel {&lt;br /&gt;
|-&lt;br /&gt;
| compressed data || || modfied Rice coding and Adaptive FIR filter&lt;br /&gt;
|-&lt;br /&gt;
| }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Channel Interlacing&lt;br /&gt;
&lt;br /&gt;
It is a mid/side stereo with weight.&lt;br /&gt;
channel 0 is the mid(average) channel, channel 1 is the side(difference) channel.&lt;br /&gt;
&lt;br /&gt;
:''right = mid - ((difference * interlacing_leftweight) &amp;gt;&amp;gt; interlacing_shift)''&lt;br /&gt;
:''left = right + difference''&lt;br /&gt;
&lt;br /&gt;
[[Category:Lossless Audio Codecs]]&lt;br /&gt;
[[Category:Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Mat</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Apple_Lossless_Audio_Coding&amp;diff=5032</id>
		<title>Apple Lossless Audio Coding</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Apple_Lossless_Audio_Coding&amp;diff=5032"/>
		<updated>2006-05-25T21:09:40Z</updated>

		<summary type="html">&lt;p&gt;Mat: /* Compressed frame */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FOURCCS: alac&lt;br /&gt;
* Company: [[Apple]]&lt;br /&gt;
* Technical Description: [http://craz.net/programs/itunes/alac.html http://craz.net/programs/itunes/alac.html]&lt;br /&gt;
&lt;br /&gt;
Lossless audio coding using linear prediction with Golomb-Rice coding of the difference.  Similar to FLAC, although the bitstreams are not compatible.  Usually stored in an [[Apple QuickTime|MP4]] container, as a private extension since it is not part of the MPEG-4 standard.&lt;br /&gt;
&lt;br /&gt;
=== Frame Header ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|- &lt;br /&gt;
| channels || 3 || Number of channel -1 (Should be the same than in extradata ???)&lt;br /&gt;
|-&lt;br /&gt;
| ??? || 4 || ???&lt;br /&gt;
|-&lt;br /&gt;
| ??? || 12 || ???&lt;br /&gt;
|-&lt;br /&gt;
| hasoutputsamples || 1 || the number of samples is stored in the header&lt;br /&gt;
|-&lt;br /&gt;
| wasted_bytes || 2 || unknow (same as flac ???)&lt;br /&gt;
|-&lt;br /&gt;
| isverbatim || 1 || if 1, the data is not compressed&lt;br /&gt;
|-&lt;br /&gt;
| if (hassize) { || ||&lt;br /&gt;
|-&lt;br /&gt;
| outputsamples || 32 || number of samples&lt;br /&gt;
|-&lt;br /&gt;
| } || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Verbatim frame ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| data || sample_size * outputsamples * channels || Unencoded subblock&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compressed frame ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| interlacing_shift || 8 || should be 0 if no channel interlacing. &lt;br /&gt;
|-&lt;br /&gt;
| interlacing_leftweight || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
| for each channel {&lt;br /&gt;
|-&lt;br /&gt;
| prediction_type || 4 || should be 0&lt;br /&gt;
|-&lt;br /&gt;
| prediction_quantitization || 4 || &lt;br /&gt;
|-&lt;br /&gt;
| ricemodifier || 3 ||&lt;br /&gt;
|-&lt;br /&gt;
| predictor_coef_num || 5 ||&lt;br /&gt;
|-&lt;br /&gt;
| predictor_coef_table || 16 * predictor_coef_num ||&lt;br /&gt;
|-&lt;br /&gt;
| }&lt;br /&gt;
|-&lt;br /&gt;
| for each channel {&lt;br /&gt;
|-&lt;br /&gt;
| compressed data || || modfied Rice coding and Adaptive FIR filter&lt;br /&gt;
|-&lt;br /&gt;
| }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Channel Interlacing&lt;br /&gt;
&lt;br /&gt;
It is a mid/side stereo with weight.&lt;br /&gt;
channel 0 is the mid(average) channel, channel 1 is the side(difference) channel.&lt;br /&gt;
&lt;br /&gt;
:''right = mid - ((difference * interlacing_leftweight) &amp;gt;&amp;gt; interlacing_shift)''&lt;br /&gt;
:''left = right + difference''&lt;br /&gt;
&lt;br /&gt;
[[Category:Lossless Audio Codecs]]&lt;br /&gt;
[[Category:Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Mat</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Apple_Lossless_Audio_Coding&amp;diff=4957</id>
		<title>Apple Lossless Audio Coding</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Apple_Lossless_Audio_Coding&amp;diff=4957"/>
		<updated>2006-05-14T17:43:37Z</updated>

		<summary type="html">&lt;p&gt;Mat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FOURCCS: alac&lt;br /&gt;
* Company: [[Apple]]&lt;br /&gt;
* Technical Description: [http://craz.net/programs/itunes/alac.html http://craz.net/programs/itunes/alac.html]&lt;br /&gt;
&lt;br /&gt;
Lossless audio coding using linear prediction with Golomb-Rice coding of the difference.  Similar to FLAC, although the bitstreams are not compatible.  Usually stored in an [[Apple QuickTime|MP4]] container, as a private extension since it is not part of the MPEG-4 standard.&lt;br /&gt;
&lt;br /&gt;
=== Frame Header ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|- &lt;br /&gt;
| channels || 3 || Number of channel -1 (Should be the same than in extradata ???)&lt;br /&gt;
|-&lt;br /&gt;
| ??? || 4 || ???&lt;br /&gt;
|-&lt;br /&gt;
| ??? || 12 || ???&lt;br /&gt;
|-&lt;br /&gt;
| hasoutputsamples || 1 || the number of samples is stored in the header&lt;br /&gt;
|-&lt;br /&gt;
| wasted_bytes || 2 || unknow (same as flac ???)&lt;br /&gt;
|-&lt;br /&gt;
| isverbatim || 1 || if 1, the data is not compressed&lt;br /&gt;
|-&lt;br /&gt;
| if (hassize) { || ||&lt;br /&gt;
|-&lt;br /&gt;
| outputsamples || 32 || number of samples&lt;br /&gt;
|-&lt;br /&gt;
| } || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Verbatim frame ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| data || sample_size * outputsamples * channels || Unencoded subblock&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Compressed frame ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|-&lt;br /&gt;
| interlacing_shift || 8 || 0 if no channel interlacing. &lt;br /&gt;
|-&lt;br /&gt;
| interlacing_leftweight || 8 ||&lt;br /&gt;
|-&lt;br /&gt;
| for each channel {&lt;br /&gt;
|-&lt;br /&gt;
| prediction_type || 4 || should be 0&lt;br /&gt;
|-&lt;br /&gt;
| prediction_quantitization || 4 || &lt;br /&gt;
|-&lt;br /&gt;
| ricemodifier || 3 ||&lt;br /&gt;
|-&lt;br /&gt;
| predictor_coef_num || 5 ||&lt;br /&gt;
|-&lt;br /&gt;
| predictor_coef_table || 16 * predictor_coef_num ||&lt;br /&gt;
|-&lt;br /&gt;
| bastardized_rice_decompressed data || ||&lt;br /&gt;
|-&lt;br /&gt;
| }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Channel Interlacing&lt;br /&gt;
&lt;br /&gt;
It is a mid/side stereo with weight.&lt;br /&gt;
channel 0 is the mid(average) channel, channel 1 is the side(difference) channel.&lt;br /&gt;
&lt;br /&gt;
:''right = mid - ((difference * interlacing_leftweight) &amp;gt;&amp;gt; interlacing_shift)''&lt;br /&gt;
:''left = right + difference''&lt;br /&gt;
&lt;br /&gt;
[[Category:Lossless Audio Codecs]]&lt;br /&gt;
[[Category:Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Mat</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=Apple_Lossless_Audio_Coding&amp;diff=4956</id>
		<title>Apple Lossless Audio Coding</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=Apple_Lossless_Audio_Coding&amp;diff=4956"/>
		<updated>2006-05-14T17:14:48Z</updated>

		<summary type="html">&lt;p&gt;Mat: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* FOURCCS: alac&lt;br /&gt;
* Company: [[Apple]]&lt;br /&gt;
* Technical Description: [http://craz.net/programs/itunes/alac.html http://craz.net/programs/itunes/alac.html]&lt;br /&gt;
&lt;br /&gt;
Lossless audio coding using linear prediction with Golomb-Rice coding of the difference.  Similar to FLAC, although the bitstreams are not compatible.  Usually stored in an [[Apple QuickTime|MP4]] container, as a private extension since it is not part of the MPEG-4 standard.&lt;br /&gt;
&lt;br /&gt;
=== Frame Header ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Syntax !! Number of bits !! Semantics&lt;br /&gt;
|- &lt;br /&gt;
| channels || 3 || Number of channel -1 (Should be the same than in extradata ???)&lt;br /&gt;
|-&lt;br /&gt;
| ??? || 4 || ???&lt;br /&gt;
|-&lt;br /&gt;
| ??? || 12 || ???&lt;br /&gt;
|-&lt;br /&gt;
| hassize || 1 || the output sample number is stored in the header&lt;br /&gt;
|-&lt;br /&gt;
| wasted_bytes || 2 || unknow (same as flac ???)&lt;br /&gt;
|-&lt;br /&gt;
| isverbatim || 1 || if 1, the data is not compressed&lt;br /&gt;
|-&lt;br /&gt;
| if (hassize) { || ||&lt;br /&gt;
|-&lt;br /&gt;
| outputsamples || 32 || number of samples&lt;br /&gt;
|-&lt;br /&gt;
| } || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Lossless Audio Codecs]]&lt;br /&gt;
[[Category:Audio Codecs]]&lt;/div&gt;</summary>
		<author><name>Mat</name></author>
	</entry>
	<entry>
		<id>https://wiki.multimedia.cx/index.php?title=IDA_Pro&amp;diff=3793</id>
		<title>IDA Pro</title>
		<link rel="alternate" type="text/html" href="https://wiki.multimedia.cx/index.php?title=IDA_Pro&amp;diff=3793"/>
		<updated>2006-03-31T20:38:58Z</updated>

		<summary type="html">&lt;p&gt;Mat: update demo link + a link with wingraph32 source code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* Website: [http://www.datarescue.com/idabase/index.htm http://www.datarescue.com/idabase/index.htm]&lt;br /&gt;
* Demo version: [http://www.datarescue.com/idabase/idadown.htm http://www.datarescue.com/idabase/idadown.htm]&lt;br /&gt;
* Freeware version: [http://www.datarescue.be/idafreeware/freeida43.exe http://www.datarescue.be/idafreeware/freeida43.exe]&lt;br /&gt;
* Wingraph32 GPL source code: [http://www.datarescue.com/freefiles/wingraph32_src.zip http://www.datarescue.com/freefiles/wingraph32_src.zip]&lt;br /&gt;
&lt;br /&gt;
IDA Pro is a disassembler and debugger with a lot of features that is very useful for reverse engineering.&lt;br /&gt;
&lt;br /&gt;
It is proprietary software that runs on Windows and Linux; there is a zero-cost evaluation version.&lt;br /&gt;
&lt;br /&gt;
== Boosting the freeware version ==&lt;br /&gt;
The freeware version of IDA Pro is an invaluable tool. One important function is the ability to produce different flow graphs&lt;br /&gt;
from the disassembly. Sometimes these graphs can be quite messy and needs to be processed. The version of wingraph32.exe that&lt;br /&gt;
is included with the freeware version of IDA Pro can't save the generated graphs. Just replace it with a version from a demo&lt;br /&gt;
version of IDA Pro and the save option will be availible. Saved graphs will have a .gdl suffix.&lt;br /&gt;
&lt;br /&gt;
== Recovering the function prototypes from the disassembly ==&lt;br /&gt;
Well it's not really possible but a good hint is possible without much work. First load the binary you want to analyse. IDA Pro&lt;br /&gt;
will process the file for some time. If you start browsing around you will see that IDA Pro can make a good guess on how many&lt;br /&gt;
arguments a function have. That is one thing that can be extracted. The other is if a function returns something or not. The x86 C ABI&lt;br /&gt;
declares that the return type if any has to be left in the eax register. So if the eax register is used after a call the function&lt;br /&gt;
that was called returned something. The following not so nice perl script can process the asm file that can be produced from IDA Pro&lt;br /&gt;
with Produce-&amp;gt;ASM-File (Alt+F10).&lt;br /&gt;
&lt;br /&gt;
 #!/usr/bin/perl&lt;br /&gt;
 #Argument parser&lt;br /&gt;
 &lt;br /&gt;
 if (@ARGV){&lt;br /&gt;
   print &amp;quot;@ARGV\n&amp;quot;;&lt;br /&gt;
   if ($ARGV[0] eq &amp;quot;-f&amp;quot;){&lt;br /&gt;
     $FILE1 = $ARGV[1];&lt;br /&gt;
     $FILE2 = $ARGV[2];&lt;br /&gt;
     $filter = 1;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 else{&lt;br /&gt;
   print &amp;quot;Usage:\n&amp;quot;;&lt;br /&gt;
   print &amp;quot;./argumentcounter.pl [command] file.asm output.txt\n&amp;quot;;&lt;br /&gt;
   print &amp;quot;-f dummy command\n&amp;quot;;&lt;br /&gt;
   exit;&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
 #File IO&lt;br /&gt;
 open(OUTFILE, &amp;quot;&amp;gt;$FILE2&amp;quot;) or die &amp;quot;File problem\n&amp;quot;;&lt;br /&gt;
 @indata = `cat $FILE1`;&lt;br /&gt;
 &lt;br /&gt;
 $fn = 0;        #amount of founctions&lt;br /&gt;
 $functions[$fn] = &amp;quot;&amp;quot;;&lt;br /&gt;
 $arguments[$fn] = 0;&lt;br /&gt;
 $f_start = 0;&lt;br /&gt;
 $links= 0;&lt;br /&gt;
 foreach $rad (@indata)&lt;br /&gt;
 {&lt;br /&gt;
    $rowcounter++;&lt;br /&gt;
 &lt;br /&gt;
    if ($rad =~ m/ proc near/) {&lt;br /&gt;
        $functions[$fn] = $`;&lt;br /&gt;
        $fn++;&lt;br /&gt;
        $f_start = 1;&lt;br /&gt;
        $arguments[$fn] = 0;&lt;br /&gt;
        #print STDOUT &amp;quot;$`\n&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if ($f_start == 1) {&lt;br /&gt;
        $radsubstring = (substr $rad,0,3);&lt;br /&gt;
        if ($radsubstring eq &amp;quot;arg&amp;quot;) {&lt;br /&gt;
            $arguments[$fn]++;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    if ($rad =~ m/ endp/) {&lt;br /&gt;
        $f_start = 0;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    #return type detector&lt;br /&gt;
    if ($rad =~ m/call\t/) {&lt;br /&gt;
        $retfunction = $';&lt;br /&gt;
        $retfunction =~ m/\n/;&lt;br /&gt;
        $retfunction = $`;&lt;br /&gt;
        chop($retfunction);&lt;br /&gt;
        $rowcounter = 0;&lt;br /&gt;
        $callcheck = 1;&lt;br /&gt;
    }&lt;br /&gt;
    if (($callcheck) &amp;amp;&amp;amp; ($rowcounter&amp;gt;0)) {&lt;br /&gt;
 &lt;br /&gt;
        @tmpsplit=split /\t/,$rad;&lt;br /&gt;
        chomp($tmpsplit[0]);&lt;br /&gt;
        chomp($tmpsplit[1]);&lt;br /&gt;
        chomp($tmpsplit[2]);&lt;br /&gt;
        chomp($tmpsplit[3]);&lt;br /&gt;
        $instruction = $tmpsplit[2];&lt;br /&gt;
        $arguments = $tmpsplit[3];&lt;br /&gt;
        chop($arguments);&lt;br /&gt;
        if ($arguments =~ m/, /) {&lt;br /&gt;
            @argum=split /, /,$arguments;&lt;br /&gt;
        }&lt;br /&gt;
        #chomp($argum[0]);&lt;br /&gt;
        #chomp($instruction);&lt;br /&gt;
        if ($argum[0] eq &amp;quot;eax&amp;quot;) {&lt;br /&gt;
            $callcheck = 0;&lt;br /&gt;
        }&lt;br /&gt;
        if ($argum[1] eq &amp;quot;eax&amp;quot;) {&lt;br /&gt;
            $callcheck = 0;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        #check source operand if it is eax&lt;br /&gt;
        if (($argum[1] eq &amp;quot;eax&amp;quot;) &amp;amp;&amp;amp; ($instruction ne &amp;quot;xor&amp;quot;)) {&lt;br /&gt;
            $callcheck = 0;&lt;br /&gt;
            $nonvoid{$retfunction} = $nonvoid{$retfunction} +1;&lt;br /&gt;
            #print STDOUT &amp;quot;$retfunction returns nonvoid\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        if (($argum[0] eq &amp;quot;eax&amp;quot;) &amp;amp;&amp;amp; ($argum[1] ne &amp;quot;eax&amp;quot;)){&lt;br /&gt;
            $callcheck = 0;&lt;br /&gt;
            $void{$retfunction} = $void{$retfunction} +1;&lt;br /&gt;
            #print STDOUT &amp;quot;$retfunction returns void\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        if ($instruction =~ /retn/) {&lt;br /&gt;
            #stop searching when the current function returns&lt;br /&gt;
            $callcheck = 0;&lt;br /&gt;
            $void{$retfunction} = $void{$retfunction} +1;&lt;br /&gt;
            #print STDOUT &amp;quot;$retfunction returns void\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        if ($rowcounter &amp;gt; 10) {&lt;br /&gt;
            $callcheck = 0;&lt;br /&gt;
        }&lt;br /&gt;
        $argum[0] = &amp;quot;&amp;quot;;&lt;br /&gt;
        $argum[1] = &amp;quot;&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 for ($i=0 ; $i &amp;lt; $fn ; $i++){&lt;br /&gt;
    #returntype handling&lt;br /&gt;
    $returntype = &amp;quot;unknown&amp;quot;;&lt;br /&gt;
    if ($void{$functions[$i]} &amp;gt; 0) {&lt;br /&gt;
        $returntype = &amp;quot;void&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if ($nonvoid{$functions[$i]} &amp;gt; 0) {&lt;br /&gt;
        $returntype = &amp;quot;int&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if (($void{$functions[$i]} &amp;gt; 0) &amp;amp;&amp;amp; ($nonvoid{$functions[$i]} &amp;gt; 0)){&lt;br /&gt;
        $returntype = &amp;quot;void $void{$functions[$i]} - $nonvoid{$functions[$i]} int&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    print STDOUT &amp;quot;$returntype $functions[$i] $arguments[$i]\n&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:RE Tools]]&lt;/div&gt;</summary>
		<author><name>Mat</name></author>
	</entry>
</feed>