<!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: Encoder.h Source File</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  <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('Encoder_8h_source.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="headertitle"> <div class="title">Encoder.h</div> </div> </div><!--header--> <div class="contents"> <a href="Encoder_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * The Progressive Graphics File; http://www.libpgf.org</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * </span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * $Date: 2006-06-04 22:05:59 +0200 (So, 04 Jun 2006) $</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * $Revision: 229 $</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * </span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * This file Copyright (C) 2006 xeraina GmbH, Switzerland</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * </span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * This program is free software; you can redistribute it and/or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * as published by the Free Software Foundation; either version 2.1</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> * of the License, or (at your option) any later version.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * </span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> * GNU General Public License for more details.</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * </span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * along with this program; if not, write to the Free Software</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#ifndef PGF_ENCODER_H</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#define PGF_ENCODER_H</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="PGFstream_8h.html">PGFstream.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="BitStream_8h.html">BitStream.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="Subband_8h.html">Subband.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="WaveletTransform_8h.html">WaveletTransform.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// Constants</span></div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="Encoder_8h.html#a309eafbca7ed5953ef9102861479f4ed"> 39</a></span> <span class="preprocessor">#define BufferLen (BufferSize/WordWidth) </span></div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="Encoder_8h.html#a05a74e73e6c734fcad194efbca053ed5"> 40</a></span> <span class="preprocessor">#define CodeBufferLen BufferSize </span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keyword">class </span><a class="code" href="classCEncoder.html">CEncoder</a> {</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classCEncoder_1_1CMacroBlock.html"> 51</a></span>  <span class="keyword">class </span><a class="code" href="classCEncoder_1_1CMacroBlock.html">CMacroBlock</a> {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">public</span>:</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classCEncoder_1_1CMacroBlock.html#a70f3cc1cb204a4bcce871bf6b5b134f6"> 56</a></span>  <a class="code" href="classCEncoder_1_1CMacroBlock.html#a70f3cc1cb204a4bcce871bf6b5b134f6">CMacroBlock</a>(<a class="code" href="classCEncoder.html">CEncoder</a> *encoder)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  : <a class="code" href="classCEncoder_1_1CMacroBlock.html#aa5abc7cc9df3402a233367f0087168f8">m_header</a>(0)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  , <a class="code" href="classCEncoder_1_1CMacroBlock.html#adf5e8e4952216e6fdd189224618edd50">m_encoder</a>(encoder)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  ASSERT(<a class="code" href="classCEncoder_1_1CMacroBlock.html#adf5e8e4952216e6fdd189224618edd50">m_encoder</a>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="classCEncoder_1_1CMacroBlock.html#af3ecc039cc0e3000b394c15265107b38">Init</a>(-1);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classCEncoder_1_1CMacroBlock.html#af3ecc039cc0e3000b394c15265107b38"> 67</a></span>  <span class="keywordtype">void</span> <a class="code" href="classCEncoder_1_1CMacroBlock.html#af3ecc039cc0e3000b394c15265107b38">Init</a>(<span class="keywordtype">int</span> lastLevelIndex) { <span class="comment">// initialize for reusage</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <a class="code" href="classCEncoder_1_1CMacroBlock.html#a7ab47e29ad9e3397869fdfb50b53e035">m_valuePos</a> = 0;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classCEncoder_1_1CMacroBlock.html#a865f294ffa568a165224c2105bf1bb01">m_maxAbsValue</a> = 0;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="classCEncoder_1_1CMacroBlock.html#a6e15685fcab5aa06f0f5ed17312774c7">m_codePos</a> = 0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classCEncoder_1_1CMacroBlock.html#a68163a823248889d9d407f4b0331245d">m_lastLevelIndex</a> = lastLevelIndex;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordtype">void</span> <a class="code" href="classCEncoder_1_1CMacroBlock.html#af95842ac15879ab2b3a9b5232bb4f1a5">BitplaneEncode</a>();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classCEncoder_1_1CMacroBlock.html#a139b60f3f0d76b9158573e4d897423d6"> 80</a></span>  <a class="code" href="PGFtypes_8h.html#acb1ee3f52ccfad782dcaa0abd79e5d05">DataT</a> <a class="code" href="classCEncoder_1_1CMacroBlock.html#a139b60f3f0d76b9158573e4d897423d6">m_value</a>[<a class="code" href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a>]; </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classCEncoder_1_1CMacroBlock.html#a527667f1e0529ff577dcbe7f0aa38d77"> 81</a></span>  UINT32 <a class="code" href="classCEncoder_1_1CMacroBlock.html#a527667f1e0529ff577dcbe7f0aa38d77">m_codeBuffer</a>[<a class="code" href="Encoder_8h.html#a05a74e73e6c734fcad194efbca053ed5">CodeBufferLen</a>]; </div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classCEncoder_1_1CMacroBlock.html#aa5abc7cc9df3402a233367f0087168f8"> 82</a></span>  <a class="code" href="unionROIBlockHeader.html">ROIBlockHeader</a> <a class="code" href="classCEncoder_1_1CMacroBlock.html#aa5abc7cc9df3402a233367f0087168f8">m_header</a>; </div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classCEncoder_1_1CMacroBlock.html#a7ab47e29ad9e3397869fdfb50b53e035"> 83</a></span>  UINT32 <a class="code" href="classCEncoder_1_1CMacroBlock.html#a7ab47e29ad9e3397869fdfb50b53e035">m_valuePos</a>; </div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classCEncoder_1_1CMacroBlock.html#a865f294ffa568a165224c2105bf1bb01"> 84</a></span>  UINT32 <a class="code" href="classCEncoder_1_1CMacroBlock.html#a865f294ffa568a165224c2105bf1bb01">m_maxAbsValue</a>; </div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classCEncoder_1_1CMacroBlock.html#a6e15685fcab5aa06f0f5ed17312774c7"> 85</a></span>  UINT32 <a class="code" href="classCEncoder_1_1CMacroBlock.html#a6e15685fcab5aa06f0f5ed17312774c7">m_codePos</a>; </div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classCEncoder_1_1CMacroBlock.html#a68163a823248889d9d407f4b0331245d"> 86</a></span>  <span class="keywordtype">int</span> <a class="code" href="classCEncoder_1_1CMacroBlock.html#a68163a823248889d9d407f4b0331245d">m_lastLevelIndex</a>; </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">private</span>:</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  UINT32 <a class="code" href="classCEncoder_1_1CMacroBlock.html#a50637f0c6ccc3d29b10063204a55253b">RLESigns</a>(UINT32 codePos, UINT32* signBits, UINT32 signLen);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  UINT32 <a class="code" href="classCEncoder_1_1CMacroBlock.html#a171a6f1d0d6297823542acc3cb43338a">DecomposeBitplane</a>(UINT32 bufferSize, UINT32 planeMask, UINT32 codePos, UINT32* sigBits, UINT32* refBits, UINT32* signBits, UINT32& signLen, UINT32& codeLen);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  UINT8 <a class="code" href="classCEncoder_1_1CMacroBlock.html#a152834c140a4fcf478a2295eb247f4d4">NumberOfBitplanes</a>();</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classCEncoder_1_1CMacroBlock.html#a84aa40ee75fb9d993c0cec207b4092e3"> 92</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classCEncoder_1_1CMacroBlock.html#a84aa40ee75fb9d993c0cec207b4092e3">GetBitAtPos</a>(UINT32 pos, UINT32 planeMask)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (abs(m_value[pos]) & planeMask) > 0; } </div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classCEncoder_1_1CMacroBlock.html#adf5e8e4952216e6fdd189224618edd50"> 94</a></span>  <a class="code" href="classCEncoder.html">CEncoder</a> *<a class="code" href="classCEncoder_1_1CMacroBlock.html#adf5e8e4952216e6fdd189224618edd50">m_encoder</a>; <span class="comment">// encoder instance</span></div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classCEncoder_1_1CMacroBlock.html#a7acaa42598512b958d5e16b8bcded13b"> 95</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classCEncoder_1_1CMacroBlock.html#a7acaa42598512b958d5e16b8bcded13b">m_sigFlagVector</a>[<a class="code" href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a>+1]; <span class="comment">// see paper from Malvar, Fast Progressive Wavelet Coder</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  };</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="classCEncoder.html#ad4abed11dca812bdb0d2f9715e6de4da">CEncoder</a>(<a class="code" href="classCPGFStream.html">CPGFStream</a>* stream, <a class="code" href="structPGFPreHeader.html">PGFPreHeader</a> preHeader, <a class="code" href="structPGFHeader.html">PGFHeader</a> header, <span class="keyword">const</span> <a class="code" href="structPGFPostHeader.html">PGFPostHeader</a>& postHeader, </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  UINT64& userDataPos, <span class="keywordtype">bool</span> useOMP) THROW_; <span class="comment">// throws IOException</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="classCEncoder.html#aa6b7126b6e24bd115348fa6243756f47">~CEncoder</a>();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classCEncoder.html#aa2ffd887a5d8b2e63dfa5b7188ca49f1"> 117</a></span>  <span class="keywordtype">void</span> <a class="code" href="classCEncoder.html#aa2ffd887a5d8b2e63dfa5b7188ca49f1">FavorSpeedOverSize</a>() { <a class="code" href="classCEncoder.html#a1d51c113f3f7f4f2c94bd7a8c05c12ee">m_favorSpeed</a> = <span class="keyword">true</span>; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">void</span> <a class="code" href="classCEncoder.html#a2491bafd532b4f6bcc5505cc0857078c">Flush</a>() THROW_;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordtype">void</span> <a class="code" href="classCEncoder.html#af1772564b2558115a6e0f4b6bdfb1873">UpdatePostHeaderSize</a>(<a class="code" href="structPGFPreHeader.html">PGFPreHeader</a> preHeader) THROW_;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  UINT32 <a class="code" href="classCEncoder.html#a9e9bde69d4e28e6752adb7f593adfaaf">WriteLevelLength</a>(UINT32*& levelLength) THROW_;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  UINT32 <a class="code" href="classCEncoder.html#aabc52a41473071a2b4c5ddb7459dd264">UpdateLevelLength</a>() THROW_;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordtype">void</span> <a class="code" href="classCEncoder.html#ab2b090edf99019e23f4264a6d76469bc">Partition</a>(<a class="code" href="classCSubband.html">CSubband</a>* band, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <span class="keywordtype">int</span> startPos, <span class="keywordtype">int</span> pitch) THROW_;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classCEncoder.html#acff251105003f4a4376a01180dbdc757"> 158</a></span>  <span class="keywordtype">void</span> <a class="code" href="classCEncoder.html#acff251105003f4a4376a01180dbdc757">SetEncodedLevel</a>(<span class="keywordtype">int</span> currentLevel) { ASSERT(currentLevel >= 0); <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-><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="line"><a name="l00159"></a><span class="lineno"> 159</span> </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">void</span> <a class="code" href="classCEncoder.html#a75534facc647f53982bcfd72c1caa540">WriteValue</a>(<a class="code" href="classCSubband.html">CSubband</a>* band, <span class="keywordtype">int</span> bandPos) THROW_;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classCEncoder.html#a5c8dc9273c8a17ce72e86fec5f389112"> 170</a></span>  INT64 <a class="code" href="classCEncoder.html#a5c8dc9273c8a17ce72e86fec5f389112">ComputeHeaderLength</a>()<span class="keyword"> const </span>{ <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="line"><a name="l00171"></a><span class="lineno"> 171</span> </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classCEncoder.html#a41cb748b6797fc6de436e546f3d76ff2"> 175</a></span>  INT64 <a class="code" href="classCEncoder.html#a41cb748b6797fc6de436e546f3d76ff2">ComputeBufferLength</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">GetPos</a>() - <a class="code" href="classCEncoder.html#a17309ba6d30988bf1e6d02ea51a55825">m_bufferStartPos</a>; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classCEncoder.html#a8aadfcf080fad9a5cd82b532dc847d5b"> 180</a></span>  INT64 <a class="code" href="classCEncoder.html#a8aadfcf080fad9a5cd82b532dc847d5b">ComputeOffset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">GetPos</a>() - <a class="code" href="classCEncoder.html#a5409bc51f3d922d43b5bcad3b8f2c8aa">m_levelLengthPos</a>; }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> </div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classCEncoder.html#a0b2fefcc1d7c95b14e62c71caa1e4fdb"> 184</a></span>  <span class="keywordtype">void</span> <a class="code" href="classCEncoder.html#a0b2fefcc1d7c95b14e62c71caa1e4fdb">SetBufferStartPos</a>() { <a class="code" href="classCEncoder.html#a17309ba6d30988bf1e6d02ea51a55825">m_bufferStartPos</a> = <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a841e109647ea77dd9e589ab00ef4aad8">GetPos</a>(); }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="preprocessor">#ifdef __PGFROISUPPORT__</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordtype">void</span> EncodeTileBuffer() THROW_ { ASSERT(<a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a> && <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-><a class="code" href="classCEncoder_1_1CMacroBlock.html#a7ab47e29ad9e3397869fdfb50b53e035">m_valuePos</a> >= 0 && <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-><a class="code" href="classCEncoder_1_1CMacroBlock.html#a7ab47e29ad9e3397869fdfb50b53e035">m_valuePos</a> <= <a class="code" href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a>); <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>-><a class="code" href="classCEncoder_1_1CMacroBlock.html#a7ab47e29ad9e3397869fdfb50b53e035">m_valuePos</a>, <span class="keyword">true</span>)); }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordtype">void</span> SetROI() { m_roi = <span class="keyword">true</span>; }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="preprocessor">#ifdef TRACE</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordtype">void</span> DumpBuffer() <span class="keyword">const</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordtype">void</span> <a class="code" href="classCEncoder.html#adc7b22b8775517e9da0b7aff4ee865cb">EncodeBuffer</a>(<a class="code" href="unionROIBlockHeader.html">ROIBlockHeader</a> h) THROW_; <span class="comment">// throws IOException</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordtype">void</span> <a class="code" href="classCEncoder.html#a5c54a254b5ddcbe8eaf3bfcb082afcda">WriteMacroBlock</a>(<a class="code" href="classCEncoder_1_1CMacroBlock.html">CMacroBlock</a>* block) THROW_; <span class="comment">// throws IOException</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499"> 205</a></span>  <a class="code" href="classCPGFStream.html">CPGFStream</a> *<a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>; </div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classCEncoder.html#a32012be0814bbc611963517e482d1111"> 206</a></span>  UINT64 <a class="code" href="classCEncoder.html#a32012be0814bbc611963517e482d1111">m_startPosition</a>; </div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classCEncoder.html#a5409bc51f3d922d43b5bcad3b8f2c8aa"> 207</a></span>  UINT64 <a class="code" href="classCEncoder.html#a5409bc51f3d922d43b5bcad3b8f2c8aa">m_levelLengthPos</a>; </div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="classCEncoder.html#a17309ba6d30988bf1e6d02ea51a55825"> 208</a></span>  UINT64 <a class="code" href="classCEncoder.html#a17309ba6d30988bf1e6d02ea51a55825">m_bufferStartPos</a>; </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classCEncoder.html#a6f4684ae62c14fcf22ff29e7ac8f5bc2"> 210</a></span>  <a class="code" href="classCEncoder_1_1CMacroBlock.html">CMacroBlock</a> **<a class="code" href="classCEncoder.html#a6f4684ae62c14fcf22ff29e7ac8f5bc2">m_macroBlocks</a>; </div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classCEncoder.html#aeed23492e6a3d093c919708da3cc04d2"> 211</a></span>  <span class="keywordtype">int</span> <a class="code" href="classCEncoder.html#aeed23492e6a3d093c919708da3cc04d2">m_macroBlockLen</a>; </div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classCEncoder.html#aac446c96d95a90bb005019aef2d18284"> 212</a></span>  <span class="keywordtype">int</span> <a class="code" href="classCEncoder.html#aac446c96d95a90bb005019aef2d18284">m_lastMacroBlock</a>; </div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b"> 213</a></span>  <a class="code" href="classCEncoder_1_1CMacroBlock.html">CMacroBlock</a> *<a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>; </div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="classCEncoder.html#a6eba5be82f05684ca2574f36f8945717"> 215</a></span>  UINT32* <a class="code" href="classCEncoder.html#a6eba5be82f05684ca2574f36f8945717">m_levelLength</a>; </div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="classCEncoder.html#a883026518a92ae6ed2aad8c9ed459b12"> 216</a></span>  <span class="keywordtype">int</span> <a class="code" href="classCEncoder.html#a883026518a92ae6ed2aad8c9ed459b12">m_currLevelIndex</a>; </div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classCEncoder.html#a821892e5cf7a82b43898bc4e15717bfb"> 217</a></span>  UINT8 <a class="code" href="classCEncoder.html#a821892e5cf7a82b43898bc4e15717bfb">m_nLevels</a>; </div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classCEncoder.html#a1d51c113f3f7f4f2c94bd7a8c05c12ee"> 218</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classCEncoder.html#a1d51c113f3f7f4f2c94bd7a8c05c12ee">m_favorSpeed</a>; </div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="classCEncoder.html#a52d2d5a49f3f6994f67cae1e2176f968"> 219</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classCEncoder.html#a52d2d5a49f3f6994f67cae1e2176f968">m_forceWriting</a>; </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="preprocessor">#ifdef __PGFROISUPPORT__</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordtype">bool</span> m_roi; </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span> };</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="preprocessor">#endif //PGF_ENCODER</span></div><div class="ttc" id="classCEncoder_1_1CMacroBlock_html_a152834c140a4fcf478a2295eb247f4d4"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#a152834c140a4fcf478a2295eb247f4d4">CEncoder::CMacroBlock::NumberOfBitplanes</a></div><div class="ttdeci">UINT8 NumberOfBitplanes()</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8cpp_source.html#l00736">Encoder.cpp:736</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_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="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_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="classCPGFStream_html"><div class="ttname"><a href="classCPGFStream.html">CPGFStream</a></div><div class="ttdoc">Abstract stream base class. </div><div class="ttdef"><b>Definition:</b> <a href="PGFstream_8h_source.html#l00039">PGFstream.h:39</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="classCEncoder_html_a2491bafd532b4f6bcc5505cc0857078c"><div class="ttname"><a href="classCEncoder.html#a2491bafd532b4f6bcc5505cc0857078c">CEncoder::Flush</a></div><div class="ttdeci">void Flush() THROW_</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8cpp_source.html#l00305">Encoder.cpp:305</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="classCEncoder_html_aa6b7126b6e24bd115348fa6243756f47"><div class="ttname"><a href="classCEncoder.html#aa6b7126b6e24bd115348fa6243756f47">CEncoder::~CEncoder</a></div><div class="ttdeci">~CEncoder()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8cpp_source.html#l00146">Encoder.cpp:146</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="BitStream_8h_html"><div class="ttname"><a href="BitStream_8h.html">BitStream.h</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_1_1CMacroBlock_html_a6e15685fcab5aa06f0f5ed17312774c7"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#a6e15685fcab5aa06f0f5ed17312774c7">CEncoder::CMacroBlock::m_codePos</a></div><div class="ttdeci">UINT32 m_codePos</div><div class="ttdoc">current position in encoded bitstream </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00085">Encoder.h:85</a></div></div> <div class="ttc" id="classCEncoder_1_1CMacroBlock_html_a50637f0c6ccc3d29b10063204a55253b"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#a50637f0c6ccc3d29b10063204a55253b">CEncoder::CMacroBlock::RLESigns</a></div><div class="ttdeci">UINT32 RLESigns(UINT32 codePos, UINT32 *signBits, UINT32 signLen)</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8cpp_source.html#l00760">Encoder.cpp:760</a></div></div> <div class="ttc" id="Encoder_8h_html_a05a74e73e6c734fcad194efbca053ed5"><div class="ttname"><a href="Encoder_8h.html#a05a74e73e6c734fcad194efbca053ed5">CodeBufferLen</a></div><div class="ttdeci">#define CodeBufferLen</div><div class="ttdoc">number of words in code buffer (CodeBufferLen > BufferLen) </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00040">Encoder.h:40</a></div></div> <div class="ttc" id="classCEncoder_html_a9e9bde69d4e28e6752adb7f593adfaaf"><div class="ttname"><a href="classCEncoder.html#a9e9bde69d4e28e6752adb7f593adfaaf">CEncoder::WriteLevelLength</a></div><div class="ttdeci">UINT32 WriteLevelLength(UINT32 *&levelLength) THROW_</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8cpp_source.html#l00172">Encoder.cpp:172</a></div></div> <div class="ttc" id="structPGFPreHeader_html"><div class="ttname"><a href="structPGFPreHeader.html">PGFPreHeader</a></div><div class="ttdoc">PGF pre-header. </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00114">PGFtypes.h:114</a></div></div> <div class="ttc" id="Subband_8h_html"><div class="ttname"><a href="Subband_8h.html">Subband.h</a></div><div class="ttdoc">PGF wavelet subband class. </div></div> <div class="ttc" id="classCSubband_html"><div class="ttname"><a href="classCSubband.html">CSubband</a></div><div class="ttdoc">Wavelet channel class. </div><div class="ttdef"><b>Definition:</b> <a href="Subband_8h_source.html#l00042">Subband.h:42</a></div></div> <div class="ttc" id="classCEncoder_1_1CMacroBlock_html_a7acaa42598512b958d5e16b8bcded13b"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#a7acaa42598512b958d5e16b8bcded13b">CEncoder::CMacroBlock::m_sigFlagVector</a></div><div class="ttdeci">bool m_sigFlagVector[BufferSize+1]</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00095">Encoder.h:95</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="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="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="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="structPGFHeader_html"><div class="ttname"><a href="structPGFHeader.html">PGFHeader</a></div><div class="ttdoc">PGF header. </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00123">PGFtypes.h:123</a></div></div> <div class="ttc" id="classCEncoder_1_1CMacroBlock_html_a84aa40ee75fb9d993c0cec207b4092e3"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#a84aa40ee75fb9d993c0cec207b4092e3">CEncoder::CMacroBlock::GetBitAtPos</a></div><div class="ttdeci">bool GetBitAtPos(UINT32 pos, UINT32 planeMask) const</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00092">Encoder.h:92</a></div></div> <div class="ttc" id="classCEncoder_1_1CMacroBlock_html_a70f3cc1cb204a4bcce871bf6b5b134f6"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#a70f3cc1cb204a4bcce871bf6b5b134f6">CEncoder::CMacroBlock::CMacroBlock</a></div><div class="ttdeci">CMacroBlock(CEncoder *encoder)</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00056">Encoder.h:56</a></div></div> <div class="ttc" id="classCEncoder_1_1CMacroBlock_html_a171a6f1d0d6297823542acc3cb43338a"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#a171a6f1d0d6297823542acc3cb43338a">CEncoder::CMacroBlock::DecomposeBitplane</a></div><div class="ttdeci">UINT32 DecomposeBitplane(UINT32 bufferSize, UINT32 planeMask, UINT32 codePos, UINT32 *sigBits, UINT32 *refBits, UINT32 *signBits, UINT32 &signLen, UINT32 &codeLen)</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8cpp_source.html#l00620">Encoder.cpp:620</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="classCEncoder_html_ab2b090edf99019e23f4264a6d76469bc"><div class="ttname"><a href="classCEncoder.html#ab2b090edf99019e23f4264a6d76469bc">CEncoder::Partition</a></div><div class="ttdeci">void Partition(CSubband *band, int width, int height, int startPos, int pitch) THROW_</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8cpp_source.html#l00241">Encoder.cpp:241</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_aabc52a41473071a2b4c5ddb7459dd264"><div class="ttname"><a href="classCEncoder.html#aabc52a41473071a2b4c5ddb7459dd264">CEncoder::UpdateLevelLength</a></div><div class="ttdeci">UINT32 UpdateLevelLength() THROW_</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8cpp_source.html#l00197">Encoder.cpp:197</a></div></div> <div class="ttc" id="classCEncoder_1_1CMacroBlock_html_adf5e8e4952216e6fdd189224618edd50"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#adf5e8e4952216e6fdd189224618edd50">CEncoder::CMacroBlock::m_encoder</a></div><div class="ttdeci">CEncoder * m_encoder</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00094">Encoder.h:94</a></div></div> <div class="ttc" id="structPGFPostHeader_html"><div class="ttname"><a href="structPGFPostHeader.html">PGFPostHeader</a></div><div class="ttdoc">Optional PGF post-header. </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00141">PGFtypes.h:141</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="WaveletTransform_8h_html"><div class="ttname"><a href="WaveletTransform_8h.html">WaveletTransform.h</a></div><div class="ttdoc">PGF wavelet transform class. </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="classCEncoder_1_1CMacroBlock_html_a527667f1e0529ff577dcbe7f0aa38d77"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html#a527667f1e0529ff577dcbe7f0aa38d77">CEncoder::CMacroBlock::m_codeBuffer</a></div><div class="ttdeci">UINT32 m_codeBuffer[CodeBufferLen]</div><div class="ttdoc">output buffer for encoded bitstream </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00081">Encoder.h:81</a></div></div> <div class="ttc" id="classCEncoder_1_1CMacroBlock_html"><div class="ttname"><a href="classCEncoder_1_1CMacroBlock.html">CEncoder::CMacroBlock</a></div><div class="ttdoc">A macro block is an encoding unit of fixed size (uncoded) </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00051">Encoder.h:51</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_a5c8dc9273c8a17ce72e86fec5f389112"><div class="ttname"><a href="classCEncoder.html#a5c8dc9273c8a17ce72e86fec5f389112">CEncoder::ComputeHeaderLength</a></div><div class="ttdeci">INT64 ComputeHeaderLength() const</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00170">Encoder.h:170</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 class="ttc" id="classCEncoder_html_aa2ffd887a5d8b2e63dfa5b7188ca49f1"><div class="ttname"><a href="classCEncoder.html#aa2ffd887a5d8b2e63dfa5b7188ca49f1">CEncoder::FavorSpeedOverSize</a></div><div class="ttdeci">void FavorSpeedOverSize()</div><div class="ttdoc">Encoder favors speed over compression size. </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00117">Encoder.h:117</a></div></div> <div class="ttc" id="PGFstream_8h_html"><div class="ttname"><a href="PGFstream_8h.html">PGFstream.h</a></div><div class="ttdoc">PGF stream class. </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_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 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_html_a8aadfcf080fad9a5cd82b532dc847d5b"><div class="ttname"><a href="classCEncoder.html#a8aadfcf080fad9a5cd82b532dc847d5b">CEncoder::ComputeOffset</a></div><div class="ttdeci">INT64 ComputeOffset() const</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00180">Encoder.h:180</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="classCEncoder_html_ad4abed11dca812bdb0d2f9715e6de4da"><div class="ttname"><a href="classCEncoder.html#ad4abed11dca812bdb0d2f9715e6de4da">CEncoder::CEncoder</a></div><div class="ttdeci">CEncoder(CPGFStream *stream, PGFPreHeader preHeader, PGFHeader header, const PGFPostHeader &postHeader, UINT64 &userDataPos, bool useOMP) THROW_</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8cpp_source.html#l00070">Encoder.cpp:70</a></div></div> <div class="ttc" id="classCEncoder_html"><div class="ttname"><a href="classCEncoder.html">CEncoder</a></div><div class="ttdoc">PGF encoder. </div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00046">Encoder.h:46</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 class="ttc" id="classCEncoder_html_af1772564b2558115a6e0f4b6bdfb1873"><div class="ttname"><a href="classCEncoder.html#af1772564b2558115a6e0f4b6bdfb1873">CEncoder::UpdatePostHeaderSize</a></div><div class="ttdeci">void UpdatePostHeaderSize(PGFPreHeader preHeader) THROW_</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8cpp_source.html#l00155">Encoder.cpp:155</a></div></div> <div class="ttc" id="classCEncoder_html_acff251105003f4a4376a01180dbdc757"><div class="ttname"><a href="classCEncoder.html#acff251105003f4a4376a01180dbdc757">CEncoder::SetEncodedLevel</a></div><div class="ttdeci">void SetEncodedLevel(int currentLevel)</div><div class="ttdef"><b>Definition:</b> <a href="Encoder_8h_source.html#l00158">Encoder.h:158</a></div></div> </div><!-- fragment --></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="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="Encoder_8h.html">Encoder.h</a></li> <li class="footer">Generated on Mon Dec 31 2018 19:09:17 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>