<!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  <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> | <a href="#pub-methods">Public Member Functions</a> | <a href="#pri-methods">Private Member Functions</a> | <a href="#pri-attribs">Private Attributes</a> | <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 <<a class="el" href="Encoder_8h_source.html">Encoder.h</a>></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  </td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder_1_1CMacroBlock.html">CMacroBlock</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </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"> </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"> </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> &postHeader, UINT64 &userDataPos, bool useOMP) THROW_</td></tr> <tr class="separator:ad4abed11dca812bdb0d2f9715e6de4da"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa6b7126b6e24bd115348fa6243756f47"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#aa6b7126b6e24bd115348fa6243756f47">~CEncoder</a> ()</td></tr> <tr class="memdesc:aa6b7126b6e24bd115348fa6243756f47"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <a href="#aa6b7126b6e24bd115348fa6243756f47">More...</a><br /></td></tr> <tr class="separator:aa6b7126b6e24bd115348fa6243756f47"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa2ffd887a5d8b2e63dfa5b7188ca49f1"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#aa2ffd887a5d8b2e63dfa5b7188ca49f1">FavorSpeedOverSize</a> ()</td></tr> <tr class="memdesc:aa2ffd887a5d8b2e63dfa5b7188ca49f1"><td class="mdescLeft"> </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"> </td></tr> <tr class="memitem:a2491bafd532b4f6bcc5505cc0857078c"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> <tr class="memitem:af1772564b2558115a6e0f4b6bdfb1873"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> <tr class="memitem:a9e9bde69d4e28e6752adb7f593adfaaf"><td class="memItemLeft" align="right" valign="top">UINT32 </td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a9e9bde69d4e28e6752adb7f593adfaaf">WriteLevelLength</a> (UINT32 *&levelLength) THROW_</td></tr> <tr class="separator:a9e9bde69d4e28e6752adb7f593adfaaf"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aabc52a41473071a2b4c5ddb7459dd264"><td class="memItemLeft" align="right" valign="top">UINT32 </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"> </td></tr> <tr class="memitem:ab2b090edf99019e23f4264a6d76469bc"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> <tr class="memitem:acff251105003f4a4376a01180dbdc757"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> <tr class="memitem:a75534facc647f53982bcfd72c1caa540"><td class="memItemLeft" align="right" valign="top">void </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"> </td></tr> <tr class="memitem:a5c8dc9273c8a17ce72e86fec5f389112"><td class="memItemLeft" align="right" valign="top">INT64 </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"> </td></tr> <tr class="memitem:a41cb748b6797fc6de436e546f3d76ff2"><td class="memItemLeft" align="right" valign="top">INT64 </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"> </td></tr> <tr class="memitem:a8aadfcf080fad9a5cd82b532dc847d5b"><td class="memItemLeft" align="right" valign="top">INT64 </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"> </td></tr> <tr class="memitem:a0b2fefcc1d7c95b14e62c71caa1e4fdb"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classCEncoder.html#a0b2fefcc1d7c95b14e62c71caa1e4fdb">SetBufferStartPos</a> ()</td></tr> <tr class="memdesc:a0b2fefcc1d7c95b14e62c71caa1e4fdb"><td class="mdescLeft"> </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"> </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 </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"> </td></tr> <tr class="memitem:a5c54a254b5ddcbe8eaf3bfcb082afcda"><td class="memItemLeft" align="right" valign="top">void </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"> </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> * </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"> </td><td class="mdescRight">output PMF stream <a href="#ad01ad5ea3003064b00516dad191d3499">More...</a><br /></td></tr> <tr class="separator:ad01ad5ea3003064b00516dad191d3499"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a32012be0814bbc611963517e482d1111"><td class="memItemLeft" align="right" valign="top">UINT64 </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"> </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"> </td></tr> <tr class="memitem:a5409bc51f3d922d43b5bcad3b8f2c8aa"><td class="memItemLeft" align="right" valign="top">UINT64 </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"> </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"> </td></tr> <tr class="memitem:a17309ba6d30988bf1e6d02ea51a55825"><td class="memItemLeft" align="right" valign="top">UINT64 </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"> </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"> </td></tr> <tr class="memitem:a6f4684ae62c14fcf22ff29e7ac8f5bc2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCEncoder_1_1CMacroBlock.html">CMacroBlock</a> ** </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"> </td><td class="mdescRight">array of macroblocks <a href="#a6f4684ae62c14fcf22ff29e7ac8f5bc2">More...</a><br /></td></tr> <tr class="separator:a6f4684ae62c14fcf22ff29e7ac8f5bc2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aeed23492e6a3d093c919708da3cc04d2"><td class="memItemLeft" align="right" valign="top">int </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"> </td><td class="mdescRight">array length <a href="#aeed23492e6a3d093c919708da3cc04d2">More...</a><br /></td></tr> <tr class="separator:aeed23492e6a3d093c919708da3cc04d2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aac446c96d95a90bb005019aef2d18284"><td class="memItemLeft" align="right" valign="top">int </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"> </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"> </td></tr> <tr class="memitem:a55d6f2b3aeea93c52bd0a39af9f5db8b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCEncoder_1_1CMacroBlock.html">CMacroBlock</a> * </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"> </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"> </td></tr> <tr class="memitem:a6eba5be82f05684ca2574f36f8945717"><td class="memItemLeft" align="right" valign="top">UINT32 * </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"> </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"> </td></tr> <tr class="memitem:a883026518a92ae6ed2aad8c9ed459b12"><td class="memItemLeft" align="right" valign="top">int </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"> </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"> </td></tr> <tr class="memitem:a821892e5cf7a82b43898bc4e15717bfb"><td class="memItemLeft" align="right" valign="top">UINT8 </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"> </td><td class="mdescRight">number of levels <a href="#a821892e5cf7a82b43898bc4e15717bfb">More...</a><br /></td></tr> <tr class="separator:a821892e5cf7a82b43898bc4e15717bfb"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1d51c113f3f7f4f2c94bd7a8c05c12ee"><td class="memItemLeft" align="right" valign="top">bool </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"> </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"> </td></tr> <tr class="memitem:a52d2d5a49f3f6994f67cae1e2176f968"><td class="memItemLeft" align="right" valign="top">bool </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"> </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"> </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 & Destructor Documentation</h2> <a id="ad4abed11dca812bdb0d2f9715e6de4da"></a> <h2 class="memtitle"><span class="permalink"><a href="#ad4abed11dca812bdb0d2f9715e6de4da">◆ </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> * </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> </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> </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> & </td> <td class="paramname"><em>postHeader</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">UINT64 & </td> <td class="paramname"><em>userDataPos</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"><em>useOMP</em> </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> : <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>(stream)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> , <a class="code" href="classCEncoder.html#a17309ba6d30988bf1e6d02ea51a55825">m_bufferStartPos</a>(0)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> , <a class="code" href="classCEncoder.html#a883026518a92ae6ed2aad8c9ed459b12">m_currLevelIndex</a>(0)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> , <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> , <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> , <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> <span class="preprocessor">#ifdef __PGFROISUPPORT__</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> , m_roi(<span class="keyword">false</span>)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  ASSERT(<a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordtype">int</span> count;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="comment">// set number of threads</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor">#ifdef LIBPGF_USE_OPENMP</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <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> <span class="preprocessor">#else</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="classCEncoder.html#aeed23492e6a3d093c919708da3cc04d2">m_macroBlockLen</a> = 1;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  </div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">if</span> (useOMP && <a class="code" href="classCEncoder.html#aeed23492e6a3d093c919708da3cc04d2">m_macroBlockLen</a> > 1) {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#ifdef LIBPGF_USE_OPENMP</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="comment">// create macro block array</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <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>  <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>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i < <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>  <a class="code" href="classCEncoder.html#aac446c96d95a90bb005019aef2d18284">m_lastMacroBlock</a> = 0;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <a class="code" href="classCEncoder.html#a6f4684ae62c14fcf22ff29e7ac8f5bc2">m_macroBlocks</a> = 0;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  m_macroBlockLen = 1;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <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>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="comment">// save file position</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="classCEncoder.html#a32012be0814bbc611963517e482d1111">m_startPosition</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="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="comment">// write preHeader</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  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>  count = <a class="code" href="PGFtypes_8h.html#a2d0d92eaf21df36fc0292fc6780dac97">PreHeaderSize</a>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&count, &preHeader);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// write file header</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  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>  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>  count = <a class="code" href="PGFtypes_8h.html#a36882df0caa9057f3144aeb429a2d468">HeaderSize</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&count, &header);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">// write postHeader</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <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>  <span class="comment">// write color table</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  count = <a class="code" href="PGFtypes_8h.html#a50366374d6b8b02c5314f67cdd5aba9b">ColorTableSize</a>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&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>  }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// save user data file position</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  userDataPos = <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="l00130"></a><span class="lineno"> 130</span>  <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>  <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>  <span class="comment">// write user data</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  count = postHeader.<a class="code" href="structPGFPostHeader.html#a0fb630d6cd14ed865dd5fe20227279f2">userDataLen</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&count, postHeader.<a class="code" href="structPGFPostHeader.html#aeeb6e57e8343eb3d42406f0baf3ae6e1">userData</a>);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a69be67d4b04cd056c4f74d8147349a16">SetPos</a>(FSFromCurrent, count);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// save level length file position</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="classCEncoder.html#a5409bc51f3d922d43b5bcad3b8f2c8aa">m_levelLengthPos</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="l00142"></a><span class="lineno"> 142</span> }</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&#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">◆ </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>  { </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <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>  <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> }</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">◆ </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> { <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="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">◆ </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> { <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">◆ </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> { <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="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">◆ </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> </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>  {</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  ASSERT(<a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="preprocessor">#ifdef __PGFROISUPPORT__</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  ASSERT(m_roi && 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> || 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> <span class="preprocessor">#else</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  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> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-><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> </div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="comment">// macro block management</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <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>  <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-><a class="code" href="classCEncoder_1_1CMacroBlock.html#af95842ac15879ab2b3a9b5232bb4f1a5">BitplaneEncode</a>();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <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>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="comment">// save last level index</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordtype">int</span> lastLevelIndex = <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-><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> </div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <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>  <span class="comment">// encode macro blocks</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="comment">/*</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span> <span class="comment"> volatile OSError error = NoError;</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="comment"> #pragma omp parallel for ordered default(shared)</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="comment"> for (int i=0; i < m_lastMacroBlock; i++) {</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="comment"> if (error == NoError) {</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="comment"> m_macroBlocks[i]->BitplaneEncode();</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="comment"> #pragma omp ordered</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="comment"> {</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="comment"> try {</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="comment"> WriteMacroBlock(m_macroBlocks[i]);</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="comment"> } catch (IOException& e) {</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="comment"> error = e.error;</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="comment"> }</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> <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> <span class="comment"> }</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="comment"> }</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> <span class="comment"> }</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> <span class="comment"> if (error != NoError) ReturnWithError(error);</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="comment"> */</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> <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>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i < <a class="code" href="classCEncoder.html#aac446c96d95a90bb005019aef2d18284">m_lastMacroBlock</a>; i++) {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <a class="code" href="classCEncoder.html#a6f4684ae62c14fcf22ff29e7ac8f5bc2">m_macroBlocks</a>[i]-><a class="code" href="classCEncoder_1_1CMacroBlock.html#af95842ac15879ab2b3a9b5232bb4f1a5">BitplaneEncode</a>();</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  }</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i < <a class="code" href="classCEncoder.html#aac446c96d95a90bb005019aef2d18284">m_lastMacroBlock</a>; i++) {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <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>  }</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  </div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="comment">// prepare for next round</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <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>  m_lastMacroBlock = 0;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  <span class="comment">// re-initialize macro block</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <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>  <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-><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>  }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> }</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">◆ </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> { <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">◆ </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>  {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">if</span> (<a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-><a class="code" href="classCEncoder_1_1CMacroBlock.html#a7ab47e29ad9e3397869fdfb50b53e035">m_valuePos</a> > 0) {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="comment">// pad buffer with zeros</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  memset(&(<a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-><a class="code" href="classCEncoder_1_1CMacroBlock.html#a139b60f3f0d76b9158573e4d897423d6">m_value</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="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a> - <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#adbb49c2b6ab931f68f08a8dc1141727d">DataTSize</a>);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <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>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="comment">// encode buffer</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <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>  <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="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> }</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">◆ </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> * </td> <td class="paramname"><em>band</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>width</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>height</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>startPos</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>pitch</em> </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>  {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  ASSERT(band);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <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>  <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>  <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>  <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>  <span class="keywordtype">int</span> pos, base = startPos, base2;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="comment">// main height</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i < hh.quot; i++) {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="comment">// main width</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  base2 = base;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0; j < ww.quot; j++) {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  pos = base2;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> y=0; y < <a class="code" href="PGFtypes_8h.html#a61836e33582e5be91af7d9d7004dad7d">LinBlockSize</a>; y++) {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x=0; x < <a class="code" href="PGFtypes_8h.html#a61836e33582e5be91af7d9d7004dad7d">LinBlockSize</a>; x++) {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <a class="code" href="classCEncoder.html#a75534facc647f53982bcfd72c1caa540">WriteValue</a>(band, pos);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  pos++;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  pos += ws;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  base2 += <a class="code" href="PGFtypes_8h.html#a61836e33582e5be91af7d9d7004dad7d">LinBlockSize</a>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="comment">// rest of width</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  pos = base2;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> y=0; y < <a class="code" href="PGFtypes_8h.html#a61836e33582e5be91af7d9d7004dad7d">LinBlockSize</a>; y++) {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x=0; x < ww.rem; x++) {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="classCEncoder.html#a75534facc647f53982bcfd72c1caa540">WriteValue</a>(band, pos);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  pos++;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  pos += wr;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  base += pitch;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  }</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="comment">// main width </span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  base2 = base;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0; j < ww.quot; j++) {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// rest of height</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  pos = base2;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> y=0; y < hh.rem; y++) {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x=0; x < <a class="code" href="PGFtypes_8h.html#a61836e33582e5be91af7d9d7004dad7d">LinBlockSize</a>; x++) {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <a class="code" href="classCEncoder.html#a75534facc647f53982bcfd72c1caa540">WriteValue</a>(band, pos);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  pos++;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  pos += ws;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  base2 += <a class="code" href="PGFtypes_8h.html#a61836e33582e5be91af7d9d7004dad7d">LinBlockSize</a>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="comment">// rest of height</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  pos = base2;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> y=0; y < hh.rem; y++) {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="comment">// rest of width</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x=0; x < ww.rem; x++) {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <a class="code" href="classCEncoder.html#a75534facc647f53982bcfd72c1caa540">WriteValue</a>(band, pos);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  pos++;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  pos += wr;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  }</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> }</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">◆ </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> { <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="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">◆ </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 </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> { 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="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">◆ </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>  {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  UINT64 curPos = <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><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> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="comment">// set file pos to levelLength</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><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> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <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> <span class="preprocessor"> #ifdef PGF_USE_BIG_ENDIAN </span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  UINT32 levelLength;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <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>  </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i < <a class="code" href="classCEncoder.html#a883026518a92ae6ed2aad8c9ed459b12">m_currLevelIndex</a>; i++) {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  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>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&count, &levelLength);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="preprocessor"> #else</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <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>  </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&count, <a class="code" href="classCEncoder.html#a6eba5be82f05684ca2574f36f8945717">m_levelLength</a>);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="preprocessor"> #endif //PGF_USE_BIG_ENDIAN </span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <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>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a69be67d4b04cd056c4f74d8147349a16">SetPos</a>(FSFromCurrent, count);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="comment">// begin of image</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  UINT32 retValue = UINT32(curPos - <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="l00224"></a><span class="lineno"> 224</span>  </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="comment">// restore file position</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a69be67d4b04cd056c4f74d8147349a16">SetPos</a>(FSFromStart, curPos);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">return</span> retValue;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> }</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">◆ </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> </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>  {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  UINT64 curPos = <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><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>  <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> </div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// write preHeader</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><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>  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>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&count, &preHeader);</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a69be67d4b04cd056c4f74d8147349a16">SetPos</a>(FSFromStart, curPos);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span> }</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">◆ </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 *& </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>  {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// renew levelLength</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keyword">delete</span>[] levelLength;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  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>  <span class="keywordflow">if</span> (!levelLength) ReturnWithError(InsufficientMemory);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">for</span> (UINT8 l = 0; l < <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>  <a class="code" href="classCEncoder.html#a6eba5be82f05684ca2574f36f8945717">m_levelLength</a> = levelLength;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">// save level length file position</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="classCEncoder.html#a5409bc51f3d922d43b5bcad3b8f2c8aa">m_levelLengthPos</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="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// write dummy levelLength</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <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>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&count, <a class="code" href="classCEncoder.html#a6eba5be82f05684ca2574f36f8945717">m_levelLength</a>);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">// save current file position</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <a class="code" href="classCEncoder.html#a0b2fefcc1d7c95b14e62c71caa1e4fdb">SetBufferStartPos</a>();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">return</span> count;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> }</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">◆ </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> * </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>  {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  ASSERT(block);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> </div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <a class="code" href="unionROIBlockHeader.html">ROIBlockHeader</a> h = block->m_header;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  UINT16 wordLen = UINT16(<a class="code" href="BitStream_8h.html#aec0f6865df9443d08000c0fe4d446031">NumberOfWords</a>(block->m_codePos)); ASSERT(wordLen <= <a class="code" href="Decoder_8h.html#a05a74e73e6c734fcad194efbca053ed5">CodeBufferLen</a>);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <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>  </div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span> <span class="preprocessor">#ifdef TRACE</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="comment">//UINT32 filePos = (UINT32)m_stream->GetPos();</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="comment">//printf("EncodeBuffer: %d\n", filePos);</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> </div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="preprocessor">#ifdef PGF_USE_BIG_ENDIAN </span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="comment">// write wordLen</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  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>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&count, &wl); ASSERT(count == <span class="keyword">sizeof</span>(UINT16));</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="preprocessor">#ifdef __PGFROISUPPORT__</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="comment">// write ROIBlockHeader</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">if</span> (m_roi) {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  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>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&count, &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>  }</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> <span class="preprocessor">#endif // __PGFROISUPPORT__</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="comment">// convert data</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i < wordLen; i++) {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  block->m_codeBuffer[i] = <a class="code" href="PGFplatform_8h.html#ab45d30e0f7f4c42f39a63f436cb16f52">__VAL</a>(block->m_codeBuffer[i]);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <span class="comment">// write wordLen</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&count, &wordLen); ASSERT(count == <span class="keyword">sizeof</span>(UINT16));</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> </div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <span class="preprocessor">#ifdef __PGFROISUPPORT__</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="comment">// write ROIBlockHeader</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">if</span> (m_roi) {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&count, &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>  }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="preprocessor">#endif // __PGFROISUPPORT__</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> <span class="preprocessor">#endif // PGF_USE_BIG_ENDIAN</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="comment">// write encoded data into stream</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  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>  <a class="code" href="classCEncoder.html#ad01ad5ea3003064b00516dad191d3499">m_stream</a>-><a class="code" href="classCPGFStream.html#a0a46ae977995134787219288f4123134">Write</a>(&count, block->m_codeBuffer);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span> </div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="comment">// store levelLength</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <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>  <span class="comment">// store level length</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <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>  ASSERT(<a class="code" href="classCEncoder.html#a883026518a92ae6ed2aad8c9ed459b12">m_currLevelIndex</a> < <a class="code" href="classCEncoder.html#a821892e5cf7a82b43898bc4e15717bfb">m_nLevels</a>);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <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>  <a class="code" href="classCEncoder.html#a883026518a92ae6ed2aad8c9ed459b12">m_currLevelIndex</a> = block->m_lastLevelIndex + 1;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  }</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> </div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="comment">// prepare for next buffer</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <a class="code" href="classCEncoder.html#a0b2fefcc1d7c95b14e62c71caa1e4fdb">SetBufferStartPos</a>();</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="comment">// reset values</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  block->m_valuePos = 0;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  block->m_maxAbsValue = 0;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> }</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 > 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">◆ </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> * </td> <td class="paramname"><em>band</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>bandPos</em> </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>  {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">if</span> (<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>) {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <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>  }</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <a class="code" href="PGFtypes_8h.html#acb1ee3f52ccfad782dcaa0abd79e5d05">DataT</a> val = <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-><a class="code" href="classCEncoder_1_1CMacroBlock.html#a139b60f3f0d76b9158573e4d897423d6">m_value</a>[<a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-><a class="code" href="classCEncoder_1_1CMacroBlock.html#a7ab47e29ad9e3397869fdfb50b53e035">m_valuePos</a>++] = band-><a class="code" href="classCSubband.html#af3b0eb40a0887219e6caaeb5cb394f63">GetData</a>(bandPos);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  UINT32 v = abs(val);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">if</span> (v > <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-><a class="code" href="classCEncoder_1_1CMacroBlock.html#a865f294ffa568a165224c2105bf1bb01">m_maxAbsValue</a>) <a class="code" href="classCEncoder.html#a55d6f2b3aeea93c52bd0a39af9f5db8b">m_currentBlock</a>-><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> }</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">◆ </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">◆ </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">◆ </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">◆ </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">◆ </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">◆ </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">◆ </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">◆ </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">◆ </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">◆ </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">◆ </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">◆ </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">◆ </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>