?? index.html
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Sklmp4 MPEG-4 library: </title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.4 --><div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a> | <a class="qindex" href="pages.html">Related Pages</a></div><pre><div></pre></div><p><pre><div> -= SKLMP4 =-</pre></div><p><pre><div> VERSION 0.23</pre></div><p><pre><div> home: <a href="http://skal.planet-d.net/coding/mpeg4codec.html">http://skal.planet-d.net/coding/mpeg4codec.html</a></pre></div><p><pre><div>--------------------------------------------------------------------</pre></div><p><pre><div>I) Description</pre></div><p><pre><div>Sklmp4 consists in portable C++ sources of a library capable of encodingand decoding MPEG-4 video bitstream. Bitstreams conforming to ISO/IEC 14496-2(version 2) Advance Simple Profile are fully supported by thedecoder. Partial support for MPEG-1/2 bitstreams (ISO/IEC 13818-2)is also supplied.</pre></div><p><pre><div>Encoding utilizes a sub-set of Advance Simple Profile.</pre></div><p><pre><div>The coding tools supported by the decoder are:</pre></div><p><pre><div> I/P/B/S VOP, with interlacing. H263 and MPEG4 quantization (+custom matrix). Half and Quarter Pixel motion compensation Reduced Resolution. GMC (3 warp points) NEWPRED and resynchronizations Partial MPEG1/2 support (frame only)</pre></div><p><pre><div>Are not supported: Data partitioning, reversible VLC.</pre></div><p><pre><div>Encoder can use the following features by default:</pre></div><p><pre><div> I/P/S frames (+interlaced mode). H263 and MPEG4 quantization (+custom matrix). Half and Quarter pixel motion compensation Trellis-based adaptive quantization Reduced Resolution. GMC (3 warp points), rather experimental. Several ME methods are available. Luminance masking</pre></div><p><pre><div>Not supported: B-frames, data partitioning.</pre></div><p><pre><div>Sklmp4 targets very high performances on x86-basedPC platforms, thanks to hand-optimized assemblycode. Other platforms (Sparcs, Dec alpha, HP,...)can nevertheless use the C++-only version.</pre></div><p><pre><div>Simple video drivers for various X11 flavor and DirectDraw arealso provided for convenience, but are not required for handlingMPEG4 bitstreams.</pre></div><p><pre><div>--------------------------------------------------------------------</pre></div><p><pre><div>II) Requirements and installation</pre></div><p><pre><div>On Unix, a Perl interpreter is required for generating the makefile.For x86 platform (Linux and Win32), a recent version of NASM (>=0.98.35) is required for using assembly langage. NASM is available fromthe site <a href="http://nasm.sourceforge.net/">http://nasm.sourceforge.net/</a> .Otherwise, any C++ compiler will fit, notwithstanding minor porting problems.Documentation can be generated using Doxygen tool (www.doxygen.org).</pre></div><p><pre><div>Main supported platforms are:</pre></div><p><pre><div> x86-Linux-gcc x86-Win32 MSVC6, MSVC7, .NET2003.</pre></div><p><pre><div>Tested platforms: Sun, HP, Dec Alpha, SGI...</pre></div><p><pre><div>As seen, 64-bits platforms are supported, provided you definethe symbol SKL_64BITS in some makefile or in the main header (<a class="el" href="a00094.html">skl.h</a>)</pre></div><p><pre><div>After decompression of the archive, the following directoriesshould contain:</pre></div><p><pre><div>include/ all the headers include/skl_syst the core headers for MPEG4 and system code. include/skl_2d headers for bitmaps and graphics (not mandatory) include/skl.h the library's main header include/skl_video.h video header include/skl_syst/skl_mpg4.h MPEG-4 main header. This is the only one to include.</pre></div><p><pre><div>src/ all the sources src/mpg_src MPEG4 (de)coding sources src/dsp_src low-level DSP-like functions (mostly in ASM) src/syst_src system-related sources (memory, dynamic loading,...) src/ex_src front-end example (tmp4.cpp) src/video_src the video drivers src/util_src some helpful tools src/test_src some tests</pre></div><p><pre><div>util/ some setup scripts and common makefiles (Unix)</pre></div><p><pre><div>build/ platform-dependent sample makefiles and projects (win32) build/linux-gcc3 x86-linux makefile build/msvc MSVC6/7 ready-to-use workspaces build/dot_net .NET2003 (7.1) ready-to-use "solution"</pre></div><p><pre><div>doc/ Location of documentation doc/html HTML API documentation, generated by Doxygen</pre></div><p><pre><div>--------------------------------------------------------------------</pre></div><p><pre><div>III) Software overview</pre></div><p><pre><div><div align="center"><img src="../fig1.gif" alt="fig1.gif"></div></pre></div><p><pre><div><br></pre></div><p><pre><div>Figure 1 (fig1.gif) describes the main classes. Plain boxes are public abstractclasses (interfaces), mostly subclassed into internal classes (dotted box).</pre></div><p><pre><div>The three main classes are:</pre></div><p><pre><div>class <a class="el" href="a00078.html">SKL_MP4_DEC</a>:class <a class="el" href="a00079.html">SKL_MP4_ENC</a>:</pre></div><p><pre><div>These classes can only be constructed through proxies C-functions.This allows dynamic-loading or linking with dll or .so versionof the core library.</pre></div><p><pre><div>class <a class="el" href="a00077.html">SKL_MP4_ANALYZER</a>:</pre></div><p><pre><div>This class performs most of the work during encoding, by performpicture analysis prior to bitstream coding.A default implementation is supplied, but alternate implementationscan be plugged instead in the encoding instance of <a class="el" href="a00079.html">SKL_MP4_ENC</a>.</pre></div><p><pre><div>The main protocalar API used to access or set internal data of theanalyzer is: Set_Param() and Get_Param(). The core bitstreamcoder (<a class="el" href="a00079.html">SKL_MP4_ENC</a>) expect somes mandatory syntax parameter to besupplied by the analyzer when calling Get_Param(). Other parameters only pertain to frame analysis strategy, and are publicly available for the user.</pre></div><p><pre><div>Auxiliary data structures:</pre></div><p><pre><div>Some satellite data structures are required for interfacingwith user's data, e.g. Namely:</pre></div><p><pre><div><a class="el" href="a00074.html">SKL_MEM_I</a>, <a class="el" href="a00082.html">SKL_MP4_PIC</a>, <a class="el" href="a00080.html">SKL_MP4_INFOS</a>, SKL_MP4_SLICERand SKL_CPU_FEATURE.</pre></div><p><pre><div>Please refer to the HTML documentation availablefrom doc/html/index.html</pre></div><p><pre><div>--------------------------------------------------------------------</pre></div><p><pre><div>IV) Decoding API</pre></div><p><pre><div>Bitstream decoding are performed by instances of the interface<a class="el" href="a00078.html">SKL_MP4_DEC</a>, declared in the header include/skl_syst/skl_mpg4.h.</pre></div><p><pre><div>Construction:</pre></div><p><pre><div>Instances of <a class="el" href="a00078.html">SKL_MP4_DEC</a> should be created calling theproxy function: <a class="el" href="a00078.html">SKL_MP4_DEC</a> *Skl_MP4_New_Decoder();This function will return a null pointer in case of error(no more memory, e.g.). The instances are allocated onthe C++ heap.</pre></div><p><pre><div>Destruction:</pre></div><p><pre><div>Instances of <a class="el" href="a00078.html">SKL_MP4_DEC</a> should be deleted calling theproxy function: void <a class="el" href="a00109.html#a31">Skl_MP4_Delete_Decoder(SKL_MP4_DEC *)</a>;</pre></div><p><pre><div>When using a dynamic library, or the built-in dynamic loadingmecanism (see SKL_USE_DYN_LOAD flag), these two proxies are to be found in the .dll or .so library.</pre></div><p><pre><div>API Synopsis:</pre></div><p><pre><div> virtual int Decode(const SKL_BYTE *Buf, int Len); virtual int Decode_MPEG12(const SKL_BYTE *Buf, int Len); virtual int Is_Frame_Ready() const; virtual void Consume_Frame(SKL_MP4_PIC *Pic); virtual int Get_Frame_Number() const; virtual <a class="el" href="a00074.html">SKL_MEM_I</a> *Set_Memory_Manager(<a class="el" href="a00074.html">SKL_MEM_I</a> *Mem=0); virtual void Set_CPU(SKL_CPU_FEATURE Cpu = SKL_CPU_DETECT); virtual void Set_Slicer(SKL_MP4_SLICER Slicer, SKL_ANY Slicer_Data=0);</pre></div><p><pre><div>API description:</pre></div><p><pre><div>Please refer to the HTML documentation availablefrom doc/html/index.html</pre></div><p><pre><div>--------------------------------------------------------------------</pre></div><p><pre><div>V) Encoding API</pre></div><p><pre><div>Bitstream encoding are performed by instances of the interface<a class="el" href="a00079.html">SKL_MP4_ENC</a>, declared in the header include/skl_syst/skl_mpg4.h.</pre></div><p><pre><div>Construction:</pre></div><p><pre><div>Instances of <a class="el" href="a00079.html">SKL_MP4_ENC</a> should be created calling theproxy function: <a class="el" href="a00079.html">SKL_MP4_ENC</a> *Skl_MP4_New_Encoder();This function will return a null pointer in case of error(no more memory, e.g.). The instances are allocated onthe C++ heap.</pre></div><p><pre><div>Destruction:</pre></div><p><pre><div>Instances of <a class="el" href="a00079.html">SKL_MP4_ENC</a> should be deleted calling theproxy function: void Skl_MP4_Delete_Enccoder(SKL_MP4_ENC *);</pre></div><p><pre><div>When using a dynamic library, or the built-in dynamic loadingmecanism (see SKL_USE_DYN_LOAD flag), these two proxies are to be found in the .dll or .so library.</pre></div><p><pre><div>API Synopsis:</pre></div><p><pre><div> virtual const <a class="el" href="a00082.html">SKL_MP4_PIC</a> *Prepare_Next_Frame(int Width, int Height); virtual const <a class="el" href="a00082.html">SKL_MP4_PIC</a> *Get_Next_Frame() const; virtual int Encode(); virtual int Finish_Encoding(); virtual const SKL_BYTE *Get_Bits() const; virtual int Get_Bits_Length() const; virtual <a class="el" href="a00074.html">SKL_MEM_I</a> *Set_Memory_Manager(<a class="el" href="a00074.html">SKL_MEM_I</a> *Mem=0); virtual void Set_CPU(SKL_CPU_FEATURE Cpu = SKL_CPU_DETECT); virtual void Set_Custom_Matrix(int Intra, SKL_BYTE *M=0); virtual SKL_MP4_ANALYZER_I *Set_Analyzer(SKL_MP4_ANALYZER_I *Analyzer=0); virtual SKL_MP4_ANALYZER_I *Get_Analyzer() const; virtual void Set_Slicer(SKL_MP4_SLICER Slicer, SKL_ANY Slicer_Data=0);</pre></div><p><pre><div>API description:</pre></div><p><pre><div>Please refer to the HTML documentation availablefrom doc/html/index.html</pre></div><p><pre><div>--------------------------------------------------------------------VI) ISO-C API</pre></div><p><pre><div>All the above API is also wrapped in a Plain-C API,available in the standalone header file include/skl_mpg4_c.h.</pre></div><p><pre><div>--------------------------------------------------------------------</pre></div><p><pre><div>VII) Contacting the author</pre></div><p><pre><div>Non-bug reports should be sent to:</pre></div><p><pre><div> <a href="mailto:skal@planet-d.net">skal@planet-d.net</a> <a href="http://skal.planet-d.net">http://skal.planet-d.net</a></pre></div><p><pre><div>Home + additional details + online documentation:</pre></div><p><pre><div> <a href="http://skal.planet-d.net/coding/mpeg4codec.html">http://skal.planet-d.net/coding/mpeg4codec.html</a></pre></div><p><pre><div>Haf phun!</pre></div><p><pre><div>--------------------------------------------------------------------</pre></div><p><pre><div></pre></div> <hr size="1"><address style="align: right;"><small>Generated on Wed Mar 31 17:33:28 2004 for Sklmp4 MPEG-4 library by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 > </a>1.3.4 </small></address></body></html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -