Sophie

Sophie

distrib > Mandriva > 2010.0 > x86_64 > by-pkgid > f250c16c2b84c9364a2f35a71121aaa2 > files > 143

lib64dirac-devel-1.0.2-2mdv2010.0.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Dirac Video Codec</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<h1 align="center" color="#606080">
Dirac - A Video Codec
</h1>
<p align="center">
Created by the <a href="http://www.bbc.co.uk">British Broadcasting Corporation</a>.
</p>
<hr>
<!-- Generated by Doxygen 1.5.9 -->
  <div class="navpath"><a class="el" href="a00234.html">dirac</a>::<a class="el" href="a00086.html">MotionCompensator</a>
  </div>
<div class="contents">
<h1>dirac::MotionCompensator Class Reference</h1><!-- doxytag: class="dirac::MotionCompensator" -->Abstract Motion compensator class.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="a00198_source.html">mot_comp.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for dirac::MotionCompensator:</div>
<div class="dynsection">

<p><center><img src="a00086.png" usemap="#dirac::MotionCompensator_map" border="0" alt=""></center>
<map name="dirac::MotionCompensator_map">
<area href="a00087.html" alt="dirac::MotionCompensator_EighthPixel" shape="rect" coords="0,56,237,80">
<area href="a00088.html" alt="dirac::MotionCompensator_HalfPixel" shape="rect" coords="247,56,484,80">
<area href="a00089.html" alt="dirac::MotionCompensator_Pixel" shape="rect" coords="494,56,731,80">
<area href="a00090.html" alt="dirac::MotionCompensator_QuarterPixel" shape="rect" coords="741,56,978,80">
</map>
</div>

<p>
<a href="a00303.html">List of all members.</a><h2>Public Member Functions</h2>
<ul>
<li><a class="el" href="a00086.html#6b48c61d0a2ff2e0898f3cb14e4373a8">MotionCompensator</a> (const <a class="el" href="a00114.html">PicturePredParams</a> &amp;ppp)
<dl class="el"><dd class="mdescRight">Constructor.  <a href="#6b48c61d0a2ff2e0898f3cb14e4373a8"></a><br></dl><li>virtual <a class="el" href="a00086.html#479a9a5d33299cf392a2f48fef3f317c">~MotionCompensator</a> ()
<dl class="el"><dd class="mdescRight">Destructor.  <a href="#479a9a5d33299cf392a2f48fef3f317c"></a><br></dl><li>void <a class="el" href="a00086.html#612c5169fb2f8f4b8d84925b18987bc5">CompensatePicture</a> (const <a class="el" href="a00234.html#521776b4db3589284c5b7acb2b38a4b1">AddOrSub</a> direction, const <a class="el" href="a00093.html">MvData</a> &amp;mv_data, <a class="el" href="a00108.html">Picture</a> *in_pic, <a class="el" href="a00108.html">Picture</a> *refsptr[2])
<dl class="el"><dd class="mdescRight">Compensate a picture.  <a href="#612c5169fb2f8f4b8d84925b18987bc5"></a><br></dl></ul>
<h2>Static Public Member Functions</h2>
<ul>
<li>static void <a class="el" href="a00086.html#8a443fcf84cc6d33ef07c28dd326b2c6">CompensatePicture</a> (const <a class="el" href="a00114.html">PicturePredParams</a> &amp;ppp, const <a class="el" href="a00234.html#521776b4db3589284c5b7acb2b38a4b1">AddOrSub</a> direction, const <a class="el" href="a00093.html">MvData</a> &amp;mv_data, <a class="el" href="a00108.html">Picture</a> *in_pic, <a class="el" href="a00108.html">Picture</a> *refptr[2])
<dl class="el"><dd class="mdescRight">Convenience function to perform motion compensation on a picture.  <a href="#8a443fcf84cc6d33ef07c28dd326b2c6"></a><br></dl></ul>
<h2>Protected Attributes</h2>
<ul>
<li><a class="el" href="a00114.html">PicturePredParams</a> <a class="el" href="a00086.html#9dc4804ccccba352be8857f20be25cc6">m_predparams</a>
<dl class="el"><dd class="mdescRight">The codec parameters.  <a href="#9dc4804ccccba352be8857f20be25cc6"></a><br></dl><li><a class="el" href="a00172.html#4a6c51c10f2eb04abc7209db7caff39f">ChromaFormat</a> <a class="el" href="a00086.html#34b54f87ee66dfa219d85a8b92184bc6">m_cformat</a>
<dl class="el"><dd class="mdescRight">The chroma format.  <a href="#34b54f87ee66dfa219d85a8b92184bc6"></a><br></dl><li>bool <a class="el" href="a00086.html#8c8900157aeac85fa30370bc212db0ea">luma_or_chroma</a>
<li><a class="el" href="a00234.html#521776b4db3589284c5b7acb2b38a4b1">AddOrSub</a> <a class="el" href="a00086.html#3dc344a5c909f24eeff86e2dd6be10ae">m_add_or_sub</a>
<li><a class="el" href="a00096.html">OLBParams</a> <a class="el" href="a00086.html#c6725fa5b158a85b49c476a706a99a02">m_bparams</a>
<li><a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; * <a class="el" href="a00086.html#ceff1850d3de6a8eea11184739f2fc8a">m_block_weights</a>
<li><a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; * <a class="el" href="a00086.html#2af0f855f77ad7b0313a28bad0dfc0d0">m_macro_block_weights</a>
<li><a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; * <a class="el" href="a00086.html#4b28338808897ba26c83d3678e86be10">m_sub_block_weights</a>
</ul>
<h2>Private Member Functions</h2>
<ul>
<li><a class="el" href="a00086.html#e2c79c56064bf14d1df6c3507e0860a3">MotionCompensator</a> (const <a class="el" href="a00086.html">MotionCompensator</a> &amp;cpy)
<li><a class="el" href="a00086.html">MotionCompensator</a> &amp; <a class="el" href="a00086.html#f007116521d7700d96fc28c16e82ffb1">operator=</a> (const <a class="el" href="a00086.html">MotionCompensator</a> &amp;rhs)
<li>void <a class="el" href="a00086.html#d6f1b7a56fd6ddf36ccc5c69516d1b20">CompensateComponent</a> (<a class="el" href="a00108.html">Picture</a> *pic, <a class="el" href="a00108.html">Picture</a> *refsptr[2], const <a class="el" href="a00093.html">MvData</a> &amp;mv_data, const <a class="el" href="a00234.html#39dd89c4c7484412efd87d41548271cd">CompSort</a> cs)
<dl class="el"><dd class="mdescRight">Motion-compensate a component.  <a href="#d6f1b7a56fd6ddf36ccc5c69516d1b20"></a><br></dl><li>void <a class="el" href="a00086.html#f2212a9f4af5d7e4a0d8f03c20d2a7e4">DCBlock</a> (<a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;block_data, const <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> dc)
<dl class="el"><dd class="mdescRight">Recalculate the weight matrix and store other key block related parameters.  <a href="#f2212a9f4af5d7e4a0d8f03c20d2a7e4"></a><br></dl><li>void <a class="el" href="a00086.html#293dbcde4e016e5b14b865f62d422a23">ReConfig</a> ()
<li>void <a class="el" href="a00086.html#d0f52647d6cf548fc8ce008bb7441ccf">CalculateWeights</a> (int xbsep, int ybsep, <a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; *wt_array)
<li>void <a class="el" href="a00086.html#b0908e037374c18786bb6cfcb7d96ae5">CreateBlock</a> (int xbsep, int ybsep, bool FullX, bool FullY, <a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;WeightArray)
<dl class="el"><dd class="mdescRight">Calculates a weighting block.  <a href="#b0908e037374c18786bb6cfcb7d96ae5"></a><br></dl><li>void <a class="el" href="a00086.html#c5f9e8f1449a36ea076514810c812541">FlipX</a> (const <a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;Original, <a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;Flipped)
<dl class="el"><dd class="mdescRight">Flips the values in an array in the x direction.  <a href="#c5f9e8f1449a36ea076514810c812541"></a><br></dl><li>void <a class="el" href="a00086.html#167c72bb6b2f9eb51bb5a032fe334b0a">FlipY</a> (const <a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;Original, <a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;Flipped)
<dl class="el"><dd class="mdescRight">Flips the values in an array in the y direction.  <a href="#167c72bb6b2f9eb51bb5a032fe334b0a"></a><br></dl><li>virtual void <a class="el" href="a00086.html#0c5a572cbb0425044f707cc2e27a2884">CompensateBlock</a> (<a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;pic_data, const <a class="el" href="a00091.html">ImageCoords</a> &amp;pos, const <a class="el" href="a00091.html">ImageCoords</a> &amp;orig_pic_size, <a class="el" href="a00234.html#b8a7aad3ab6de8cc3709dcacde946964">PredMode</a> block_mode, <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> dc, const <a class="el" href="a00107.html">PicArray</a> &amp;ref1up_data, const <a class="el" href="a00091.html">MVector</a> &amp;mv1, const <a class="el" href="a00107.html">PicArray</a> &amp;ref2up_data, const <a class="el" href="a00091.html">MVector</a> &amp;mv2, const <a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;Weights)
<li>virtual void <a class="el" href="a00086.html#1724bee18bdd17e57bb5fcdeb4b19b3a">BlockPixelPred</a> (<a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;block_data, const <a class="el" href="a00091.html">ImageCoords</a> &amp;pos, const <a class="el" href="a00091.html">ImageCoords</a> &amp;orig_pic_size, const <a class="el" href="a00107.html">PicArray</a> &amp;refup_data, const <a class="el" href="a00091.html">MVector</a> &amp;mv)=0
<dl class="el"><dd class="mdescRight">Predict pixels in a block. Pure virtual. SubClasses need to define it.  <a href="#1724bee18bdd17e57bb5fcdeb4b19b3a"></a><br></dl><li>void <a class="el" href="a00086.html#da9bcab3476013de61e6a9864b7a9bcd">AdjustBlockByRefWeights</a> (<a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;val1_block, <a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;val2_block, <a class="el" href="a00234.html#b8a7aad3ab6de8cc3709dcacde946964">PredMode</a> block_mode)
<li>void <a class="el" href="a00086.html#071efc34ad1556a1a0eacc9bde01fde6">AdjustBlockBySpatialWeights</a> (<a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;val_block, const <a class="el" href="a00091.html">ImageCoords</a> &amp;pos, const <a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;wt_array)
</ul>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Motion compensator class, for doing motion compensation with two references and overlapped blocks, using raised-cosine roll-off. This is an abstract class. It must be sub-classed and the BlockPixelPred must be defined in the sub-classes. <hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="6b48c61d0a2ff2e0898f3cb14e4373a8"></a><!-- doxytag: member="dirac::MotionCompensator::MotionCompensator" ref="6b48c61d0a2ff2e0898f3cb14e4373a8" args="(const PicturePredParams &amp;ppp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">dirac::MotionCompensator::MotionCompensator           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00114.html">PicturePredParams</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>ppp</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Constructor initialises using codec parameters. 
</div>
</div><p>
<a class="anchor" name="479a9a5d33299cf392a2f48fef3f317c"></a><!-- doxytag: member="dirac::MotionCompensator::~MotionCompensator" ref="479a9a5d33299cf392a2f48fef3f317c" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual dirac::MotionCompensator::~MotionCompensator           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="e2c79c56064bf14d1df6c3507e0860a3"></a><!-- doxytag: member="dirac::MotionCompensator::MotionCompensator" ref="e2c79c56064bf14d1df6c3507e0860a3" args="(const MotionCompensator &amp;cpy)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">dirac::MotionCompensator::MotionCompensator           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00086.html">MotionCompensator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>cpy</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="da9bcab3476013de61e6a9864b7a9bcd"></a><!-- doxytag: member="dirac::MotionCompensator::AdjustBlockByRefWeights" ref="da9bcab3476013de61e6a9864b7a9bcd" args="(TwoDArray&lt; ValueType &gt; &amp;val1_block, TwoDArray&lt; ValueType &gt; &amp;val2_block, PredMode block_mode)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dirac::MotionCompensator::AdjustBlockByRefWeights           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>val1_block</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>val2_block</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00234.html#b8a7aad3ab6de8cc3709dcacde946964">PredMode</a>&nbsp;</td>
          <td class="paramname"> <em>block_mode</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="071efc34ad1556a1a0eacc9bde01fde6"></a><!-- doxytag: member="dirac::MotionCompensator::AdjustBlockBySpatialWeights" ref="071efc34ad1556a1a0eacc9bde01fde6" args="(TwoDArray&lt; ValueType &gt; &amp;val_block, const ImageCoords &amp;pos, const TwoDArray&lt; ValueType &gt; &amp;wt_array)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dirac::MotionCompensator::AdjustBlockBySpatialWeights           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>val_block</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00091.html">ImageCoords</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>pos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>wt_array</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="1724bee18bdd17e57bb5fcdeb4b19b3a"></a><!-- doxytag: member="dirac::MotionCompensator::BlockPixelPred" ref="1724bee18bdd17e57bb5fcdeb4b19b3a" args="(TwoDArray&lt; ValueType &gt; &amp;block_data, const ImageCoords &amp;pos, const ImageCoords &amp;orig_pic_size, const PicArray &amp;refup_data, const MVector &amp;mv)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void dirac::MotionCompensator::BlockPixelPred           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>block_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00091.html">ImageCoords</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>pos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00091.html">ImageCoords</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>orig_pic_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00107.html">PicArray</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>refup_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00091.html">MVector</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>mv</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [private, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

<p>Implemented in <a class="el" href="a00089.html#82c6c05b94095ace677534b1f956ef27">dirac::MotionCompensator_Pixel</a>, <a class="el" href="a00088.html#205cd4c0ccebf6e51e0add95be634acc">dirac::MotionCompensator_HalfPixel</a>, <a class="el" href="a00090.html#cdc5b1b4000c72a7c97fcab2bbf710fb">dirac::MotionCompensator_QuarterPixel</a>, and <a class="el" href="a00087.html#747f53834a0f08d6cb7e10bfe96478ac">dirac::MotionCompensator_EighthPixel</a>.</p>

</div>
</div><p>
<a class="anchor" name="d0f52647d6cf548fc8ce008bb7441ccf"></a><!-- doxytag: member="dirac::MotionCompensator::CalculateWeights" ref="d0f52647d6cf548fc8ce008bb7441ccf" args="(int xbsep, int ybsep, TwoDArray&lt; ValueType &gt; *wt_array)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dirac::MotionCompensator::CalculateWeights           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>xbsep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>ybsep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; *&nbsp;</td>
          <td class="paramname"> <em>wt_array</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="0c5a572cbb0425044f707cc2e27a2884"></a><!-- doxytag: member="dirac::MotionCompensator::CompensateBlock" ref="0c5a572cbb0425044f707cc2e27a2884" args="(TwoDArray&lt; ValueType &gt; &amp;pic_data, const ImageCoords &amp;pos, const ImageCoords &amp;orig_pic_size, PredMode block_mode, ValueType dc, const PicArray &amp;ref1up_data, const MVector &amp;mv1, const PicArray &amp;ref2up_data, const MVector &amp;mv2, const TwoDArray&lt; ValueType &gt; &amp;Weights)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void dirac::MotionCompensator::CompensateBlock           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>pic_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00091.html">ImageCoords</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>pos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00091.html">ImageCoords</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>orig_pic_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00234.html#b8a7aad3ab6de8cc3709dcacde946964">PredMode</a>&nbsp;</td>
          <td class="paramname"> <em>block_mode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a>&nbsp;</td>
          <td class="paramname"> <em>dc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00107.html">PicArray</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>ref1up_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00091.html">MVector</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>mv1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00107.html">PicArray</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>ref2up_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00091.html">MVector</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>mv2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>Weights</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [private, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="d6f1b7a56fd6ddf36ccc5c69516d1b20"></a><!-- doxytag: member="dirac::MotionCompensator::CompensateComponent" ref="d6f1b7a56fd6ddf36ccc5c69516d1b20" args="(Picture *pic, Picture *refsptr[2], const MvData &amp;mv_data, const CompSort cs)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dirac::MotionCompensator::CompensateComponent           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00108.html">Picture</a> *&nbsp;</td>
          <td class="paramname"> <em>pic</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00108.html">Picture</a> *&nbsp;</td>
          <td class="paramname"> <em>refsptr</em>[2], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00093.html">MvData</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>mv_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00234.html#39dd89c4c7484412efd87d41548271cd">CompSort</a>&nbsp;</td>
          <td class="paramname"> <em>cs</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="612c5169fb2f8f4b8d84925b18987bc5"></a><!-- doxytag: member="dirac::MotionCompensator::CompensatePicture" ref="612c5169fb2f8f4b8d84925b18987bc5" args="(const AddOrSub direction, const MvData &amp;mv_data, Picture *in_pic, Picture *refsptr[2])" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dirac::MotionCompensator::CompensatePicture           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00234.html#521776b4db3589284c5b7acb2b38a4b1">AddOrSub</a>&nbsp;</td>
          <td class="paramname"> <em>direction</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00093.html">MvData</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>mv_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00108.html">Picture</a> *&nbsp;</td>
          <td class="paramname"> <em>in_pic</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00108.html">Picture</a> *&nbsp;</td>
          <td class="paramname"> <em>refsptr</em>[2]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Perform motion compensated addition/subtraction on a picture using parameters <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>direction</em>&nbsp;</td><td>whether we're subtracting or adding ` </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mv_data</em>&nbsp;</td><td>the motion vector data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>in_pic</em>&nbsp;</td><td>Pointer to picture being motion compensated </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>refsptr</em>&nbsp;</td><td>Array of pointers to reference pictures. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="8a443fcf84cc6d33ef07c28dd326b2c6"></a><!-- doxytag: member="dirac::MotionCompensator::CompensatePicture" ref="8a443fcf84cc6d33ef07c28dd326b2c6" args="(const PicturePredParams &amp;ppp, const AddOrSub direction, const MvData &amp;mv_data, Picture *in_pic, Picture *refptr[2])" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void dirac::MotionCompensator::CompensatePicture           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00114.html">PicturePredParams</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>ppp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00234.html#521776b4db3589284c5b7acb2b38a4b1">AddOrSub</a>&nbsp;</td>
          <td class="paramname"> <em>direction</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00093.html">MvData</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>mv_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00108.html">Picture</a> *&nbsp;</td>
          <td class="paramname"> <em>in_pic</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00108.html">Picture</a> *&nbsp;</td>
          <td class="paramname"> <em>refptr</em>[2]</td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Static function that motion compensates a picture. It uses the MV precision value in the <a class="el" href="a00114.html" title="Structure to hold motion parameters when motion comp is used.">PicturePredParams</a> to instantiate the appropriate MotionCompensation sub-class. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ppp</em>&nbsp;</td><td><a class="el" href="a00108.html" title="A class for encapsulating all the data relating to a picture.">Picture</a> prediction parameters </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>direction</em>&nbsp;</td><td>whether we're subtracting or adding </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mv_data</em>&nbsp;</td><td>the motion vector data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>in_pic</em>&nbsp;</td><td>Pointer to picture being motion compensated </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>refptr</em>&nbsp;</td><td>Array of pointers to reference pictures. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="b0908e037374c18786bb6cfcb7d96ae5"></a><!-- doxytag: member="dirac::MotionCompensator::CreateBlock" ref="b0908e037374c18786bb6cfcb7d96ae5" args="(int xbsep, int ybsep, bool FullX, bool FullY, TwoDArray&lt; ValueType &gt; &amp;WeightArray)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dirac::MotionCompensator::CreateBlock           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>xbsep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>ybsep</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>FullX</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>FullY</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>WeightArray</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Params defines the block parameters so the relevant weighting arrays can be created. FullX and FullY refer to whether the weight should be adjusted for the edge of an image. eg. 1D Weighting shapes in x direction FullX true FullX false ******** * * * * * * 
</div>
</div><p>
<a class="anchor" name="f2212a9f4af5d7e4a0d8f03c20d2a7e4"></a><!-- doxytag: member="dirac::MotionCompensator::DCBlock" ref="f2212a9f4af5d7e4a0d8f03c20d2a7e4" args="(TwoDArray&lt; ValueType &gt; &amp;block_data, const ValueType dc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dirac::MotionCompensator::DCBlock           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>block_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a>&nbsp;</td>
          <td class="paramname"> <em>dc</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
DC-compensate an individual block 
</div>
</div><p>
<a class="anchor" name="c5f9e8f1449a36ea076514810c812541"></a><!-- doxytag: member="dirac::MotionCompensator::FlipX" ref="c5f9e8f1449a36ea076514810c812541" args="(const TwoDArray&lt; ValueType &gt; &amp;Original, TwoDArray&lt; ValueType &gt; &amp;Flipped)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dirac::MotionCompensator::FlipX           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>Original</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>Flipped</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="167c72bb6b2f9eb51bb5a032fe334b0a"></a><!-- doxytag: member="dirac::MotionCompensator::FlipY" ref="167c72bb6b2f9eb51bb5a032fe334b0a" args="(const TwoDArray&lt; ValueType &gt; &amp;Original, TwoDArray&lt; ValueType &gt; &amp;Flipped)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dirac::MotionCompensator::FlipY           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>Original</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00145.html">TwoDArray</a>&lt; <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>Flipped</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="f007116521d7700d96fc28c16e82ffb1"></a><!-- doxytag: member="dirac::MotionCompensator::operator=" ref="f007116521d7700d96fc28c16e82ffb1" args="(const MotionCompensator &amp;rhs)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00086.html">MotionCompensator</a>&amp; dirac::MotionCompensator::operator=           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00086.html">MotionCompensator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rhs</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="293dbcde4e016e5b14b865f62d422a23"></a><!-- doxytag: member="dirac::MotionCompensator::ReConfig" ref="293dbcde4e016e5b14b865f62d422a23" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void dirac::MotionCompensator::ReConfig           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="8c8900157aeac85fa30370bc212db0ea"></a><!-- doxytag: member="dirac::MotionCompensator::luma_or_chroma" ref="8c8900157aeac85fa30370bc212db0ea" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="a00086.html#8c8900157aeac85fa30370bc212db0ea">dirac::MotionCompensator::luma_or_chroma</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="3dc344a5c909f24eeff86e2dd6be10ae"></a><!-- doxytag: member="dirac::MotionCompensator::m_add_or_sub" ref="3dc344a5c909f24eeff86e2dd6be10ae" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00234.html#521776b4db3589284c5b7acb2b38a4b1">AddOrSub</a> <a class="el" href="a00086.html#3dc344a5c909f24eeff86e2dd6be10ae">dirac::MotionCompensator::m_add_or_sub</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="ceff1850d3de6a8eea11184739f2fc8a"></a><!-- doxytag: member="dirac::MotionCompensator::m_block_weights" ref="ceff1850d3de6a8eea11184739f2fc8a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00145.html">TwoDArray</a>&lt;<a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a>&gt;* <a class="el" href="a00086.html#ceff1850d3de6a8eea11184739f2fc8a">dirac::MotionCompensator::m_block_weights</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="c6725fa5b158a85b49c476a706a99a02"></a><!-- doxytag: member="dirac::MotionCompensator::m_bparams" ref="c6725fa5b158a85b49c476a706a99a02" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00096.html">OLBParams</a> <a class="el" href="a00086.html#c6725fa5b158a85b49c476a706a99a02">dirac::MotionCompensator::m_bparams</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="34b54f87ee66dfa219d85a8b92184bc6"></a><!-- doxytag: member="dirac::MotionCompensator::m_cformat" ref="34b54f87ee66dfa219d85a8b92184bc6" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00172.html#4a6c51c10f2eb04abc7209db7caff39f">ChromaFormat</a> <a class="el" href="a00086.html#34b54f87ee66dfa219d85a8b92184bc6">dirac::MotionCompensator::m_cformat</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="2af0f855f77ad7b0313a28bad0dfc0d0"></a><!-- doxytag: member="dirac::MotionCompensator::m_macro_block_weights" ref="2af0f855f77ad7b0313a28bad0dfc0d0" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00145.html">TwoDArray</a>&lt;<a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a>&gt;* <a class="el" href="a00086.html#2af0f855f77ad7b0313a28bad0dfc0d0">dirac::MotionCompensator::m_macro_block_weights</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="9dc4804ccccba352be8857f20be25cc6"></a><!-- doxytag: member="dirac::MotionCompensator::m_predparams" ref="9dc4804ccccba352be8857f20be25cc6" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00114.html">PicturePredParams</a> <a class="el" href="a00086.html#9dc4804ccccba352be8857f20be25cc6">dirac::MotionCompensator::m_predparams</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="4b28338808897ba26c83d3678e86be10"></a><!-- doxytag: member="dirac::MotionCompensator::m_sub_block_weights" ref="4b28338808897ba26c83d3678e86be10" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00145.html">TwoDArray</a>&lt;<a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a>&gt;* <a class="el" href="a00086.html#4b28338808897ba26c83d3678e86be10">dirac::MotionCompensator::m_sub_block_weights</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="a00198_source.html">mot_comp.h</a></ul>
</div>
<hr>
<p align="center"><small>
&copy; 2004 British Broadcasting Corporation.
Dirac code licensed under the <a href="http://www.mozilla.org/MPL/">Mozilla Public License (MPL) Version 1.1</a>.<br>
HTML documentation generated by Dimitri van Heesch's
excellent <a href="http://www.doxygen.org">Doxygen</a> tool.
</small></p>
</body>
</html>