https://wiki.multimedia.cx/api.php?action=feedcontributions&user=Andux&feedformat=atomMultimediaWiki - User contributions [en]2024-03-29T08:30:36ZUser contributionsMediaWiki 1.39.5https://wiki.multimedia.cx/index.php?title=Bay_12_CMV&diff=13473Bay 12 CMV2011-04-30T04:06:16Z<p>Andux: /* Sounds */</p>
<hr />
<div>* Company: [http://www.bay12games.com/ Bay 12 Games]<br />
* Extension: cmv, ccmv<br />
* Specifications:<br />
** [http://df.magmawiki.com/index.php/User:Jifodus/CMV_file_format Rough specification]<br />
** [http://df.magmawiki.com/index.php/User:Markavian/CMV_file_format C# example code]<br />
* Samples:<br />
** [http://mkv25.net/dfma/browsemovies.php Movies - DF Map Archive] (download links for each are in a box on the bottom left)<br />
<br />
The '''CMV''' file format is used by the game Dwarf Fortress to store intro movies and player recordings.<br />
<br />
==File structure==<br />
===Header===<br />
<br />
{| style="margin: 1em 1em 1em 0pt; background: #f9f9f9; border: 1px solid #aaa; border-collapse: collapse;" border="1" cellpadding="4" cellspacing="0"<br />
|-<br />
! Type<br />
! Name<br />
! Description<br />
|-<br />
| uint32<br />
| Version<br />
| The format version used; should be &gt;= 10000<br />
|-<br />
| uint32<br />
| Width<br />
| Width (in characters) of each frame<br />
|-<br />
| uint32<br />
| Height<br />
| Height (in characters) of each frame<br />
|-<br />
| uint32<br />
| DelayRate<br />
| How long each frame is displayed; seems to be in hundredths of a second.<br />
|}<br />
<br />
===Sounds===<br />
Sound data is present in version 10001 files, but not in 10000 or 10005.<br />
<br />
{| style="margin: 1em 1em 1em 0pt; background: #f9f9f9; border: 1px solid #aaa; border-collapse: collapse;" border="1" cellpadding="4" cellspacing="0"<br />
|-<br />
! Type<br />
! Name<br />
! Description<br />
|-<br />
| uint32<br />
| SoundCount<br />
| Number of sound references defined.<br />
|-<br />
| char[50]*''SoundCount''<br />
| SoundName<br />
| Filename (no dir or ext) of an external file which contains the sound data.<br />
|}<br />
<br />
====Sound timing data====<br />
An array of 3200 (16 channels x 200 frames?) 32-bit signed integers, each specifying an index into the array of sound refs defined above. An index of -1 indicates that no new sound is played at that point.<br />
<br />
===Frame data===<br />
Frame data is stored in zlib-compressed chunks containing a maximum of 200 frames:<br />
<br />
{| style="margin: 1em 1em 1em 0pt; background: #f9f9f9; border: 1px solid #aaa; border-collapse: collapse;" border="1" cellpadding="4" cellspacing="0"<br />
|-<br />
! Type<br />
! Name<br />
! Description<br />
|-<br />
| uint32<br />
| z_size<br />
| Size of compressed data.<br />
|-<br />
| bytes<br />
| z_data<br />
| ''z_size'' bytes of compressed data.<br />
|}<br />
<br />
The uncompressed structure of each frame roughly corresponds to a text-mode screen buffer:<br />
<br />
{| style="margin: 1em 1em 1em 0pt; background: #f9f9f9; border: 1px solid #aaa; border-collapse: collapse;" border="1" cellpadding="4" cellspacing="0"<br />
|-<br />
! Type<br />
! Name<br />
! Description<br />
|-<br />
| char[''Width''*''Height'']<br />
| Characters<br />
| An array of characters, encoded in the [http://en.wikipedia.org/wiki/CP437 CP437 character set].<br />
|-<br />
| char[''Width''*''Height'']<br />
| Attributes<br />
| Encodes the [http://en.wikipedia.org/wiki/ANSI_escape_code#Colors ANSI color codes] for each character.<br />
|}<br />
Note that the encoding of color attributes is nonstandard:<br />
<br />
0ibbbfff<br />
i - Foreground Intensity Bit<br />
bbb - Background Color Bits<br />
fff - Foreground Color Bits<br />
<br />
==Related software==<br />
[http://mkv25.net/dfma/cmveditor/ CMV Movie Editor]<br />
<br />
[[Category:Game Formats|CMV, Bay 12]]<br />
[[Category:Video Codecs|CMV, Bay 12]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Bay_12_CMV&diff=13471Bay 12 CMV2011-04-29T03:29:52Z<p>Andux: </p>
<hr />
<div>* Company: [http://www.bay12games.com/ Bay 12 Games]<br />
* Extension: cmv, ccmv<br />
* Specifications:<br />
** [http://df.magmawiki.com/index.php/User:Jifodus/CMV_file_format Rough specification]<br />
** [http://df.magmawiki.com/index.php/User:Markavian/CMV_file_format C# example code]<br />
* Samples:<br />
** [http://mkv25.net/dfma/browsemovies.php Movies - DF Map Archive] (download links for each are in a box on the bottom left)<br />
<br />
The '''CMV''' file format is used by the game Dwarf Fortress to store intro movies and player recordings.<br />
<br />
==File structure==<br />
===Header===<br />
<br />
{| style="margin: 1em 1em 1em 0pt; background: #f9f9f9; border: 1px solid #aaa; border-collapse: collapse;" border="1" cellpadding="4" cellspacing="0"<br />
|-<br />
! Type<br />
! Name<br />
! Description<br />
|-<br />
| uint32<br />
| Version<br />
| The format version used; should be &gt;= 10000<br />
|-<br />
| uint32<br />
| Width<br />
| Width (in characters) of each frame<br />
|-<br />
| uint32<br />
| Height<br />
| Height (in characters) of each frame<br />
|-<br />
| uint32<br />
| DelayRate<br />
| How long each frame is displayed; seems to be in hundredths of a second.<br />
|}<br />
<br />
===Sounds===<br />
This section is present in version 10001 files, but not in 10000 or 10005.<br />
<br />
{| style="margin: 1em 1em 1em 0pt; background: #f9f9f9; border: 1px solid #aaa; border-collapse: collapse;" border="1" cellpadding="4" cellspacing="0"<br />
|-<br />
! Type<br />
! Name<br />
! Description<br />
|-<br />
| uint32<br />
| SoundCount<br />
| Number of sound references defined.<br />
|}<br />
<br />
====Sound references====<br />
An array of ''SoundCount'' records:<br />
<br />
{| style="margin: 1em 1em 1em 0pt; background: #f9f9f9; border: 1px solid #aaa; border-collapse: collapse;" border="1" cellpadding="4" cellspacing="0"<br />
|-<br />
! Type<br />
! Name<br />
! Description<br />
|-<br />
| char[50]<br />
| SoundName<br />
| Filename (no dir or ext) of an external file which contains the sound data.<br />
|}<br />
<br />
====Sound timing data====<br />
An array of 3200 (16 channels x 200 frames?) 32-bit signed integers, specifying the index of one sound ref defined above. A value of -1 indicates no new sound is played at that point.<br />
<br />
===Frame data===<br />
Frame data is stored in zlib-compressed chunks containing a maximum of 200 frames:<br />
<br />
{| style="margin: 1em 1em 1em 0pt; background: #f9f9f9; border: 1px solid #aaa; border-collapse: collapse;" border="1" cellpadding="4" cellspacing="0"<br />
|-<br />
! Type<br />
! Name<br />
! Description<br />
|-<br />
| uint32<br />
| z_size<br />
| Size of compressed data.<br />
|-<br />
| bytes<br />
| z_data<br />
| ''z_size'' bytes of compressed data.<br />
|}<br />
<br />
The uncompressed structure of each frame roughly corresponds to a text-mode screen buffer:<br />
<br />
{| style="margin: 1em 1em 1em 0pt; background: #f9f9f9; border: 1px solid #aaa; border-collapse: collapse;" border="1" cellpadding="4" cellspacing="0"<br />
|-<br />
! Type<br />
! Name<br />
! Description<br />
|-<br />
| char[''Width''*''Height'']<br />
| Characters<br />
| An array of characters, encoded in the [http://en.wikipedia.org/wiki/CP437 CP437 character set].<br />
|-<br />
| char[''Width''*''Height'']<br />
| Attributes<br />
| Encodes the [http://en.wikipedia.org/wiki/ANSI_escape_code#Colors ANSI color codes] for each character.<br />
|}<br />
Note that the encoding of color attributes is nonstandard:<br />
<br />
0ibbbfff<br />
i - Foreground Intensity Bit<br />
bbb - Background Color Bits<br />
fff - Foreground Color Bits<br />
<br />
==Related software==<br />
[http://mkv25.net/dfma/cmveditor/ CMV Movie Editor]<br />
<br />
[[Category:Game Formats|CMV, Bay 12]]<br />
[[Category:Video Codecs|CMV, Bay 12]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=DirectDraw_Surface&diff=11647DirectDraw Surface2009-05-23T18:26:58Z<p>Andux: update, +Category:Multimedia APIs</p>
<hr />
<div>* Extensions: dds<br />
* Company: [[Microsoft]]<br />
* Specification: [http://msdn.microsoft.com/en-us/library/bb943990%28VS.85%29.aspx DDS] at MSDN<br />
<br />
The '''DirectDraw Surface''' ('''DDS''') file format is used to store textures and cubic environment maps for use with [[DirectX]].<br />
<br />
[[Category:Container Formats]]<br />
[[Category:Multimedia APIs]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:Multichannel_Audio_Codecs&diff=9885Category:Multichannel Audio Codecs2008-04-01T20:22:31Z<p>Andux: Category:Audio Codecs</p>
<hr />
<div>List of all audio codecs that can deliver multichannel (more than 2 channels) of audio.<br />
<br />
[[Category:Audio Codecs]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:YCbCr_Formats&diff=9067Category:YCbCr Formats2007-11-15T07:13:37Z<p>Andux: Category:Pixel Formats</p>
<hr />
<div>Various variants of color encodings based on the color space YCbCr which is used in nearly all digital video formats. (YCbCr is often falsely mixed up with the color space YUV which is only used in analog TV and video, namely in [[PAL]]-based applications.)<br />
<br />
[[Category:Pixel Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:Formats_missing_in_FFmpeg&diff=9066Category:Formats missing in FFmpeg2007-11-15T07:06:42Z<p>Andux: Category:FFmpeg</p>
<hr />
<div>List of multimedia formats that have not yet been implemented in [[FFmpeg]] (but should eventually).<br />
<br />
[[Category:FFmpeg]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=FFmpeg_Wishlist&diff=9065FFmpeg Wishlist2007-11-15T07:05:55Z<p>Andux: Category:FFmpeg</p>
<hr />
<div>The various desired features for FFmpeg can be found in the following pages:<br />
* [https://roundup.mplayerhq.hu/roundup/ffmpeg/issue?%40&%40columns=title&%40columns=topic&id=&%40columns=id&%40columns=activity&%40sort=activity&%40columns=priority&%40group=priority&type=2&status=2&%40columns=substatus&%40pagesize=50&%40startwith=0&%40action=search Open feature requests in the issue tracker]<br />
* [http://svn.mplayerhq.hu/ffmpeg/trunk/doc/TODO?view=co TODO file in the SVN tree]<br />
* [[FFmpeg Summer Of Code]] pages<br />
* Finish and commit any code not yet commited at the [http://svn.mplayerhq.hu/soc/ SoC FFmpeg tree]<br />
<br />
Also, other features requests can be found in:<br />
* [https://roundup.mplayerhq.hu/roundup/ffmpeg/issue?%40&%40columns=title&%40columns=topic&id=&%40columns=id&%40columns=activity&%40sort=activity&%40columns=priority&%40group=priority&type=2&status=1&%40columns=substatus&%40pagesize=50&%40startwith=0&%40action=search Feature requests marked as "new"]<br />
* Below in this page (mostly deprecated items)<br />
<br />
<br />
See also the discussion about [[Ffmpeg audio api|Audio API]] TODOs.<br />
<br />
<br />
<br />
<br />
<br />
<br />
= Old list =<br />
<br />
The following is deprecated, please '''do not''' add new items to this list, use instead the issue tracker. Also, send a message to the mailing list before implementing one of those items. They could be work-in-progress or not wanted anymore.<br />
<br />
Moving any of these items to a '''proper''' feature request in the issue tracker is welcome.<br />
<br />
<br />
== Decoders ==<br />
* Add b-frame support to the ffsvq3 decoder<br />
* integrate [[Speex]] (glue code or native) <br />
* Fix "[rv20 @ 009C8BF0]unknown bit3 set" in [[RV20]] decoder<br />
* [[xeb|XEB]] - the [[RatDVD]] video codec (stored in [[xvo|XVO]] container format)<br />
* VNC decoder, files created by vncrec. Re-use code from [[VMware Video]] decoder http://www.sodan.org/~penny/vncrec/<br />
* Additional game formats support:<br />
** [[VQA]] v3 support, see http://www.gamers.org/pub/idgames2/planetquake/planetcnc/cncdz/<br />
** [[Gremlin Digital Video]]<br />
** [[ARMovie|ARMovie/RPL]]<br />
** [[ESCAPE]]<br />
** [[M95]]<br />
<br />
== Demuxers ==<br />
* [[FluxDVD]] / [[RatDVD]] demuxer for [[xvo|XVO]] files (Note! [[RatDVD]] is the predecesor of [[FluxDVD]])<br />
<br />
== Muxers ==<br />
* DVB (MPEG-TS) muxer inside DVB containers<br />
** MPEG-1/2 video-streams inside DVB containers<br />
** MPEG-4 ASP video-streams inside DVB containers<br />
** MPEG-4 AVC (H.264) video-streams inside DVB containers<br />
** AC3 audio-streams inside DVB containers<br />
*** Mutiple AC3 audio-streams inside DVB containers<br />
** MP3 audio-streams inside DVB containers<br />
*** Mutiple MP3 audio-streams inside DVB containers<br />
* NSV muxer<br />
* NSA muxer<br />
<br />
<br />
<br />
== Features ==<br />
* Create a new audio API system<br />
* Grabbing from video devices under windows<br />
** Apply [[Interesting Patches#Microsoft Video for Windows capture support|this]] VFW capture patch<br />
** Create a DirectShow patch<br />
* -[h|v]flip options for ffplay<br />
* Improved exition documentation and add additional means to document<br />
**Web<br />
**WIKI<br />
**manpage<br />
<br />
== Misc ==<br />
* Clean up the h263 rtp [[Interesting Patches#H.263 rtp patch|patch]].<br />
<br />
== Streaming Media Network Protocols ==<br />
Streaming Media Network Protocols (client and server-side) improvements/enhancements and related ideas for new features/functions.<br />
* Create a common 'stream demuxer/parser library' for the client-side to receive input streams (and/or API for adding support for additional streaming formats?) - a LGPL'ed sub-library in FFmpeg with all stream demuxers/parsers gathered (similar to the libpostproc and libavutil). Call it "libstream" (or "stream" or whatever). Move FFmpeg's existing stream code there like HTTP and RTSP/RTP. This will help reduce future code replication by sharing common code, thus making it easier to add support for additional streaming formats. All togther making it super easy for audio/video players using FFmpeg to add all-in-one streaming support to their player.<br />
**Maybe use either [http://www.mplayerhq.hu MPlayer]'s "''stream''" library structure, [http://www.live555.com LIVE555], [http://curl.haxx.se cURL], or probebly the better [http://streaming.polito.it/client/library libnms] (from [http://streaming.polito.it/client NeMeSi]) as a base for such a common library?<br />
*Add support for additional streaming protocols (on the client side) and improve/enhance support for existing protocols:<br />
** HTTP (Hypertext Transfer Protocol) client<br />
*** plus a SSL (Secure Sockets Layer) client support for HTTPS<br />
** UDP (User Datagram Protocol) client<br />
** RTSP - Real-Time Streaming Protocol (RFC2326) client<br />
** RTP/RTCP - Real-Time Transport Protocol/RTP Control Protocol (RFC3550) client<br />
** RTP Profile for Audio and Video Conferences with Minimal Control (RFC3551) client<br />
** RealMedia RTSP/RDT (Real Time Streaming Protocol / Real Data Transport) client<br />
** SDP (Service Discovery Protocol) / SSDP (Simple Service Discovery Protocol) client<br />
** MMS (Microsoft Media Services) client<br />
*** including the subprotocol mmsh (MMS over HTTP) and mmst (MMS over TCP)<br />
*FFServer (streaming server) updating and improving:<br />
**FFServer code hasn't been update for quite a while<br />
**Support for RTSP interleaved RTP media <br />
**RTSP over HTTP tunneling<br />
**SLL (Secure Sockets Layer) support<br />
**TLS (Transport Layer Security) support<br />
**SCTP (Stream Control Transmission Protocol) support<br />
***including tunnel SCTP over UDP<br />
**Per-asset accounting options <br />
**Profiling and performance improvements of the RTSP, HTTP and RTP server code <br />
**Streaming to clients like WMP 9, 10 and 11 is broken<br />
**MMS server streaming support in FFServer, (especially for Linux).<br />
*** including the subprotocol mmsh (MMS over HTTP) and mmst (MMS over TCP)<br />
*** Note that al3x has gotten something working with ffserver, you might want to ask him what needs to be done as well :) --[[User:Compn|Compn]] 14:22, 19 March 2007 (EDT)<br />
***You should also take a look at the [http://streaming.polito.it/server FENG (RTSP Streaming Server)] code, [http://streaming.polito.it/embedded NetEmbryo (Embedded Open Media Streaming Library)], and also [http://curl.haxx.se cURL] --[[User:Gamester17|Gamester17]] 11:20, 29 March 2007 (GMT+1)<br />
<br />
==See Also==<br />
*[[FFmpeg Summer Of Code]] for more suggestions/requests (ideas for developers).<br />
*[http://bugzilla.mplayerhq.hu/buglist.cgi?query_format=specific&order=relevance+desc&bug_status=__open__&product=FFmpeg&content= FFmpeg bugs] for bugs in FFmpegs (codecs) that you can help fix or add addition information/samples to.<br />
*[[:Category:Formats missing in FFmpeg]] for formats not implemented in ffmpeg yet<br />
<br />
[[Category:FFmpeg]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=FFmpeg_/_Libav_Summer_Of_Code&diff=9064FFmpeg / Libav Summer Of Code2007-11-15T07:05:35Z<p>Andux: Category:FFmpeg</p>
<hr />
<div>The [[FFmpeg]] project has been a participant in the [http://code.google.com/soc/ Google Summer of Code] program during the 2006 and 2007 seaons.<br />
<br />
* [[FFmpeg Summer Of Code 2006|2006 project page]]<br />
* [[FFmpeg Summer Of Code 2007|2007 project page]]<br />
<br />
Each accepted project is developed in its own sandbox, separate from the main FFmpeg codebase. Naturally, the end goal of each of the accepted FFmpeg projects ought to be to have that code in shape for acceptance into the production codebase. This page tracks the status of each project.<br />
<br />
== 2006 Projects ==<br />
<br />
=== VC-1 Decoder ===<br />
* Student: [[User:Kostya|Kostya Shishkov]]<br />
* Mentor: [[User:Multimedia Mike|Mike Melanson]]<br />
* Status: <font color="#00CC00">Accepted into the FFmpeg codebase.</font><br />
<br />
=== AMR Decoder ===<br />
* Student: [[User:superdump|Robert Swain]]<br />
* Mentor: [[User:Merbanan|Benjamin Larsson]]<br />
* Status: Unfinished, but slowly progressing. Narrow band decoding documented on [[AMR-NB]] and floating point code has been implemented up to gain decoding.<br />
<br />
=== AC3 Decoder ===<br />
* Student: [[User:Cloud9|Kartikey Mahendra BHATT]]<br />
* Mentor: [[User:Merbanan|Benjamin Larsson]]<br />
* Status: Not finished by the student but picked up by Justin Ruggles and <font color="#00CC00">committed to FFmpeg</font>.<br />
<br />
=== AAC Decoder ===<br />
* Student: Maxim Gavrilov<br />
* Mentor: [[User:ods15|Oded Shimon]]<br />
* Status: unfinished, orphaned<br />
<br />
=== Vorbis Encoder ===<br />
* Student: Mathew Philip<br />
* Mentor: [[User:ods15|Oded Shimon]]<br />
* Status: The student disappeared, but picked up by [[User:ods15|Oded Shimon]] and <font color="#00CC00">committed to FFmpeg</font>.<br />
<br />
== 2007 Projects ==<br />
<br />
=== RealVideo 4 Decoder ===<br />
* Student: [[User:Kostya|Kostya Shishkov]]<br />
* Mentor: [[User:Multimedia Mike|Mike Melanson]]<br />
* Status: Not in FFmpeg codebase yet; project goal has also morphed to include RealVideo 3 decoder since the 2 schemes are so similar. Both RV30 and RV40 are decodable with visual artifacts.<br />
<br />
=== QCELP Decoder ===<br />
* Student: [[User:Reynaldo|Reynaldo Verdejo Pinochet]]<br />
* Mentor: [[User:Merbanan|Benjamin Larsson]]<br />
* Status: slowly progressing, it's working though<br />
<br />
=== Matroska Muxer ===<br />
* Student: David Conrad<br />
* Mentor: [[User:aurel|Aurélien Jacobs]]<br />
* Status: <font color="#00CC00">Accepted into the FFmpeg codebase.</font><br />
<br />
=== Video Filter API (AKA libavfilter) ===<br />
* Student: [[User:Koorogi|Bobby Bingham]]<br />
* Mentor: [[User:Merbanan|Benjamin Larsson]] and Michael Niedermayer<br />
* Status: Working code for ffplay and ffmpeg. Colorspace negotiation needs some work. Still in development (albeit slowly) by [[User:Koorogi|Bobby Bingham]] and [[User:Vitor|Vitor]].<br />
<br />
=== E-AC3 Decoder ===<br />
* Student: Bartlomiej Wolowiec<br />
* Mentor: [[User:Jruggle|Justin Ruggles]]<br />
* Status: Working for most available samples. There are still some unimplemented features though. The code is currently not clean enough for inclusion in FFmpeg.<br />
<br />
=== JPEG 2000 Encoder and Decoder ===<br />
* Student: Kamil Nowosad<br />
* Mentor: [[User:pengvado|Loren Merritt]]<br />
* Status: The code is working but not all features are supported.<br />
<br />
=== Dirac Encoder and Decoder ===<br />
* Student: Marco Gerards<br />
* Mentor: [[User:Lu_zero|Luca Barbato]]<br />
* Status: The decoder is in good shape, the encoder still needs more work. Marco is still working on it and tracking the updated specification, just slower than before due to other tasks taking priority.<br />
<br />
=== TS Muxer ===<br />
* Student: Xiaohui Sun<br />
* Mentor: [[User:bcoudurier|Baptiste Coudurier]]<br />
* Status: [[Interesting Patches#PES packetizer by Xiaohui Sun|Changes]] requested during the review process for FFmpeg inclusion were never made, then the student disappeared.<br />
<br />
[[Category:FFmpeg]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=FFmpeg&diff=9063FFmpeg2007-11-15T07:04:55Z<p>Andux: Category:FFmpeg</p>
<hr />
<div>FFmpeg is the project that hosts the [[libavcodec]] codec library, a decoder/encoder codec-suit that forms the basis of most free and open source software multimedia programs. The FFmpeg project aims to support all popular and less known codec formats and it is closer to that goal than any other (commercial or open source) program or library<br />
<br />
FFmpeg also contains [[libavformat]], a library for multimedia container formats and [[libpostproc]] for postprocessing. [[ffplay]] is a simple media player that uses libavcodec and libavformat.<br />
<br />
==See also==<br />
*[[FFmpeg Summer Of Code]]<br />
*[[FFmpeg Wishlist]]<br />
<br />
==Other projects and applications that use FFmpeg==<br />
*[http://sourceforge.net/projects/ac3encode/ ac3encode (DirectShow AC3 Encoder)]<br />
*[http://atglas.sourceforge.net/ AtGLas]<br />
*[http://avifile.sourceforge.net/ avifile]<br />
*[http://gatos.sourceforge.net/avview.php Avview]<br />
*[http://www.bbrox.org/iPAQ/BBPlay/ bbplay]<br />
*[http://www.bebits.com/app/2575 BeOS FFmpeg decoders]<br />
*[http://www.bebits.com/app/2867 BeOS HybridDivx]<br />
*[http://dspguru.doom9.net/ BeSweet]<br />
*[http://chromaplayer.com/ Chroma Player]<br />
*[http://sourceforge.net/projects/chronictv/ chronictv]<br />
*[http://www.coreplayer.com/ CorePlayer]<br />
*[http://www.objectifmac.com/english/downloads.php D-Volution]<br />
*[http://mh1.de/divxray/ DivXray]<br />
*[http://sourceforge.net/projects/divxtodvd/ DivXtoDVD]<br />
*[http://expandinglimits.com/drdivx/ Dr. Divx]<br />
*[http://dvbcut.sourceforge.net/ dvbcut]<br />
*[http://www.dvdflick.net/ DVDFlick]<br />
*[http://sourceforge.net/projects/easyvob2divx/ Easy VOB 2 DivX]<br />
*[http://ffdshow.sourceforge.net/ ffdshow]<br />
*[http://ffdshow-tryout.sourceforge.net/ ffdshow tryouts]<br />
*[http://ffmpeg-php.sourceforge.net/ ffmpeg-php]<br />
*[http://www.v2v.cc/~j/ffmpeg2theora/ ffmpeg2theora]<br />
*[http://sourceforge.net/projects/qt-ffmpeg/ FFMPEG for QT]<br />
*[http://homepage.mac.com/major4/ ffmpegX for Mac OS X]<br />
*[http://homepage.mac.com/gellenburg/ffmpegX_Companion/ ffmpegX Companion]<br />
*[http://colabti.de/convertx/ FFRecord]<br />
*[http://fftv.sourceforge.net/ fftv]<br />
*[http://aldorandenet.free.fr/codecs/ FFusion, Alternative Codecs for Mac OS X]<br />
*[http://fmj.sourceforge.net/ FMJ]<br />
*[http://fobs.sourceforge.net/ Fobs]<br />
*[http://freej.org/ FreeJ]<br />
*[http://frogger.rules.pl/ Frogger]<br />
*[http://gallery.sourceforge.net/ Gallery]<br />
*[http://gmerlin.sourceforge.net/ gmerlin]<br />
*[http://www.gomplayer.com/ GOM Player]<br />
*[http://gpac.sourceforge.net/ GPAC]<br />
*[http://www.gstreamer.net/ GStreamer]<br />
*[http://handbrake.m0k.org/ HandBrake]<br />
*[http://www.lonelycoder.com/hts/ HTS (Home Theater System)]<br />
*[http://apple-x.net/thetakent/products.html Hyperion]<br />
*[http://imtoo.com/ ImTOO DVD Ripper]<br />
*[http://jffmpeg.sourceforge.net/ Jffmpeg]<br />
*[http://www.kdenlive.org/ Kdenlive]<br />
*[http://kfilm.sourceforge.net/ KFilm]<br />
*[http://www.iki.fi/damu/software/kmediafactory/index.html KMediaFactory]<br />
*[http://www.konvertor.net/indexe.html Konvertor]<br />
*[http://ktoon.toonka.com/ KToon]<br />
*[http://libquicktime.sourceforge.net/ libquicktime]<br />
*[http://www.xs4all.nl/~salsaman/lives/index.html LIVES]<br />
*[http://lulop2.sourceforge.net/ LULOP2]<br />
*[http://lynkeos.sourceforge.net/ Lynkeos]<br />
*[http://mconverter.sourceforge.net/ mConverter]<br />
*[http://mlt.sourceforge.net/ MLT Framework]<br />
*[http://www.nurs.or.jp/~calcium/3gpp/sources/ MobileHackerz]<br />
*[http://www.miksoft.net/mobileMediaConverter.htm Mobile Media Converter]<br />
*[http://sourceforge.net/projects/modprismiq/ modprismiq]<br />
*[http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome Motion]<br />
*[http://moviethumbnail.sourceforge.net/ movie thumbnailer]<br />
*[http://www.mp4converter.net/dvd-to-appletv-converter-mac.html mp4converter]<br />
*[http://mpeg4ip.sourceforge.net/ mpeg4ip]<br />
*[http://mplayerhq.hu/ MPlayer]<br />
*[http://mplayerplug-in.sourceforge.net/ mplayer plug-in]<br />
*[http://www.mythtv.org/ MythTV]<br />
*[http://www.networkmultimedia.org/ Network-Integrated Multimedia Middleware (NMM)]<br />
*[http://nvrec.sourceforge.net/ nvrec]<br />
*[http://www.2600.com/offthehook/ Off The Hook]<br />
*[http://openh323.sourceforge.net/ OpenH323]<br />
*[http://www.perian.org/ Perian]<br />
*[http://www.gocyberlink.com/english/companybg/pcmlinuxgpl.jsp PowerCinema for Linux]<br />
*[http://1homebrew.com/psp/pmppspmediaplayer.shtml PSP Media Player]<br />
*[http://www.pspvideo9.com/ PSP Video 9]<br />
*[http://pymedia.org/ PyMedia]<br />
*[http://qemacs.org/ QEmacs]<br />
*[http://qstream.org/ QStream]<br />
*[http://linuxvideo.info/ QuickView Pro]<br />
*[http://rivavx.com/ Riva VX]<br />
*[http://applian.com/replay-converter/ Replay Converter]<br />
*[http://rmovie.rubyforge.org rmovie]<br />
*[http://shotdetect.nonutc.fr/ shotdetect]<br />
*[http://sourceforge.net/projects/screenkast/ SkreenKast]<br />
*[http://streamstudio.sourceforge.net/ StreamStudio]<br />
*[http://www.erightsoft.net/SUPER.html SUPER]<br />
*[http://megafonts.free.fr/flv/ TaKa FLV Encoder]<br />
*[http://tcvp.sourceforge.net/ TCVP]<br />
*[http://www.thekompany.com/embedded/tkcvideo/ tkcVideo]<br />
*[http://www.transcoding.org/ Transcode]<br />
*[http://www.tversity.com/ TVersity]<br />
*[http://vchannel.sourceforge.net/player.html V-Player]<br />
*[http://www.vdownloader.es/ VDownloader]<br />
*[http://softdevice.berlios.de/ vdr-softdevice]<br />
*[http://veejay.sourceforge.net/ VeeJay]<br />
*[http://www.viceteam.org/ VICE]<br />
*[http://www.videolan.org/ VideoLAN]<br />
*[http://virchor.sourceforge.net/ Virtual Choreographer]<br />
*[http://vitooki.sourceforge.net/ ViTooKi]<br />
*[http://vive.sourceforge.net/ Vive]<br />
*[http://biggmatt.com/winff/ WinFF]<br />
*[http://qtwmacodec.sourceforge.net/ WMA codec for Mac OS X]<br />
*[http://xawdecode.sourceforge.net/ Xawdecode]<br />
*[http://www.xboxmediaplayer.de/ XBox Media Player]<br />
*[http://www.xinehq.de/ xine]<br />
*[http://sourceforge.net/projects/xmffmpeg/ XMFFMPEG]<br />
*[http://xvidcap.sourceforge.net/ xvidcap]<br />
*[http://sourceforge.net/projects/xbyamp YAMP]<br />
*[http://yellowtab.com/ Zeta]<br />
*[http://www.zoneminder.com/ ZoneMinder]<br />
<br />
==External Links==<br />
* [http://ffmpeg.mplayerhq.hu FFmpeg official website]<br />
* [http://en.wikipedia.org/wiki/FFmpeg Wikipedia FFmpeg article]<br />
<br />
[[Category:FFmpeg]]<br />
[[Category:Multimedia Projects]]<br />
[[Category: Multimedia Programs]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:FFmpeg&diff=9062Category:FFmpeg2007-11-15T07:04:39Z<p>Andux: </p>
<hr />
<div>Main article: '''[[FFmpeg]]'''</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:FFmpeg_Tutorials&diff=9061Category:FFmpeg Tutorials2007-11-15T07:03:01Z<p>Andux: Category:FFmpeg</p>
<hr />
<div>Tutorials for:<br />
* Using the FFmpeg library in your own projects<br />
* Developing with the FFmpeg library<br />
<br />
[[Category:FFmpeg]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Ffmpeg&diff=9060Ffmpeg2007-11-15T07:02:37Z<p>Andux: #REDIRECT FFmpeg</p>
<hr />
<div>#REDIRECT [[FFmpeg]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:FFmpeg_Pixel_Formats&diff=9059Category:FFmpeg Pixel Formats2007-11-15T07:01:10Z<p>Andux: Category:FFmpeg, Category:Pixel Formats</p>
<hr />
<div>List of all pixel formats used by ffmpeg.<br />
<br />
[[Category:FFmpeg]]<br />
[[Category:Pixel Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:Undiscovered_Image_Formats&diff=9055Category:Undiscovered Image Formats2007-11-15T06:45:50Z<p>Andux: Category:Image Formats</p>
<hr />
<div>Image formats which are not publicly known and for which no open source implementation exists yet.<br />
<br />
[[Category:Image Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=HMI&diff=8941HMI2007-11-06T14:19:37Z<p>Andux: hooray for obscure file formats</p>
<hr />
<div>* Company: Human Machine Interfaces Inc.<br />
* Extension: hmi<br />
<br />
'''HMI''' is an uncommon [[MIDI]] variant which supports looping and conditional branching, used in ''The Elder Scrolls II: Daggerfall'' and ''Tex Murphy: Overseer''.<br />
<br />
==Related software==<br />
*[http://web.archive.org/web/*/http://texmurphy.com/tm/playhmi.zip PlayHMI]<br />
*[http://www.ttdpatch.net/midi/games.html HMI2MID]<br />
<br />
[[Category: Music Pattern Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=MIDI&diff=8940MIDI2007-11-06T14:08:51Z<p>Andux: add some info from wikipedia</p>
<hr />
<div>* Company: [http://www.midi.org/ MIDI Manufacturers Association]<br />
* Extensions: mid, midi<br />
* Documentation: http://www.borg.com/~jglatt/tech/miditech.htm<br />
<br />
'''MIDI''' ('''Musical Instrument Digital Interface''') is an industry-standard protocol that enables electronic musical instruments, computers and other equipment to communicate, control and synchronize with each other. MIDI messages (along with timing information) can be collected and stored in what is commonly called a MIDI file, or more formally, a Standard MIDI File.<br />
<br />
[[Category: Music Pattern Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Mirrored_Files&diff=8831Mirrored Files2007-10-25T22:08:29Z<p>Andux: correct link to Id CIN mirror</p>
<hr />
<div>This is a list of official technical documents that are mirrored at multimedia.cx for convenience or archival: http://multimedia.cx/mirror/<br />
<br />
Contact [[User:Multimedia Mike|Multimedia Mike]] in order to add documents to the mirror.<br />
<br />
* [[A52]]:<br />
** mirror: http://multimedia.cx/mirror/a_52b.pdf<br />
** original: http://www.atsc.org/standards/a_52b.pdf<br />
<br />
* [[Audio Interchange File Format]]:<br />
** mirror: http://multimedia.cx/mirror/AudioIFF1_2_1.htm<br />
<br />
* [[Cinepak]]:<br />
** mirror: http://multimedia.cx/mirror/cinepak.txt<br />
** original: http://www.csse.monash.edu.au/%7etimf/videocodec/cinepak.txt<br />
<br />
* [[CYUV]]:<br />
** mirror: http://multimedia.cx/mirror/cyuv.txt<br />
** original: http://www.csse.monash.edu.au/~timf/videocodec/cyuv.txt<br />
<br />
* [[Dialogic IMA ADPCM]]:<br />
** mirror: http://multimedia.cx/mirror/dialogic-adpcm.pdf<br />
<br />
* [[DTS]]:<br />
** mirror (document 1): http://multimedia.cx/mirror/dts1.pdf<br />
** mirror (document 2): http://multimedia.cx/mirror/dts2.pdf<br />
<br />
* [[H264]] draft specification, marked 2002 (E):<br />
** mirror: http://multimedia.cx/mirror/JVT-G050.pdf<br />
<br />
* [[IBM UltiMotion]] specification:<br />
** mirror: http://multimedia.cx/mirror/UMSPEC.ZIP<br />
<br />
* Id [[CIN]]:<br />
** mirror: http://multimedia.cx/mirror/idcin.html<br />
** original: http://www.csse.monash.edu.au/~timf/videocodec/idcin.html<br />
<br />
* Id [[RoQ]]:<br />
** mirror: http://multimedia.cx/mirror/idroq.txt<br />
** original: http://www.csse.monash.edu.au/~timf/videocodec/idroq.txt<br />
<br />
* [[Meridian Lossless Packing]] whitepaper:<br />
** mirror: http://multimedia.cx/mirror/mlp_jap_new.PDF<br />
** original: http://www.meridian-audio.com/w_paper/mlp_jap_new.PDF<br />
<br />
* [[On2 VP6]] whitepaper:<br />
** mirror: http://multimedia.cx/mirror/vp6-white-paper.pdf<br />
** original: http://www.on2.com/cms-data/pdf/1125607149174329.pdf<br />
<br />
* [[On2 VP7]] whitepaper:<br />
** mirror: http://multimedia.cx/mirror/vp7-white-paper.pdf<br />
** original: http://www.on2.com/cms-data/pdf/1123531744838491.pdf<br />
<br />
* [[PVA]] specification:<br />
** mirror: http://multimedia.cx/mirror/av_format_v1.pdf<br />
<br />
* [[VC-1]] (a.k.a. VC-9) draft specification, dated 2004-03-31<br />
** http://multimedia.cx/mirror/C24.008-VC9-Spec-CD1.pdf</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Talk:DirectDraw_Surface&diff=8187Talk:DirectDraw Surface2007-07-10T15:35:11Z<p>Andux: </p>
<hr />
<div>This article looks like a candidate for deletion. How is it multimedia-related? --[[User:DonDiego|DonDiego]] 06:42, 4 July 2007 (EDT)<br />
<br />
:Bluh? It's used to store texture images. How much more multimediacal can you get? &mdash;[[User:Andux|Andux]]<sup>[[User_talk:Andux|␅]]</sup> 07:48, 4 July 2007 (EDT)<br />
<br />
:: I think there is a difference between multimedia and computer graphics. AFAICT this falls under the latter category. --[[User:DonDiego|DonDiego]] 08:11, 9 July 2007 (EDT)<br />
<br />
:::No more so than [[:Category:3D Mesh Formats|3D mesh formats]], which seem to have [http://multimedia.cx/eggs/branching-out/ approval from on high]. &mdash;[[User:Andux|Andux]]<sup>[[User_talk:Andux|␅]]</sup> 11:35, 10 July 2007 (EDT)</div>Anduxhttps://wiki.multimedia.cx/index.php?title=DirectDraw_Surface&diff=8180DirectDraw Surface2007-07-04T11:49:42Z<p>Andux: +exts</p>
<hr />
<div>* Extensions: dds<br />
* Company: [[Microsoft]]<br />
* Specification: [http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/directx9_c/directx/graphics/reference/ddsfilereference/ddsfileformat.asp DDS File Reference] at MSDN<br />
<br />
The '''DirectDraw Surface''' ('''DDS''') file format is used to store textures and cubic environment maps.<br />
<br />
[[Category:Container Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Talk:DirectDraw_Surface&diff=8179Talk:DirectDraw Surface2007-07-04T11:48:57Z<p>Andux: Bluh?</p>
<hr />
<div>This article looks like a candidate for deletion. How is it multimedia-related? --[[User:DonDiego|DonDiego]] 06:42, 4 July 2007 (EDT)<br />
<br />
:Bluh? It's used to store texture images. How much more multimediacal can you get? &mdash;[[User:Andux|Andux]]<sup>[[User_talk:Andux|␅]]</sup> 07:48, 4 July 2007 (EDT)</div>Anduxhttps://wiki.multimedia.cx/index.php?title=S3TC&diff=8178S3TC2007-07-04T11:37:36Z<p>Andux: /* Containers */ DirectShow Surface -> DirectDraw Surface</p>
<hr />
<div>S3 Texture Compression (S3TC) is a family of image compression algorithms developed by S3 for their Savage 3D line of graphics cards. It is also known as DXTn or DXTC.<br />
<br />
==Introduction==<br />
<br />
S3TC is a lossy compression algorithm that transforms blocks of 4x4 RGBA32 pixels to either 64 or 128 bits. The different compression schemes are often denoted by their Microsoft assigned FourCC.<br />
<br />
==DXT1==<br />
<br />
16 input pixels are encoded as follows:<br />
<br />
uint16_t color0;<br />
uint16_t color1;<br />
uint32_t pixels;<br />
<br />
''color0'' and ''color1'' are RGB565 color values. ''pixels'' are 16 2-bit pixels, referring to ''color0..3''. Each component of ''color2'' and ''color3'' is calculated by:<br />
<br />
if (color0 > color1)<br />
c2 = (2 * c0 + c1) / 3<br />
c3 = (2 * c1 + c0) / 3<br />
else<br />
c2 = (c0 + c1) / 2<br />
c3 = 0<br />
<br />
The pixels are stored in raster scan order and start at the least significant two bits of ''pixels''. The alpha channel of each pixel is considered fully opaque, except when color0 <= color1. In that case, the alpha channel of color3 is considered fully transparent.<br />
<br />
==DXT2/3==<br />
<br />
16 input pixels are encoded as follows:<br />
<br />
uint64_t alpha;<br />
uint16_t color0;<br />
uint16_t color1;<br />
uint32_t pixels;<br />
<br />
''alpha'' contains the alpha channel, 4 bits for each pixel. The colors and pixels are encoded similar to DXT1, with the exception that the components of ''color2'' and ''color3'' are always calculated by:<br />
<br />
c2 = (2 * c0 + c1) / 3<br />
c3 = (2 * c1 + c0) / 3<br />
<br />
DXT2 considers the pixel values premultiplied by alpha. DXT3 does not.<br />
<br />
==DXT4/5==<br />
<br />
16 input pixels are encoded as follows:<br />
<br />
uint8_t alpha0;<br />
uint8_t alpha1;<br />
uint48_t alpha;<br />
uint16_t color0;<br />
uint16_t color1;<br />
uint32_t pixels;<br />
<br />
''color0'', ''color1'' and ''pixels'' are similar to DXT2/3. The alpha channel is encoded in ''alpha'' as 16 3-bit values, referring to ''alpha0..7''. ''alpha2'' to ''alpha7'' are calculated by:<br />
<br />
if (alpha0 > alpha1)<br />
alpha2 = (6 * alpha0 + 1 * alpha1) / 7<br />
alpha3 = (5 * alpha0 + 2 * alpha1) / 7<br />
alpha4 = (4 * alpha0 + 3 * alpha1) / 7<br />
alpha5 = (3 * alpha0 + 4 * alpha1) / 7<br />
alpha6 = (2 * alpha0 + 5 * alpha1) / 7<br />
alpha7 = (1 * alpha0 + 6 * alpha1) / 7<br />
else<br />
alpha2 = (4 * alpha0 + 1 * alpha1) / 5<br />
alpha3 = (3 * alpha0 + 2 * alpha1) / 5<br />
alpha4 = (2 * alpha0 + 3 * alpha1) / 5<br />
alpha5 = (1 * alpha0 + 4 * alpha1) / 5<br />
alpha6 = 0<br />
alpha7 = 255<br />
<br />
DXT4 considers the pixel values premultiplied by alpha. DXT5 does not.<br />
<br />
==Containers==<br />
<br />
S3TC compressed textures can be found in the following containers:<br />
<br />
* [[DirectDraw Surface]] (DDS) files<br />
* [[TXD]] Renderware TeXture Dictionaries<br />
<br />
==Variations and derivatives==<br />
<br />
* [[FXT1]]<br />
* [[3Dc]]<br />
<br />
[[Category: Image Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Microsoft_Wave&diff=8173Microsoft Wave2007-07-02T13:03:30Z<p>Andux: +spec</p>
<hr />
<div>* Extensions: wav<br />
* Company: [[Microsoft]]<br />
* Specification: http://ccrma.stanford.edu/courses/422/projects/WaveFormat/<br />
<br />
The '''Microsoft Wave''' format ('''WAV''') is a very common format used for transporting audio data, based on the [[RIFF]] container format. The WAV format uses 16-bit numbers to identify different audio coding formats. The WAV format is likely the origination point for the infamous [[WAVEFORMATEX|WAVEFORMAT(EX)]] data structures that permeate through computer multimedia technology to this day.<br />
<br />
== Structure ==<br />
<br />
A basic WAV file has this [[RIFF]] structure:<br />
<br />
RIFF "WAVE"<br />
DATA "fmt " (space at end), len: 16<br />
DATA "data"<br />
<br />
However, some files may have additional chunks containing metadata, etc.<br />
<br />
[[Category:Container Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=RIFF&diff=8172RIFF2007-07-02T13:01:23Z<p>Andux: +spec</p>
<hr />
<div>* Company: [[Microsoft]]<br />
* Specification: http://netghost.narod.ru/gff/graphics/summary/micriff.htm<br />
<br />
The '''Resource Interchange File Format''' ('''RIFF''') is the chunked container format which forms the basis for the [[Microsoft Wave]] and [[Microsoft Audio/Video Interleaved|AVI]] formats.<br />
<br />
== Structure ==<br />
<br />
General structure for all RIFF nodes:<br />
<br />
Nodes can be data or '''LIST''', data structure is:<br />
<br />
4 bytes name (a.k.a. FourCC)<br />
4 bytes length, 32 bit integer in little-endian<br />
''length'' bytes data<br />
optionally 1 byte padding if length is odd<br />
<br />
'''LIST''' structure is:<br />
<br />
4 bytes string "LIST"<br />
4 bytes length, 32 bit integer in little-endian<br />
4 bytes name<br />
''length'' bytes data - data is a list of nodes.<br />
optionally 1 byte padding if length is odd<br />
<br />
An entire RIFF file has the structure:<br />
<br />
4 bytes string "RIFF"<br />
4 bytes length, 32 bit integer in little-endian<br />
4 bytes name<br />
''length'' bytes data - data is a list of nodes.<br />
<br />
<br />
[[Category:Container Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Microsoft_Audio/Video_Interleaved&diff=8171Microsoft Audio/Video Interleaved2007-07-02T12:17:07Z<p>Andux: moved section on RIFF to its own article; added links and improved opening blurb a bit</p>
<hr />
<div>* Extensions: avi<br />
* Company: [[Microsoft]]<br />
* Technical Description From Microsoft: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directshow/htm/avifileformat.asp<br />
* John McGowan's AVI Overview: http://www.jmcgowan.com/avi.html<br />
<br />
'''Microsoft Audio/Video Interleaved''' ('''AVI''') is a multimedia format based on the [[RIFF]] container format. For a long time, AVI was the de facto standard for multimedia files on Windows (recently, [[ASF]] has supplanted AVI on the Windows platform). While there is some contention<br />
regarding the originator of the format, the fact remains that there were, and still are, a wide variety of computer applications that create AVI files. This leads to a lot of fragmentation and application-specific nuances in a standard that was never particularly well-defined in the first place.<br />
<br />
== Structure ==<br />
<br />
An AVI has this [[RIFF]] structure:<br />
<br />
RIFF "AVI " (space at end)<br />
LIST "hdrl"<br />
DATA "avih", len: 56<br />
LIST "strl"<br />
DATA "strh", len: 56<br />
DATA "strf"<br />
''LIST "strl"''<br />
...<br />
''LIST: name: `INFO''' (optional)<br />
...<br />
LIST "movi"<br />
DATA "00dc"<br />
DATA "01wb"<br />
...<br />
DATA "idx1"<br />
<br />
== Idiosyncracies ==<br />
''This section comes from the document 'AVI Files: Tips & Quirks' by Arpad "A'rpi" Gereoffy found at http://multimedia.cx/avistuff.txt''<br />
<br />
=== Introduction ===<br />
A'rpi is the originator of the [[MPlayer]] media application for Linux. It's an open source movie player that can decode AVI files, as well as a number of other file formats. He has encountered a lot of AVIs created by a lot of different programs and is qualified to write about some of the quirks and nuances a programmer might encounter when writing a general purpose AVI file decoder.<br />
<br />
=== Random Tips For Processing AVI File ===<br />
In short, these are some things I discovered while writing/fixing my AVI demuxer:<br />
<br />
* AVI files are built from variable length chunks.<br />
* Each chunk has a 4-byte fourcc and a 4-byte length (dword).<br />
* If the chunk size is bad/broken, it will kill the whole demuxer process.<br />
* Chunks are padded to 2*n offset.<br />
<br />
AVI files usually have:<br />
* RIFF avi header, containing general parameters (used for file type detection)<br />
* stream headers, containing common format stream descriptor, and type-specific audio/video/other header<br />
* single 'movi' chunk contains the audio and video packets.<br />
* index chunk contains index table (16 bytes for each chunk in 'movi')<br />
<br />
The AVI header has a dwFlags field. It contains useful information, like type of interleaving, "have index" chunk and so on. Ignore it. Really. It's broken in too many files. Windows players ignore it too.<br />
<br />
AVI docs say that 'XXdb' are uncompressed and 'XXdc' are compressed video chunk fourccs. (XX = stream id in HEX. Some specs says it's in DEC. Funny.) Ignore it. Just use the first 2 chars as a hex number, and get stream type from stream header for that stream id. I've seen even XXim FourCCs...<br />
<br />
Stream header has some interesting fields:<br />
* dwRate, dwScale: These specify the playback samplerate of the stream.<br />
* dwStart: Specifies delay of the stream; rarely used, but must be supported.<br />
* dwSampleSize: This is the sample size (bytes / sample). It may be 0, which means variable sample sizes -> 1 chunk == 1 sample. For non-zero samplesize, chunks may contain more than one sample.<br />
<br />
Regarding VBR audio in AVI, see VirtualDub site mentioned in the references. The 3 AVI parsers in Windows behave differently with such streams. 1 normal (0=vbr), 1 tricky (rounds up zero to blockalign), 1 crashes.<br />
<br />
In AVI, audio specific header contains WAVEFORMATEX and video spec. hdr contains BITMAPINFOHEADER. Both can have optional codec-dependent extra data appended after the struct. Don't crop it, it will break decoding!<br />
<br />
About the movi chunk:<br />
Recently I got some AVI files with bad movi chunk sizes. So, I have to say: Ignore it. Read chunks from the file while not EOF, and not while filepos < movi_end.<br />
<br />
About index:<br />
* It contains chunk pos, chunk size, chunk fourcc and flags. Bit 4 of the flags field (flags & 0x10) means that chunk represents a keyframe.<br />
* Offset is relative to `cat /dev/urandom`. Really. Or dunno.<br />
* I calculate an offset_of_offset value from the movi_start and first chunk offset. It works in 99% of cases. I saw different methods in other players, handling some common cases (such as relative to avi chunk, relative to movie chunk, etc.) and fallback to absolute value.<br />
* Chunk info in chunk header (first 4+4 bytes of chunks) and index table should be equal. They aren't. Sometimes the size values differ by +/-1. Strange. Sometimes fourccs 'type' part (last 2 char) differ. Even more strange. Sometimes they leave chunk header. I think Windows parsers don't use chunk headers at all, and use only the index. This may be why they are unable to play files without index.<br />
<br />
On the subject of interleaving, there are 3 categories of interleaving for AVI files (taken from DOCS/tech/formats.txt in the [[MPlayer]] distribution):<br />
# Interleaved: Audio and video content is interleaved. It's faster and requires only 1 reading thread, so it's recommended (and most commonly used).<br />
# Non-interleaved: Audio and video aren't interleaved. The file stores all of the video data followed by all the audio data. Such a file requires 2 reading processes or 1 reading with lots of seeking. This is very bad when playing the data from a network or CD-ROM.<br />
# Badly-interleaved streams: Some AVI files claim to be interleaved but with bad sync. These files should be treated as non-interleaved.<br />
<br />
About A/V sync, you should rely on samplerate (dwRate/dwScale), samplesize and stream positions. Use an integer, not a floating-point number, for byte positions. When calculating time for each frame:<br />
time = ((dwSampleSize ? (bytepos / dwSampleSize) : chunkpos) * dwRate / dwScale<br />
floats will gradually drift into error.<br />
<br />
== Quirks ==<br />
* Some AVI files are seen in the wild with the signature 'AVI\x19'. There is a 0x19 number in the fourth byte rather than a 0x20.<br />
<br />
[[Category:Container Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Microsoft_Wave&diff=8170Microsoft Wave2007-07-02T12:09:48Z<p>Andux: based on RIFF</p>
<hr />
<div>* Extensions: wav<br />
* Company: [[Microsoft]]<br />
<br />
The '''Microsoft Wave''' format ('''WAV''') is a very common format used for transporting audio data, based on the [[RIFF]] container format. The WAV format uses 16-bit numbers to identify different audio coding formats. The WAV format is likely the origination point for the infamous [[WAVEFORMATEX|WAVEFORMAT(EX)]] data structures that permeate through computer multimedia technology to this day.<br />
<br />
<br />
[[Category:Container Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=RIFF&diff=8169RIFF2007-07-02T12:06:42Z<p>Andux: split from Microsoft Audio/Video Interleaved</p>
<hr />
<div>The '''Resource Interchange File Format''' ('''RIFF''') is the chunked container format which forms the basis for the [[Microsoft Wave]] and [[Microsoft Audio/Video Interleaved|AVI]] formats.<br />
<br />
== Structure ==<br />
<br />
General structure for all RIFF nodes:<br />
<br />
Nodes can be data or '''LIST''', data structure is:<br />
<br />
4 bytes name (a.k.a. FourCC)<br />
4 bytes length, 32 bit integer in little-endian<br />
''length'' bytes data<br />
optionally 1 byte padding if length is odd<br />
<br />
'''LIST''' structure is:<br />
<br />
4 bytes string "LIST"<br />
4 bytes length, 32 bit integer in little-endian<br />
4 bytes name<br />
''length'' bytes data - data is a list of nodes.<br />
optionally 1 byte padding if length is odd<br />
<br />
An entire RIFF file has the structure:<br />
<br />
4 bytes string "RIFF"<br />
4 bytes length, 32 bit integer in little-endian<br />
4 bytes name<br />
''length'' bytes data - data is a list of nodes.<br />
<br />
<br />
[[Category:Container Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=IFF&diff=8168IFF2007-07-02T11:52:58Z<p>Andux: Category:Container Formats</p>
<hr />
<div>IFF (Interchange File Format) is a format developed by electronic arts in the 80's. It is the predominant format on the Amiga computer. It is a [[chunked format]]. It can be used to store any type of data, but it is predominantly used to store images, animations and audio.<br />
<br />
IFF chunks are always padded to an even number of bytes. <br />
<br />
===ILBM FOURCC===<br />
Images are stored in planes. So, to get a pixels color value you need to combine the bits from each frame to create a color register index. <br />
<br />
/* ---------- BitMapHeader ---------------------------------------------*/<br />
/* Required Bitmap header (BMHD) structure describes an ILBM */<br />
typedef struct {<br />
uint16_t w; /* raster width in pixels */<br />
uint16_t h; /* raster height in pixels */<br />
int16_t x; /* x offset in pixels */<br />
int16_t y; /* y offset in pixels */<br />
uint8_t nplanes; /* # source bitplanes */<br />
uint8_t masking; /* masking technique */<br />
uint8_t compression; /* compression algoithm */<br />
uint8_t pad1; /* UNUSED. For consistency, put 0 here. */<br />
uint16_t transparentColor; /* transparent "color number" */<br />
uint8_t xaspect; /* aspect ratio, a rational number x/y */<br />
uint8_t yaspect; /* aspect ratio, a rational number x/y */<br />
int16_t pagewidth; /* source "page" size in pixels */<br />
int16_t pageheight; /* source "page" size in pixels */<br />
} BitMapHeader;<br />
<br />
===List Of Chunk FOURCCs ===<br />
<br />
Note: an underscore (_) is used to indicate the space character. <br />
<br />
* 16SV<br />
* 8SVX<br />
* ANFI<br />
* ANHD ( ANIM Frame ) <br />
* ANIM<br />
* ANNO<br />
* ANSQ<br />
* ATAK<br />
* AUTH<br />
* BMHD<br />
* BODY<br />
* CAMG<br />
* CCRT (Graphicraft cycling chunk) <br />
* CHAN<br />
* CMAP (Color Map is a packed array of ColorRegisters )<br />
* (c)_<br />
* CRNG<br />
* DEST<br />
* DLTA<br />
* DPAN (Deluxe Paint Anim Chunk)<br />
* DPI_<br />
* DPPS<br />
* DPPV<br />
* DRNG<br />
* FACE<br />
* FADE<br />
* FORM<br />
* FVER<br />
* GRAB<br />
* ILBM<br />
* INS1<br />
* IMRT<br />
* JUNK<br />
* LIST<br />
* MHDR<br />
* NAME<br />
* PAN_<br />
* PROP<br />
* RLSE<br />
* SAMP<br />
* SEQN<br />
* SHDR<br />
* SMUS<br />
* SPRT<br />
* TEXT<br />
* TINY<br />
* TRAK<br />
* VHDR<br />
<br />
[[Category:Image Formats]]<br />
[[Category:Container Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=TGA&diff=8160TGA2007-06-29T05:08:03Z<p>Andux: </p>
<hr />
<div>* [[Truevision]]<br />
* Specification: http://www.gamers.org/dEngine/quake3/TGA.txt<br />
<br />
'''TGA''' (also known as '''TARGA''') is a raster graphics file format.<br />
<br />
[[Category:Image Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Interplay_ACM&diff=7807Interplay ACM2007-04-29T06:57:34Z<p>Andux: +Winamp plugin, etc.</p>
<hr />
<div>* Extension: acm or wav<br />
* Company: [[Interplay Entertainment]]<br />
* Samples: <br />
* Sample Parser: <br />
<br />
* Usage: Sound format<br />
* Examples: all Infinity Engine games (Baldur's Gate, Icewind Dale, Planescape: Torment), Fallout series<br />
* FourCC: 0x97 0x28 0x03 0x01<br />
* Tools:<br />
** [[acmlab]] from [http://www.teamx.ru/ teamx.ru]<br />
** [http://winamp.com/plugins/details.php?id=98751 Winamp plugin]<br />
<br />
This is a lossy compressed audio format with a rather weak compression ratio. (converted to WAV then recompressed to OGG makes it roughly half size). ACM files can be in varying sample rates, but the common one is 22050 Hz, 16 bits and stereo.<br />
<br />
The ACM header:<br />
0x00 FOURCC<br />
0x04 sample count<br />
0x08 channel count (some ACM files lie about the channel count)<br />
0x0a sample rate<br />
0x0c levels (4 bits) and subblocks (12 bits)<br />
0x0e <data><br />
<br />
struct ACM_Header {<br />
long fourcc;<br />
long samples;<br />
unsigned short channels;<br />
unsigned short rate;<br />
unsigned short levels : 4;<br />
unsigned short subblocks : 12;<br />
};<br />
<br />
The infinity games also contain a WAVC header which contains mostly redundant information. These files are used for all sound except music (ambients, voice over, sound effects).<br />
<br />
The WAVC header:<br />
<br />
struct WAVC_HEADER {<br />
char wavc_sig[4]; //WAVC<br />
char wavc_ver[4]; //V1.0<br />
long uncompressed; //the uncompressed length (i guess it is raw pcm)<br />
long compressed; //the compressed length<br />
long headersize; //28 (the size of this header, also the offset to the ACM header)<br />
short channels; //1 or 2<br />
short bits; //8 or 16<br />
short samplespersec; //usually 22050<br />
short unknown;<br />
};<br />
<br />
[[Category:Game Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=OBJ&diff=7491OBJ2007-03-22T03:43:03Z<p>Andux: </p>
<hr />
<div>* Company: [[Wavefront Technologies]]<br />
* Specification: http://people.scs.fsu.edu/~burkardt/txt/obj_format.txt<br />
<br />
<br />
[[Category:3D Mesh Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=BMF&diff=7490BMF2007-03-22T03:32:47Z<p>Andux: #REDIRECT SKN</p>
<hr />
<div>#REDIRECT [[SKN]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=SKN&diff=7489SKN2007-03-22T03:32:11Z<p>Andux: </p>
<hr />
<div>* Company: [[Maxis]]<br />
* Specifications:<br />
** http://simtech.sourceforge.net/tech/file_formats_skn.htm<br />
** http://simtech.sourceforge.net/tech/bmf.html<br />
<br />
The '''SKN''' (ASCII) and '''BMF''' (binary) formats are used to store 3D mesh data in The Sims.<br />
<br />
[[Category:Game Formats]]<br />
[[Category:3D Mesh Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:Video_Editor&diff=6980Category:Video Editor2007-02-12T11:28:37Z<p>Andux: cat</p>
<hr />
<div>video editing software<br />
<br />
[[Category:Multimedia Programs]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=DDS&diff=6883DDS2007-01-30T03:32:14Z<p>Andux: #REDIRECT DirectDraw Surface</p>
<hr />
<div>#REDIRECT [[DirectDraw Surface]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=DirectDraw_Surface&diff=6882DirectDraw Surface2007-01-30T03:32:03Z<p>Andux: </p>
<hr />
<div>* Company: [[Microsoft]]<br />
* Specification: [http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/directx9_c/directx/graphics/reference/ddsfilereference/ddsfileformat.asp DDS File Reference] at MSDN<br />
<br />
The '''DirectDraw Surface''' ('''DDS''') file format is used to store textures and cubic environment maps.<br />
<br />
[[Category:Image Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:Screen_Capture_Video_Codecs&diff=6704Category:Screen Capture Video Codecs2007-01-05T23:25:46Z<p>Andux: Category:Lossless Video Codecs</p>
<hr />
<div>These video codecs are specifically designed and optimized to losslessly capture sequences of frames representing a computer screen.<br />
<br />
[[Category:Lossless Video Codecs]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:MDCT_Audio_Codecs&diff=6703Category:MDCT Audio Codecs2007-01-05T23:22:59Z<p>Andux: Category:Audio Codecs</p>
<hr />
<div>These codecs use a modulated lapped transform (MLT) as the main transform.<br />
<br />
[[Category:Audio Codecs]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Bethsoft_VID&diff=4972Bethsoft VID2006-05-19T20:31:09Z<p>Andux: link RLE</p>
<hr />
<div>* Company: [[Bethesda Softworks]]<br />
* Specification: http://www.svatopluk.com/andux/docs/dfvid.html<br />
<br />
[[Run Length Encoding|RLE]]-based format used in ''The Elder Scrolls II: Daggerfall'',''Terminator: Skynet'' and ''Terminator: Future Shock''.<br />
<br />
<br />
==Related software==<br />
*[http://www.svatopluk.com/daggerfall/download/dagvid.stm DagVid]&mdash;a player<br />
*[http://www.svatopluk.com/daggerfall/download/vid2avi.stm DFVid2AVI]<br />
*[http://www.svatopluk.com/andux/ Andux's] VID tools<br />
**VIDDump&mdash;dumps audio, palette, and raw frame data<br />
**VID Audio Dumper<br />
**MakeVID (prototype)<br />
<br />
[[Category:Video Codecs|VID (Bethsoft)]]<br />
[[Category:Game Formats|VID (Bethsoft)]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:Vocoders&diff=2297Category:Vocoders2006-02-17T10:30:19Z<p>Andux: Category:Audio Codecs</p>
<hr />
<div>Vocoders are voice codecs-- audio codecs that are optimized for coding human speech at very low bitrates.<br />
<br />
[[Category:Audio Codecs]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:Undiscovered_Game_Formats&diff=2296Category:Undiscovered Game Formats2006-02-17T10:28:33Z<p>Andux: Category:Game Formats</p>
<hr />
<div>Game formats which are not publically known and for which no open source implementation exists yet.<br />
<br />
[[Category:Game Formats]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:Lossless_Audio_Codecs&diff=2295Category:Lossless Audio Codecs2006-02-17T10:27:44Z<p>Andux: Category:Audio Codecs</p>
<hr />
<div>Lossless audio codecs exist to compress audio data efficiently but in a way that the original audio data can be restored when needed. This is in contrast to many types of audio codecs which throw away one type of information or another to achieve compression.<br />
<br />
[[Category:Audio Codecs]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:DPCM_Audio_Codecs&diff=2294Category:DPCM Audio Codecs2006-02-17T10:27:17Z<p>Andux: Category:Audio Codecs</p>
<hr />
<div>These audio codecs use differential pulse code modulation (DPCM) as their principle coding method.<br />
<br />
[[Category:Audio Codecs]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:Undiscovered_Video_Codecs&diff=2293Category:Undiscovered Video Codecs2006-02-17T10:25:20Z<p>Andux: Category:Video Codecs</p>
<hr />
<div>Video codecs whose format is not publically known and for which no open source implementation exists yet.<br />
<br />
[[Category:Undiscovered Codecs]]<br />
[[Category:Video Codecs]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:Undiscovered_Audio_Codecs&diff=2292Category:Undiscovered Audio Codecs2006-02-17T10:24:56Z<p>Andux: Category:Audio Codecs</p>
<hr />
<div>Audio codecs for which no open source implementation exists yet and whose format it not publically known.<br />
<br />
[[Category:Undiscovered Codecs]]<br />
[[Category:Audio Codecs]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:ADPCM_Audio_Codecs&diff=2291Category:ADPCM Audio Codecs2006-02-17T10:24:08Z<p>Andux: Category:Audio Codecs</p>
<hr />
<div>These audio codecs use ADPCM as their principle coding algorithm.<br />
<br />
[[Category:Audio Codecs]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:IMA_ADPCM_Audio_Codecs&diff=2290Category:IMA ADPCM Audio Codecs2006-02-17T10:23:36Z<p>Andux: Category:ADPCM Audio Codecs</p>
<hr />
<div>These audio codecs use [[IMA ADPCM]] as their principle coding algorithm<br />
<br />
[[Category:ADPCM Audio Codecs]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:Lossless_Video_Codecs&diff=2289Category:Lossless Video Codecs2006-02-17T10:22:28Z<p>Andux: Category:Video Codecs</p>
<hr />
<div>Lossless video codecs exist to compress video data efficiently but in a way that the original video data can be restored when needed. This is in contrast to many types of video codecs which throw away one type of information or another to achieve compression.<br />
<br />
[[Category:Video Codecs]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:Undiscovered_Codecs&diff=2288Category:Undiscovered Codecs2006-02-17T10:21:54Z<p>Andux: Category:Codecs</p>
<hr />
<div>These codecs are either not open at all or are only partially open.<br />
<br />
[[Category:Codecs]]</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:Codecs&diff=2286Category:Codecs2006-02-17T10:13:29Z<p>Andux: somebody else can write a decent description</p>
<hr />
<div>Codecs</div>Anduxhttps://wiki.multimedia.cx/index.php?title=Category:Audio_Codecs&diff=2285Category:Audio Codecs2006-02-17T10:10:41Z<p>Andux: Category:Codecs</p>
<hr />
<div>List of all known audio codecs.<br />
<br />
[[Category:Codecs]]</div>Andux