<!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="a00150.html">VectorElementCodec</a> </div> <div class="contents"> <h1>dirac::VectorElementCodec Class Reference</h1><!-- doxytag: class="dirac::VectorElementCodec" --><!-- doxytag: inherits="ArithCodec< MvData >" -->Codes and decodes an array of motion vectors. <a href="#_details">More...</a> <p> <code>#include <<a class="el" href="a00204_source.html">mv_codec.h</a>></code> <p> <div class="dynheader"> Inheritance diagram for dirac::VectorElementCodec:</div> <div class="dynsection"> <p><center><img src="a00150.png" usemap="#dirac::VectorElementCodec_map" border="0" alt=""></center> <map name="dirac::VectorElementCodec_map"> <area href="a00001.html" alt="dirac::ArithCodec< MvData >" shape="rect" coords="0,56,179,80"> <area href="a00002.html" alt="dirac::ArithCodecBase" shape="rect" coords="0,0,179,24"> </map> </div> <p> <a href="a00314.html">List of all members.</a><h2>Public Member Functions</h2> <ul> <li><a class="el" href="a00150.html#569e138a96e099e837c54fdfdf7e7657">VectorElementCodec</a> (<a class="el" href="a00016.html">ByteIO</a> *p_byteio, int ref_id, <a class="el" href="a00234.html#96972fd3f02bb2b4dedee98363564c6c">MvElement</a> horvert, size_t number_of_contexts) <dl class="el"><dd class="mdescRight">Constructor. <a href="#569e138a96e099e837c54fdfdf7e7657"></a><br></dl><li>void <a class="el" href="a00150.html#248bb8896da5770329c624c3a190a227">InitContexts</a> () <dl class="el"><dd class="mdescRight">Initialises the contexts. <a href="#248bb8896da5770329c624c3a190a227"></a><br></dl></ul> <h2>Private Member Functions</h2> <ul> <li><a class="el" href="a00150.html#6aac4d4523c9518b438db82bf8d84c34">VectorElementCodec</a> (const <a class="el" href="a00150.html">VectorElementCodec</a> &cpy) <dl class="el"><dd class="mdescRight">Private, bodyless copy constructor: class should not be copied. <a href="#6aac4d4523c9518b438db82bf8d84c34"></a><br></dl><li><a class="el" href="a00150.html">VectorElementCodec</a> & <a class="el" href="a00150.html#09b976120f919bc7de2e452ea3e83051">operator=</a> (const <a class="el" href="a00150.html">VectorElementCodec</a> &rhs) <dl class="el"><dd class="mdescRight">Private, bodyless copy operator=: class should not be assigned. <a href="#09b976120f919bc7de2e452ea3e83051"></a><br></dl><li>void <a class="el" href="a00150.html#e26c9fe9ba8fb6f09d6499af6e625770">CodeVal</a> (const <a class="el" href="a00093.html">MvData</a> &in_data) <li>void <a class="el" href="a00150.html#b82e8f8ba384e37678cc45fceae81e84">DecodeVal</a> (<a class="el" href="a00093.html">MvData</a> &out_data) <li>void <a class="el" href="a00150.html#f98b9900902d429d6a56083e352b3a06">DoWorkCode</a> (<a class="el" href="a00093.html">MvData</a> &in_data) <dl class="el"><dd class="mdescRight">Does the work of actually coding the data. <a href="#f98b9900902d429d6a56083e352b3a06"></a><br></dl><li>void <a class="el" href="a00150.html#f1974005e0af77e3ee5e2266bdcf5e98">DoWorkDecode</a> (<a class="el" href="a00093.html">MvData</a> &out_data) <dl class="el"><dd class="mdescRight">virtual decode-only functions //////////////////////////// <a href="#f1974005e0af77e3ee5e2266bdcf5e98"></a><br></dl><li>void <a class="el" href="a00150.html#91ce546f3cbbb4dff3ac9f1d42b0601d">ResetAll</a> () <li>int <a class="el" href="a00150.html#d47aff0a1cccc77ae9f82119aa411537">Prediction</a> (const <a class="el" href="a00145.html">MvArray</a> &mvarray, const <a class="el" href="a00145.html">TwoDArray</a>< <a class="el" href="a00234.html#b8a7aad3ab6de8cc3709dcacde946964">PredMode</a> > &preddata) const </ul> <h2>Private Attributes</h2> <ul> <li>int <a class="el" href="a00150.html#a629196d6c6d0bb58aae7df1b312bf3d">m_b_xp</a> <li>int <a class="el" href="a00150.html#8d2a7669f67ff42eb18d9681c6d7974c">m_b_yp</a> <li>int <a class="el" href="a00150.html#7438614c3c3650a6c5b7a7b6d2340afa">m_sb_xp</a> <li>int <a class="el" href="a00150.html#38d79128efd12e7ab9b01689f528f783">m_sb_yp</a> <li>int <a class="el" href="a00150.html#fcf9f2223c40b08048ccb502fdaeb131">m_sb_tlb_x</a> <li>int <a class="el" href="a00150.html#80fd302a029a2273dbc146f4d17305d2">m_sb_tlb_y</a> <li>const int <a class="el" href="a00150.html#4a167497d7495c8ce0cc95703f28f747">m_ref</a> <li>const <a class="el" href="a00234.html#96972fd3f02bb2b4dedee98363564c6c">MvElement</a> <a class="el" href="a00150.html#91a9ba4ed8b5f670181e6b07a707a0ed">m_hv</a> </ul> <hr><a name="_details"></a><h2>Detailed Description</h2> Derived from the <a class="el" href="a00001.html" title="Abstract binary arithmetic coding class.">ArithCodec</a> class, this codes and decodes a motion vector element (vertical or horizontal) <hr><h2>Constructor & Destructor Documentation</h2> <a class="anchor" name="569e138a96e099e837c54fdfdf7e7657"></a><!-- doxytag: member="dirac::VectorElementCodec::VectorElementCodec" ref="569e138a96e099e837c54fdfdf7e7657" args="(ByteIO *p_byteio, int ref_id, MvElement horvert, size_t number_of_contexts)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">dirac::VectorElementCodec::VectorElementCodec </td> <td>(</td> <td class="paramtype"><a class="el" href="a00016.html">ByteIO</a> * </td> <td class="paramname"> <em>p_byteio</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>ref_id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="a00234.html#96972fd3f02bb2b4dedee98363564c6c">MvElement</a> </td> <td class="paramname"> <em>horvert</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"> <em>number_of_contexts</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Creates a MvDataCodec object to encode MV data, based on 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>p_byteio</em> </td><td>Input/output for the encoded bits </td></tr> <tr><td valign="top"></td><td valign="top"><em>ref_id</em> </td><td>The identity of the reference (1 or 2) </td></tr> <tr><td valign="top"></td><td valign="top"><em>horvert</em> </td><td>The identity of the vector element (horizontal or vertical) </td></tr> <tr><td valign="top"></td><td valign="top"><em>number_of_contexts</em> </td><td>the number of contexts used </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="6aac4d4523c9518b438db82bf8d84c34"></a><!-- doxytag: member="dirac::VectorElementCodec::VectorElementCodec" ref="6aac4d4523c9518b438db82bf8d84c34" args="(const VectorElementCodec &cpy)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">dirac::VectorElementCodec::VectorElementCodec </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00150.html">VectorElementCodec</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="e26c9fe9ba8fb6f09d6499af6e625770"></a><!-- doxytag: member="dirac::VectorElementCodec::CodeVal" ref="e26c9fe9ba8fb6f09d6499af6e625770" args="(const MvData &in_data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void dirac::VectorElementCodec::CodeVal </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00093.html">MvData</a> & </td> <td class="paramname"> <em>in_data</em> </td> <td> ) </td> <td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="b82e8f8ba384e37678cc45fceae81e84"></a><!-- doxytag: member="dirac::VectorElementCodec::DecodeVal" ref="b82e8f8ba384e37678cc45fceae81e84" args="(MvData &out_data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void dirac::VectorElementCodec::DecodeVal </td> <td>(</td> <td class="paramtype"><a class="el" href="a00093.html">MvData</a> & </td> <td class="paramname"> <em>out_data</em> </td> <td> ) </td> <td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="f98b9900902d429d6a56083e352b3a06"></a><!-- doxytag: member="dirac::VectorElementCodec::DoWorkCode" ref="f98b9900902d429d6a56083e352b3a06" args="(MvData &in_data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void dirac::VectorElementCodec::DoWorkCode </td> <td>(</td> <td class="paramtype"><a class="el" href="a00093.html">MvData</a> & </td> <td class="paramname"> <em>in_data</em> </td> <td> ) </td> <td><code> [private, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Implements <a class="el" href="a00001.html#494cce54ef4b1e29dbfa501172a4c5c5">dirac::ArithCodec< MvData ></a>.</p> </div> </div><p> <a class="anchor" name="f1974005e0af77e3ee5e2266bdcf5e98"></a><!-- doxytag: member="dirac::VectorElementCodec::DoWorkDecode" ref="f1974005e0af77e3ee5e2266bdcf5e98" args="(MvData &out_data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void dirac::VectorElementCodec::DoWorkDecode </td> <td>(</td> <td class="paramtype"><a class="el" href="a00093.html">MvData</a> & </td> <td class="paramname"> <em>out_data</em> </td> <td> ) </td> <td><code> [private, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <p>Implements <a class="el" href="a00001.html#a2391df876c8b5aa1007830371f551f7">dirac::ArithCodec< MvData ></a>.</p> </div> </div><p> <a class="anchor" name="248bb8896da5770329c624c3a190a227"></a><!-- doxytag: member="dirac::VectorElementCodec::InitContexts" ref="248bb8896da5770329c624c3a190a227" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void dirac::VectorElementCodec::InitContexts </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="09b976120f919bc7de2e452ea3e83051"></a><!-- doxytag: member="dirac::VectorElementCodec::operator=" ref="09b976120f919bc7de2e452ea3e83051" args="(const VectorElementCodec &rhs)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00150.html">VectorElementCodec</a>& dirac::VectorElementCodec::operator= </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00150.html">VectorElementCodec</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="d47aff0a1cccc77ae9f82119aa411537"></a><!-- doxytag: member="dirac::VectorElementCodec::Prediction" ref="d47aff0a1cccc77ae9f82119aa411537" args="(const MvArray &mvarray, const TwoDArray< PredMode > &preddata) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int dirac::VectorElementCodec::Prediction </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00145.html">MvArray</a> & </td> <td class="paramname"> <em>mvarray</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#b8a7aad3ab6de8cc3709dcacde946964">PredMode</a> > & </td> <td class="paramname"> <em>preddata</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td> const<code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="91ce546f3cbbb4dff3ac9f1d42b0601d"></a><!-- doxytag: member="dirac::VectorElementCodec::ResetAll" ref="91ce546f3cbbb4dff3ac9f1d42b0601d" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void dirac::VectorElementCodec::ResetAll </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="a629196d6c6d0bb58aae7df1b312bf3d"></a><!-- doxytag: member="dirac::VectorElementCodec::m_b_xp" ref="a629196d6c6d0bb58aae7df1b312bf3d" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="a00150.html#a629196d6c6d0bb58aae7df1b312bf3d">dirac::VectorElementCodec::m_b_xp</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="8d2a7669f67ff42eb18d9681c6d7974c"></a><!-- doxytag: member="dirac::VectorElementCodec::m_b_yp" ref="8d2a7669f67ff42eb18d9681c6d7974c" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="a00150.html#8d2a7669f67ff42eb18d9681c6d7974c">dirac::VectorElementCodec::m_b_yp</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="91a9ba4ed8b5f670181e6b07a707a0ed"></a><!-- doxytag: member="dirac::VectorElementCodec::m_hv" ref="91a9ba4ed8b5f670181e6b07a707a0ed" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="a00234.html#96972fd3f02bb2b4dedee98363564c6c">MvElement</a> <a class="el" href="a00150.html#91a9ba4ed8b5f670181e6b07a707a0ed">dirac::VectorElementCodec::m_hv</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="4a167497d7495c8ce0cc95703f28f747"></a><!-- doxytag: member="dirac::VectorElementCodec::m_ref" ref="4a167497d7495c8ce0cc95703f28f747" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const int <a class="el" href="a00150.html#4a167497d7495c8ce0cc95703f28f747">dirac::VectorElementCodec::m_ref</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="fcf9f2223c40b08048ccb502fdaeb131"></a><!-- doxytag: member="dirac::VectorElementCodec::m_sb_tlb_x" ref="fcf9f2223c40b08048ccb502fdaeb131" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="a00150.html#fcf9f2223c40b08048ccb502fdaeb131">dirac::VectorElementCodec::m_sb_tlb_x</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="80fd302a029a2273dbc146f4d17305d2"></a><!-- doxytag: member="dirac::VectorElementCodec::m_sb_tlb_y" ref="80fd302a029a2273dbc146f4d17305d2" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="a00150.html#80fd302a029a2273dbc146f4d17305d2">dirac::VectorElementCodec::m_sb_tlb_y</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="7438614c3c3650a6c5b7a7b6d2340afa"></a><!-- doxytag: member="dirac::VectorElementCodec::m_sb_xp" ref="7438614c3c3650a6c5b7a7b6d2340afa" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="a00150.html#7438614c3c3650a6c5b7a7b6d2340afa">dirac::VectorElementCodec::m_sb_xp</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> </div> </div><p> <a class="anchor" name="38d79128efd12e7ab9b01689f528f783"></a><!-- doxytag: member="dirac::VectorElementCodec::m_sb_yp" ref="38d79128efd12e7ab9b01689f528f783" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="a00150.html#38d79128efd12e7ab9b01689f528f783">dirac::VectorElementCodec::m_sb_yp</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="a00204_source.html">mv_codec.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>