⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 index.html

📁 mpeg4编解码器
💻 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&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;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 (&gt;=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 + -