<!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 <<a class="el" href="a00198_source.html">mot_comp.h</a>></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> &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> &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> &ppp, const <a class="el" href="a00234.html#521776b4db3589284c5b7acb2b38a4b1">AddOrSub</a> direction, const <a class="el" href="a00093.html">MvData</a> &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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > * <a class="el" href="a00086.html#ceff1850d3de6a8eea11184739f2fc8a">m_block_weights</a> <li><a class="el" href="a00145.html">TwoDArray</a>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > * <a class="el" href="a00086.html#2af0f855f77ad7b0313a28bad0dfc0d0">m_macro_block_weights</a> <li><a class="el" href="a00145.html">TwoDArray</a>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > * <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> &cpy) <li><a class="el" href="a00086.html">MotionCompensator</a> & <a class="el" href="a00086.html#f007116521d7700d96fc28c16e82ffb1">operator=</a> (const <a class="el" href="a00086.html">MotionCompensator</a> &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> &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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > &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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > *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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > &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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > &Original, <a class="el" href="a00145.html">TwoDArray</a>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > &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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > &Original, <a class="el" href="a00145.html">TwoDArray</a>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > &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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > &pic_data, const <a class="el" href="a00091.html">ImageCoords</a> &pos, const <a class="el" href="a00091.html">ImageCoords</a> &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> &ref1up_data, const <a class="el" href="a00091.html">MVector</a> &mv1, const <a class="el" href="a00107.html">PicArray</a> &ref2up_data, const <a class="el" href="a00091.html">MVector</a> &mv2, const <a class="el" href="a00145.html">TwoDArray</a>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > &Weights) <li>virtual void <a class="el" href="a00086.html#1724bee18bdd17e57bb5fcdeb4b19b3a">BlockPixelPred</a> (<a class="el" href="a00145.html">TwoDArray</a>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > &block_data, const <a class="el" href="a00091.html">ImageCoords</a> &pos, const <a class="el" href="a00091.html">ImageCoords</a> &orig_pic_size, const <a class="el" href="a00107.html">PicArray</a> &refup_data, const <a class="el" href="a00091.html">MVector</a> &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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > &val1_block, <a class="el" href="a00145.html">TwoDArray</a>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > &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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > &val_block, const <a class="el" href="a00091.html">ImageCoords</a> &pos, const <a class="el" href="a00145.html">TwoDArray</a>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > &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 & Destructor Documentation</h2> <a class="anchor" name="6b48c61d0a2ff2e0898f3cb14e4373a8"></a><!-- doxytag: member="dirac::MotionCompensator::MotionCompensator" ref="6b48c61d0a2ff2e0898f3cb14e4373a8" args="(const PicturePredParams &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> & </td> <td class="paramname"> <em>ppp</em> </td> <td> ) </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> ) </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 &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> & </td> <td class="paramname"> <em>cpy</em> </td> <td> ) </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< ValueType > &val1_block, TwoDArray< ValueType > &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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > & </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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > & </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> </td> <td class="paramname"> <em>block_mode</em></td><td> </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< ValueType > &val_block, const ImageCoords &pos, const TwoDArray< ValueType > &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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > & </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> & </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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > & </td> <td class="paramname"> <em>wt_array</em></td><td> </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< ValueType > &block_data, const ImageCoords &pos, const ImageCoords &orig_pic_size, const PicArray &refup_data, const MVector &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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > & </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> & </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> & </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> & </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> & </td> <td class="paramname"> <em>mv</em></td><td> </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< ValueType > *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 </td> <td class="paramname"> <em>xbsep</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > * </td> <td class="paramname"> <em>wt_array</em></td><td> </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< ValueType > &pic_data, const ImageCoords &pos, const ImageCoords &orig_pic_size, PredMode block_mode, ValueType dc, const PicArray &ref1up_data, const MVector &mv1, const PicArray &ref2up_data, const MVector &mv2, const TwoDArray< ValueType > &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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > & </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> & </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> & </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> </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> </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> & </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> & </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> & </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> & </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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > & </td> <td class="paramname"> <em>Weights</em></td><td> </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 &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> * </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> * </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> & </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> </td> <td class="paramname"> <em>cs</em></td><td> </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 &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> </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> & </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> * </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> * </td> <td class="paramname"> <em>refsptr</em>[2]</td><td> </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> </td><td>whether we're subtracting or adding ` </td></tr> <tr><td valign="top"></td><td valign="top"><em>mv_data</em> </td><td>the motion vector data </td></tr> <tr><td valign="top"></td><td valign="top"><em>in_pic</em> </td><td>Pointer to picture being motion compensated </td></tr> <tr><td valign="top"></td><td valign="top"><em>refsptr</em> </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 &ppp, const AddOrSub direction, const MvData &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> & </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> </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> & </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> * </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> * </td> <td class="paramname"> <em>refptr</em>[2]</td><td> </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> </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> </td><td>whether we're subtracting or adding </td></tr> <tr><td valign="top"></td><td valign="top"><em>mv_data</em> </td><td>the motion vector data </td></tr> <tr><td valign="top"></td><td valign="top"><em>in_pic</em> </td><td>Pointer to picture being motion compensated </td></tr> <tr><td valign="top"></td><td valign="top"><em>refptr</em> </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< ValueType > &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 </td> <td class="paramname"> <em>xbsep</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>ybsep</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"> <em>FullX</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > & </td> <td class="paramname"> <em>WeightArray</em></td><td> </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< ValueType > &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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > & </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> </td> <td class="paramname"> <em>dc</em></td><td> </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< ValueType > &Original, TwoDArray< ValueType > &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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > & </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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > & </td> <td class="paramname"> <em>Flipped</em></td><td> </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< ValueType > &Original, TwoDArray< ValueType > &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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > & </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>< <a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a> > & </td> <td class="paramname"> <em>Flipped</em></td><td> </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 &rhs)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00086.html">MotionCompensator</a>& dirac::MotionCompensator::operator= </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00086.html">MotionCompensator</a> & </td> <td class="paramname"> <em>rhs</em> </td> <td> ) </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> ) </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><<a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a>>* <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><<a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a>>* <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><<a class="el" href="a00234.html#548820ca76f864dc8630df79b2c5c5b9">ValueType</a>>* <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> © 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>