Sophie

Sophie

distrib > Mageia > 6 > x86_64 > media > core-updates > by-pkgid > 3ed7a08dfe3e0b575957c42a1a1f5970 > files > 46

libpgf-doc-6.12.24-7.1.mga6.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libpgf: CEncoder Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="PGF.PNG"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">libpgf
   &#160;<span id="projectnumber">6.12.24</span>
   </div>
   <div id="projectbrief">PGF - Progressive Graphics File</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classCEncoder.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classCEncoder-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">CEncoder Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>PGF encoder.  
 <a href="classCEncoder.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="Encoder_8h_source.html">Encoder.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder_1_1CMacroBlock.html">CMacroBlock</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A macro block is an encoding unit of fixed size (uncoded)  <a href="classCEncoder_1_1CMacroBlock.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ad4abed11dca812bdb0d2f9715e6de4da"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#ad4abed11dca812bdb0d2f9715e6de4da">CEncoder</a> (<a class="el" href="classCPGFStream.html">CPGFStream</a> *stream, <a class="el" href="structPGFPreHeader.html">PGFPreHeader</a> preHeader, <a class="el" href="structPGFHeader.html">PGFHeader</a> header, const <a class="el" href="structPGFPostHeader.html">PGFPostHeader</a> &amp;postHeader, UINT64 &amp;userDataPos, bool useOMP) THROW_</td></tr>
<tr class="separator:ad4abed11dca812bdb0d2f9715e6de4da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6b7126b6e24bd115348fa6243756f47"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#aa6b7126b6e24bd115348fa6243756f47">~CEncoder</a> ()</td></tr>
<tr class="memdesc:aa6b7126b6e24bd115348fa6243756f47"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor.  <a href="#aa6b7126b6e24bd115348fa6243756f47">More...</a><br /></td></tr>
<tr class="separator:aa6b7126b6e24bd115348fa6243756f47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2ffd887a5d8b2e63dfa5b7188ca49f1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#aa2ffd887a5d8b2e63dfa5b7188ca49f1">FavorSpeedOverSize</a> ()</td></tr>
<tr class="memdesc:aa2ffd887a5d8b2e63dfa5b7188ca49f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encoder favors speed over compression size.  <a href="#aa2ffd887a5d8b2e63dfa5b7188ca49f1">More...</a><br /></td></tr>
<tr class="separator:aa2ffd887a5d8b2e63dfa5b7188ca49f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2491bafd532b4f6bcc5505cc0857078c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a2491bafd532b4f6bcc5505cc0857078c">Flush</a> () THROW_</td></tr>
<tr class="separator:a2491bafd532b4f6bcc5505cc0857078c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1772564b2558115a6e0f4b6bdfb1873"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#af1772564b2558115a6e0f4b6bdfb1873">UpdatePostHeaderSize</a> (<a class="el" href="structPGFPreHeader.html">PGFPreHeader</a> preHeader) THROW_</td></tr>
<tr class="separator:af1772564b2558115a6e0f4b6bdfb1873"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e9bde69d4e28e6752adb7f593adfaaf"><td class="memItemLeft" align="right" valign="top">UINT32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a9e9bde69d4e28e6752adb7f593adfaaf">WriteLevelLength</a> (UINT32 *&amp;levelLength) THROW_</td></tr>
<tr class="separator:a9e9bde69d4e28e6752adb7f593adfaaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabc52a41473071a2b4c5ddb7459dd264"><td class="memItemLeft" align="right" valign="top">UINT32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#aabc52a41473071a2b4c5ddb7459dd264">UpdateLevelLength</a> () THROW_</td></tr>
<tr class="separator:aabc52a41473071a2b4c5ddb7459dd264"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2b090edf99019e23f4264a6d76469bc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#ab2b090edf99019e23f4264a6d76469bc">Partition</a> (<a class="el" href="classCSubband.html">CSubband</a> *band, int width, int height, int startPos, int pitch) THROW_</td></tr>
<tr class="separator:ab2b090edf99019e23f4264a6d76469bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acff251105003f4a4376a01180dbdc757"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#acff251105003f4a4376a01180dbdc757">SetEncodedLevel</a> (int currentLevel)</td></tr>
<tr class="separator:acff251105003f4a4376a01180dbdc757"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75534facc647f53982bcfd72c1caa540"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a75534facc647f53982bcfd72c1caa540">WriteValue</a> (<a class="el" href="classCSubband.html">CSubband</a> *band, int bandPos) THROW_</td></tr>
<tr class="separator:a75534facc647f53982bcfd72c1caa540"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c8dc9273c8a17ce72e86fec5f389112"><td class="memItemLeft" align="right" valign="top">INT64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a5c8dc9273c8a17ce72e86fec5f389112">ComputeHeaderLength</a> () const</td></tr>
<tr class="separator:a5c8dc9273c8a17ce72e86fec5f389112"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41cb748b6797fc6de436e546f3d76ff2"><td class="memItemLeft" align="right" valign="top">INT64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a41cb748b6797fc6de436e546f3d76ff2">ComputeBufferLength</a> () const</td></tr>
<tr class="separator:a41cb748b6797fc6de436e546f3d76ff2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8aadfcf080fad9a5cd82b532dc847d5b"><td class="memItemLeft" align="right" valign="top">INT64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a8aadfcf080fad9a5cd82b532dc847d5b">ComputeOffset</a> () const</td></tr>
<tr class="separator:a8aadfcf080fad9a5cd82b532dc847d5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b2fefcc1d7c95b14e62c71caa1e4fdb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a0b2fefcc1d7c95b14e62c71caa1e4fdb">SetBufferStartPos</a> ()</td></tr>
<tr class="memdesc:a0b2fefcc1d7c95b14e62c71caa1e4fdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Save current stream position as beginning of current level.  <a href="#a0b2fefcc1d7c95b14e62c71caa1e4fdb">More...</a><br /></td></tr>
<tr class="separator:a0b2fefcc1d7c95b14e62c71caa1e4fdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:adc7b22b8775517e9da0b7aff4ee865cb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#adc7b22b8775517e9da0b7aff4ee865cb">EncodeBuffer</a> (<a class="el" href="unionROIBlockHeader.html">ROIBlockHeader</a> h) THROW_</td></tr>
<tr class="separator:adc7b22b8775517e9da0b7aff4ee865cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c54a254b5ddcbe8eaf3bfcb082afcda"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a5c54a254b5ddcbe8eaf3bfcb082afcda">WriteMacroBlock</a> (<a class="el" href="classCEncoder_1_1CMacroBlock.html">CMacroBlock</a> *block) THROW_</td></tr>
<tr class="separator:a5c54a254b5ddcbe8eaf3bfcb082afcda"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:ad01ad5ea3003064b00516dad191d3499"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCPGFStream.html">CPGFStream</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a></td></tr>
<tr class="memdesc:ad01ad5ea3003064b00516dad191d3499"><td class="mdescLeft">&#160;</td><td class="mdescRight">output PMF stream  <a href="#ad01ad5ea3003064b00516dad191d3499">More...</a><br /></td></tr>
<tr class="separator:ad01ad5ea3003064b00516dad191d3499"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32012be0814bbc611963517e482d1111"><td class="memItemLeft" align="right" valign="top">UINT64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a32012be0814bbc611963517e482d1111">m_startPosition</a></td></tr>
<tr class="memdesc:a32012be0814bbc611963517e482d1111"><td class="mdescLeft">&#160;</td><td class="mdescRight">stream position of PGF start (PreHeader)  <a href="#a32012be0814bbc611963517e482d1111">More...</a><br /></td></tr>
<tr class="separator:a32012be0814bbc611963517e482d1111"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5409bc51f3d922d43b5bcad3b8f2c8aa"><td class="memItemLeft" align="right" valign="top">UINT64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a5409bc51f3d922d43b5bcad3b8f2c8aa">m_levelLengthPos</a></td></tr>
<tr class="memdesc:a5409bc51f3d922d43b5bcad3b8f2c8aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">stream position of Metadata  <a href="#a5409bc51f3d922d43b5bcad3b8f2c8aa">More...</a><br /></td></tr>
<tr class="separator:a5409bc51f3d922d43b5bcad3b8f2c8aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17309ba6d30988bf1e6d02ea51a55825"><td class="memItemLeft" align="right" valign="top">UINT64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a17309ba6d30988bf1e6d02ea51a55825">m_bufferStartPos</a></td></tr>
<tr class="memdesc:a17309ba6d30988bf1e6d02ea51a55825"><td class="mdescLeft">&#160;</td><td class="mdescRight">stream position of encoded buffer  <a href="#a17309ba6d30988bf1e6d02ea51a55825">More...</a><br /></td></tr>
<tr class="separator:a17309ba6d30988bf1e6d02ea51a55825"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f4684ae62c14fcf22ff29e7ac8f5bc2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCEncoder_1_1CMacroBlock.html">CMacroBlock</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a6f4684ae62c14fcf22ff29e7ac8f5bc2">m_macroBlocks</a></td></tr>
<tr class="memdesc:a6f4684ae62c14fcf22ff29e7ac8f5bc2"><td class="mdescLeft">&#160;</td><td class="mdescRight">array of macroblocks  <a href="#a6f4684ae62c14fcf22ff29e7ac8f5bc2">More...</a><br /></td></tr>
<tr class="separator:a6f4684ae62c14fcf22ff29e7ac8f5bc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeed23492e6a3d093c919708da3cc04d2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#aeed23492e6a3d093c919708da3cc04d2">m_macroBlockLen</a></td></tr>
<tr class="memdesc:aeed23492e6a3d093c919708da3cc04d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">array length  <a href="#aeed23492e6a3d093c919708da3cc04d2">More...</a><br /></td></tr>
<tr class="separator:aeed23492e6a3d093c919708da3cc04d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac446c96d95a90bb005019aef2d18284"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#aac446c96d95a90bb005019aef2d18284">m_lastMacroBlock</a></td></tr>
<tr class="memdesc:aac446c96d95a90bb005019aef2d18284"><td class="mdescLeft">&#160;</td><td class="mdescRight">array index of the last created macro block  <a href="#aac446c96d95a90bb005019aef2d18284">More...</a><br /></td></tr>
<tr class="separator:aac446c96d95a90bb005019aef2d18284"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55d6f2b3aeea93c52bd0a39af9f5db8b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCEncoder_1_1CMacroBlock.html">CMacroBlock</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a></td></tr>
<tr class="memdesc:a55d6f2b3aeea93c52bd0a39af9f5db8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">current macro block (used by main thread)  <a href="#a55d6f2b3aeea93c52bd0a39af9f5db8b">More...</a><br /></td></tr>
<tr class="separator:a55d6f2b3aeea93c52bd0a39af9f5db8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6eba5be82f05684ca2574f36f8945717"><td class="memItemLeft" align="right" valign="top">UINT32 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a6eba5be82f05684ca2574f36f8945717">m_levelLength</a></td></tr>
<tr class="memdesc:a6eba5be82f05684ca2574f36f8945717"><td class="mdescLeft">&#160;</td><td class="mdescRight">temporary saves the level index  <a href="#a6eba5be82f05684ca2574f36f8945717">More...</a><br /></td></tr>
<tr class="separator:a6eba5be82f05684ca2574f36f8945717"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a883026518a92ae6ed2aad8c9ed459b12"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a883026518a92ae6ed2aad8c9ed459b12">m_currLevelIndex</a></td></tr>
<tr class="memdesc:a883026518a92ae6ed2aad8c9ed459b12"><td class="mdescLeft">&#160;</td><td class="mdescRight">counts where (=index) to save next value  <a href="#a883026518a92ae6ed2aad8c9ed459b12">More...</a><br /></td></tr>
<tr class="separator:a883026518a92ae6ed2aad8c9ed459b12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a821892e5cf7a82b43898bc4e15717bfb"><td class="memItemLeft" align="right" valign="top">UINT8&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a821892e5cf7a82b43898bc4e15717bfb">m_nLevels</a></td></tr>
<tr class="memdesc:a821892e5cf7a82b43898bc4e15717bfb"><td class="mdescLeft">&#160;</td><td class="mdescRight">number of levels  <a href="#a821892e5cf7a82b43898bc4e15717bfb">More...</a><br /></td></tr>
<tr class="separator:a821892e5cf7a82b43898bc4e15717bfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d51c113f3f7f4f2c94bd7a8c05c12ee"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a1d51c113f3f7f4f2c94bd7a8c05c12ee">m_favorSpeed</a></td></tr>
<tr class="memdesc:a1d51c113f3f7f4f2c94bd7a8c05c12ee"><td class="mdescLeft">&#160;</td><td class="mdescRight">favor speed over size  <a href="#a1d51c113f3f7f4f2c94bd7a8c05c12ee">More...</a><br /></td></tr>
<tr class="separator:a1d51c113f3f7f4f2c94bd7a8c05c12ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52d2d5a49f3f6994f67cae1e2176f968"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a52d2d5a49f3f6994f67cae1e2176f968">m_forceWriting</a></td></tr>
<tr class="memdesc:a52d2d5a49f3f6994f67cae1e2176f968"><td class="mdescLeft">&#160;</td><td class="mdescRight">all macro blocks have to be written into the stream  <a href="#a52d2d5a49f3f6994f67cae1e2176f968">More...</a><br /></td></tr>
<tr class="separator:a52d2d5a49f3f6994f67cae1e2176f968"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>PGF encoder. </p>
<p>PGF encoder class. </p><dl class="section author"><dt>Author</dt><dd>C. Stamm </dd></dl>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00046">46</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ad4abed11dca812bdb0d2f9715e6de4da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad4abed11dca812bdb0d2f9715e6de4da">&#9670;&nbsp;</a></span>CEncoder()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CEncoder::CEncoder </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCPGFStream.html">CPGFStream</a> *&#160;</td>
          <td class="paramname"><em>stream</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structPGFPreHeader.html">PGFPreHeader</a>&#160;</td>
          <td class="paramname"><em>preHeader</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structPGFHeader.html">PGFHeader</a>&#160;</td>
          <td class="paramname"><em>header</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structPGFPostHeader.html">PGFPostHeader</a> &amp;&#160;</td>
          <td class="paramname"><em>postHeader</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">UINT64 &amp;&#160;</td>
          <td class="paramname"><em>userDataPos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>useOMP</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Write pre-header, header, post-Header, and levelLength. It might throw an <a class="el" href="structIOException.html" title="PGF exception. ">IOException</a>. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stream</td><td>A PGF stream </td></tr>
    <tr><td class="paramname">preHeader</td><td>A already filled in PGF pre-header </td></tr>
    <tr><td class="paramname">header</td><td>An already filled in PGF header </td></tr>
    <tr><td class="paramname">postHeader</td><td>[in] An already filled in PGF post-header (containing color table, user data, ...) </td></tr>
    <tr><td class="paramname">userDataPos</td><td>[out] File position of user data </td></tr>
    <tr><td class="paramname">useOMP</td><td>If true, then the encoder will use multi-threading based on openMP</td></tr>
  </table>
  </dd>
</dl>
<p>Write pre-header, header, postHeader, and levelLength. It might throw an <a class="el" href="structIOException.html" title="PGF exception. ">IOException</a>. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">stream</td><td>A PGF stream </td></tr>
    <tr><td class="paramname">preHeader</td><td>A already filled in PGF pre-header </td></tr>
    <tr><td class="paramname">header</td><td>An already filled in PGF header </td></tr>
    <tr><td class="paramname">postHeader</td><td>[in] An already filled in PGF post-header (containing color table, user data, ...) </td></tr>
    <tr><td class="paramname">userDataPos</td><td>[out] File position of user data </td></tr>
    <tr><td class="paramname">useOMP</td><td>If true, then the encoder will use multi-threading based on openMP </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="Encoder_8cpp_source.html#l00070">70</a> of file <a class="el" href="Encoder_8cpp_source.html">Encoder.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;: <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>(stream)</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;, <a class="code" href="classCEncoder.html#a17309ba6d30988bf1e6d02ea51a55825">m_bufferStartPos</a>(0)</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;, <a class="code" href="classCEncoder.html#a883026518a92ae6ed2aad8c9ed459b12">m_currLevelIndex</a>(0)</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;, <a class="code" href="classCEncoder.html#a821892e5cf7a82b43898bc4e15717bfb">m_nLevels</a>(header.<a class="code" href="structPGFHeader.html#a963890fa1e02a517923f9d0bf0d7e9eb">nLevels</a>)</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;, <a class="code" href="classCEncoder.html#a1d51c113f3f7f4f2c94bd7a8c05c12ee">m_favorSpeed</a>(<span class="keyword">false</span>)</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;, <a class="code" href="classCEncoder.html#a52d2d5a49f3f6994f67cae1e2176f968">m_forceWriting</a>(<span class="keyword">false</span>)</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="preprocessor">#ifdef __PGFROISUPPORT__</span></div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;, m_roi(<span class="keyword">false</span>)</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;{</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        ASSERT(<a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>);</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;        <span class="keywordtype">int</span> count;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        <span class="comment">// set number of threads</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="preprocessor">#ifdef LIBPGF_USE_OPENMP</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;        <a class="code" href="classCEncoder.html#aeed23492e6a3d093c919708da3cc04d2">m_macroBlockLen</a> = omp_get_num_procs();</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;        <a class="code" href="classCEncoder.html#aeed23492e6a3d093c919708da3cc04d2">m_macroBlockLen</a> = 1;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;        </div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        <span class="keywordflow">if</span> (useOMP &amp;&amp; <a class="code" href="classCEncoder.html#aeed23492e6a3d093c919708da3cc04d2">m_macroBlockLen</a> &gt; 1) {</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="preprocessor">#ifdef LIBPGF_USE_OPENMP</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;                omp_set_num_threads(<a class="code" href="classCEncoder.html#aeed23492e6a3d093c919708da3cc04d2">m_macroBlockLen</a>);</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;                <span class="comment">// create macro block array</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;                <a class="code" href="classCEncoder.html#a6f4684ae62c14fcf22ff29e7ac8f5bc2">m_macroBlocks</a> = <span class="keyword">new</span>(std::nothrow) CMacroBlock*[<a class="code" href="classCEncoder.html#aeed23492e6a3d093c919708da3cc04d2">m_macroBlockLen</a>];</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;                <span class="keywordflow">if</span> (!<a class="code" href="classCEncoder.html#a6f4684ae62c14fcf22ff29e7ac8f5bc2">m_macroBlocks</a>) ReturnWithError(InsufficientMemory);</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;                <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i &lt; <a class="code" href="classCEncoder.html#aeed23492e6a3d093c919708da3cc04d2">m_macroBlockLen</a>; i++) <a class="code" href="classCEncoder.html#a6f4684ae62c14fcf22ff29e7ac8f5bc2">m_macroBlocks</a>[i] = <span class="keyword">new</span> CMacroBlock(<span class="keyword">this</span>);</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;                <a class="code" href="classCEncoder.html#aac446c96d95a90bb005019aef2d18284">m_lastMacroBlock</a> = 0;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;                <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a> = <a class="code" href="classCEncoder.html#a6f4684ae62c14fcf22ff29e7ac8f5bc2">m_macroBlocks</a>[<a class="code" href="classCEncoder.html#aac446c96d95a90bb005019aef2d18284">m_lastMacroBlock</a>++];</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;                <a class="code" href="classCEncoder.html#a6f4684ae62c14fcf22ff29e7ac8f5bc2">m_macroBlocks</a> = 0;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;                m_macroBlockLen = 1;</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;                <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a> = <span class="keyword">new</span> CMacroBlock(<span class="keyword">this</span>);</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;        }</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;        <span class="comment">// save file position</span></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        <a class="code" href="classCEncoder.html#a32012be0814bbc611963517e482d1111">m_startPosition</a> = <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">GetPos</a>();</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;        <span class="comment">// write preHeader</span></div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;        preHeader.<a class="code" href="structPGFPreHeader.html#a71b1463b71b722459dad25a3ef0b492b">hSize</a> = <a class="code" href="PGFplatform_8h.html#ab45d30e0f7f4c42f39a63f436cb16f52">__VAL</a>(preHeader.<a class="code" href="structPGFPreHeader.html#a71b1463b71b722459dad25a3ef0b492b">hSize</a>);</div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;        count = <a class="code" href="PGFtypes_8h.html#a2d0d92eaf21df36fc0292fc6780dac97">PreHeaderSize</a>;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;        <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&amp;count, &amp;preHeader);</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        <span class="comment">// write file header</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;        header.<a class="code" href="structPGFHeader.html#a7262335e99ca409759e1aa8c0f0164b1">height</a> = <a class="code" href="PGFplatform_8h.html#ab45d30e0f7f4c42f39a63f436cb16f52">__VAL</a>(header.<a class="code" href="structPGFHeader.html#a7262335e99ca409759e1aa8c0f0164b1">height</a>);</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        header.<a class="code" href="structPGFHeader.html#a766a68c3284c2ae6d2f54c82e7350ed9">width</a> = <a class="code" href="PGFplatform_8h.html#ab45d30e0f7f4c42f39a63f436cb16f52">__VAL</a>(header.<a class="code" href="structPGFHeader.html#a766a68c3284c2ae6d2f54c82e7350ed9">width</a>);</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        count = <a class="code" href="PGFtypes_8h.html#a36882df0caa9057f3144aeb429a2d468">HeaderSize</a>;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&amp;count, &amp;header);</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;        <span class="comment">// write postHeader</span></div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;        <span class="keywordflow">if</span> (header.<a class="code" href="structPGFHeader.html#a3ddaf075db8ee812ad688d9ed39e0698">mode</a> == <a class="code" href="PGFplatform_8h.html#af1937c5b38a21ec5e6b3e11851264be2">ImageModeIndexedColor</a>) {</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;                <span class="comment">// write color table</span></div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;                count = <a class="code" href="PGFtypes_8h.html#a50366374d6b8b02c5314f67cdd5aba9b">ColorTableSize</a>;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;                <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&amp;count, (<span class="keywordtype">void</span> *)postHeader.<a class="code" href="structPGFPostHeader.html#a3a7faf3091c0faa2e508ecdeb54ea706">clut</a>);</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;        }</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        <span class="comment">// save user data file position</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;        userDataPos = <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">GetPos</a>();</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;        <span class="keywordflow">if</span> (postHeader.<a class="code" href="structPGFPostHeader.html#a0fb630d6cd14ed865dd5fe20227279f2">userDataLen</a>) {</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;                <span class="keywordflow">if</span> (postHeader.<a class="code" href="structPGFPostHeader.html#aeeb6e57e8343eb3d42406f0baf3ae6e1">userData</a>) {</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;                        <span class="comment">// write user data</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;                        count = postHeader.<a class="code" href="structPGFPostHeader.html#a0fb630d6cd14ed865dd5fe20227279f2">userDataLen</a>;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;                        <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&amp;count, postHeader.<a class="code" href="structPGFPostHeader.html#aeeb6e57e8343eb3d42406f0baf3ae6e1">userData</a>);</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;                        <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a69be67d4b04cd056c4f74d8147349a16">SetPos</a>(FSFromCurrent, count);</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;                }</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;        }</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;        <span class="comment">// save level length file position</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;        <a class="code" href="classCEncoder.html#a5409bc51f3d922d43b5bcad3b8f2c8aa">m_levelLengthPos</a> = <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">GetPos</a>();</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;}</div><div class="ttc" id="PGFplatform_8h_html_af1937c5b38a21ec5e6b3e11851264be2"><div class="ttname"><a href="PGFplatform_8h.html#af1937c5b38a21ec5e6b3e11851264be2">ImageModeIndexedColor</a></div><div class="ttdeci">#define ImageModeIndexedColor</div><div class="ttdef"><b>Definition:</b> <a href="PGFplatform_8h_source.html#l00100">PGFplatform.h:100</a></div></div>
<div class="ttc" id="structPGFHeader_html_a3ddaf075db8ee812ad688d9ed39e0698"><div class="ttname"><a href="structPGFHeader.html#a3ddaf075db8ee812ad688d9ed39e0698">PGFHeader::mode</a></div><div class="ttdeci">UINT8 mode</div><div class="ttdoc">image mode according to Adobe&amp;#39;s image modes </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00131">PGFtypes.h:131</a></div></div>
<div class="ttc" id="classCEncoder_html_aeed23492e6a3d093c919708da3cc04d2"><div class="ttname"><a href="classCEncoder.html#aeed23492e6a3d093c919708da3cc04d2">CEncoder::m_macroBlockLen</a></div><div class="ttdeci">int m_macroBlockLen</div><div class="ttdoc">array length </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00211">Encoder.h:211</a></div></div>
<div class="ttc" id="classCPGFStream_html_a0a46ae977995134787219288f4123134"><div class="ttname"><a href="classCPGFStream.html#a0a46ae977995134787219288f4123134">CPGFStream::Write</a></div><div class="ttdeci">virtual void Write(int *count, void *buffer)=0</div></div>
<div class="ttc" id="structPGFHeader_html_a766a68c3284c2ae6d2f54c82e7350ed9"><div class="ttname"><a href="structPGFHeader.html#a766a68c3284c2ae6d2f54c82e7350ed9">PGFHeader::width</a></div><div class="ttdeci">UINT32 width</div><div class="ttdoc">image width in pixels </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00125">PGFtypes.h:125</a></div></div>
<div class="ttc" id="PGFtypes_8h_html_a50366374d6b8b02c5314f67cdd5aba9b"><div class="ttname"><a href="PGFtypes_8h.html#a50366374d6b8b02c5314f67cdd5aba9b">ColorTableSize</a></div><div class="ttdeci">#define ColorTableSize</div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00232">PGFtypes.h:232</a></div></div>
<div class="ttc" id="PGFplatform_8h_html_ab45d30e0f7f4c42f39a63f436cb16f52"><div class="ttname"><a href="PGFplatform_8h.html#ab45d30e0f7f4c42f39a63f436cb16f52">__VAL</a></div><div class="ttdeci">#define __VAL(x)</div><div class="ttdef"><b>Definition:</b> <a href="PGFplatform_8h_source.html#l00604">PGFplatform.h:604</a></div></div>
<div class="ttc" id="structPGFPostHeader_html_a0fb630d6cd14ed865dd5fe20227279f2"><div class="ttname"><a href="structPGFPostHeader.html#a0fb630d6cd14ed865dd5fe20227279f2">PGFPostHeader::userDataLen</a></div><div class="ttdeci">UINT32 userDataLen</div><div class="ttdoc">user data size in bytes </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00144">PGFtypes.h:144</a></div></div>
<div class="ttc" id="structPGFPostHeader_html_aeeb6e57e8343eb3d42406f0baf3ae6e1"><div class="ttname"><a href="structPGFPostHeader.html#aeeb6e57e8343eb3d42406f0baf3ae6e1">PGFPostHeader::userData</a></div><div class="ttdeci">UINT8 * userData</div><div class="ttdoc">user data of size userDataLen </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00143">PGFtypes.h:143</a></div></div>
<div class="ttc" id="PGFtypes_8h_html_a36882df0caa9057f3144aeb429a2d468"><div class="ttname"><a href="PGFtypes_8h.html#a36882df0caa9057f3144aeb429a2d468">HeaderSize</a></div><div class="ttdeci">#define HeaderSize</div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00231">PGFtypes.h:231</a></div></div>
<div class="ttc" id="classCPGFStream_html_a69be67d4b04cd056c4f74d8147349a16"><div class="ttname"><a href="classCPGFStream.html#a69be67d4b04cd056c4f74d8147349a16">CPGFStream::SetPos</a></div><div class="ttdeci">virtual void SetPos(short posMode, INT64 posOff)=0</div></div>
<div class="ttc" id="structPGFHeader_html_a963890fa1e02a517923f9d0bf0d7e9eb"><div class="ttname"><a href="structPGFHeader.html#a963890fa1e02a517923f9d0bf0d7e9eb">PGFHeader::nLevels</a></div><div class="ttdeci">UINT8 nLevels</div><div class="ttdoc">number of DWT levels </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00127">PGFtypes.h:127</a></div></div>
<div class="ttc" id="PGFtypes_8h_html_a2d0d92eaf21df36fc0292fc6780dac97"><div class="ttname"><a href="PGFtypes_8h.html#a2d0d92eaf21df36fc0292fc6780dac97">PreHeaderSize</a></div><div class="ttdeci">#define PreHeaderSize</div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00230">PGFtypes.h:230</a></div></div>
<div class="ttc" id="classCEncoder_html_a52d2d5a49f3f6994f67cae1e2176f968"><div class="ttname"><a href="classCEncoder.html#a52d2d5a49f3f6994f67cae1e2176f968">CEncoder::m_forceWriting</a></div><div class="ttdeci">bool m_forceWriting</div><div class="ttdoc">all macro blocks have to be written into the stream </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00219">Encoder.h:219</a></div></div>
<div class="ttc" id="classCEncoder_html_a55d6f2b3aeea93c52bd0a39af9f5db8b"><div class="ttname"><a href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">CEncoder::m_currentBlock</a></div><div class="ttdeci">CMacroBlock * m_currentBlock</div><div class="ttdoc">current macro block (used by main thread) </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00213">Encoder.h:213</a></div></div>
<div class="ttc" id="structPGFPreHeader_html_a71b1463b71b722459dad25a3ef0b492b"><div class="ttname"><a href="structPGFPreHeader.html#a71b1463b71b722459dad25a3ef0b492b">PGFPreHeader::hSize</a></div><div class="ttdeci">UINT32 hSize</div><div class="ttdoc">total size of PGFHeader, [ColorTable], and [UserData] in bytes </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00115">PGFtypes.h:115</a></div></div>
<div class="ttc" id="classCEncoder_html_a6f4684ae62c14fcf22ff29e7ac8f5bc2"><div class="ttname"><a href="classCEncoder.html#a6f4684ae62c14fcf22ff29e7ac8f5bc2">CEncoder::m_macroBlocks</a></div><div class="ttdeci">CMacroBlock ** m_macroBlocks</div><div class="ttdoc">array of macroblocks </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00210">Encoder.h:210</a></div></div>
<div class="ttc" id="classCEncoder_html_a32012be0814bbc611963517e482d1111"><div class="ttname"><a href="classCEncoder.html#a32012be0814bbc611963517e482d1111">CEncoder::m_startPosition</a></div><div class="ttdeci">UINT64 m_startPosition</div><div class="ttdoc">stream position of PGF start (PreHeader) </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00206">Encoder.h:206</a></div></div>
<div class="ttc" id="classCPGFStream_html_a841e109647ea77dd9e589ab00ef4aad8"><div class="ttname"><a href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">CPGFStream::GetPos</a></div><div class="ttdeci">virtual UINT64 GetPos() const =0</div></div>
<div class="ttc" id="classCEncoder_html_ad01ad5ea3003064b00516dad191d3499"><div class="ttname"><a href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">CEncoder::m_stream</a></div><div class="ttdeci">CPGFStream * m_stream</div><div class="ttdoc">output PMF stream </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00205">Encoder.h:205</a></div></div>
<div class="ttc" id="classCEncoder_html_a17309ba6d30988bf1e6d02ea51a55825"><div class="ttname"><a href="classCEncoder.html#a17309ba6d30988bf1e6d02ea51a55825">CEncoder::m_bufferStartPos</a></div><div class="ttdeci">UINT64 m_bufferStartPos</div><div class="ttdoc">stream position of encoded buffer </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00208">Encoder.h:208</a></div></div>
<div class="ttc" id="classCEncoder_html_a5409bc51f3d922d43b5bcad3b8f2c8aa"><div class="ttname"><a href="classCEncoder.html#a5409bc51f3d922d43b5bcad3b8f2c8aa">CEncoder::m_levelLengthPos</a></div><div class="ttdeci">UINT64 m_levelLengthPos</div><div class="ttdoc">stream position of Metadata </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00207">Encoder.h:207</a></div></div>
<div class="ttc" id="classCEncoder_html_a1d51c113f3f7f4f2c94bd7a8c05c12ee"><div class="ttname"><a href="classCEncoder.html#a1d51c113f3f7f4f2c94bd7a8c05c12ee">CEncoder::m_favorSpeed</a></div><div class="ttdeci">bool m_favorSpeed</div><div class="ttdoc">favor speed over size </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00218">Encoder.h:218</a></div></div>
<div class="ttc" id="classCEncoder_html_a883026518a92ae6ed2aad8c9ed459b12"><div class="ttname"><a href="classCEncoder.html#a883026518a92ae6ed2aad8c9ed459b12">CEncoder::m_currLevelIndex</a></div><div class="ttdeci">int m_currLevelIndex</div><div class="ttdoc">counts where (=index) to save next value </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00216">Encoder.h:216</a></div></div>
<div class="ttc" id="classCEncoder_html_aac446c96d95a90bb005019aef2d18284"><div class="ttname"><a href="classCEncoder.html#aac446c96d95a90bb005019aef2d18284">CEncoder::m_lastMacroBlock</a></div><div class="ttdeci">int m_lastMacroBlock</div><div class="ttdoc">array index of the last created macro block </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00212">Encoder.h:212</a></div></div>
<div class="ttc" id="classCEncoder_html_a821892e5cf7a82b43898bc4e15717bfb"><div class="ttname"><a href="classCEncoder.html#a821892e5cf7a82b43898bc4e15717bfb">CEncoder::m_nLevels</a></div><div class="ttdeci">UINT8 m_nLevels</div><div class="ttdoc">number of levels </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00217">Encoder.h:217</a></div></div>
<div class="ttc" id="structPGFHeader_html_a7262335e99ca409759e1aa8c0f0164b1"><div class="ttname"><a href="structPGFHeader.html#a7262335e99ca409759e1aa8c0f0164b1">PGFHeader::height</a></div><div class="ttdeci">UINT32 height</div><div class="ttdoc">image height in pixels </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00126">PGFtypes.h:126</a></div></div>
<div class="ttc" id="structPGFPostHeader_html_a3a7faf3091c0faa2e508ecdeb54ea706"><div class="ttname"><a href="structPGFPostHeader.html#a3a7faf3091c0faa2e508ecdeb54ea706">PGFPostHeader::clut</a></div><div class="ttdeci">RGBQUAD clut[ColorTableLen]</div><div class="ttdoc">color table for indexed color images </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00142">PGFtypes.h:142</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa6b7126b6e24bd115348fa6243756f47"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6b7126b6e24bd115348fa6243756f47">&#9670;&nbsp;</a></span>~CEncoder()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CEncoder::~CEncoder </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Destructor. </p>

<p class="definition">Definition at line <a class="el" href="Encoder_8cpp_source.html#l00146">146</a> of file <a class="el" href="Encoder_8cpp_source.html">Encoder.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;                    {   </div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;        <span class="keyword">delete</span> <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>;</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        <span class="keyword">delete</span>[] <a class="code" href="classCEncoder.html#a6f4684ae62c14fcf22ff29e7ac8f5bc2">m_macroBlocks</a>;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;}</div><div class="ttc" id="classCEncoder_html_a55d6f2b3aeea93c52bd0a39af9f5db8b"><div class="ttname"><a href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">CEncoder::m_currentBlock</a></div><div class="ttdeci">CMacroBlock * m_currentBlock</div><div class="ttdoc">current macro block (used by main thread) </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00213">Encoder.h:213</a></div></div>
<div class="ttc" id="classCEncoder_html_a6f4684ae62c14fcf22ff29e7ac8f5bc2"><div class="ttname"><a href="classCEncoder.html#a6f4684ae62c14fcf22ff29e7ac8f5bc2">CEncoder::m_macroBlocks</a></div><div class="ttdeci">CMacroBlock ** m_macroBlocks</div><div class="ttdoc">array of macroblocks </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00210">Encoder.h:210</a></div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a41cb748b6797fc6de436e546f3d76ff2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a41cb748b6797fc6de436e546f3d76ff2">&#9670;&nbsp;</a></span>ComputeBufferLength()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">INT64 CEncoder::ComputeBufferLength </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Compute stream length of encoded buffer. </p><dl class="section return"><dt>Returns</dt><dd>encoded buffer length </dd></dl>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00175">175</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">GetPos</a>() - <a class="code" href="classCEncoder.html#a17309ba6d30988bf1e6d02ea51a55825">m_bufferStartPos</a>; }</div><div class="ttc" id="classCPGFStream_html_a841e109647ea77dd9e589ab00ef4aad8"><div class="ttname"><a href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">CPGFStream::GetPos</a></div><div class="ttdeci">virtual UINT64 GetPos() const =0</div></div>
<div class="ttc" id="classCEncoder_html_ad01ad5ea3003064b00516dad191d3499"><div class="ttname"><a href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">CEncoder::m_stream</a></div><div class="ttdeci">CPGFStream * m_stream</div><div class="ttdoc">output PMF stream </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00205">Encoder.h:205</a></div></div>
<div class="ttc" id="classCEncoder_html_a17309ba6d30988bf1e6d02ea51a55825"><div class="ttname"><a href="classCEncoder.html#a17309ba6d30988bf1e6d02ea51a55825">CEncoder::m_bufferStartPos</a></div><div class="ttdeci">UINT64 m_bufferStartPos</div><div class="ttdoc">stream position of encoded buffer </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00208">Encoder.h:208</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5c8dc9273c8a17ce72e86fec5f389112"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c8dc9273c8a17ce72e86fec5f389112">&#9670;&nbsp;</a></span>ComputeHeaderLength()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">INT64 CEncoder::ComputeHeaderLength </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Compute stream length of header. </p><dl class="section return"><dt>Returns</dt><dd>header length </dd></dl>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00170">170</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classCEncoder.html#a5409bc51f3d922d43b5bcad3b8f2c8aa">m_levelLengthPos</a> - <a class="code" href="classCEncoder.html#a32012be0814bbc611963517e482d1111">m_startPosition</a>; }</div><div class="ttc" id="classCEncoder_html_a32012be0814bbc611963517e482d1111"><div class="ttname"><a href="classCEncoder.html#a32012be0814bbc611963517e482d1111">CEncoder::m_startPosition</a></div><div class="ttdeci">UINT64 m_startPosition</div><div class="ttdoc">stream position of PGF start (PreHeader) </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00206">Encoder.h:206</a></div></div>
<div class="ttc" id="classCEncoder_html_a5409bc51f3d922d43b5bcad3b8f2c8aa"><div class="ttname"><a href="classCEncoder.html#a5409bc51f3d922d43b5bcad3b8f2c8aa">CEncoder::m_levelLengthPos</a></div><div class="ttdeci">UINT64 m_levelLengthPos</div><div class="ttdoc">stream position of Metadata </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00207">Encoder.h:207</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a8aadfcf080fad9a5cd82b532dc847d5b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8aadfcf080fad9a5cd82b532dc847d5b">&#9670;&nbsp;</a></span>ComputeOffset()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">INT64 CEncoder::ComputeOffset </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Compute file offset between real and expected levelLength position. </p><dl class="section return"><dt>Returns</dt><dd>file offset </dd></dl>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00180">180</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">GetPos</a>() - <a class="code" href="classCEncoder.html#a5409bc51f3d922d43b5bcad3b8f2c8aa">m_levelLengthPos</a>; }</div><div class="ttc" id="classCPGFStream_html_a841e109647ea77dd9e589ab00ef4aad8"><div class="ttname"><a href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">CPGFStream::GetPos</a></div><div class="ttdeci">virtual UINT64 GetPos() const =0</div></div>
<div class="ttc" id="classCEncoder_html_ad01ad5ea3003064b00516dad191d3499"><div class="ttname"><a href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">CEncoder::m_stream</a></div><div class="ttdeci">CPGFStream * m_stream</div><div class="ttdoc">output PMF stream </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00205">Encoder.h:205</a></div></div>
<div class="ttc" id="classCEncoder_html_a5409bc51f3d922d43b5bcad3b8f2c8aa"><div class="ttname"><a href="classCEncoder.html#a5409bc51f3d922d43b5bcad3b8f2c8aa">CEncoder::m_levelLengthPos</a></div><div class="ttdeci">UINT64 m_levelLengthPos</div><div class="ttdoc">stream position of Metadata </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00207">Encoder.h:207</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="adc7b22b8775517e9da0b7aff4ee865cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adc7b22b8775517e9da0b7aff4ee865cb">&#9670;&nbsp;</a></span>EncodeBuffer()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void CEncoder::EncodeBuffer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="unionROIBlockHeader.html">ROIBlockHeader</a>&#160;</td>
          <td class="paramname"><em>h</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="Encoder_8cpp_source.html#l00336">336</a> of file <a class="el" href="Encoder_8cpp_source.html">Encoder.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;                                                   {</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;        ASSERT(<a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>);</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;<span class="preprocessor">#ifdef __PGFROISUPPORT__</span></div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        ASSERT(m_roi &amp;&amp; h.<a class="code" href="unionROIBlockHeader.html#a15ceb2e488c3767cc1ab774323c02ded">rbh</a>.<a class="code" href="structROIBlockHeader_1_1RBH.html#af0c3de8c247b06116a9d84d2f9515762">bufferSize</a> &lt;= <a class="code" href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a> || h.<a class="code" href="unionROIBlockHeader.html#a15ceb2e488c3767cc1ab774323c02ded">rbh</a>.<a class="code" href="structROIBlockHeader_1_1RBH.html#af0c3de8c247b06116a9d84d2f9515762">bufferSize</a> == <a class="code" href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a>);</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;        ASSERT(h.<a class="code" href="unionROIBlockHeader.html#a15ceb2e488c3767cc1ab774323c02ded">rbh</a>.<a class="code" href="structROIBlockHeader_1_1RBH.html#af0c3de8c247b06116a9d84d2f9515762">bufferSize</a> == <a class="code" href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a>);</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;        <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-&gt;<a class="code" href="classCEncoder_1_1CMacroBlock.html#aa5abc7cc9df3402a233367f0087168f8">m_header</a> = h;</div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;        <span class="comment">// macro block management</span></div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classCEncoder.html#aeed23492e6a3d093c919708da3cc04d2">m_macroBlockLen</a> == 1) {</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;                <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-&gt;<a class="code" href="classCEncoder_1_1CMacroBlock.html#af95842ac15879ab2b3a9b5232bb4f1a5">BitplaneEncode</a>();</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;                <a class="code" href="classCEncoder.html#a5c54a254b5ddcbe8eaf3bfcb082afcda">WriteMacroBlock</a>(<a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>);</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;                <span class="comment">// save last level index</span></div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;                <span class="keywordtype">int</span> lastLevelIndex = <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-&gt;<a class="code" href="classCEncoder_1_1CMacroBlock.html#a68163a823248889d9d407f4b0331245d">m_lastLevelIndex</a>;</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;                <span class="keywordflow">if</span> (<a class="code" href="classCEncoder.html#a52d2d5a49f3f6994f67cae1e2176f968">m_forceWriting</a> || <a class="code" href="classCEncoder.html#aac446c96d95a90bb005019aef2d18284">m_lastMacroBlock</a> == <a class="code" href="classCEncoder.html#aeed23492e6a3d093c919708da3cc04d2">m_macroBlockLen</a>) {</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;                        <span class="comment">// encode macro blocks</span></div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;                        <span class="comment">/*</span></div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;<span class="comment">                        volatile OSError error = NoError;</span></div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;<span class="comment">                        #pragma omp parallel for ordered default(shared)</span></div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;<span class="comment">                        for (int i=0; i &lt; m_lastMacroBlock; i++) {</span></div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;<span class="comment">                                if (error == NoError) {</span></div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;<span class="comment">                                        m_macroBlocks[i]-&gt;BitplaneEncode();</span></div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;<span class="comment">                                        #pragma omp ordered</span></div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;<span class="comment">                                        {</span></div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;<span class="comment">                                                try {</span></div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;<span class="comment">                                                        WriteMacroBlock(m_macroBlocks[i]);</span></div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;<span class="comment">                                                } catch (IOException&amp; e) {</span></div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;<span class="comment">                                                        error = e.error;</span></div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;<span class="comment">                                                }</span></div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;<span class="comment">                                                delete m_macroBlocks[i]; m_macroBlocks[i] = 0;</span></div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;<span class="comment">                                        }</span></div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;<span class="comment">                                }</span></div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;<span class="comment">                        }</span></div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;<span class="comment">                        if (error != NoError) ReturnWithError(error);</span></div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;<span class="comment">                        */</span></div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;<span class="preprocessor">                        #pragma omp parallel for default(shared) //no declared exceptions in next block</span></div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;                        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i &lt; <a class="code" href="classCEncoder.html#aac446c96d95a90bb005019aef2d18284">m_lastMacroBlock</a>; i++) {</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;                                <a class="code" href="classCEncoder.html#a6f4684ae62c14fcf22ff29e7ac8f5bc2">m_macroBlocks</a>[i]-&gt;<a class="code" href="classCEncoder_1_1CMacroBlock.html#af95842ac15879ab2b3a9b5232bb4f1a5">BitplaneEncode</a>();</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;                        }</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;                        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i &lt; <a class="code" href="classCEncoder.html#aac446c96d95a90bb005019aef2d18284">m_lastMacroBlock</a>; i++) {</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;                                <a class="code" href="classCEncoder.html#a5c54a254b5ddcbe8eaf3bfcb082afcda">WriteMacroBlock</a>(<a class="code" href="classCEncoder.html#a6f4684ae62c14fcf22ff29e7ac8f5bc2">m_macroBlocks</a>[i]);</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;                        }</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;                        </div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;                        <span class="comment">// prepare for next round</span></div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;                        <a class="code" href="classCEncoder.html#a52d2d5a49f3f6994f67cae1e2176f968">m_forceWriting</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;                        m_lastMacroBlock = 0;</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;                }</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;                <span class="comment">// re-initialize macro block</span></div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;                <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a> = <a class="code" href="classCEncoder.html#a6f4684ae62c14fcf22ff29e7ac8f5bc2">m_macroBlocks</a>[m_lastMacroBlock++];</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;                <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-&gt;<a class="code" href="classCEncoder_1_1CMacroBlock.html#af3ecc039cc0e3000b394c15265107b38">Init</a>(lastLevelIndex);</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;        }</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;}</div><div class="ttc" id="unionROIBlockHeader_html_a15ceb2e488c3767cc1ab774323c02ded"><div class="ttname"><a href="unionROIBlockHeader.html#a15ceb2e488c3767cc1ab774323c02ded">ROIBlockHeader::rbh</a></div><div class="ttdeci">struct ROIBlockHeader::RBH rbh</div><div class="ttdoc">ROI block header. </div></div>
<div class="ttc" id="structROIBlockHeader_1_1RBH_html_af0c3de8c247b06116a9d84d2f9515762"><div class="ttname"><a href="structROIBlockHeader_1_1RBH.html#af0c3de8c247b06116a9d84d2f9515762">ROIBlockHeader::RBH::bufferSize</a></div><div class="ttdeci">UINT16 bufferSize</div><div class="ttdoc">number of uncoded UINT32 values in a block </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00167">PGFtypes.h:167</a></div></div>
<div class="ttc" id="classCEncoder_html_aeed23492e6a3d093c919708da3cc04d2"><div class="ttname"><a href="classCEncoder.html#aeed23492e6a3d093c919708da3cc04d2">CEncoder::m_macroBlockLen</a></div><div class="ttdeci">int m_macroBlockLen</div><div class="ttdoc">array length </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00211">Encoder.h:211</a></div></div>
<div class="ttc" id="classCEncoder_html_a5c54a254b5ddcbe8eaf3bfcb082afcda"><div class="ttname"><a href="classCEncoder.html#a5c54a254b5ddcbe8eaf3bfcb082afcda">CEncoder::WriteMacroBlock</a></div><div class="ttdeci">void WriteMacroBlock(CMacroBlock *block) THROW_</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8cpp_source.html#l00395">Encoder.cpp:395</a></div></div>
<div class="ttc" id="classCEncoder_1_1CMacroBlock_html_a68163a823248889d9d407f4b0331245d"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#a68163a823248889d9d407f4b0331245d">CEncoder::CMacroBlock::m_lastLevelIndex</a></div><div class="ttdeci">int m_lastLevelIndex</div><div class="ttdoc">index of last encoded level: [0, nLevels); used because a level-end can occur before a buffer is full...</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00086">Encoder.h:86</a></div></div>
<div class="ttc" id="PGFtypes_8h_html_aa362edf6db9662acf6ef958a6db19c35"><div class="ttname"><a href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a></div><div class="ttdeci">#define BufferSize</div><div class="ttdoc">must be a multiple of WordWidth </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00077">PGFtypes.h:77</a></div></div>
<div class="ttc" id="classCEncoder_1_1CMacroBlock_html_af95842ac15879ab2b3a9b5232bb4f1a5"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#af95842ac15879ab2b3a9b5232bb4f1a5">CEncoder::CMacroBlock::BitplaneEncode</a></div><div class="ttdeci">void BitplaneEncode()</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8cpp_source.html#l00468">Encoder.cpp:468</a></div></div>
<div class="ttc" id="classCEncoder_html_a52d2d5a49f3f6994f67cae1e2176f968"><div class="ttname"><a href="classCEncoder.html#a52d2d5a49f3f6994f67cae1e2176f968">CEncoder::m_forceWriting</a></div><div class="ttdeci">bool m_forceWriting</div><div class="ttdoc">all macro blocks have to be written into the stream </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00219">Encoder.h:219</a></div></div>
<div class="ttc" id="classCEncoder_html_a55d6f2b3aeea93c52bd0a39af9f5db8b"><div class="ttname"><a href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">CEncoder::m_currentBlock</a></div><div class="ttdeci">CMacroBlock * m_currentBlock</div><div class="ttdoc">current macro block (used by main thread) </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00213">Encoder.h:213</a></div></div>
<div class="ttc" id="classCEncoder_html_a6f4684ae62c14fcf22ff29e7ac8f5bc2"><div class="ttname"><a href="classCEncoder.html#a6f4684ae62c14fcf22ff29e7ac8f5bc2">CEncoder::m_macroBlocks</a></div><div class="ttdeci">CMacroBlock ** m_macroBlocks</div><div class="ttdoc">array of macroblocks </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00210">Encoder.h:210</a></div></div>
<div class="ttc" id="classCEncoder_1_1CMacroBlock_html_aa5abc7cc9df3402a233367f0087168f8"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#aa5abc7cc9df3402a233367f0087168f8">CEncoder::CMacroBlock::m_header</a></div><div class="ttdeci">ROIBlockHeader m_header</div><div class="ttdoc">block header </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00082">Encoder.h:82</a></div></div>
<div class="ttc" id="classCEncoder_html_aac446c96d95a90bb005019aef2d18284"><div class="ttname"><a href="classCEncoder.html#aac446c96d95a90bb005019aef2d18284">CEncoder::m_lastMacroBlock</a></div><div class="ttdeci">int m_lastMacroBlock</div><div class="ttdoc">array index of the last created macro block </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00212">Encoder.h:212</a></div></div>
<div class="ttc" id="classCEncoder_1_1CMacroBlock_html_af3ecc039cc0e3000b394c15265107b38"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#af3ecc039cc0e3000b394c15265107b38">CEncoder::CMacroBlock::Init</a></div><div class="ttdeci">void Init(int lastLevelIndex)</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00067">Encoder.h:67</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa2ffd887a5d8b2e63dfa5b7188ca49f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa2ffd887a5d8b2e63dfa5b7188ca49f1">&#9670;&nbsp;</a></span>FavorSpeedOverSize()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void CEncoder::FavorSpeedOverSize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Encoder favors speed over compression size. </p>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00117">117</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;{ <a class="code" href="classCEncoder.html#a1d51c113f3f7f4f2c94bd7a8c05c12ee">m_favorSpeed</a> = <span class="keyword">true</span>; }</div><div class="ttc" id="classCEncoder_html_a1d51c113f3f7f4f2c94bd7a8c05c12ee"><div class="ttname"><a href="classCEncoder.html#a1d51c113f3f7f4f2c94bd7a8c05c12ee">CEncoder::m_favorSpeed</a></div><div class="ttdeci">bool m_favorSpeed</div><div class="ttdoc">favor speed over size </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00218">Encoder.h:218</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a2491bafd532b4f6bcc5505cc0857078c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2491bafd532b4f6bcc5505cc0857078c">&#9670;&nbsp;</a></span>Flush()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CEncoder::Flush </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Pad buffer with zeros and encode buffer. It might throw an <a class="el" href="structIOException.html" title="PGF exception. ">IOException</a>. </p>

<p class="definition">Definition at line <a class="el" href="Encoder_8cpp_source.html#l00305">305</a> of file <a class="el" href="Encoder_8cpp_source.html">Encoder.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;                            {</div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-&gt;<a class="code" href="classCEncoder_1_1CMacroBlock.html#a7ab47e29ad9e3397869fdfb50b53e035">m_valuePos</a> &gt; 0) {</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;                <span class="comment">// pad buffer with zeros</span></div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;                memset(&amp;(<a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-&gt;<a class="code" href="classCEncoder_1_1CMacroBlock.html#a139b60f3f0d76b9158573e4d897423d6">m_value</a>[<a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-&gt;<a class="code" href="classCEncoder_1_1CMacroBlock.html#a7ab47e29ad9e3397869fdfb50b53e035">m_valuePos</a>]), 0, (<a class="code" href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a> - <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-&gt;<a class="code" href="classCEncoder_1_1CMacroBlock.html#a7ab47e29ad9e3397869fdfb50b53e035">m_valuePos</a>)*<a class="code" href="PGFtypes_8h.html#adbb49c2b6ab931f68f08a8dc1141727d">DataTSize</a>);</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;                <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-&gt;<a class="code" href="classCEncoder_1_1CMacroBlock.html#a7ab47e29ad9e3397869fdfb50b53e035">m_valuePos</a> = <a class="code" href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a>;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;                <span class="comment">// encode buffer</span></div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;                <a class="code" href="classCEncoder.html#a52d2d5a49f3f6994f67cae1e2176f968">m_forceWriting</a> = <span class="keyword">true</span>;  <span class="comment">// makes sure that the following EncodeBuffer is really written into the stream</span></div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;                <a class="code" href="classCEncoder.html#adc7b22b8775517e9da0b7aff4ee865cb">EncodeBuffer</a>(<a class="code" href="unionROIBlockHeader.html">ROIBlockHeader</a>(<a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-&gt;<a class="code" href="classCEncoder_1_1CMacroBlock.html#a7ab47e29ad9e3397869fdfb50b53e035">m_valuePos</a>, <span class="keyword">true</span>));</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;        }</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;}</div><div class="ttc" id="classCEncoder_1_1CMacroBlock_html_a7ab47e29ad9e3397869fdfb50b53e035"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#a7ab47e29ad9e3397869fdfb50b53e035">CEncoder::CMacroBlock::m_valuePos</a></div><div class="ttdeci">UINT32 m_valuePos</div><div class="ttdoc">current buffer position </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00083">Encoder.h:83</a></div></div>
<div class="ttc" id="PGFtypes_8h_html_aa362edf6db9662acf6ef958a6db19c35"><div class="ttname"><a href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a></div><div class="ttdeci">#define BufferSize</div><div class="ttdoc">must be a multiple of WordWidth </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00077">PGFtypes.h:77</a></div></div>
<div class="ttc" id="PGFtypes_8h_html_adbb49c2b6ab931f68f08a8dc1141727d"><div class="ttname"><a href="PGFtypes_8h.html#adbb49c2b6ab931f68f08a8dc1141727d">DataTSize</a></div><div class="ttdeci">#define DataTSize</div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00233">PGFtypes.h:233</a></div></div>
<div class="ttc" id="classCEncoder_html_adc7b22b8775517e9da0b7aff4ee865cb"><div class="ttname"><a href="classCEncoder.html#adc7b22b8775517e9da0b7aff4ee865cb">CEncoder::EncodeBuffer</a></div><div class="ttdeci">void EncodeBuffer(ROIBlockHeader h) THROW_</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8cpp_source.html#l00336">Encoder.cpp:336</a></div></div>
<div class="ttc" id="unionROIBlockHeader_html"><div class="ttname"><a href="unionROIBlockHeader.html">ROIBlockHeader</a></div><div class="ttdoc">Block header used with ROI coding scheme. </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00151">PGFtypes.h:151</a></div></div>
<div class="ttc" id="classCEncoder_html_a52d2d5a49f3f6994f67cae1e2176f968"><div class="ttname"><a href="classCEncoder.html#a52d2d5a49f3f6994f67cae1e2176f968">CEncoder::m_forceWriting</a></div><div class="ttdeci">bool m_forceWriting</div><div class="ttdoc">all macro blocks have to be written into the stream </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00219">Encoder.h:219</a></div></div>
<div class="ttc" id="classCEncoder_html_a55d6f2b3aeea93c52bd0a39af9f5db8b"><div class="ttname"><a href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">CEncoder::m_currentBlock</a></div><div class="ttdeci">CMacroBlock * m_currentBlock</div><div class="ttdoc">current macro block (used by main thread) </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00213">Encoder.h:213</a></div></div>
<div class="ttc" id="classCEncoder_1_1CMacroBlock_html_a139b60f3f0d76b9158573e4d897423d6"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#a139b60f3f0d76b9158573e4d897423d6">CEncoder::CMacroBlock::m_value</a></div><div class="ttdeci">DataT m_value[BufferSize]</div><div class="ttdoc">input buffer of values with index m_valuePos </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00080">Encoder.h:80</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab2b090edf99019e23f4264a6d76469bc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab2b090edf99019e23f4264a6d76469bc">&#9670;&nbsp;</a></span>Partition()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CEncoder::Partition </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCSubband.html">CSubband</a> *&#160;</td>
          <td class="paramname"><em>band</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>width</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>height</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>startPos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>pitch</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Partitions a rectangular region of a given subband. Partitioning scheme: The plane is partitioned in squares of side length LinBlockSize. Write wavelet coefficients from subband into the input buffer of a macro block. It might throw an <a class="el" href="structIOException.html" title="PGF exception. ">IOException</a>. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">band</td><td>A subband </td></tr>
    <tr><td class="paramname">width</td><td>The width of the rectangle </td></tr>
    <tr><td class="paramname">height</td><td>The height of the rectangle </td></tr>
    <tr><td class="paramname">startPos</td><td>The absolute subband position of the top left corner of the rectangular region </td></tr>
    <tr><td class="paramname">pitch</td><td>The number of bytes in row of the subband </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="Encoder_8cpp_source.html#l00241">241</a> of file <a class="el" href="Encoder_8cpp_source.html">Encoder.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;                                                                                              {</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;        ASSERT(band);</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;        <span class="keyword">const</span> div_t hh = div(height, <a class="code" href="PGFtypes_8h.html#a61836e33582e5be91af7d9d7004dad7d">LinBlockSize</a>);</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;        <span class="keyword">const</span> div_t ww = div(width, <a class="code" href="PGFtypes_8h.html#a61836e33582e5be91af7d9d7004dad7d">LinBlockSize</a>);</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">int</span> ws = pitch - <a class="code" href="PGFtypes_8h.html#a61836e33582e5be91af7d9d7004dad7d">LinBlockSize</a>;</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">int</span> wr = pitch - ww.rem;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;        <span class="keywordtype">int</span> pos, base = startPos, base2;</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;        <span class="comment">// main height</span></div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i &lt; hh.quot; i++) {</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;                <span class="comment">// main width</span></div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;                base2 = base;</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;                <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0; j &lt; ww.quot; j++) {</div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;                        pos = base2;</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;                        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> y=0; y &lt; <a class="code" href="PGFtypes_8h.html#a61836e33582e5be91af7d9d7004dad7d">LinBlockSize</a>; y++) {</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;                                <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x=0; x &lt; <a class="code" href="PGFtypes_8h.html#a61836e33582e5be91af7d9d7004dad7d">LinBlockSize</a>; x++) {</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;                                        <a class="code" href="classCEncoder.html#a75534facc647f53982bcfd72c1caa540">WriteValue</a>(band, pos);</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;                                        pos++;</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;                                }</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;                                pos += ws;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;                        }</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;                        base2 += <a class="code" href="PGFtypes_8h.html#a61836e33582e5be91af7d9d7004dad7d">LinBlockSize</a>;</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;                }</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;                <span class="comment">// rest of width</span></div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;                pos = base2;</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;                <span class="keywordflow">for</span> (<span class="keywordtype">int</span> y=0; y &lt; <a class="code" href="PGFtypes_8h.html#a61836e33582e5be91af7d9d7004dad7d">LinBlockSize</a>; y++) {</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;                        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x=0; x &lt; ww.rem; x++) {</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;                                <a class="code" href="classCEncoder.html#a75534facc647f53982bcfd72c1caa540">WriteValue</a>(band, pos);</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;                                pos++;</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;                        }</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;                        pos += wr;</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;                        base += pitch;</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;                }</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;        }</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;        <span class="comment">// main width </span></div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;        base2 = base;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0; j &lt; ww.quot; j++) {</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;                <span class="comment">// rest of height</span></div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;                pos = base2;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;                <span class="keywordflow">for</span> (<span class="keywordtype">int</span> y=0; y &lt; hh.rem; y++) {</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;                        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x=0; x &lt; <a class="code" href="PGFtypes_8h.html#a61836e33582e5be91af7d9d7004dad7d">LinBlockSize</a>; x++) {</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;                                <a class="code" href="classCEncoder.html#a75534facc647f53982bcfd72c1caa540">WriteValue</a>(band, pos);</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;                                pos++;</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;                        }</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;                        pos += ws;</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;                }</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;                base2 += <a class="code" href="PGFtypes_8h.html#a61836e33582e5be91af7d9d7004dad7d">LinBlockSize</a>;</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;        }</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;        <span class="comment">// rest of height</span></div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;        pos = base2;</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> y=0; y &lt; hh.rem; y++) {</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;                <span class="comment">// rest of width</span></div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;                <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x=0; x &lt; ww.rem; x++) {</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;                        <a class="code" href="classCEncoder.html#a75534facc647f53982bcfd72c1caa540">WriteValue</a>(band, pos);</div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;                        pos++;</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;                }</div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;                pos += wr;</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;        }</div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;}</div><div class="ttc" id="PGFtypes_8h_html_a61836e33582e5be91af7d9d7004dad7d"><div class="ttname"><a href="PGFtypes_8h.html#a61836e33582e5be91af7d9d7004dad7d">LinBlockSize</a></div><div class="ttdeci">#define LinBlockSize</div><div class="ttdoc">side length of a coefficient block in a HH or LL subband </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00079">PGFtypes.h:79</a></div></div>
<div class="ttc" id="classCEncoder_html_a75534facc647f53982bcfd72c1caa540"><div class="ttname"><a href="classCEncoder.html#a75534facc647f53982bcfd72c1caa540">CEncoder::WriteValue</a></div><div class="ttdeci">void WriteValue(CSubband *band, int bandPos) THROW_</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8cpp_source.html#l00321">Encoder.cpp:321</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a0b2fefcc1d7c95b14e62c71caa1e4fdb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b2fefcc1d7c95b14e62c71caa1e4fdb">&#9670;&nbsp;</a></span>SetBufferStartPos()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void CEncoder::SetBufferStartPos </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Save current stream position as beginning of current level. </p>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00184">184</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;{ <a class="code" href="classCEncoder.html#a17309ba6d30988bf1e6d02ea51a55825">m_bufferStartPos</a> = <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">GetPos</a>(); }</div><div class="ttc" id="classCPGFStream_html_a841e109647ea77dd9e589ab00ef4aad8"><div class="ttname"><a href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">CPGFStream::GetPos</a></div><div class="ttdeci">virtual UINT64 GetPos() const =0</div></div>
<div class="ttc" id="classCEncoder_html_ad01ad5ea3003064b00516dad191d3499"><div class="ttname"><a href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">CEncoder::m_stream</a></div><div class="ttdeci">CPGFStream * m_stream</div><div class="ttdoc">output PMF stream </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00205">Encoder.h:205</a></div></div>
<div class="ttc" id="classCEncoder_html_a17309ba6d30988bf1e6d02ea51a55825"><div class="ttname"><a href="classCEncoder.html#a17309ba6d30988bf1e6d02ea51a55825">CEncoder::m_bufferStartPos</a></div><div class="ttdeci">UINT64 m_bufferStartPos</div><div class="ttdoc">stream position of encoded buffer </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00208">Encoder.h:208</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="acff251105003f4a4376a01180dbdc757"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acff251105003f4a4376a01180dbdc757">&#9670;&nbsp;</a></span>SetEncodedLevel()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void CEncoder::SetEncodedLevel </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>currentLevel</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Informs the encoder about the encoded level. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">currentLevel</td><td>encoded level [0, nLevels) </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00158">158</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;{ ASSERT(currentLevel &gt;= 0); <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-&gt;<a class="code" href="classCEncoder_1_1CMacroBlock.html#a68163a823248889d9d407f4b0331245d">m_lastLevelIndex</a> = <a class="code" href="classCEncoder.html#a821892e5cf7a82b43898bc4e15717bfb">m_nLevels</a> - currentLevel - 1; <a class="code" href="classCEncoder.html#a52d2d5a49f3f6994f67cae1e2176f968">m_forceWriting</a> = <span class="keyword">true</span>; }</div><div class="ttc" id="classCEncoder_1_1CMacroBlock_html_a68163a823248889d9d407f4b0331245d"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#a68163a823248889d9d407f4b0331245d">CEncoder::CMacroBlock::m_lastLevelIndex</a></div><div class="ttdeci">int m_lastLevelIndex</div><div class="ttdoc">index of last encoded level: [0, nLevels); used because a level-end can occur before a buffer is full...</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00086">Encoder.h:86</a></div></div>
<div class="ttc" id="classCEncoder_html_a52d2d5a49f3f6994f67cae1e2176f968"><div class="ttname"><a href="classCEncoder.html#a52d2d5a49f3f6994f67cae1e2176f968">CEncoder::m_forceWriting</a></div><div class="ttdeci">bool m_forceWriting</div><div class="ttdoc">all macro blocks have to be written into the stream </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00219">Encoder.h:219</a></div></div>
<div class="ttc" id="classCEncoder_html_a55d6f2b3aeea93c52bd0a39af9f5db8b"><div class="ttname"><a href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">CEncoder::m_currentBlock</a></div><div class="ttdeci">CMacroBlock * m_currentBlock</div><div class="ttdoc">current macro block (used by main thread) </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00213">Encoder.h:213</a></div></div>
<div class="ttc" id="classCEncoder_html_a821892e5cf7a82b43898bc4e15717bfb"><div class="ttname"><a href="classCEncoder.html#a821892e5cf7a82b43898bc4e15717bfb">CEncoder::m_nLevels</a></div><div class="ttdeci">UINT8 m_nLevels</div><div class="ttdoc">number of levels </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00217">Encoder.h:217</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aabc52a41473071a2b4c5ddb7459dd264"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aabc52a41473071a2b4c5ddb7459dd264">&#9670;&nbsp;</a></span>UpdateLevelLength()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">UINT32 CEncoder::UpdateLevelLength </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Write new levelLength into stream. It might throw an <a class="el" href="structIOException.html" title="PGF exception. ">IOException</a>. </p><dl class="section return"><dt>Returns</dt><dd>Written image bytes. </dd></dl>

<p class="definition">Definition at line <a class="el" href="Encoder_8cpp_source.html#l00197">197</a> of file <a class="el" href="Encoder_8cpp_source.html">Encoder.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;                                          {</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;        UINT64 curPos = <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">GetPos</a>(); <span class="comment">// end of image</span></div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;        <span class="comment">// set file pos to levelLength</span></div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;        <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a69be67d4b04cd056c4f74d8147349a16">SetPos</a>(FSFromStart, <a class="code" href="classCEncoder.html#a5409bc51f3d922d43b5bcad3b8f2c8aa">m_levelLengthPos</a>);</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classCEncoder.html#a6eba5be82f05684ca2574f36f8945717">m_levelLength</a>) {</div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;<span class="preprocessor">        #ifdef PGF_USE_BIG_ENDIAN </span></div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;                UINT32 levelLength;</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;                <span class="keywordtype">int</span> count = <a class="code" href="PGFplatform_8h.html#abeb1344b9026903d401004c4493a243f">WordBytes</a>;</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;                </div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;                <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i &lt; <a class="code" href="classCEncoder.html#a883026518a92ae6ed2aad8c9ed459b12">m_currLevelIndex</a>; i++) {</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;                        levelLength = <a class="code" href="PGFplatform_8h.html#ab45d30e0f7f4c42f39a63f436cb16f52">__VAL</a>(UINT32(<a class="code" href="classCEncoder.html#a6eba5be82f05684ca2574f36f8945717">m_levelLength</a>[i]));</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;                        <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&amp;count, &amp;levelLength);</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;                }</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;<span class="preprocessor">        #else</span></div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;                <span class="keywordtype">int</span> count = m_currLevelIndex*<a class="code" href="PGFplatform_8h.html#abeb1344b9026903d401004c4493a243f">WordBytes</a>;</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;                </div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;                <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&amp;count, <a class="code" href="classCEncoder.html#a6eba5be82f05684ca2574f36f8945717">m_levelLength</a>);</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;<span class="preprocessor">        #endif //PGF_USE_BIG_ENDIAN </span></div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;                <span class="keywordtype">int</span> count = m_currLevelIndex*<a class="code" href="PGFplatform_8h.html#abeb1344b9026903d401004c4493a243f">WordBytes</a>;</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;                <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a69be67d4b04cd056c4f74d8147349a16">SetPos</a>(FSFromCurrent, count);</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;        }</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        <span class="comment">// begin of image</span></div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;        UINT32 retValue = UINT32(curPos - <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">GetPos</a>());</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;                </div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;        <span class="comment">// restore file position</span></div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;        <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a69be67d4b04cd056c4f74d8147349a16">SetPos</a>(FSFromStart, curPos);</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;        <span class="keywordflow">return</span> retValue;</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;}</div><div class="ttc" id="classCPGFStream_html_a0a46ae977995134787219288f4123134"><div class="ttname"><a href="classCPGFStream.html#a0a46ae977995134787219288f4123134">CPGFStream::Write</a></div><div class="ttdeci">virtual void Write(int *count, void *buffer)=0</div></div>
<div class="ttc" id="PGFplatform_8h_html_ab45d30e0f7f4c42f39a63f436cb16f52"><div class="ttname"><a href="PGFplatform_8h.html#ab45d30e0f7f4c42f39a63f436cb16f52">__VAL</a></div><div class="ttdeci">#define __VAL(x)</div><div class="ttdef"><b>Definition:</b> <a href="PGFplatform_8h_source.html#l00604">PGFplatform.h:604</a></div></div>
<div class="ttc" id="classCPGFStream_html_a69be67d4b04cd056c4f74d8147349a16"><div class="ttname"><a href="classCPGFStream.html#a69be67d4b04cd056c4f74d8147349a16">CPGFStream::SetPos</a></div><div class="ttdeci">virtual void SetPos(short posMode, INT64 posOff)=0</div></div>
<div class="ttc" id="classCEncoder_html_a6eba5be82f05684ca2574f36f8945717"><div class="ttname"><a href="classCEncoder.html#a6eba5be82f05684ca2574f36f8945717">CEncoder::m_levelLength</a></div><div class="ttdeci">UINT32 * m_levelLength</div><div class="ttdoc">temporary saves the level index </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00215">Encoder.h:215</a></div></div>
<div class="ttc" id="PGFplatform_8h_html_abeb1344b9026903d401004c4493a243f"><div class="ttname"><a href="PGFplatform_8h.html#abeb1344b9026903d401004c4493a243f">WordBytes</a></div><div class="ttdeci">#define WordBytes</div><div class="ttdoc">sizeof(UINT32) </div><div class="ttdef"><b>Definition:</b> <a href="PGFplatform_8h_source.html#l00076">PGFplatform.h:76</a></div></div>
<div class="ttc" id="classCPGFStream_html_a841e109647ea77dd9e589ab00ef4aad8"><div class="ttname"><a href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">CPGFStream::GetPos</a></div><div class="ttdeci">virtual UINT64 GetPos() const =0</div></div>
<div class="ttc" id="classCEncoder_html_ad01ad5ea3003064b00516dad191d3499"><div class="ttname"><a href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">CEncoder::m_stream</a></div><div class="ttdeci">CPGFStream * m_stream</div><div class="ttdoc">output PMF stream </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00205">Encoder.h:205</a></div></div>
<div class="ttc" id="classCEncoder_html_a5409bc51f3d922d43b5bcad3b8f2c8aa"><div class="ttname"><a href="classCEncoder.html#a5409bc51f3d922d43b5bcad3b8f2c8aa">CEncoder::m_levelLengthPos</a></div><div class="ttdeci">UINT64 m_levelLengthPos</div><div class="ttdoc">stream position of Metadata </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00207">Encoder.h:207</a></div></div>
<div class="ttc" id="classCEncoder_html_a883026518a92ae6ed2aad8c9ed459b12"><div class="ttname"><a href="classCEncoder.html#a883026518a92ae6ed2aad8c9ed459b12">CEncoder::m_currLevelIndex</a></div><div class="ttdeci">int m_currLevelIndex</div><div class="ttdoc">counts where (=index) to save next value </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00216">Encoder.h:216</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="af1772564b2558115a6e0f4b6bdfb1873"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af1772564b2558115a6e0f4b6bdfb1873">&#9670;&nbsp;</a></span>UpdatePostHeaderSize()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CEncoder::UpdatePostHeaderSize </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structPGFPreHeader.html">PGFPreHeader</a>&#160;</td>
          <td class="paramname"><em>preHeader</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Increase post-header size and write new size into stream. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">preHeader</td><td>An already filled in PGF pre-header It might throw an <a class="el" href="structIOException.html" title="PGF exception. ">IOException</a>. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="Encoder_8cpp_source.html#l00155">155</a> of file <a class="el" href="Encoder_8cpp_source.html">Encoder.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;                                                                 {</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;        UINT64 curPos = <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">GetPos</a>(); <span class="comment">// end of user data</span></div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;        <span class="keywordtype">int</span> count = <a class="code" href="PGFtypes_8h.html#a2d0d92eaf21df36fc0292fc6780dac97">PreHeaderSize</a>;</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;        <span class="comment">// write preHeader</span></div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;        <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a69be67d4b04cd056c4f74d8147349a16">SetPos</a>(FSFromStart, <a class="code" href="classCEncoder.html#a32012be0814bbc611963517e482d1111">m_startPosition</a>);</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;        preHeader.<a class="code" href="structPGFPreHeader.html#a71b1463b71b722459dad25a3ef0b492b">hSize</a> = <a class="code" href="PGFplatform_8h.html#ab45d30e0f7f4c42f39a63f436cb16f52">__VAL</a>(preHeader.<a class="code" href="structPGFPreHeader.html#a71b1463b71b722459dad25a3ef0b492b">hSize</a>);</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&amp;count, &amp;preHeader);</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;        <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a69be67d4b04cd056c4f74d8147349a16">SetPos</a>(FSFromStart, curPos);</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;}</div><div class="ttc" id="classCPGFStream_html_a0a46ae977995134787219288f4123134"><div class="ttname"><a href="classCPGFStream.html#a0a46ae977995134787219288f4123134">CPGFStream::Write</a></div><div class="ttdeci">virtual void Write(int *count, void *buffer)=0</div></div>
<div class="ttc" id="PGFplatform_8h_html_ab45d30e0f7f4c42f39a63f436cb16f52"><div class="ttname"><a href="PGFplatform_8h.html#ab45d30e0f7f4c42f39a63f436cb16f52">__VAL</a></div><div class="ttdeci">#define __VAL(x)</div><div class="ttdef"><b>Definition:</b> <a href="PGFplatform_8h_source.html#l00604">PGFplatform.h:604</a></div></div>
<div class="ttc" id="classCPGFStream_html_a69be67d4b04cd056c4f74d8147349a16"><div class="ttname"><a href="classCPGFStream.html#a69be67d4b04cd056c4f74d8147349a16">CPGFStream::SetPos</a></div><div class="ttdeci">virtual void SetPos(short posMode, INT64 posOff)=0</div></div>
<div class="ttc" id="PGFtypes_8h_html_a2d0d92eaf21df36fc0292fc6780dac97"><div class="ttname"><a href="PGFtypes_8h.html#a2d0d92eaf21df36fc0292fc6780dac97">PreHeaderSize</a></div><div class="ttdeci">#define PreHeaderSize</div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00230">PGFtypes.h:230</a></div></div>
<div class="ttc" id="structPGFPreHeader_html_a71b1463b71b722459dad25a3ef0b492b"><div class="ttname"><a href="structPGFPreHeader.html#a71b1463b71b722459dad25a3ef0b492b">PGFPreHeader::hSize</a></div><div class="ttdeci">UINT32 hSize</div><div class="ttdoc">total size of PGFHeader, [ColorTable], and [UserData] in bytes </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00115">PGFtypes.h:115</a></div></div>
<div class="ttc" id="classCEncoder_html_a32012be0814bbc611963517e482d1111"><div class="ttname"><a href="classCEncoder.html#a32012be0814bbc611963517e482d1111">CEncoder::m_startPosition</a></div><div class="ttdeci">UINT64 m_startPosition</div><div class="ttdoc">stream position of PGF start (PreHeader) </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00206">Encoder.h:206</a></div></div>
<div class="ttc" id="classCPGFStream_html_a841e109647ea77dd9e589ab00ef4aad8"><div class="ttname"><a href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">CPGFStream::GetPos</a></div><div class="ttdeci">virtual UINT64 GetPos() const =0</div></div>
<div class="ttc" id="classCEncoder_html_ad01ad5ea3003064b00516dad191d3499"><div class="ttname"><a href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">CEncoder::m_stream</a></div><div class="ttdeci">CPGFStream * m_stream</div><div class="ttdoc">output PMF stream </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00205">Encoder.h:205</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a9e9bde69d4e28e6752adb7f593adfaaf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e9bde69d4e28e6752adb7f593adfaaf">&#9670;&nbsp;</a></span>WriteLevelLength()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">UINT32 CEncoder::WriteLevelLength </td>
          <td>(</td>
          <td class="paramtype">UINT32 *&amp;&#160;</td>
          <td class="paramname"><em>levelLength</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Create level length data structure and write a place holder into stream. It might throw an <a class="el" href="structIOException.html" title="PGF exception. ">IOException</a>. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">levelLength</td><td>A reference to an integer array, large enough to save the relative file positions of all PGF levels </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>number of bytes written into stream </dd></dl>

<p class="definition">Definition at line <a class="el" href="Encoder_8cpp_source.html#l00172">172</a> of file <a class="el" href="Encoder_8cpp_source.html">Encoder.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;                                                             {</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;        <span class="comment">// renew levelLength</span></div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;        <span class="keyword">delete</span>[] levelLength;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;        levelLength = <span class="keyword">new</span>(std::nothrow) UINT32[<a class="code" href="classCEncoder.html#a821892e5cf7a82b43898bc4e15717bfb">m_nLevels</a>];</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        <span class="keywordflow">if</span> (!levelLength) ReturnWithError(InsufficientMemory);</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;        <span class="keywordflow">for</span> (UINT8 l = 0; l &lt; <a class="code" href="classCEncoder.html#a821892e5cf7a82b43898bc4e15717bfb">m_nLevels</a>; l++) levelLength[l] = 0;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;        <a class="code" href="classCEncoder.html#a6eba5be82f05684ca2574f36f8945717">m_levelLength</a> = levelLength;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;        <span class="comment">// save level length file position</span></div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;        <a class="code" href="classCEncoder.html#a5409bc51f3d922d43b5bcad3b8f2c8aa">m_levelLengthPos</a> = <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">GetPos</a>();</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;        <span class="comment">// write dummy levelLength</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;        <span class="keywordtype">int</span> count = m_nLevels*<a class="code" href="PGFplatform_8h.html#abeb1344b9026903d401004c4493a243f">WordBytes</a>;</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;        <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&amp;count, <a class="code" href="classCEncoder.html#a6eba5be82f05684ca2574f36f8945717">m_levelLength</a>);</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;        <span class="comment">// save current file position</span></div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;        <a class="code" href="classCEncoder.html#a0b2fefcc1d7c95b14e62c71caa1e4fdb">SetBufferStartPos</a>();</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;        <span class="keywordflow">return</span> count;</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;}</div><div class="ttc" id="classCEncoder_html_a0b2fefcc1d7c95b14e62c71caa1e4fdb"><div class="ttname"><a href="classCEncoder.html#a0b2fefcc1d7c95b14e62c71caa1e4fdb">CEncoder::SetBufferStartPos</a></div><div class="ttdeci">void SetBufferStartPos()</div><div class="ttdoc">Save current stream position as beginning of current level. </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00184">Encoder.h:184</a></div></div>
<div class="ttc" id="classCPGFStream_html_a0a46ae977995134787219288f4123134"><div class="ttname"><a href="classCPGFStream.html#a0a46ae977995134787219288f4123134">CPGFStream::Write</a></div><div class="ttdeci">virtual void Write(int *count, void *buffer)=0</div></div>
<div class="ttc" id="classCEncoder_html_a6eba5be82f05684ca2574f36f8945717"><div class="ttname"><a href="classCEncoder.html#a6eba5be82f05684ca2574f36f8945717">CEncoder::m_levelLength</a></div><div class="ttdeci">UINT32 * m_levelLength</div><div class="ttdoc">temporary saves the level index </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00215">Encoder.h:215</a></div></div>
<div class="ttc" id="PGFplatform_8h_html_abeb1344b9026903d401004c4493a243f"><div class="ttname"><a href="PGFplatform_8h.html#abeb1344b9026903d401004c4493a243f">WordBytes</a></div><div class="ttdeci">#define WordBytes</div><div class="ttdoc">sizeof(UINT32) </div><div class="ttdef"><b>Definition:</b> <a href="PGFplatform_8h_source.html#l00076">PGFplatform.h:76</a></div></div>
<div class="ttc" id="classCPGFStream_html_a841e109647ea77dd9e589ab00ef4aad8"><div class="ttname"><a href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">CPGFStream::GetPos</a></div><div class="ttdeci">virtual UINT64 GetPos() const =0</div></div>
<div class="ttc" id="classCEncoder_html_ad01ad5ea3003064b00516dad191d3499"><div class="ttname"><a href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">CEncoder::m_stream</a></div><div class="ttdeci">CPGFStream * m_stream</div><div class="ttdoc">output PMF stream </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00205">Encoder.h:205</a></div></div>
<div class="ttc" id="classCEncoder_html_a5409bc51f3d922d43b5bcad3b8f2c8aa"><div class="ttname"><a href="classCEncoder.html#a5409bc51f3d922d43b5bcad3b8f2c8aa">CEncoder::m_levelLengthPos</a></div><div class="ttdeci">UINT64 m_levelLengthPos</div><div class="ttdoc">stream position of Metadata </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00207">Encoder.h:207</a></div></div>
<div class="ttc" id="classCEncoder_html_a821892e5cf7a82b43898bc4e15717bfb"><div class="ttname"><a href="classCEncoder.html#a821892e5cf7a82b43898bc4e15717bfb">CEncoder::m_nLevels</a></div><div class="ttdeci">UINT8 m_nLevels</div><div class="ttdoc">number of levels </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00217">Encoder.h:217</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a5c54a254b5ddcbe8eaf3bfcb082afcda"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c54a254b5ddcbe8eaf3bfcb082afcda">&#9670;&nbsp;</a></span>WriteMacroBlock()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void CEncoder::WriteMacroBlock </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCEncoder_1_1CMacroBlock.html">CMacroBlock</a> *&#160;</td>
          <td class="paramname"><em>block</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="Encoder_8cpp_source.html#l00395">395</a> of file <a class="el" href="Encoder_8cpp_source.html">Encoder.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;                                                        {</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;        ASSERT(block);</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;</div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;        <a class="code" href="unionROIBlockHeader.html">ROIBlockHeader</a> h = block-&gt;m_header;</div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;        UINT16 wordLen = UINT16(<a class="code" href="BitStream_8h.html#aec0f6865df9443d08000c0fe4d446031">NumberOfWords</a>(block-&gt;m_codePos)); ASSERT(wordLen &lt;= <a class="code" href="Decoder_8h.html#a05a74e73e6c734fcad194efbca053ed5">CodeBufferLen</a>);</div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;        <span class="keywordtype">int</span> count = <span class="keyword">sizeof</span>(UINT16);</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;        </div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;<span class="preprocessor">#ifdef TRACE</span></div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;        <span class="comment">//UINT32 filePos = (UINT32)m_stream-&gt;GetPos();</span></div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;        <span class="comment">//printf(&quot;EncodeBuffer: %d\n&quot;, filePos);</span></div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;<span class="preprocessor">#ifdef PGF_USE_BIG_ENDIAN </span></div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;        <span class="comment">// write wordLen</span></div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;        UINT16 wl = <a class="code" href="PGFplatform_8h.html#ab45d30e0f7f4c42f39a63f436cb16f52">__VAL</a>(wordLen);</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;        <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&amp;count, &amp;wl); ASSERT(count == <span class="keyword">sizeof</span>(UINT16));</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;<span class="preprocessor">#ifdef __PGFROISUPPORT__</span></div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;        <span class="comment">// write ROIBlockHeader</span></div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;        <span class="keywordflow">if</span> (m_roi) {</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;                h.<a class="code" href="unionROIBlockHeader.html#a84e2058de6eb0cb75f6d5b0388915494">val</a> = <a class="code" href="PGFplatform_8h.html#ab45d30e0f7f4c42f39a63f436cb16f52">__VAL</a>(h.<a class="code" href="unionROIBlockHeader.html#a84e2058de6eb0cb75f6d5b0388915494">val</a>);</div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;                <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&amp;count, &amp;h.<a class="code" href="unionROIBlockHeader.html#a84e2058de6eb0cb75f6d5b0388915494">val</a>); ASSERT(count == <span class="keyword">sizeof</span>(UINT16));</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;        }</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;<span class="preprocessor">#endif // __PGFROISUPPORT__</span></div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;        <span class="comment">// convert data</span></div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i &lt; wordLen; i++) {</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;                block-&gt;m_codeBuffer[i] = <a class="code" href="PGFplatform_8h.html#ab45d30e0f7f4c42f39a63f436cb16f52">__VAL</a>(block-&gt;m_codeBuffer[i]);</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;        }</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;        <span class="comment">// write wordLen</span></div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;        <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&amp;count, &amp;wordLen); ASSERT(count == <span class="keyword">sizeof</span>(UINT16));</div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;</div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;<span class="preprocessor">#ifdef __PGFROISUPPORT__</span></div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;        <span class="comment">// write ROIBlockHeader</span></div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;        <span class="keywordflow">if</span> (m_roi) {</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;                <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&amp;count, &amp;h.<a class="code" href="unionROIBlockHeader.html#a84e2058de6eb0cb75f6d5b0388915494">val</a>); ASSERT(count == <span class="keyword">sizeof</span>(UINT16));</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;        }</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;<span class="preprocessor">#endif // __PGFROISUPPORT__</span></div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;<span class="preprocessor">#endif // PGF_USE_BIG_ENDIAN</span></div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;        <span class="comment">// write encoded data into stream</span></div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;        count = wordLen*<a class="code" href="PGFplatform_8h.html#abeb1344b9026903d401004c4493a243f">WordBytes</a>;</div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;        <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-&gt;<a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&amp;count, block-&gt;m_codeBuffer);</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;        <span class="comment">// store levelLength</span></div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classCEncoder.html#a6eba5be82f05684ca2574f36f8945717">m_levelLength</a>) {</div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;                <span class="comment">// store level length</span></div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;                <span class="comment">// EncodeBuffer has been called after m_lastLevelIndex has been updated</span></div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;                ASSERT(<a class="code" href="classCEncoder.html#a883026518a92ae6ed2aad8c9ed459b12">m_currLevelIndex</a> &lt; <a class="code" href="classCEncoder.html#a821892e5cf7a82b43898bc4e15717bfb">m_nLevels</a>);</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;                <a class="code" href="classCEncoder.html#a6eba5be82f05684ca2574f36f8945717">m_levelLength</a>[<a class="code" href="classCEncoder.html#a883026518a92ae6ed2aad8c9ed459b12">m_currLevelIndex</a>] += (UINT32)<a class="code" href="classCEncoder.html#a41cb748b6797fc6de436e546f3d76ff2">ComputeBufferLength</a>();</div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;                <a class="code" href="classCEncoder.html#a883026518a92ae6ed2aad8c9ed459b12">m_currLevelIndex</a> = block-&gt;m_lastLevelIndex + 1;</div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;        }</div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;</div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;        <span class="comment">// prepare for next buffer</span></div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;        <a class="code" href="classCEncoder.html#a0b2fefcc1d7c95b14e62c71caa1e4fdb">SetBufferStartPos</a>();</div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;        <span class="comment">// reset values</span></div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;        block-&gt;m_valuePos = 0;</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;        block-&gt;m_maxAbsValue = 0;</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;}</div><div class="ttc" id="classCEncoder_html_a0b2fefcc1d7c95b14e62c71caa1e4fdb"><div class="ttname"><a href="classCEncoder.html#a0b2fefcc1d7c95b14e62c71caa1e4fdb">CEncoder::SetBufferStartPos</a></div><div class="ttdeci">void SetBufferStartPos()</div><div class="ttdoc">Save current stream position as beginning of current level. </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00184">Encoder.h:184</a></div></div>
<div class="ttc" id="classCPGFStream_html_a0a46ae977995134787219288f4123134"><div class="ttname"><a href="classCPGFStream.html#a0a46ae977995134787219288f4123134">CPGFStream::Write</a></div><div class="ttdeci">virtual void Write(int *count, void *buffer)=0</div></div>
<div class="ttc" id="PGFplatform_8h_html_ab45d30e0f7f4c42f39a63f436cb16f52"><div class="ttname"><a href="PGFplatform_8h.html#ab45d30e0f7f4c42f39a63f436cb16f52">__VAL</a></div><div class="ttdeci">#define __VAL(x)</div><div class="ttdef"><b>Definition:</b> <a href="PGFplatform_8h_source.html#l00604">PGFplatform.h:604</a></div></div>
<div class="ttc" id="classCEncoder_html_a6eba5be82f05684ca2574f36f8945717"><div class="ttname"><a href="classCEncoder.html#a6eba5be82f05684ca2574f36f8945717">CEncoder::m_levelLength</a></div><div class="ttdeci">UINT32 * m_levelLength</div><div class="ttdoc">temporary saves the level index </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00215">Encoder.h:215</a></div></div>
<div class="ttc" id="unionROIBlockHeader_html"><div class="ttname"><a href="unionROIBlockHeader.html">ROIBlockHeader</a></div><div class="ttdoc">Block header used with ROI coding scheme. </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00151">PGFtypes.h:151</a></div></div>
<div class="ttc" id="classCEncoder_html_a41cb748b6797fc6de436e546f3d76ff2"><div class="ttname"><a href="classCEncoder.html#a41cb748b6797fc6de436e546f3d76ff2">CEncoder::ComputeBufferLength</a></div><div class="ttdeci">INT64 ComputeBufferLength() const</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00175">Encoder.h:175</a></div></div>
<div class="ttc" id="PGFplatform_8h_html_abeb1344b9026903d401004c4493a243f"><div class="ttname"><a href="PGFplatform_8h.html#abeb1344b9026903d401004c4493a243f">WordBytes</a></div><div class="ttdeci">#define WordBytes</div><div class="ttdoc">sizeof(UINT32) </div><div class="ttdef"><b>Definition:</b> <a href="PGFplatform_8h_source.html#l00076">PGFplatform.h:76</a></div></div>
<div class="ttc" id="classCEncoder_html_ad01ad5ea3003064b00516dad191d3499"><div class="ttname"><a href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">CEncoder::m_stream</a></div><div class="ttdeci">CPGFStream * m_stream</div><div class="ttdoc">output PMF stream </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00205">Encoder.h:205</a></div></div>
<div class="ttc" id="unionROIBlockHeader_html_a84e2058de6eb0cb75f6d5b0388915494"><div class="ttname"><a href="unionROIBlockHeader.html#a84e2058de6eb0cb75f6d5b0388915494">ROIBlockHeader::val</a></div><div class="ttdeci">UINT16 val</div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00160">PGFtypes.h:160</a></div></div>
<div class="ttc" id="BitStream_8h_html_aec0f6865df9443d08000c0fe4d446031"><div class="ttname"><a href="BitStream_8h.html#aec0f6865df9443d08000c0fe4d446031">NumberOfWords</a></div><div class="ttdeci">UINT32 NumberOfWords(UINT32 pos)</div><div class="ttdef"><b>Definition:</b> <a href="BitStream_8h_source.html#l00269">BitStream.h:269</a></div></div>
<div class="ttc" id="classCEncoder_html_a883026518a92ae6ed2aad8c9ed459b12"><div class="ttname"><a href="classCEncoder.html#a883026518a92ae6ed2aad8c9ed459b12">CEncoder::m_currLevelIndex</a></div><div class="ttdeci">int m_currLevelIndex</div><div class="ttdoc">counts where (=index) to save next value </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00216">Encoder.h:216</a></div></div>
<div class="ttc" id="classCEncoder_html_a821892e5cf7a82b43898bc4e15717bfb"><div class="ttname"><a href="classCEncoder.html#a821892e5cf7a82b43898bc4e15717bfb">CEncoder::m_nLevels</a></div><div class="ttdeci">UINT8 m_nLevels</div><div class="ttdoc">number of levels </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00217">Encoder.h:217</a></div></div>
<div class="ttc" id="Decoder_8h_html_a05a74e73e6c734fcad194efbca053ed5"><div class="ttname"><a href="Decoder_8h.html#a05a74e73e6c734fcad194efbca053ed5">CodeBufferLen</a></div><div class="ttdeci">#define CodeBufferLen</div><div class="ttdoc">number of words in code buffer (CodeBufferLen &gt; BufferLen) </div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00040">Decoder.h:40</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a75534facc647f53982bcfd72c1caa540"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75534facc647f53982bcfd72c1caa540">&#9670;&nbsp;</a></span>WriteValue()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CEncoder::WriteValue </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCSubband.html">CSubband</a> *&#160;</td>
          <td class="paramname"><em>band</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>bandPos</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Write a single value into subband at given position. It might throw an <a class="el" href="structIOException.html" title="PGF exception. ">IOException</a>. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">band</td><td>A subband </td></tr>
    <tr><td class="paramname">bandPos</td><td>A valid position in subband band </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="Encoder_8cpp_source.html#l00321">321</a> of file <a class="el" href="Encoder_8cpp_source.html">Encoder.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;                                                            {</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-&gt;<a class="code" href="classCEncoder_1_1CMacroBlock.html#a7ab47e29ad9e3397869fdfb50b53e035">m_valuePos</a> == <a class="code" href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a>) {</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;                <a class="code" href="classCEncoder.html#adc7b22b8775517e9da0b7aff4ee865cb">EncodeBuffer</a>(<a class="code" href="unionROIBlockHeader.html">ROIBlockHeader</a>(<a class="code" href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a>, <span class="keyword">false</span>));</div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;        }</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;        <a class="code" href="PGFtypes_8h.html#acb1ee3f52ccfad782dcaa0abd79e5d05">DataT</a> val = <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-&gt;<a class="code" href="classCEncoder_1_1CMacroBlock.html#a139b60f3f0d76b9158573e4d897423d6">m_value</a>[<a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-&gt;<a class="code" href="classCEncoder_1_1CMacroBlock.html#a7ab47e29ad9e3397869fdfb50b53e035">m_valuePos</a>++] = band-&gt;<a class="code" href="classCSubband.html#af3b0eb40a0887219e6caaeb5cb394f63">GetData</a>(bandPos);</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;        UINT32 v = abs(val);</div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;        <span class="keywordflow">if</span> (v &gt; <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-&gt;<a class="code" href="classCEncoder_1_1CMacroBlock.html#a865f294ffa568a165224c2105bf1bb01">m_maxAbsValue</a>) <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-&gt;<a class="code" href="classCEncoder_1_1CMacroBlock.html#a865f294ffa568a165224c2105bf1bb01">m_maxAbsValue</a> = v;</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;}</div><div class="ttc" id="classCEncoder_1_1CMacroBlock_html_a7ab47e29ad9e3397869fdfb50b53e035"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#a7ab47e29ad9e3397869fdfb50b53e035">CEncoder::CMacroBlock::m_valuePos</a></div><div class="ttdeci">UINT32 m_valuePos</div><div class="ttdoc">current buffer position </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00083">Encoder.h:83</a></div></div>
<div class="ttc" id="classCSubband_html_af3b0eb40a0887219e6caaeb5cb394f63"><div class="ttname"><a href="classCSubband.html#af3b0eb40a0887219e6caaeb5cb394f63">CSubband::GetData</a></div><div class="ttdeci">DataT GetData(UINT32 pos) const</div><div class="ttdef"><b>Definition:</b> <a href="Subband_8h_source.html#l00112">Subband.h:112</a></div></div>
<div class="ttc" id="PGFtypes_8h_html_acb1ee3f52ccfad782dcaa0abd79e5d05"><div class="ttname"><a href="PGFtypes_8h.html#acb1ee3f52ccfad782dcaa0abd79e5d05">DataT</a></div><div class="ttdeci">INT32 DataT</div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00219">PGFtypes.h:219</a></div></div>
<div class="ttc" id="PGFtypes_8h_html_aa362edf6db9662acf6ef958a6db19c35"><div class="ttname"><a href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a></div><div class="ttdeci">#define BufferSize</div><div class="ttdoc">must be a multiple of WordWidth </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00077">PGFtypes.h:77</a></div></div>
<div class="ttc" id="classCEncoder_1_1CMacroBlock_html_a865f294ffa568a165224c2105bf1bb01"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#a865f294ffa568a165224c2105bf1bb01">CEncoder::CMacroBlock::m_maxAbsValue</a></div><div class="ttdeci">UINT32 m_maxAbsValue</div><div class="ttdoc">maximum absolute coefficient in each buffer </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00084">Encoder.h:84</a></div></div>
<div class="ttc" id="classCEncoder_html_adc7b22b8775517e9da0b7aff4ee865cb"><div class="ttname"><a href="classCEncoder.html#adc7b22b8775517e9da0b7aff4ee865cb">CEncoder::EncodeBuffer</a></div><div class="ttdeci">void EncodeBuffer(ROIBlockHeader h) THROW_</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8cpp_source.html#l00336">Encoder.cpp:336</a></div></div>
<div class="ttc" id="unionROIBlockHeader_html"><div class="ttname"><a href="unionROIBlockHeader.html">ROIBlockHeader</a></div><div class="ttdoc">Block header used with ROI coding scheme. </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00151">PGFtypes.h:151</a></div></div>
<div class="ttc" id="classCEncoder_html_a55d6f2b3aeea93c52bd0a39af9f5db8b"><div class="ttname"><a href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">CEncoder::m_currentBlock</a></div><div class="ttdeci">CMacroBlock * m_currentBlock</div><div class="ttdoc">current macro block (used by main thread) </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00213">Encoder.h:213</a></div></div>
<div class="ttc" id="classCEncoder_1_1CMacroBlock_html_a139b60f3f0d76b9158573e4d897423d6"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#a139b60f3f0d76b9158573e4d897423d6">CEncoder::CMacroBlock::m_value</a></div><div class="ttdeci">DataT m_value[BufferSize]</div><div class="ttdoc">input buffer of values with index m_valuePos </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00080">Encoder.h:80</a></div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a17309ba6d30988bf1e6d02ea51a55825"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a17309ba6d30988bf1e6d02ea51a55825">&#9670;&nbsp;</a></span>m_bufferStartPos</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">UINT64 CEncoder::m_bufferStartPos</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>stream position of encoded buffer </p>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00208">208</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>

</div>
</div>
<a id="a55d6f2b3aeea93c52bd0a39af9f5db8b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a55d6f2b3aeea93c52bd0a39af9f5db8b">&#9670;&nbsp;</a></span>m_currentBlock</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCEncoder_1_1CMacroBlock.html">CMacroBlock</a>* CEncoder::m_currentBlock</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>current macro block (used by main thread) </p>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00213">213</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>

</div>
</div>
<a id="a883026518a92ae6ed2aad8c9ed459b12"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a883026518a92ae6ed2aad8c9ed459b12">&#9670;&nbsp;</a></span>m_currLevelIndex</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int CEncoder::m_currLevelIndex</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>counts where (=index) to save next value </p>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00216">216</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>

</div>
</div>
<a id="a1d51c113f3f7f4f2c94bd7a8c05c12ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d51c113f3f7f4f2c94bd7a8c05c12ee">&#9670;&nbsp;</a></span>m_favorSpeed</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool CEncoder::m_favorSpeed</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>favor speed over size </p>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00218">218</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>

</div>
</div>
<a id="a52d2d5a49f3f6994f67cae1e2176f968"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a52d2d5a49f3f6994f67cae1e2176f968">&#9670;&nbsp;</a></span>m_forceWriting</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool CEncoder::m_forceWriting</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>all macro blocks have to be written into the stream </p>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00219">219</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>

</div>
</div>
<a id="aac446c96d95a90bb005019aef2d18284"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aac446c96d95a90bb005019aef2d18284">&#9670;&nbsp;</a></span>m_lastMacroBlock</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int CEncoder::m_lastMacroBlock</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>array index of the last created macro block </p>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00212">212</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>

</div>
</div>
<a id="a6eba5be82f05684ca2574f36f8945717"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6eba5be82f05684ca2574f36f8945717">&#9670;&nbsp;</a></span>m_levelLength</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">UINT32* CEncoder::m_levelLength</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>temporary saves the level index </p>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00215">215</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>

</div>
</div>
<a id="a5409bc51f3d922d43b5bcad3b8f2c8aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5409bc51f3d922d43b5bcad3b8f2c8aa">&#9670;&nbsp;</a></span>m_levelLengthPos</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">UINT64 CEncoder::m_levelLengthPos</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>stream position of Metadata </p>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00207">207</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>

</div>
</div>
<a id="aeed23492e6a3d093c919708da3cc04d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeed23492e6a3d093c919708da3cc04d2">&#9670;&nbsp;</a></span>m_macroBlockLen</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int CEncoder::m_macroBlockLen</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>array length </p>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00211">211</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>

</div>
</div>
<a id="a6f4684ae62c14fcf22ff29e7ac8f5bc2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6f4684ae62c14fcf22ff29e7ac8f5bc2">&#9670;&nbsp;</a></span>m_macroBlocks</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCEncoder_1_1CMacroBlock.html">CMacroBlock</a>** CEncoder::m_macroBlocks</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>array of macroblocks </p>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00210">210</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>

</div>
</div>
<a id="a821892e5cf7a82b43898bc4e15717bfb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a821892e5cf7a82b43898bc4e15717bfb">&#9670;&nbsp;</a></span>m_nLevels</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">UINT8 CEncoder::m_nLevels</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>number of levels </p>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00217">217</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>

</div>
</div>
<a id="a32012be0814bbc611963517e482d1111"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a32012be0814bbc611963517e482d1111">&#9670;&nbsp;</a></span>m_startPosition</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">UINT64 CEncoder::m_startPosition</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>stream position of PGF start (PreHeader) </p>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00206">206</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>

</div>
</div>
<a id="ad01ad5ea3003064b00516dad191d3499"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad01ad5ea3003064b00516dad191d3499">&#9670;&nbsp;</a></span>m_stream</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCPGFStream.html">CPGFStream</a>* CEncoder::m_stream</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>output PMF stream </p>

<p class="definition">Definition at line <a class="el" href="Encoder_8h_source.html#l00205">205</a> of file <a class="el" href="Encoder_8h_source.html">Encoder.h</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="Encoder_8h_source.html">Encoder.h</a></li>
<li><a class="el" href="Encoder_8cpp_source.html">Encoder.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="classCEncoder.html">CEncoder</a></li>
    <li class="footer">Generated on Mon Dec 31 2018 19:09:19 for libpgf by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>