?? a00076.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: SKL_MP4_ANALYZER class Reference</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><h1>SKL_MP4_ANALYZER Class Reference</h1><code>#include <skl_mpg4.h></code><p><a href="a00041.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0><tr><td></td></tr><tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="a00076.html#a2">Wake_Up</a> (<a class="el" href="a00076.html">SKL_MP4_ANALYZER</a> *Previous)=0</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="a00076.html#a3">Shut_Down</a> ()=0</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual int </td><td class="memItemRight" valign=bottom><a class="el" href="a00076.html#a4">Analyze</a> (<a class="el" href="a00079.html">SKL_MP4_INFOS</a> *const Frame)=0</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="a00076.html#a5">Analyze_dQ</a> (<a class="el" href="a00079.html">SKL_MP4_INFOS</a> *const Frame, int For_BVOP)=0</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="a00076.html#a6">Post_Coding_Update</a> (const <a class="el" href="a00079.html">SKL_MP4_INFOS</a> *const Infos, int Coded_Bits)=0</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual int </td><td class="memItemRight" valign=bottom><a class="el" href="a00076.html#a7">Set_Param</a> (const char *const Param, int Value)=0</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual int </td><td class="memItemRight" valign=bottom><a class="el" href="a00076.html#a8">Set_Param</a> (const char *const Param, float Value)=0</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual int </td><td class="memItemRight" valign=bottom><a class="el" href="a00076.html#a9">Get_Param</a> (const char *const Param, int *Value) const =0</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual int </td><td class="memItemRight" valign=bottom><a class="el" href="a00076.html#a10">Get_Param</a> (const char *const Param, float *Value) const =0</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual const int * </td><td class="memItemRight" valign=bottom><a class="el" href="a00076.html#a11">Get_Param</a> (const char *const Param) const =0</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual <a class="el" href="a00073.html">SKL_MEM_I</a> * </td><td class="memItemRight" valign=bottom><a class="el" href="a00076.html#a12">Set_Memory_Manager</a> (<a class="el" href="a00073.html">SKL_MEM_I</a> *Mem=0)=0</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a00073.html">SKL_MEM_I</a> * </td><td class="memItemRight" valign=bottom><a class="el" href="a00076.html#a13">Get_Mem</a> () const </td></tr></table><hr><a name="_details"></a><h2>Detailed Description</h2>Base class for analyzing input, making coding decisions and performing bit-rate control. Actually drives the bitstream-coder (<a class="el" href="a00078.html">SKL_MP4_ENC</a>). Setting/Access/Control of internal parameter is granted through the <a class="el" href="a00076.html#a7">Set_Param()</a> and <a class="el" href="a00076.html#a9">Get_Param()</a> functions. See description of this function for details. We encourage you to have a look at the example 'tmp4.cpp', that exercises every possible params of <a class="el" href="a00076.html#a7">Set_Param()</a> through the command-line options.<p><dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00078.html">SKL_MP4_ENC</a> </dd></dl><p><hr><h2>Member Function Documentation</h2><a class="anchor" name="a4" doxytag="SKL_MP4_ANALYZER::Analyze" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> virtual int SKL_MP4_ANALYZER::Analyze </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="a00079.html">SKL_MP4_INFOS</a> *const </td> <td class="mdname1" valign="top" nowrap> <em>Frame</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [pure virtual]</code></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>This function is responsible for motion estimation. It should populate the array of motion vectors MVs[] and the macroblock map *Map with the desired macroblock types.<p><dl compact><dt><b>Returns:</b></dt><dd>return code: 0: intra coding required (I-VOP) 1/2: predictive coding required (1=P or 2=B-VOP) 3: GMC coding requested </dd></dl> </td> </tr></table><a class="anchor" name="a5" doxytag="SKL_MP4_ANALYZER::Analyze_dQ" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> virtual void SKL_MP4_ANALYZER::Analyze_dQ </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="a00079.html">SKL_MP4_INFOS</a> *const </td> <td class="mdname" nowrap> <em>Frame</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>For_BVOP</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [pure virtual]</code></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>This function handles variable per-macroblocks quantization.<p>New->Map[].dQ should be filled with dQ hints. This is a separate virtual, not merged with the above <a class="el" href="a00076.html#a4">Analyze()</a> motion estimation, since the coding type can be changed by the encoder inbetween. This impacts the range of allowed dQ values (eg.: for B-VOP). </td> </tr></table><a class="anchor" name="a13" doxytag="SKL_MP4_ANALYZER::Get_Mem" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> <a class="el" href="a00073.html">SKL_MEM_I</a>* SKL_MP4_ANALYZER::Get_Mem </td> <td class="md" valign="top">( </td> <td class="mdname1" valign="top" nowrap> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> const<code> [inline]</code></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>This function returns the current memory pool, as set by <a class="el" href="a00076.html#a12">Set_Memory_Manager()</a> <dl compact><dt><b>See also:</b></dt><dd>Get_Memory_Manager() <p><a class="el" href="a00073.html">SKL_MEM_I</a> </dd></dl> </td> </tr></table><a class="anchor" name="a11" doxytag="SKL_MP4_ANALYZER::Get_Param" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> virtual const int* SKL_MP4_ANALYZER::Get_Param </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const char *const </td> <td class="mdname1" valign="top" nowrap> <em>Param</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap> const<code> [pure virtual]</code></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>Get read-only internal data. Returns NULL is not applicable. This is mainly for internal use. </td> </tr></table><a class="anchor" name="a10" doxytag="SKL_MP4_ANALYZER::Get_Param" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> virtual int SKL_MP4_ANALYZER::Get_Param </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const char *const </td> <td class="mdname" nowrap> <em>Param</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>float * </td> <td class="mdname" nowrap> <em>Value</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"> const<code> [pure virtual]</code></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>Returns the current value of the float parameter described by Param string. <dl compact><dt><b>Returns:</b></dt><dd>0 if parameter is not applicable. </dd></dl><dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00076.html#a7">Set_Param()</a> </dd></dl><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>Param:</em> </td><td>This string can be one of the corresponding ones passed to <a class="el" href="a00076.html#a7">Set_Param()</a>. </td></tr> <tr><td valign=top><em>Value</em> </td><td>pointer the parameter value. </td></tr> </table></dl> </td> </tr></table><a class="anchor" name="a9" doxytag="SKL_MP4_ANALYZER::Get_Param" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> virtual int SKL_MP4_ANALYZER::Get_Param </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const char *const </td> <td class="mdname" nowrap> <em>Param</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int * </td> <td class="mdname" nowrap> <em>Value</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"> const<code> [pure virtual]</code></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>Returns the current value of the integer parameter described by Param string. <dl compact><dt><b>Returns:</b></dt><dd>0 if parameter is not applicable. </dd></dl><dl compact><dt><b>See also:</b></dt><dd><a class="el" href="a00076.html#a7">Set_Param()</a> </dd></dl><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>Value</em> </td><td></td></tr> <tr><td valign=top><em>Param</em> </td><td>This string can be one of the corresponding ones passed to <a class="el" href="a00076.html#a7">Set_Param()</a>. In addition, there are some non-settable parameters, whose values can be accessed using the following string: <ul><li>"fcode": Desired typical length of motion vectors (bitstream syntax).<br> </li><li>"version": the version of the core (analyzer)<br> </li></ul></td></tr> <tr><td valign=top><em>Value</em> </td><td>pointer the parameter value. </td></tr> </table></dl> </td> </tr></table><a class="anchor" name="a6" doxytag="SKL_MP4_ANALYZER::Post_Coding_Update" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> virtual void SKL_MP4_ANALYZER::Post_Coding_Update </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const <a class="el" href="a00079.html">SKL_MP4_INFOS</a> *const </td> <td class="mdname" nowrap> <em>Infos</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md" nowrap>int </td> <td class="mdname" nowrap> <em>Coded_Bits</em></td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [pure virtual]</code></td> </tr> </table> </td> </tr></table><table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td><p>Post-coding update (for rate control, e.g.) <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign=top><em>Infos</em> </td><td>contains informations about the last coded frame </td></tr> <tr><td valign=top><em>Coded_Bits</em> </td><td>is the number of bits used for coding last frame. </td></tr> </table></dl> </td> </tr></table><a class="anchor" name="a12" doxytag="SKL_MP4_ANALYZER::Set_Memory_Manager" ></a><p><table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0">
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -