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