AvTranscoder  0.9.4
C++APIforLibav/FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
index.doxygen
Go to the documentation of this file.
1 /** @mainpage AvTranscoder
2  *
3  * An High Level API to transform medias.<br/>
4  * Based on FFMpeg / libav projects.
5  *
6  * <h2>Links</h2>
7  * <table style="border-width:0">
8  * <tr><td>github:</td><td>https://github.com/avTranscoder/avTranscoder</td></tr>
9  * <tr><td>openhub:</td><td>https://www.openhub.net/p/avTranscoder</td></tr>
10  * <tr><td>travis-ci:</td><td>https://travis-ci.org/avTranscoder/avTranscoder</td></tr>
11  * <tr><td>coverity-scan:</td><td>https://scan.coverity.com/projects/2626</td></tr>
12  * </table>
13  *
14  * <h2>Authors</h2>
15  * <ul>
16  * <li>Marc-Antoine Arnaud</li>
17  * <li>Valentin Noël</li>
18  * <li>Clément Champetier</li>
19  * </ul>
20  *
21  * <h2>Main features</h2>
22  * The library is here to provide a simple managment of the Transform process.<br/>
23  * Main features attending are:
24  * <ul>
25  * <li>process each stream without different calls</li>
26  * <li>specify stream process before the begin of the process</li>
27  * <li>minimize process: only rewrap, or transcode without transformation if possible</li>
28  * <li>manage different length of stream (generate silence/black)</li>
29  * <li>overload of each sub-component for specific integration, like proprietary wrapper</li>
30  * <li>multi-languages usages (C++, Java, Python)</li>
31  * </ul>
32  *
33  * <h2>High Level API</h2>
34  * <h3>Transcoder</h3>
35  * The library provide the <b>Transcoder</b> class, which was the highest level of managment.<br/>
36  * This classe manage progress of process for each <b>StreamTranscoder</b>.<br/>
37  * Each <b>StreamTranscoder</b> definition can be added to the <b>Transcoder</b>.<br/>
38  * After declaration, the process() method can process file, which call processFrame() in loop.<br/>
39  *
40  * <h3>StreamTranscoder</h3>
41  * The <b>StreamTranscoder</b> will be here to abstract call for different case as:
42  * <ul>
43  * <li>simple rewrap stream</li>
44  * <li>transcode stream (decoding, transform and encoding)</li>
45  * <li>encode from dummy (silence/black or external input source), without decoding step</li>
46  * </ul>
47  * Each <b>StreamTranscoder</b> is able to process a frame, and in background process a rewrap or the transcode process.<br/>
48  *
49  * <h2>Lowest API</h2>
50  * <h3>InputFile</h3>
51  * This object manage the input media, providing the analisys methods to get metadatas on wrapper and each streams.<br/>
52  * It also the entry point to get the <b>InputStream</b> which was the coded stream.<br/>
53  *
54  * <h3>OutputFile</h3>
55  * The equivalent to the <b>InputFile</b> is the <b>OutputFile</b>. Each output stream require a decalaration, needed to wrote headers of files (wrote during the beginWrap() call).<br/>
56  * As the <b>InputFile</b> provide the <b>InputStream</b> to describe stream, the <b>OutputFile</b> as his <b>OutputStream</b> to put coded stream into the output file.<br/>
57  * Using one <b>InputStream</b> and one <b>OutputStream</b>, each <b>DataStream</b> can be passed to provide a rewrap process.<br/>
58  *
59  * <h3>InputEssence</h3>
60  * The <b>InputEssence</b> provide every time an image, from a coded stream or from an external buffer.<br/>
61  * It's allow the possiblity to generate silence or black stream, or also switch between the coded stream and a factice (to complete stream with different durations).<br/>
62  * The switch between source was managed inside the <b>StreamTranscoder</b> class.
63  *
64  * <h3>OutputEssence</h3>
65  * As the <b>InputEssence</b> can decode the stream, the <b>OutputEssence</b> will encode our images to provide the coded stream.<br/>
66  * It's the encoder cofigured with some <b>Profile</b>.
67  *
68  * <h3>EssenceTransform</h3>
69  * For adapt some images to the output format, some transformation can be done.<br/>
70  * This step will only provide pixel/sample transformation (point to point transform). No resize, resampling can be applyed in this step.
71  *
72  * <h2>Low API</h2>
73  * Each component of the Lowest API call method present in the libav/ffmpeg API. You can depend on one of these project.<br/>
74  * Newest versions of libav/ffmpeg are recommended.<br/>
75  * <br/>
76  * <br/>
77  *
78  */
79