<!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="a00143.html">SubpelRefine</a> </div> <div class="contents"> <h1>dirac::SubpelRefine Class Reference</h1><!-- doxytag: class="dirac::SubpelRefine" -->The <a class="el" href="a00143.html" title="The SubpelRefine class takes pixel-accurate motion vectors and refines them to 1/8-pixel...">SubpelRefine</a> class takes pixel-accurate motion vectors and refines them to 1/8-pixel accuracy. <a href="#_details">More...</a> <p> <code>#include <<a class="el" href="a00195_source.html">me_subpel.h</a>></code> <p> <p> <a href="a00369.html">List of all members.</a><h2>Public Member Functions</h2> <ul> <li><a class="el" href="a00143.html#2ce90ec052919af33d6fc0abed7d32c0">SubpelRefine</a> (const <a class="el" href="a00063.html">EncoderParams</a> &encp) <dl class="el"><dd class="mdescRight">Constructor. <a href="#2ce90ec052919af33d6fc0abed7d32c0"></a><br></dl><li><a class="el" href="a00143.html#e6f7a45b3ed33abb3e0b74f88bb55841">~SubpelRefine</a> () <dl class="el"><dd class="mdescRight">Destructor. <a href="#e6f7a45b3ed33abb3e0b74f88bb55841"></a><br></dl><li>void <a class="el" href="a00143.html#23db51e3329ed2b5476e0506aebf1b3c">DoSubpel</a> (<a class="el" href="a00065.html">EncQueue</a> &my_buffer, int pic_num) <dl class="el"><dd class="mdescRight">Does the actual sub-pixel refinement. <a href="#23db51e3329ed2b5476e0506aebf1b3c"></a><br></dl></ul> <h2>Private Member Functions</h2> <ul> <li><a class="el" href="a00143.html#2b2d18f9db57afe64c433a4f7404534b">SubpelRefine</a> (const <a class="el" href="a00143.html">SubpelRefine</a> &cpy) <dl class="el"><dd class="mdescRight">Private, body-less copy constructor: this class should not be copied. <a href="#2b2d18f9db57afe64c433a4f7404534b"></a><br></dl><li><a class="el" href="a00143.html">SubpelRefine</a> & <a class="el" href="a00143.html#38e6ec9661fe019e6b8996767377efe6">operator=</a> (const <a class="el" href="a00143.html">SubpelRefine</a> &rhs) <dl class="el"><dd class="mdescRight">Private, body-less assignment=: this class should not be assigned. <a href="#38e6ec9661fe019e6b8996767377efe6"></a><br></dl><li>void <a class="el" href="a00143.html#e1e3f12f2b28c06b2d7f2c4ad526fa47">MatchPic</a> (const <a class="el" href="a00107.html">PicArray</a> &pic_data, const <a class="el" href="a00107.html">PicArray</a> &refup_data, <a class="el" href="a00082.html">MEData</a> &me_data, int ref_id) <dl class="el"><dd class="mdescRight">Match a picture from its (upconverted) reference, and record the block mvs. <a href="#e1e3f12f2b28c06b2d7f2c4ad526fa47"></a><br></dl><li>void <a class="el" href="a00143.html#ba70ff0b5ba9a02a1f4040660598cd84">DoBlock</a> (const int xblock, const int yblock, <a class="el" href="a00015.html">BlockMatcher</a> &my_bmatch, <a class="el" href="a00082.html">MEData</a> &me_data, const int ref_id) <dl class="el"><dd class="mdescRight">Match an individual block. <a href="#ba70ff0b5ba9a02a1f4040660598cd84"></a><br></dl><li><a class="el" href="a00091.html">MVector</a> <a class="el" href="a00143.html#e0743f59c4f38bdc76b5f553114e86e3">GetPred</a> (int xblock, int yblock, const <a class="el" href="a00145.html">MvArray</a> &mvarray) <dl class="el"><dd class="mdescRight">Get a prediction for a block MV from the neighbouring blocks. <a href="#e0743f59c4f38bdc76b5f553114e86e3"></a><br></dl></ul> <h2>Private Attributes</h2> <ul> <li>const <a class="el" href="a00063.html">EncoderParams</a> & <a class="el" href="a00143.html#681a0edad26574f305c7a8a08fb9e885">m_encparams</a> <dl class="el"><dd class="mdescRight">Local reference to the encoder params. <a href="#681a0edad26574f305c7a8a08fb9e885"></a><br></dl><li>const <a class="el" href="a00114.html">PicturePredParams</a> * <a class="el" href="a00143.html#f4e8b453a2dacb1e2e3d982072a77d1f">m_predparams</a> <dl class="el"><dd class="mdescRight">A local pointer to the encoder params. <a href="#f4e8b453a2dacb1e2e3d982072a77d1f"></a><br></dl><li><a class="el" href="a00234.html#7a049e12b5746a1b3da88a3e94d04069">CandidateList</a> <a class="el" href="a00143.html#1bd4118fa06016053bc801c26fd02eeb">m_cand_list</a> <dl class="el"><dd class="mdescRight">The list of candidate vectors being tested. <a href="#1bd4118fa06016053bc801c26fd02eeb"></a><br></dl><li><a class="el" href="a00097.html">OneDArray</a>< <a class="el" href="a00091.html">ImageCoords</a> > <a class="el" href="a00143.html#5ae5afb3c166516f7fe090dd3a2a0af4">m_nshift</a> <dl class="el"><dd class="mdescRight">The relative coords of the set of neighbours used to generate MV predictions. <a href="#5ae5afb3c166516f7fe090dd3a2a0af4"></a><br></dl></ul> <hr><a name="_details"></a><h2>Detailed Description</h2> The <a class="el" href="a00143.html" title="The SubpelRefine class takes pixel-accurate motion vectors and refines them to 1/8-pixel...">SubpelRefine</a> class takes pixel-accurate motion vectors and refines them to 1/8-pixel accuracy. It uses references upconverted by a factor of 2 in each dimension, with the remaining precision gained by doing linear interpolation between values on-the-fly. <hr><h2>Constructor & Destructor Documentation</h2> <a class="anchor" name="2ce90ec052919af33d6fc0abed7d32c0"></a><!-- doxytag: member="dirac::SubpelRefine::SubpelRefine" ref="2ce90ec052919af33d6fc0abed7d32c0" args="(const EncoderParams &encp)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">dirac::SubpelRefine::SubpelRefine </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00063.html">EncoderParams</a> & </td> <td class="paramname"> <em>encp</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> The constructor initialises the encoder 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>encp</em> </td><td>the parameters used for controlling ME/MC </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="e6f7a45b3ed33abb3e0b74f88bb55841"></a><!-- doxytag: member="dirac::SubpelRefine::~SubpelRefine" ref="e6f7a45b3ed33abb3e0b74f88bb55841" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">dirac::SubpelRefine::~SubpelRefine </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="2b2d18f9db57afe64c433a4f7404534b"></a><!-- doxytag: member="dirac::SubpelRefine::SubpelRefine" ref="2b2d18f9db57afe64c433a4f7404534b" args="(const SubpelRefine &cpy)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">dirac::SubpelRefine::SubpelRefine </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00143.html">SubpelRefine</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="ba70ff0b5ba9a02a1f4040660598cd84"></a><!-- doxytag: member="dirac::SubpelRefine::DoBlock" ref="ba70ff0b5ba9a02a1f4040660598cd84" args="(const int xblock, const int yblock, BlockMatcher &my_bmatch, MEData &me_data, const int ref_id)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void dirac::SubpelRefine::DoBlock </td> <td>(</td> <td class="paramtype">const int </td> <td class="paramname"> <em>xblock</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const int </td> <td class="paramname"> <em>yblock</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00015.html">BlockMatcher</a> & </td> <td class="paramname"> <em>my_bmatch</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00082.html">MEData</a> & </td> <td class="paramname"> <em>me_data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const int </td> <td class="paramname"> <em>ref_id</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="23db51e3329ed2b5476e0506aebf1b3c"></a><!-- doxytag: member="dirac::SubpelRefine::DoSubpel" ref="23db51e3329ed2b5476e0506aebf1b3c" args="(EncQueue &my_buffer, int pic_num)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void dirac::SubpelRefine::DoSubpel </td> <td>(</td> <td class="paramtype"><a class="el" href="a00065.html">EncQueue</a> & </td> <td class="paramname"> <em>my_buffer</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>pic_num</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Does the actual sub-pixel refinement. <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>my_buffer</em> </td><td>the buffer of pictures being used </td></tr> <tr><td valign="top"></td><td valign="top"><em>pic_num</em> </td><td>the picture number on which motion estimation is being performed </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="e0743f59c4f38bdc76b5f553114e86e3"></a><!-- doxytag: member="dirac::SubpelRefine::GetPred" ref="e0743f59c4f38bdc76b5f553114e86e3" args="(int xblock, int yblock, const MvArray &mvarray)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00091.html">MVector</a> dirac::SubpelRefine::GetPred </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"> <em>xblock</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>yblock</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="a00145.html">MvArray</a> & </td> <td class="paramname"> <em>mvarray</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="e1e3f12f2b28c06b2d7f2c4ad526fa47"></a><!-- doxytag: member="dirac::SubpelRefine::MatchPic" ref="e1e3f12f2b28c06b2d7f2c4ad526fa47" args="(const PicArray &pic_data, const PicArray &refup_data, MEData &me_data, int ref_id)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void dirac::SubpelRefine::MatchPic </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00107.html">PicArray</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="a00107.html">PicArray</a> & </td> <td class="paramname"> <em>refup_data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00082.html">MEData</a> & </td> <td class="paramname"> <em>me_data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>ref_id</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="38e6ec9661fe019e6b8996767377efe6"></a><!-- doxytag: member="dirac::SubpelRefine::operator=" ref="38e6ec9661fe019e6b8996767377efe6" args="(const SubpelRefine &rhs)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00143.html">SubpelRefine</a>& dirac::SubpelRefine::operator= </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00143.html">SubpelRefine</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> <hr><h2>Member Data Documentation</h2> <a class="anchor" name="1bd4118fa06016053bc801c26fd02eeb"></a><!-- doxytag: member="dirac::SubpelRefine::m_cand_list" ref="1bd4118fa06016053bc801c26fd02eeb" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00234.html#7a049e12b5746a1b3da88a3e94d04069">CandidateList</a> <a class="el" href="a00143.html#1bd4118fa06016053bc801c26fd02eeb">dirac::SubpelRefine::m_cand_list</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="681a0edad26574f305c7a8a08fb9e885"></a><!-- doxytag: member="dirac::SubpelRefine::m_encparams" ref="681a0edad26574f305c7a8a08fb9e885" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="a00063.html">EncoderParams</a>& <a class="el" href="a00143.html#681a0edad26574f305c7a8a08fb9e885">dirac::SubpelRefine::m_encparams</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="5ae5afb3c166516f7fe090dd3a2a0af4"></a><!-- doxytag: member="dirac::SubpelRefine::m_nshift" ref="5ae5afb3c166516f7fe090dd3a2a0af4" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00097.html">OneDArray</a><<a class="el" href="a00091.html">ImageCoords</a>> <a class="el" href="a00143.html#5ae5afb3c166516f7fe090dd3a2a0af4">dirac::SubpelRefine::m_nshift</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="f4e8b453a2dacb1e2e3d982072a77d1f"></a><!-- doxytag: member="dirac::SubpelRefine::m_predparams" ref="f4e8b453a2dacb1e2e3d982072a77d1f" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="a00114.html">PicturePredParams</a>* <a class="el" href="a00143.html#f4e8b453a2dacb1e2e3d982072a77d1f">dirac::SubpelRefine::m_predparams</a><code> [private]</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="a00195_source.html">me_subpel.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>