<html> <head> <title> Linux Video Stream Processing Tool - Examples</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="keywords" content="DVD, digital video, DV, encoder, divx, DivX;-), lame, source, posix, avifile, opendivx, codec, linux, AC3, program stream, video, audio, transcode, decoder, stream, YV12"> </head> <body bgcolor=#CDB5CD> <a name=top></a> <table cellspacing="10" cellpadding="0" border="0" width="100%"> <tr> <td align=left valign="top" width=30% bgcolor="#a0a0a0"> <table border="0" cellpadding="10" cellspacing="3" font size=+2 bgcolor="#ffffff" width=100%> <td align="left" bgcolor="#e9e9e9"> <FONT FACE="Lucida,Helvetica">Introduction:</font> </tr> <tr> <td> <ul> <li> <a href="#about"> <FONT FACE="Lucida,Helvetica"> Overview</i></font></a> <p> <li> <a href="options.html"> <FONT FACE="Lucida,Helvetica"> Command-line options</font></a> <p> <li> <a href="modules.html"> <FONT FACE="Lucida,Helvetica"> Import/export/filter plug-ins</font></a> <p> </ul> </td> </tr> </table> </table> <a name=about></a> <table cellspacing="10" cellpadding="0" border="0" width="100%"> <tr> <td align=left valign="top" width=30% bgcolor="#a0a0a0"> <table border="0" cellpadding="10" cellspacing="3" font size=+2 bgcolor="#ffffff" width=100%> <td align="left" bgcolor="#e9e9e9"> <FONT FACE="Lucida,Helvetica">Overview: </tr> <tr> <td> <FONT color=red><i> transcode </i> </font> is a linux text-console utility for video stream processing, running on a platform that supports shared libraries and threads. Decoding and encoding is done by loading modules that are responsible for feeding transcode with raw video/audio streams (import modules) and encoding the frames (export modules). It supports elementary video and audio frame transformations, including de-interlacing or fast resizing of video frames and loading of external filters. A number of modules are included to enable import of DVDs on-the-fly, MPEG elementary (ES) or program streams (VOB), MPEG video, Digital Video (DV), YUV4MPEG streams, NuppelVideo file format and raw or compressed (pass-through) video frames and export modules for writing DivX;-), OpenDivX, DivX 4.xx or uncompressed AVI files with MPEG, AC3 (pass-through) or PCM audio. Additional export modules to write single frames (PPM) or YUV4MPEG streams are available, as well as an interface import module to the <i>avifile</i> library. It's modular concept is intended to provide flexibility and easy user extensibility to include other video/audio codecs or file types. A set of tools is included to demux (<FONT color=red><i>tcdemux</i></font>), extract (<FONT color=red><i>tcextract</i></font>) and decode (<FONT color=red><i>tcdecode</i></font>) the sources into raw video/audio streams for import, probing (<FONT color=red><i>tcprobe</i></font>) and scanning (<FONT color=red><i>tcscan</i></font>) your sources and to enable post-processing of AVI files, fixing AVI file header information (<FONT color=red><i>avifix</i></font>), merging multiple files (<FONT color=red><i>avimerge</i></font>) or splitting large AVI files (<FONT color=red><i>avisplit</i></font>) to fit on a CD. <p><p> <b><i>transcode</i></b> plug-in architecture overview:<p> <i>transcode</i> loads shared library modules that are responsible for feeding it with raw streams and encoding the frames. <ul> <li> The <b>import modules</b> for audio/video decoding are loaded with <i>dlopen</i> system call and are responsible for starting the video and audio streams (directly or via the <i>popen</i> system call) and have a single function interface to the main program. The import is handled by a thread that buffers the video/audio frames.<p> <li> The main program <b><i>transcode</i></b> currently performs a number of video/audio frame manipulations (in this order) or allows simple pass-through of raw frame data: <p> <font size=+2 color=blue>Video:</font> <ul> <li> cut out arbitrary frame region before processing <li> de-interlace video frame <li> fast enlarging of video width/height by a multiple of 8/16/32 rows/columns up to 1024x768 <li> fast reduction of video width/height by a multiple of 8/16/32 rows/columns <li> high-quality resizing with different filtering <li> cut out arbitrary frame region for encoding <li> fast rescale (down-sample) video width/height by a power of 2 <li> flip video frame upside down <li> mirror image of video frame <li> swap <i>red</i> and <i>blue</i> bytes or chroma components in video frame <li> transform to b/w video frame <li> apply gamma correction <li> anti-alias video frame <li> DVD subtitle overlay (plug-in) </ul> <p> <font size=+2 color=blue>Audio:</font> <ul> <li> swap byte order in audio stream <li> change the volume of the audio stream <li> re-sample audio stream (plug-in) <li> down-sample to mono <li> down-sample to 8-bit unsigned byte stream <li> sync video with audio frames (V=0|A=N, V=1|A=N+1,...) </ul> <p> <font size=+2 color=blue>Filter Plug-Ins:</font> <ul> <li>Additional effects are available via <a href=filter.html>external filter plug-ins</a> loaded with option "-J". </ul><p> <li> The <b>export modules</b> for audio/video encoding are loaded via the <i>dlopen</i> system call and the encoder loop is started for the selected frames. In most cases audio and video are handled by the same module. </ul> <p> <b><i>transcode</i></b> supported formats and codecs overview:<p> <table cellspacing="10" cellpadding="0" border="0" width="100%"> <tr> <td align=center> <img src="tc.png"> </td> </tr> <tr><td align=center> (ES=elementary stream, including concatenated frames, PES=packetized elementary stream, including program streams)</tr> </table> <p> Colored boxes are supported without additional packages. However, most capabilities are only available in the <i>0.6.0</i> pre-releases. Unconnected boxes not yet implemented, but <i>0.6.0</i> (final) will have a symmetrical butterfly structure. OpenDivX (obsolete) support included, but much newer and faster DIVX encoding/decoding requires additional codecs available for linux. Picture import supported by newer versions of <i>ImageMagick</i> (0.5.x). Additional optional audio/video import codecs supported by using the <i>avifile</i> library. Quicktime movie with limited codec support is available via the <i>quicktime4linux</i> library. You need <i>libdv</i> installed to enable Digital Video decoding/encoding. <p> </tr> </tr> </table> </table> <!-- hhmts start --> Last modified: Fri Nov 29 15:45:16 Europe/Berlin 2002 <!-- hhmts end --> </body> </html>