Sophie

Sophie

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

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

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

<p>A macro block is a decoding unit of fixed size (uncoded)  
 <a href="classCDecoder_1_1CMacroBlock.html#details">More...</a></p>
<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:a023a230fc23472478e5429cef5ec4be4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCDecoder_1_1CMacroBlock.html#a023a230fc23472478e5429cef5ec4be4">CMacroBlock</a> (<a class="el" href="classCDecoder.html">CDecoder</a> *decoder)</td></tr>
<tr class="separator:a023a230fc23472478e5429cef5ec4be4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0425cb162ca41e04f6ae0886a62b3cc9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCDecoder_1_1CMacroBlock.html#a0425cb162ca41e04f6ae0886a62b3cc9">IsCompletelyRead</a> () const</td></tr>
<tr class="separator:a0425cb162ca41e04f6ae0886a62b3cc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a72899e368b29833bd485c4858b5ad7ef"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCDecoder_1_1CMacroBlock.html#a72899e368b29833bd485c4858b5ad7ef">BitplaneDecode</a> ()</td></tr>
<tr class="separator:a72899e368b29833bd485c4858b5ad7ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a19247bd5e6073252c45abf9d33b44ee0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="unionROIBlockHeader.html">ROIBlockHeader</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCDecoder_1_1CMacroBlock.html#a19247bd5e6073252c45abf9d33b44ee0">m_header</a></td></tr>
<tr class="memdesc:a19247bd5e6073252c45abf9d33b44ee0"><td class="mdescLeft">&#160;</td><td class="mdescRight">block header  <a href="#a19247bd5e6073252c45abf9d33b44ee0">More...</a><br /></td></tr>
<tr class="separator:a19247bd5e6073252c45abf9d33b44ee0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7722de1000647fb5a894db2e2f348bdd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="PGFtypes_8h.html#acb1ee3f52ccfad782dcaa0abd79e5d05">DataT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCDecoder_1_1CMacroBlock.html#a7722de1000647fb5a894db2e2f348bdd">m_value</a> [<a class="el" href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a>]</td></tr>
<tr class="memdesc:a7722de1000647fb5a894db2e2f348bdd"><td class="mdescLeft">&#160;</td><td class="mdescRight">output buffer of values with index m_valuePos  <a href="#a7722de1000647fb5a894db2e2f348bdd">More...</a><br /></td></tr>
<tr class="separator:a7722de1000647fb5a894db2e2f348bdd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace0702d7f8281972b1db091248c3c80b"><td class="memItemLeft" align="right" valign="top">UINT32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a> [<a class="el" href="Encoder_8h.html#a05a74e73e6c734fcad194efbca053ed5">CodeBufferLen</a>]</td></tr>
<tr class="memdesc:ace0702d7f8281972b1db091248c3c80b"><td class="mdescLeft">&#160;</td><td class="mdescRight">input buffer for encoded bitstream  <a href="#ace0702d7f8281972b1db091248c3c80b">More...</a><br /></td></tr>
<tr class="separator:ace0702d7f8281972b1db091248c3c80b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38f42e9e2d5ac8387db0122aecac79be"><td class="memItemLeft" align="right" valign="top">UINT32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCDecoder_1_1CMacroBlock.html#a38f42e9e2d5ac8387db0122aecac79be">m_valuePos</a></td></tr>
<tr class="memdesc:a38f42e9e2d5ac8387db0122aecac79be"><td class="mdescLeft">&#160;</td><td class="mdescRight">current position in m_value  <a href="#a38f42e9e2d5ac8387db0122aecac79be">More...</a><br /></td></tr>
<tr class="separator:a38f42e9e2d5ac8387db0122aecac79be"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:a580e46028e0104de8d6afab733c8b679"><td class="memItemLeft" align="right" valign="top">UINT32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCDecoder_1_1CMacroBlock.html#a580e46028e0104de8d6afab733c8b679">ComposeBitplane</a> (UINT32 bufferSize, <a class="el" href="PGFtypes_8h.html#acb1ee3f52ccfad782dcaa0abd79e5d05">DataT</a> planeMask, UINT32 *sigBits, UINT32 *refBits, UINT32 *signBits)</td></tr>
<tr class="separator:a580e46028e0104de8d6afab733c8b679"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6e8f0dedcdeb9e592de7dde07b5025e"><td class="memItemLeft" align="right" valign="top">UINT32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCDecoder_1_1CMacroBlock.html#aa6e8f0dedcdeb9e592de7dde07b5025e">ComposeBitplaneRLD</a> (UINT32 bufferSize, <a class="el" href="PGFtypes_8h.html#acb1ee3f52ccfad782dcaa0abd79e5d05">DataT</a> planeMask, UINT32 sigPos, UINT32 *refBits)</td></tr>
<tr class="separator:aa6e8f0dedcdeb9e592de7dde07b5025e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7de96f745479ca3956f671a7f794489"><td class="memItemLeft" align="right" valign="top">UINT32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCDecoder_1_1CMacroBlock.html#af7de96f745479ca3956f671a7f794489">ComposeBitplaneRLD</a> (UINT32 bufferSize, <a class="el" href="PGFtypes_8h.html#acb1ee3f52ccfad782dcaa0abd79e5d05">DataT</a> planeMask, UINT32 *sigBits, UINT32 *refBits, UINT32 signPos)</td></tr>
<tr class="separator:af7de96f745479ca3956f671a7f794489"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4bf1b6bc026f95ef4d93fbdfaf69f724"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCDecoder_1_1CMacroBlock.html#a4bf1b6bc026f95ef4d93fbdfaf69f724">SetBitAtPos</a> (UINT32 pos, <a class="el" href="PGFtypes_8h.html#acb1ee3f52ccfad782dcaa0abd79e5d05">DataT</a> planeMask)</td></tr>
<tr class="separator:a4bf1b6bc026f95ef4d93fbdfaf69f724"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7fd4539d524903d148ceb4de940d3194"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCDecoder_1_1CMacroBlock.html#a7fd4539d524903d148ceb4de940d3194">SetSign</a> (UINT32 pos, bool sign)</td></tr>
<tr class="separator:a7fd4539d524903d148ceb4de940d3194"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a4a4b0f49967a8fc938295fdcc5093e66"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classCDecoder.html">CDecoder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCDecoder_1_1CMacroBlock.html#a4a4b0f49967a8fc938295fdcc5093e66">m_decoder</a></td></tr>
<tr class="separator:a4a4b0f49967a8fc938295fdcc5093e66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6931769654b397d6c3becae44e868b0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCDecoder_1_1CMacroBlock.html#af6931769654b397d6c3becae44e868b0">m_sigFlagVector</a> [<a class="el" href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a>+1]</td></tr>
<tr class="separator:af6931769654b397d6c3becae44e868b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A macro block is a decoding unit of fixed size (uncoded) </p>
<p>PGF decoder macro block class. </p><dl class="section author"><dt>Author</dt><dd>C. Stamm, I. Bauersachs </dd></dl>

<p class="definition">Definition at line <a class="el" href="Decoder_8h_source.html#l00051">51</a> of file <a class="el" href="Decoder_8h_source.html">Decoder.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a023a230fc23472478e5429cef5ec4be4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a023a230fc23472478e5429cef5ec4be4">&#9670;&nbsp;</a></span>CMacroBlock()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">CDecoder::CMacroBlock::CMacroBlock </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classCDecoder.html">CDecoder</a> *&#160;</td>
          <td class="paramname"><em>decoder</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>Constructor: Initializes new macro block. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">decoder</td><td>Pointer to outer class. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="Decoder_8h_source.html#l00056">56</a> of file <a class="el" href="Decoder_8h_source.html">Decoder.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;                : <a class="code" href="classCDecoder_1_1CMacroBlock.html#a19247bd5e6073252c45abf9d33b44ee0">m_header</a>(0)                                                           <span class="comment">// makes sure that IsCompletelyRead() returns true for an empty macro block</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;                , <a class="code" href="classCDecoder_1_1CMacroBlock.html#a38f42e9e2d5ac8387db0122aecac79be">m_valuePos</a>(0)</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;                , <a class="code" href="classCDecoder_1_1CMacroBlock.html#a4a4b0f49967a8fc938295fdcc5093e66">m_decoder</a>(decoder)</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;                {</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;                        ASSERT(<a class="code" href="classCDecoder_1_1CMacroBlock.html#a4a4b0f49967a8fc938295fdcc5093e66">m_decoder</a>);</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;                }</div><div class="ttc" id="classCDecoder_1_1CMacroBlock_html_a38f42e9e2d5ac8387db0122aecac79be"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#a38f42e9e2d5ac8387db0122aecac79be">CDecoder::CMacroBlock::m_valuePos</a></div><div class="ttdeci">UINT32 m_valuePos</div><div class="ttdoc">current position in m_value </div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00078">Decoder.h:78</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_a19247bd5e6073252c45abf9d33b44ee0"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#a19247bd5e6073252c45abf9d33b44ee0">CDecoder::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="Decoder_8h_source.html#l00075">Decoder.h:75</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_a4a4b0f49967a8fc938295fdcc5093e66"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#a4a4b0f49967a8fc938295fdcc5093e66">CDecoder::CMacroBlock::m_decoder</a></div><div class="ttdeci">CDecoder * m_decoder</div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00087">Decoder.h:87</a></div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a72899e368b29833bd485c4858b5ad7ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a72899e368b29833bd485c4858b5ad7ef">&#9670;&nbsp;</a></span>BitplaneDecode()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CDecoder::CMacroBlock::BitplaneDecode </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Decodes already read input data into this macro block. Several macro blocks can be decoded in parallel. Call <a class="el" href="classCDecoder.html#a63cfb5880877780be5e9e10a33dcedf0" title="throws IOException ">CDecoder::ReadMacroBlock</a> before this method. </p>

<p class="definition">Definition at line <a class="el" href="Decoder_8cpp_source.html#l00619">619</a> of file <a class="el" href="Decoder_8cpp_source.html">Decoder.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;                                         {</div><div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;        UINT32 bufferSize = <a class="code" href="classCDecoder_1_1CMacroBlock.html#a19247bd5e6073252c45abf9d33b44ee0">m_header</a>.<a class="code" href="unionROIBlockHeader.html#a15ceb2e488c3767cc1ab774323c02ded">rbh</a>.<a class="code" href="structROIBlockHeader_1_1RBH.html#af0c3de8c247b06116a9d84d2f9515762">bufferSize</a>; ASSERT(bufferSize &lt;= <a class="code" href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a>);</div><div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;</div><div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;        UINT32 nPlanes;</div><div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;        UINT32 codePos = 0, codeLen, sigLen, sigPos, signLen, signPos;</div><div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;        <a class="code" href="PGFtypes_8h.html#acb1ee3f52ccfad782dcaa0abd79e5d05">DataT</a> planeMask;</div><div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;</div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;        <span class="comment">// clear significance vector</span></div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;        <span class="keywordflow">for</span> (UINT32 k=0; k &lt; bufferSize; k++) {</div><div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;                <a class="code" href="classCDecoder_1_1CMacroBlock.html#af6931769654b397d6c3becae44e868b0">m_sigFlagVector</a>[k] = <span class="keyword">false</span>;</div><div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;        }</div><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;        <a class="code" href="classCDecoder_1_1CMacroBlock.html#af6931769654b397d6c3becae44e868b0">m_sigFlagVector</a>[bufferSize] = <span class="keyword">true</span>; <span class="comment">// sentinel</span></div><div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;</div><div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;        <span class="comment">// clear output buffer</span></div><div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;        <span class="keywordflow">for</span> (UINT32 k=0; k &lt; <a class="code" href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a>; k++) {</div><div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;                <a class="code" href="classCDecoder_1_1CMacroBlock.html#a7722de1000647fb5a894db2e2f348bdd">m_value</a>[k] = 0;</div><div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;        }</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;</div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;        <span class="comment">// read number of bit planes</span></div><div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;        <span class="comment">// &lt;nPlanes&gt;</span></div><div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;        nPlanes = <a class="code" href="BitStream_8h.html#a9ce8e37cd9f9d07d4a91094472a0fc5a">GetValueBlock</a>(<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>, 0, <a class="code" href="PGFtypes_8h.html#a0acbc7f581c1eceef6a70713308987d5">MaxBitPlanesLog</a>); </div><div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;        codePos += <a class="code" href="PGFtypes_8h.html#a0acbc7f581c1eceef6a70713308987d5">MaxBitPlanesLog</a>;</div><div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;</div><div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;        <span class="comment">// loop through all bit planes</span></div><div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;        <span class="keywordflow">if</span> (nPlanes == 0) nPlanes = <a class="code" href="PGFtypes_8h.html#ae0625b6a0d1a8187599a680c6b559860">MaxBitPlanes</a> + 1;</div><div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;        ASSERT(0 &lt; nPlanes &amp;&amp; nPlanes &lt;= <a class="code" href="PGFtypes_8h.html#ae0625b6a0d1a8187599a680c6b559860">MaxBitPlanes</a> + 1);</div><div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;        planeMask = 1 &lt;&lt; (nPlanes - 1);</div><div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;</div><div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;        <span class="keywordflow">for</span> (<span class="keywordtype">int</span> plane = nPlanes - 1; plane &gt;= 0; plane--) {</div><div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;                <span class="comment">// read RL code</span></div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;                <span class="keywordflow">if</span> (<a class="code" href="BitStream_8h.html#a69b4aa39485781bde435f86fd4851c0e">GetBit</a>(<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>, codePos)) {</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;                        <span class="comment">// RL coding of sigBits is used</span></div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;                        <span class="comment">// &lt;1&gt;&lt;codeLen&gt;&lt;codedSigAndSignBits&gt;_&lt;refBits&gt;</span></div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;                        codePos++;</div><div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;</div><div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;                        <span class="comment">// read codeLen</span></div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;                        codeLen = <a class="code" href="BitStream_8h.html#a9ce8e37cd9f9d07d4a91094472a0fc5a">GetValueBlock</a>(<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>, codePos, <a class="code" href="PGFtypes_8h.html#ac0d66809e03f0e5939ed8de744700079">RLblockSizeLen</a>); ASSERT(codeLen &lt;= <a class="code" href="Decoder_8cpp.html#add8bd7fd3fbb318e2f76b4ae33cf6020">MaxCodeLen</a>);</div><div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;</div><div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;                        <span class="comment">// position of encoded sigBits and signBits</span></div><div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;                        sigPos = codePos + <a class="code" href="PGFtypes_8h.html#ac0d66809e03f0e5939ed8de744700079">RLblockSizeLen</a>; ASSERT(sigPos &lt; <a class="code" href="Decoder_8cpp.html#abc1529b42b4ec49f6674b24b5b0d0a45">CodeBufferBitLen</a>); </div><div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160;</div><div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;                        <span class="comment">// refinement bits</span></div><div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;                        codePos = <a class="code" href="BitStream_8h.html#a02bb2289d37f806f66c6ba6fd51977a4">AlignWordPos</a>(sigPos + codeLen); ASSERT(codePos &lt; <a class="code" href="Decoder_8cpp.html#abc1529b42b4ec49f6674b24b5b0d0a45">CodeBufferBitLen</a>); </div><div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;</div><div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;                        <span class="comment">// run-length decode significant bits and signs from m_codeBuffer and </span></div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;                        <span class="comment">// read refinement bits from m_codeBuffer and compose bit plane</span></div><div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160;                        sigLen = <a class="code" href="classCDecoder_1_1CMacroBlock.html#aa6e8f0dedcdeb9e592de7dde07b5025e">ComposeBitplaneRLD</a>(bufferSize, planeMask, sigPos, &amp;<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>[codePos &gt;&gt; <a class="code" href="PGFplatform_8h.html#a5e75d7d14aaea5860c612758ef77b687">WordWidthLog</a>]);</div><div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;</div><div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;                        <span class="comment">// no RL coding is used for sigBits and signBits together</span></div><div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;                        <span class="comment">// &lt;0&gt;&lt;sigLen&gt;</span></div><div class="line"><a name="l00670"></a><span class="lineno">  670</span>&#160;                        codePos++;</div><div class="line"><a name="l00671"></a><span class="lineno">  671</span>&#160;</div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;                        <span class="comment">// read sigLen</span></div><div class="line"><a name="l00673"></a><span class="lineno">  673</span>&#160;                        sigLen = <a class="code" href="BitStream_8h.html#a9ce8e37cd9f9d07d4a91094472a0fc5a">GetValueBlock</a>(<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>, codePos, <a class="code" href="PGFtypes_8h.html#ac0d66809e03f0e5939ed8de744700079">RLblockSizeLen</a>); ASSERT(sigLen &lt;= <a class="code" href="Decoder_8cpp.html#add8bd7fd3fbb318e2f76b4ae33cf6020">MaxCodeLen</a>);</div><div class="line"><a name="l00674"></a><span class="lineno">  674</span>&#160;                        codePos += <a class="code" href="PGFtypes_8h.html#ac0d66809e03f0e5939ed8de744700079">RLblockSizeLen</a>; ASSERT(codePos &lt; <a class="code" href="Decoder_8cpp.html#abc1529b42b4ec49f6674b24b5b0d0a45">CodeBufferBitLen</a>);</div><div class="line"><a name="l00675"></a><span class="lineno">  675</span>&#160;</div><div class="line"><a name="l00676"></a><span class="lineno">  676</span>&#160;                        <span class="comment">// read RL code for signBits</span></div><div class="line"><a name="l00677"></a><span class="lineno">  677</span>&#160;                        <span class="keywordflow">if</span> (<a class="code" href="BitStream_8h.html#a69b4aa39485781bde435f86fd4851c0e">GetBit</a>(<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>, codePos)) {</div><div class="line"><a name="l00678"></a><span class="lineno">  678</span>&#160;                                <span class="comment">// RL coding is used just for signBits</span></div><div class="line"><a name="l00679"></a><span class="lineno">  679</span>&#160;                                <span class="comment">// &lt;1&gt;&lt;codeLen&gt;&lt;codedSignBits&gt;_&lt;sigBits&gt;_&lt;refBits&gt;</span></div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;                                codePos++;</div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;</div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;                                <span class="comment">// read codeLen</span></div><div class="line"><a name="l00683"></a><span class="lineno">  683</span>&#160;                                codeLen = <a class="code" href="BitStream_8h.html#a9ce8e37cd9f9d07d4a91094472a0fc5a">GetValueBlock</a>(<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>, codePos, <a class="code" href="PGFtypes_8h.html#ac0d66809e03f0e5939ed8de744700079">RLblockSizeLen</a>); ASSERT(codeLen &lt;= <a class="code" href="Decoder_8cpp.html#add8bd7fd3fbb318e2f76b4ae33cf6020">MaxCodeLen</a>);</div><div class="line"><a name="l00684"></a><span class="lineno">  684</span>&#160;</div><div class="line"><a name="l00685"></a><span class="lineno">  685</span>&#160;                                <span class="comment">// sign bits</span></div><div class="line"><a name="l00686"></a><span class="lineno">  686</span>&#160;                                signPos = codePos + <a class="code" href="PGFtypes_8h.html#ac0d66809e03f0e5939ed8de744700079">RLblockSizeLen</a>; ASSERT(signPos &lt; <a class="code" href="Decoder_8cpp.html#abc1529b42b4ec49f6674b24b5b0d0a45">CodeBufferBitLen</a>);</div><div class="line"><a name="l00687"></a><span class="lineno">  687</span>&#160;                                </div><div class="line"><a name="l00688"></a><span class="lineno">  688</span>&#160;                                <span class="comment">// significant bits</span></div><div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;                                sigPos = <a class="code" href="BitStream_8h.html#a02bb2289d37f806f66c6ba6fd51977a4">AlignWordPos</a>(signPos + codeLen); ASSERT(sigPos &lt; <a class="code" href="Decoder_8cpp.html#abc1529b42b4ec49f6674b24b5b0d0a45">CodeBufferBitLen</a>);</div><div class="line"><a name="l00690"></a><span class="lineno">  690</span>&#160;</div><div class="line"><a name="l00691"></a><span class="lineno">  691</span>&#160;                                <span class="comment">// refinement bits</span></div><div class="line"><a name="l00692"></a><span class="lineno">  692</span>&#160;                                codePos = <a class="code" href="BitStream_8h.html#a02bb2289d37f806f66c6ba6fd51977a4">AlignWordPos</a>(sigPos + sigLen); ASSERT(codePos &lt; <a class="code" href="Decoder_8cpp.html#abc1529b42b4ec49f6674b24b5b0d0a45">CodeBufferBitLen</a>);</div><div class="line"><a name="l00693"></a><span class="lineno">  693</span>&#160;</div><div class="line"><a name="l00694"></a><span class="lineno">  694</span>&#160;                                <span class="comment">// read significant and refinement bitset from m_codeBuffer</span></div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;                                sigLen = <a class="code" href="classCDecoder_1_1CMacroBlock.html#aa6e8f0dedcdeb9e592de7dde07b5025e">ComposeBitplaneRLD</a>(bufferSize, planeMask, &amp;<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>[sigPos &gt;&gt; <a class="code" href="PGFplatform_8h.html#a5e75d7d14aaea5860c612758ef77b687">WordWidthLog</a>], &amp;<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>[codePos &gt;&gt; <a class="code" href="PGFplatform_8h.html#a5e75d7d14aaea5860c612758ef77b687">WordWidthLog</a>], signPos);</div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;                        </div><div class="line"><a name="l00697"></a><span class="lineno">  697</span>&#160;                        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00698"></a><span class="lineno">  698</span>&#160;                                <span class="comment">// RL coding of signBits was not efficient and therefore not used</span></div><div class="line"><a name="l00699"></a><span class="lineno">  699</span>&#160;                                <span class="comment">// &lt;0&gt;&lt;signLen&gt;_&lt;signBits&gt;_&lt;sigBits&gt;_&lt;refBits&gt;</span></div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;                                codePos++;</div><div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;</div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;                                <span class="comment">// read signLen</span></div><div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;                                signLen = <a class="code" href="BitStream_8h.html#a9ce8e37cd9f9d07d4a91094472a0fc5a">GetValueBlock</a>(<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>, codePos, <a class="code" href="PGFtypes_8h.html#ac0d66809e03f0e5939ed8de744700079">RLblockSizeLen</a>); ASSERT(signLen &lt;= <a class="code" href="Decoder_8cpp.html#add8bd7fd3fbb318e2f76b4ae33cf6020">MaxCodeLen</a>);</div><div class="line"><a name="l00704"></a><span class="lineno">  704</span>&#160;                                </div><div class="line"><a name="l00705"></a><span class="lineno">  705</span>&#160;                                <span class="comment">// sign bits</span></div><div class="line"><a name="l00706"></a><span class="lineno">  706</span>&#160;                                signPos = <a class="code" href="BitStream_8h.html#a02bb2289d37f806f66c6ba6fd51977a4">AlignWordPos</a>(codePos + <a class="code" href="PGFtypes_8h.html#ac0d66809e03f0e5939ed8de744700079">RLblockSizeLen</a>); ASSERT(signPos &lt; <a class="code" href="Decoder_8cpp.html#abc1529b42b4ec49f6674b24b5b0d0a45">CodeBufferBitLen</a>);</div><div class="line"><a name="l00707"></a><span class="lineno">  707</span>&#160;</div><div class="line"><a name="l00708"></a><span class="lineno">  708</span>&#160;                                <span class="comment">// significant bits</span></div><div class="line"><a name="l00709"></a><span class="lineno">  709</span>&#160;                                sigPos = <a class="code" href="BitStream_8h.html#a02bb2289d37f806f66c6ba6fd51977a4">AlignWordPos</a>(signPos + signLen); ASSERT(sigPos &lt; <a class="code" href="Decoder_8cpp.html#abc1529b42b4ec49f6674b24b5b0d0a45">CodeBufferBitLen</a>);</div><div class="line"><a name="l00710"></a><span class="lineno">  710</span>&#160;</div><div class="line"><a name="l00711"></a><span class="lineno">  711</span>&#160;                                <span class="comment">// refinement bits</span></div><div class="line"><a name="l00712"></a><span class="lineno">  712</span>&#160;                                codePos = <a class="code" href="BitStream_8h.html#a02bb2289d37f806f66c6ba6fd51977a4">AlignWordPos</a>(sigPos + sigLen); ASSERT(codePos &lt; <a class="code" href="Decoder_8cpp.html#abc1529b42b4ec49f6674b24b5b0d0a45">CodeBufferBitLen</a>);</div><div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;                                <span class="comment">// read significant and refinement bitset from m_codeBuffer</span></div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;                                sigLen = <a class="code" href="classCDecoder_1_1CMacroBlock.html#a580e46028e0104de8d6afab733c8b679">ComposeBitplane</a>(bufferSize, planeMask, &amp;<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>[sigPos &gt;&gt; <a class="code" href="PGFplatform_8h.html#a5e75d7d14aaea5860c612758ef77b687">WordWidthLog</a>], &amp;<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>[codePos &gt;&gt; <a class="code" href="PGFplatform_8h.html#a5e75d7d14aaea5860c612758ef77b687">WordWidthLog</a>], &amp;<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>[signPos &gt;&gt; <a class="code" href="PGFplatform_8h.html#a5e75d7d14aaea5860c612758ef77b687">WordWidthLog</a>]);</div><div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;                        }</div><div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;                }</div><div class="line"><a name="l00718"></a><span class="lineno">  718</span>&#160;</div><div class="line"><a name="l00719"></a><span class="lineno">  719</span>&#160;                <span class="comment">// start of next chunk</span></div><div class="line"><a name="l00720"></a><span class="lineno">  720</span>&#160;                codePos = <a class="code" href="BitStream_8h.html#a02bb2289d37f806f66c6ba6fd51977a4">AlignWordPos</a>(codePos + bufferSize - sigLen); ASSERT(codePos &lt; <a class="code" href="Decoder_8cpp.html#abc1529b42b4ec49f6674b24b5b0d0a45">CodeBufferBitLen</a>); </div><div class="line"><a name="l00721"></a><span class="lineno">  721</span>&#160;                </div><div class="line"><a name="l00722"></a><span class="lineno">  722</span>&#160;                <span class="comment">// next plane</span></div><div class="line"><a name="l00723"></a><span class="lineno">  723</span>&#160;                planeMask &gt;&gt;= 1;</div><div class="line"><a name="l00724"></a><span class="lineno">  724</span>&#160;        }</div><div class="line"><a name="l00725"></a><span class="lineno">  725</span>&#160;</div><div class="line"><a name="l00726"></a><span class="lineno">  726</span>&#160;        <a class="code" href="classCDecoder_1_1CMacroBlock.html#a38f42e9e2d5ac8387db0122aecac79be">m_valuePos</a> = 0;</div><div class="line"><a name="l00727"></a><span class="lineno">  727</span>&#160;}</div><div class="ttc" id="BitStream_8h_html_a69b4aa39485781bde435f86fd4851c0e"><div class="ttname"><a href="BitStream_8h.html#a69b4aa39485781bde435f86fd4851c0e">GetBit</a></div><div class="ttdeci">bool GetBit(UINT32 *stream, UINT32 pos)</div><div class="ttdef"><b>Definition:</b> <a href="BitStream_8h_source.html#l00065">BitStream.h:65</a></div></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="classCDecoder_1_1CMacroBlock_html_a580e46028e0104de8d6afab733c8b679"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#a580e46028e0104de8d6afab733c8b679">CDecoder::CMacroBlock::ComposeBitplane</a></div><div class="ttdeci">UINT32 ComposeBitplane(UINT32 bufferSize, DataT planeMask, UINT32 *sigBits, UINT32 *refBits, UINT32 *signBits)</div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8cpp_source.html#l00734">Decoder.cpp:734</a></div></div>
<div class="ttc" id="Decoder_8cpp_html_add8bd7fd3fbb318e2f76b4ae33cf6020"><div class="ttname"><a href="Decoder_8cpp.html#add8bd7fd3fbb318e2f76b4ae33cf6020">MaxCodeLen</a></div><div class="ttdeci">#define MaxCodeLen</div><div class="ttdoc">max length of RL encoded block </div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8cpp_source.html#l00059">Decoder.cpp:59</a></div></div>
<div class="ttc" id="BitStream_8h_html_a02bb2289d37f806f66c6ba6fd51977a4"><div class="ttname"><a href="BitStream_8h.html#a02bb2289d37f806f66c6ba6fd51977a4">AlignWordPos</a></div><div class="ttdeci">UINT32 AlignWordPos(UINT32 pos)</div><div class="ttdef"><b>Definition:</b> <a href="BitStream_8h_source.html#l00260">BitStream.h:260</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="classCDecoder_1_1CMacroBlock_html_a38f42e9e2d5ac8387db0122aecac79be"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#a38f42e9e2d5ac8387db0122aecac79be">CDecoder::CMacroBlock::m_valuePos</a></div><div class="ttdeci">UINT32 m_valuePos</div><div class="ttdoc">current position in m_value </div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00078">Decoder.h:78</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_ac0d66809e03f0e5939ed8de744700079"><div class="ttname"><a href="PGFtypes_8h.html#ac0d66809e03f0e5939ed8de744700079">RLblockSizeLen</a></div><div class="ttdeci">#define RLblockSizeLen</div><div class="ttdoc">block size length (&lt; 16): ld(BufferSize) &lt; RLblockSizeLen &lt;= 2*ld(BufferSize) </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00078">PGFtypes.h:78</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_a7722de1000647fb5a894db2e2f348bdd"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#a7722de1000647fb5a894db2e2f348bdd">CDecoder::CMacroBlock::m_value</a></div><div class="ttdeci">DataT m_value[BufferSize]</div><div class="ttdoc">output buffer of values with index m_valuePos </div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00076">Decoder.h:76</a></div></div>
<div class="ttc" id="PGFplatform_8h_html_a5e75d7d14aaea5860c612758ef77b687"><div class="ttname"><a href="PGFplatform_8h.html#a5e75d7d14aaea5860c612758ef77b687">WordWidthLog</a></div><div class="ttdeci">#define WordWidthLog</div><div class="ttdoc">ld of WordWidth </div><div class="ttdef"><b>Definition:</b> <a href="PGFplatform_8h_source.html#l00074">PGFplatform.h:74</a></div></div>
<div class="ttc" id="PGFtypes_8h_html_a0acbc7f581c1eceef6a70713308987d5"><div class="ttname"><a href="PGFtypes_8h.html#a0acbc7f581c1eceef6a70713308987d5">MaxBitPlanesLog</a></div><div class="ttdeci">#define MaxBitPlanesLog</div><div class="ttdoc">number of bits to code the maximum number of bit planes (in 32 or 16 bit mode) </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00086">PGFtypes.h:86</a></div></div>
<div class="ttc" id="BitStream_8h_html_a9ce8e37cd9f9d07d4a91094472a0fc5a"><div class="ttname"><a href="BitStream_8h.html#a9ce8e37cd9f9d07d4a91094472a0fc5a">GetValueBlock</a></div><div class="ttdeci">UINT32 GetValueBlock(UINT32 *stream, UINT32 pos, UINT32 k)</div><div class="ttdef"><b>Definition:</b> <a href="BitStream_8h_source.html#l00128">BitStream.h:128</a></div></div>
<div class="ttc" id="PGFtypes_8h_html_ae0625b6a0d1a8187599a680c6b559860"><div class="ttname"><a href="PGFtypes_8h.html#ae0625b6a0d1a8187599a680c6b559860">MaxBitPlanes</a></div><div class="ttdeci">#define MaxBitPlanes</div><div class="ttdoc">maximum number of bit planes of m_value: 32 minus sign bit </div><div class="ttdef"><b>Definition:</b> <a href="PGFtypes_8h_source.html#l00082">PGFtypes.h:82</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_aa6e8f0dedcdeb9e592de7dde07b5025e"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#aa6e8f0dedcdeb9e592de7dde07b5025e">CDecoder::CMacroBlock::ComposeBitplaneRLD</a></div><div class="ttdeci">UINT32 ComposeBitplaneRLD(UINT32 bufferSize, DataT planeMask, UINT32 sigPos, UINT32 *refBits)</div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8cpp_source.html#l00797">Decoder.cpp:797</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_a19247bd5e6073252c45abf9d33b44ee0"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#a19247bd5e6073252c45abf9d33b44ee0">CDecoder::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="Decoder_8h_source.html#l00075">Decoder.h:75</a></div></div>
<div class="ttc" id="Decoder_8cpp_html_abc1529b42b4ec49f6674b24b5b0d0a45"><div class="ttname"><a href="Decoder_8cpp.html#abc1529b42b4ec49f6674b24b5b0d0a45">CodeBufferBitLen</a></div><div class="ttdeci">#define CodeBufferBitLen</div><div class="ttdoc">max number of bits in m_codeBuffer </div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8cpp_source.html#l00058">Decoder.cpp:58</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_af6931769654b397d6c3becae44e868b0"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#af6931769654b397d6c3becae44e868b0">CDecoder::CMacroBlock::m_sigFlagVector</a></div><div class="ttdeci">bool m_sigFlagVector[BufferSize+1]</div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00088">Decoder.h:88</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_ace0702d7f8281972b1db091248c3c80b"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">CDecoder::CMacroBlock::m_codeBuffer</a></div><div class="ttdeci">UINT32 m_codeBuffer[CodeBufferLen]</div><div class="ttdoc">input buffer for encoded bitstream </div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00077">Decoder.h:77</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a580e46028e0104de8d6afab733c8b679"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a580e46028e0104de8d6afab733c8b679">&#9670;&nbsp;</a></span>ComposeBitplane()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">UINT32 CDecoder::CMacroBlock::ComposeBitplane </td>
          <td>(</td>
          <td class="paramtype">UINT32&#160;</td>
          <td class="paramname"><em>bufferSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="PGFtypes_8h.html#acb1ee3f52ccfad782dcaa0abd79e5d05">DataT</a>&#160;</td>
          <td class="paramname"><em>planeMask</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">UINT32 *&#160;</td>
          <td class="paramname"><em>sigBits</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">UINT32 *&#160;</td>
          <td class="paramname"><em>refBits</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">UINT32 *&#160;</td>
          <td class="paramname"><em>signBits</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</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="Decoder_8cpp_source.html#l00734">734</a> of file <a class="el" href="Decoder_8cpp_source.html">Decoder.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;                                                                                                                                  {</div><div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;        ASSERT(sigBits);</div><div class="line"><a name="l00736"></a><span class="lineno">  736</span>&#160;        ASSERT(refBits);</div><div class="line"><a name="l00737"></a><span class="lineno">  737</span>&#160;        ASSERT(signBits);</div><div class="line"><a name="l00738"></a><span class="lineno">  738</span>&#160;</div><div class="line"><a name="l00739"></a><span class="lineno">  739</span>&#160;        UINT32 valPos = 0, signPos = 0, refPos = 0;</div><div class="line"><a name="l00740"></a><span class="lineno">  740</span>&#160;        UINT32 sigPos = 0, sigEnd;</div><div class="line"><a name="l00741"></a><span class="lineno">  741</span>&#160;        UINT32 zerocnt;</div><div class="line"><a name="l00742"></a><span class="lineno">  742</span>&#160;</div><div class="line"><a name="l00743"></a><span class="lineno">  743</span>&#160;        <span class="keywordflow">while</span> (valPos &lt; bufferSize) {</div><div class="line"><a name="l00744"></a><span class="lineno">  744</span>&#160;                <span class="comment">// search next 1 in m_sigFlagVector using searching with sentinel</span></div><div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;                sigEnd = valPos;</div><div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;                <span class="keywordflow">while</span>(!<a class="code" href="classCDecoder_1_1CMacroBlock.html#af6931769654b397d6c3becae44e868b0">m_sigFlagVector</a>[sigEnd]) { sigEnd++; }</div><div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;                sigEnd -= valPos;</div><div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;                sigEnd += sigPos;</div><div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;</div><div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;                <span class="comment">// search 1&#39;s in sigBits[sigPos..sigEnd)</span></div><div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;                <span class="comment">// these 1&#39;s are significant bits</span></div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;                <span class="keywordflow">while</span> (sigPos &lt; sigEnd) {</div><div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;                        <span class="comment">// search 0&#39;s</span></div><div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;                        zerocnt = <a class="code" href="BitStream_8h.html#ae36276982f7302d827c1345dd6440a8c">SeekBitRange</a>(sigBits, sigPos, sigEnd - sigPos);</div><div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;                        sigPos += zerocnt;</div><div class="line"><a name="l00756"></a><span class="lineno">  756</span>&#160;                        valPos += zerocnt;</div><div class="line"><a name="l00757"></a><span class="lineno">  757</span>&#160;                        <span class="keywordflow">if</span> (sigPos &lt; sigEnd) {</div><div class="line"><a name="l00758"></a><span class="lineno">  758</span>&#160;                                <span class="comment">// write bit to m_value</span></div><div class="line"><a name="l00759"></a><span class="lineno">  759</span>&#160;                                <a class="code" href="classCDecoder_1_1CMacroBlock.html#a4bf1b6bc026f95ef4d93fbdfaf69f724">SetBitAtPos</a>(valPos, planeMask);</div><div class="line"><a name="l00760"></a><span class="lineno">  760</span>&#160;</div><div class="line"><a name="l00761"></a><span class="lineno">  761</span>&#160;                                <span class="comment">// copy sign bit</span></div><div class="line"><a name="l00762"></a><span class="lineno">  762</span>&#160;                                <a class="code" href="classCDecoder_1_1CMacroBlock.html#a7fd4539d524903d148ceb4de940d3194">SetSign</a>(valPos, <a class="code" href="BitStream_8h.html#a69b4aa39485781bde435f86fd4851c0e">GetBit</a>(signBits, signPos++)); </div><div class="line"><a name="l00763"></a><span class="lineno">  763</span>&#160;</div><div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;                                <span class="comment">// update significance flag vector</span></div><div class="line"><a name="l00765"></a><span class="lineno">  765</span>&#160;                                <a class="code" href="classCDecoder_1_1CMacroBlock.html#af6931769654b397d6c3becae44e868b0">m_sigFlagVector</a>[valPos++] = <span class="keyword">true</span>;</div><div class="line"><a name="l00766"></a><span class="lineno">  766</span>&#160;                                sigPos++; </div><div class="line"><a name="l00767"></a><span class="lineno">  767</span>&#160;                        }</div><div class="line"><a name="l00768"></a><span class="lineno">  768</span>&#160;                }</div><div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;                <span class="comment">// refinement bit</span></div><div class="line"><a name="l00770"></a><span class="lineno">  770</span>&#160;                <span class="keywordflow">if</span> (valPos &lt; bufferSize) {</div><div class="line"><a name="l00771"></a><span class="lineno">  771</span>&#160;                        <span class="comment">// write one refinement bit</span></div><div class="line"><a name="l00772"></a><span class="lineno">  772</span>&#160;                        <span class="keywordflow">if</span> (<a class="code" href="BitStream_8h.html#a69b4aa39485781bde435f86fd4851c0e">GetBit</a>(refBits, refPos)) {</div><div class="line"><a name="l00773"></a><span class="lineno">  773</span>&#160;                                <a class="code" href="classCDecoder_1_1CMacroBlock.html#a4bf1b6bc026f95ef4d93fbdfaf69f724">SetBitAtPos</a>(valPos, planeMask);</div><div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;                        }</div><div class="line"><a name="l00775"></a><span class="lineno">  775</span>&#160;                        refPos++;</div><div class="line"><a name="l00776"></a><span class="lineno">  776</span>&#160;                        valPos++;</div><div class="line"><a name="l00777"></a><span class="lineno">  777</span>&#160;                }</div><div class="line"><a name="l00778"></a><span class="lineno">  778</span>&#160;        }</div><div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;        ASSERT(sigPos &lt;= bufferSize);</div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;        ASSERT(refPos &lt;= bufferSize);</div><div class="line"><a name="l00781"></a><span class="lineno">  781</span>&#160;        ASSERT(signPos &lt;= bufferSize);</div><div class="line"><a name="l00782"></a><span class="lineno">  782</span>&#160;        ASSERT(valPos == bufferSize);</div><div class="line"><a name="l00783"></a><span class="lineno">  783</span>&#160;</div><div class="line"><a name="l00784"></a><span class="lineno">  784</span>&#160;        <span class="keywordflow">return</span> sigPos;</div><div class="line"><a name="l00785"></a><span class="lineno">  785</span>&#160;}</div><div class="ttc" id="BitStream_8h_html_a69b4aa39485781bde435f86fd4851c0e"><div class="ttname"><a href="BitStream_8h.html#a69b4aa39485781bde435f86fd4851c0e">GetBit</a></div><div class="ttdeci">bool GetBit(UINT32 *stream, UINT32 pos)</div><div class="ttdef"><b>Definition:</b> <a href="BitStream_8h_source.html#l00065">BitStream.h:65</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_a4bf1b6bc026f95ef4d93fbdfaf69f724"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#a4bf1b6bc026f95ef4d93fbdfaf69f724">CDecoder::CMacroBlock::SetBitAtPos</a></div><div class="ttdeci">void SetBitAtPos(UINT32 pos, DataT planeMask)</div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00084">Decoder.h:84</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_a7fd4539d524903d148ceb4de940d3194"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#a7fd4539d524903d148ceb4de940d3194">CDecoder::CMacroBlock::SetSign</a></div><div class="ttdeci">void SetSign(UINT32 pos, bool sign)</div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00085">Decoder.h:85</a></div></div>
<div class="ttc" id="BitStream_8h_html_ae36276982f7302d827c1345dd6440a8c"><div class="ttname"><a href="BitStream_8h.html#ae36276982f7302d827c1345dd6440a8c">SeekBitRange</a></div><div class="ttdeci">UINT32 SeekBitRange(UINT32 *stream, UINT32 pos, UINT32 len)</div><div class="ttdef"><b>Definition:</b> <a href="BitStream_8h_source.html#l00206">BitStream.h:206</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_af6931769654b397d6c3becae44e868b0"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#af6931769654b397d6c3becae44e868b0">CDecoder::CMacroBlock::m_sigFlagVector</a></div><div class="ttdeci">bool m_sigFlagVector[BufferSize+1]</div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00088">Decoder.h:88</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aa6e8f0dedcdeb9e592de7dde07b5025e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6e8f0dedcdeb9e592de7dde07b5025e">&#9670;&nbsp;</a></span>ComposeBitplaneRLD() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">UINT32 CDecoder::CMacroBlock::ComposeBitplaneRLD </td>
          <td>(</td>
          <td class="paramtype">UINT32&#160;</td>
          <td class="paramname"><em>bufferSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="PGFtypes_8h.html#acb1ee3f52ccfad782dcaa0abd79e5d05">DataT</a>&#160;</td>
          <td class="paramname"><em>planeMask</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">UINT32&#160;</td>
          <td class="paramname"><em>sigPos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">UINT32 *&#160;</td>
          <td class="paramname"><em>refBits</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</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="Decoder_8cpp_source.html#l00797">797</a> of file <a class="el" href="Decoder_8cpp_source.html">Decoder.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00797"></a><span class="lineno">  797</span>&#160;                                                                                                                  {</div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;        ASSERT(refBits);</div><div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;</div><div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;        UINT32 valPos = 0, refPos = 0;</div><div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;        UINT32 sigPos = 0, sigEnd;</div><div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;        UINT32 k = 3;</div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;        UINT32 runlen = 1 &lt;&lt; k; <span class="comment">// = 2^k</span></div><div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;        UINT32 count = 0, rest = 0;</div><div class="line"><a name="l00805"></a><span class="lineno">  805</span>&#160;        <span class="keywordtype">bool</span> set1 = <span class="keyword">false</span>;</div><div class="line"><a name="l00806"></a><span class="lineno">  806</span>&#160;</div><div class="line"><a name="l00807"></a><span class="lineno">  807</span>&#160;        <span class="keywordflow">while</span> (valPos &lt; bufferSize) {</div><div class="line"><a name="l00808"></a><span class="lineno">  808</span>&#160;                <span class="comment">// search next 1 in m_sigFlagVector using searching with sentinel</span></div><div class="line"><a name="l00809"></a><span class="lineno">  809</span>&#160;                sigEnd = valPos;</div><div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;                <span class="keywordflow">while</span>(!<a class="code" href="classCDecoder_1_1CMacroBlock.html#af6931769654b397d6c3becae44e868b0">m_sigFlagVector</a>[sigEnd]) { sigEnd++; }</div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;                sigEnd -= valPos;</div><div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;                sigEnd += sigPos;</div><div class="line"><a name="l00813"></a><span class="lineno">  813</span>&#160;</div><div class="line"><a name="l00814"></a><span class="lineno">  814</span>&#160;                <span class="keywordflow">while</span> (sigPos &lt; sigEnd) {</div><div class="line"><a name="l00815"></a><span class="lineno">  815</span>&#160;                        <span class="keywordflow">if</span> (rest || set1) {</div><div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;                                <span class="comment">// rest of last run</span></div><div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;                                sigPos += rest;</div><div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;                                valPos += rest;</div><div class="line"><a name="l00819"></a><span class="lineno">  819</span>&#160;                                rest = 0;</div><div class="line"><a name="l00820"></a><span class="lineno">  820</span>&#160;                        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00821"></a><span class="lineno">  821</span>&#160;                                <span class="comment">// decode significant bits</span></div><div class="line"><a name="l00822"></a><span class="lineno">  822</span>&#160;                                <span class="keywordflow">if</span> (<a class="code" href="BitStream_8h.html#a69b4aa39485781bde435f86fd4851c0e">GetBit</a>(<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>, codePos++)) {</div><div class="line"><a name="l00823"></a><span class="lineno">  823</span>&#160;                                        <span class="comment">// extract counter and generate zero run of length count</span></div><div class="line"><a name="l00824"></a><span class="lineno">  824</span>&#160;                                        <span class="keywordflow">if</span> (k &gt; 0) {</div><div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;                                                <span class="comment">// extract counter</span></div><div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;                                                count = <a class="code" href="BitStream_8h.html#a9ce8e37cd9f9d07d4a91094472a0fc5a">GetValueBlock</a>(<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>, codePos, k); </div><div class="line"><a name="l00827"></a><span class="lineno">  827</span>&#160;                                                codePos += k;</div><div class="line"><a name="l00828"></a><span class="lineno">  828</span>&#160;                                                <span class="keywordflow">if</span> (count &gt; 0) {</div><div class="line"><a name="l00829"></a><span class="lineno">  829</span>&#160;                                                        sigPos += count;</div><div class="line"><a name="l00830"></a><span class="lineno">  830</span>&#160;                                                        valPos += count;</div><div class="line"><a name="l00831"></a><span class="lineno">  831</span>&#160;                                                }</div><div class="line"><a name="l00832"></a><span class="lineno">  832</span>&#160;</div><div class="line"><a name="l00833"></a><span class="lineno">  833</span>&#160;                                                <span class="comment">// adapt k (half run-length interval)</span></div><div class="line"><a name="l00834"></a><span class="lineno">  834</span>&#160;                                                k--;</div><div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;                                                runlen &gt;&gt;= 1;</div><div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;                                        }</div><div class="line"><a name="l00837"></a><span class="lineno">  837</span>&#160;</div><div class="line"><a name="l00838"></a><span class="lineno">  838</span>&#160;                                        set1 = <span class="keyword">true</span>;</div><div class="line"><a name="l00839"></a><span class="lineno">  839</span>&#160;</div><div class="line"><a name="l00840"></a><span class="lineno">  840</span>&#160;                                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00841"></a><span class="lineno">  841</span>&#160;                                        <span class="comment">// generate zero run of length 2^k</span></div><div class="line"><a name="l00842"></a><span class="lineno">  842</span>&#160;                                        sigPos += runlen;</div><div class="line"><a name="l00843"></a><span class="lineno">  843</span>&#160;                                        valPos += runlen;</div><div class="line"><a name="l00844"></a><span class="lineno">  844</span>&#160;</div><div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;                                        <span class="comment">// adapt k (double run-length interval)</span></div><div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;                                        <span class="keywordflow">if</span> (k &lt; <a class="code" href="PGFplatform_8h.html#abeb69f096b599bae58cbc58ba48250a5">WordWidth</a>) {</div><div class="line"><a name="l00847"></a><span class="lineno">  847</span>&#160;                                                k++;</div><div class="line"><a name="l00848"></a><span class="lineno">  848</span>&#160;                                                runlen &lt;&lt;= 1;</div><div class="line"><a name="l00849"></a><span class="lineno">  849</span>&#160;                                        }</div><div class="line"><a name="l00850"></a><span class="lineno">  850</span>&#160;                                }</div><div class="line"><a name="l00851"></a><span class="lineno">  851</span>&#160;                        }</div><div class="line"><a name="l00852"></a><span class="lineno">  852</span>&#160;</div><div class="line"><a name="l00853"></a><span class="lineno">  853</span>&#160;                        <span class="keywordflow">if</span> (sigPos &lt; sigEnd) {</div><div class="line"><a name="l00854"></a><span class="lineno">  854</span>&#160;                                <span class="keywordflow">if</span> (set1) {</div><div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;                                        set1 = <span class="keyword">false</span>;</div><div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;</div><div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;                                        <span class="comment">// write 1 bit</span></div><div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;                                        <a class="code" href="classCDecoder_1_1CMacroBlock.html#a4bf1b6bc026f95ef4d93fbdfaf69f724">SetBitAtPos</a>(valPos, planeMask);</div><div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;</div><div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;                                        <span class="comment">// set sign bit</span></div><div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;                                        <a class="code" href="classCDecoder_1_1CMacroBlock.html#a7fd4539d524903d148ceb4de940d3194">SetSign</a>(valPos, <a class="code" href="BitStream_8h.html#a69b4aa39485781bde435f86fd4851c0e">GetBit</a>(<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>, codePos++)); </div><div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;</div><div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;                                        <span class="comment">// update significance flag vector</span></div><div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;                                        <a class="code" href="classCDecoder_1_1CMacroBlock.html#af6931769654b397d6c3becae44e868b0">m_sigFlagVector</a>[valPos++] = <span class="keyword">true</span>;</div><div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;                                        sigPos++;</div><div class="line"><a name="l00866"></a><span class="lineno">  866</span>&#160;                                }</div><div class="line"><a name="l00867"></a><span class="lineno">  867</span>&#160;                        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00868"></a><span class="lineno">  868</span>&#160;                                rest = sigPos - sigEnd;</div><div class="line"><a name="l00869"></a><span class="lineno">  869</span>&#160;                                sigPos = sigEnd;</div><div class="line"><a name="l00870"></a><span class="lineno">  870</span>&#160;                                valPos -= rest;</div><div class="line"><a name="l00871"></a><span class="lineno">  871</span>&#160;                        }</div><div class="line"><a name="l00872"></a><span class="lineno">  872</span>&#160;</div><div class="line"><a name="l00873"></a><span class="lineno">  873</span>&#160;                }</div><div class="line"><a name="l00874"></a><span class="lineno">  874</span>&#160;</div><div class="line"><a name="l00875"></a><span class="lineno">  875</span>&#160;                <span class="comment">// refinement bit</span></div><div class="line"><a name="l00876"></a><span class="lineno">  876</span>&#160;                <span class="keywordflow">if</span> (valPos &lt; bufferSize) {</div><div class="line"><a name="l00877"></a><span class="lineno">  877</span>&#160;                        <span class="comment">// write one refinement bit</span></div><div class="line"><a name="l00878"></a><span class="lineno">  878</span>&#160;                        <span class="keywordflow">if</span> (<a class="code" href="BitStream_8h.html#a69b4aa39485781bde435f86fd4851c0e">GetBit</a>(refBits, refPos)) {</div><div class="line"><a name="l00879"></a><span class="lineno">  879</span>&#160;                                <a class="code" href="classCDecoder_1_1CMacroBlock.html#a4bf1b6bc026f95ef4d93fbdfaf69f724">SetBitAtPos</a>(valPos, planeMask);</div><div class="line"><a name="l00880"></a><span class="lineno">  880</span>&#160;                        }</div><div class="line"><a name="l00881"></a><span class="lineno">  881</span>&#160;                        refPos++;</div><div class="line"><a name="l00882"></a><span class="lineno">  882</span>&#160;                        valPos++;</div><div class="line"><a name="l00883"></a><span class="lineno">  883</span>&#160;                }</div><div class="line"><a name="l00884"></a><span class="lineno">  884</span>&#160;        }</div><div class="line"><a name="l00885"></a><span class="lineno">  885</span>&#160;        ASSERT(sigPos &lt;= bufferSize);</div><div class="line"><a name="l00886"></a><span class="lineno">  886</span>&#160;        ASSERT(refPos &lt;= bufferSize);</div><div class="line"><a name="l00887"></a><span class="lineno">  887</span>&#160;        ASSERT(valPos == bufferSize);</div><div class="line"><a name="l00888"></a><span class="lineno">  888</span>&#160;</div><div class="line"><a name="l00889"></a><span class="lineno">  889</span>&#160;        <span class="keywordflow">return</span> sigPos;</div><div class="line"><a name="l00890"></a><span class="lineno">  890</span>&#160;}</div><div class="ttc" id="BitStream_8h_html_a69b4aa39485781bde435f86fd4851c0e"><div class="ttname"><a href="BitStream_8h.html#a69b4aa39485781bde435f86fd4851c0e">GetBit</a></div><div class="ttdeci">bool GetBit(UINT32 *stream, UINT32 pos)</div><div class="ttdef"><b>Definition:</b> <a href="BitStream_8h_source.html#l00065">BitStream.h:65</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_a4bf1b6bc026f95ef4d93fbdfaf69f724"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#a4bf1b6bc026f95ef4d93fbdfaf69f724">CDecoder::CMacroBlock::SetBitAtPos</a></div><div class="ttdeci">void SetBitAtPos(UINT32 pos, DataT planeMask)</div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00084">Decoder.h:84</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_a7fd4539d524903d148ceb4de940d3194"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#a7fd4539d524903d148ceb4de940d3194">CDecoder::CMacroBlock::SetSign</a></div><div class="ttdeci">void SetSign(UINT32 pos, bool sign)</div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00085">Decoder.h:85</a></div></div>
<div class="ttc" id="BitStream_8h_html_a9ce8e37cd9f9d07d4a91094472a0fc5a"><div class="ttname"><a href="BitStream_8h.html#a9ce8e37cd9f9d07d4a91094472a0fc5a">GetValueBlock</a></div><div class="ttdeci">UINT32 GetValueBlock(UINT32 *stream, UINT32 pos, UINT32 k)</div><div class="ttdef"><b>Definition:</b> <a href="BitStream_8h_source.html#l00128">BitStream.h:128</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_af6931769654b397d6c3becae44e868b0"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#af6931769654b397d6c3becae44e868b0">CDecoder::CMacroBlock::m_sigFlagVector</a></div><div class="ttdeci">bool m_sigFlagVector[BufferSize+1]</div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00088">Decoder.h:88</a></div></div>
<div class="ttc" id="PGFplatform_8h_html_abeb69f096b599bae58cbc58ba48250a5"><div class="ttname"><a href="PGFplatform_8h.html#abeb69f096b599bae58cbc58ba48250a5">WordWidth</a></div><div class="ttdeci">#define WordWidth</div><div class="ttdoc">WordBytes*8. </div><div class="ttdef"><b>Definition:</b> <a href="PGFplatform_8h_source.html#l00073">PGFplatform.h:73</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_ace0702d7f8281972b1db091248c3c80b"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">CDecoder::CMacroBlock::m_codeBuffer</a></div><div class="ttdeci">UINT32 m_codeBuffer[CodeBufferLen]</div><div class="ttdoc">input buffer for encoded bitstream </div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00077">Decoder.h:77</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="af7de96f745479ca3956f671a7f794489"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af7de96f745479ca3956f671a7f794489">&#9670;&nbsp;</a></span>ComposeBitplaneRLD() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">UINT32 CDecoder::CMacroBlock::ComposeBitplaneRLD </td>
          <td>(</td>
          <td class="paramtype">UINT32&#160;</td>
          <td class="paramname"><em>bufferSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="PGFtypes_8h.html#acb1ee3f52ccfad782dcaa0abd79e5d05">DataT</a>&#160;</td>
          <td class="paramname"><em>planeMask</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">UINT32 *&#160;</td>
          <td class="paramname"><em>sigBits</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">UINT32 *&#160;</td>
          <td class="paramname"><em>refBits</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">UINT32&#160;</td>
          <td class="paramname"><em>signPos</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</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="Decoder_8cpp_source.html#l00900">900</a> of file <a class="el" href="Decoder_8cpp_source.html">Decoder.cpp</a>.</p>
<div class="fragment"><div class="line"><a name="l00900"></a><span class="lineno">  900</span>&#160;                                                                                                                                   {</div><div class="line"><a name="l00901"></a><span class="lineno">  901</span>&#160;        ASSERT(sigBits);</div><div class="line"><a name="l00902"></a><span class="lineno">  902</span>&#160;        ASSERT(refBits);</div><div class="line"><a name="l00903"></a><span class="lineno">  903</span>&#160;</div><div class="line"><a name="l00904"></a><span class="lineno">  904</span>&#160;        UINT32 valPos = 0, refPos = 0;</div><div class="line"><a name="l00905"></a><span class="lineno">  905</span>&#160;        UINT32 sigPos = 0, sigEnd;</div><div class="line"><a name="l00906"></a><span class="lineno">  906</span>&#160;        UINT32 zerocnt, count = 0;</div><div class="line"><a name="l00907"></a><span class="lineno">  907</span>&#160;        UINT32 k = 0;</div><div class="line"><a name="l00908"></a><span class="lineno">  908</span>&#160;        UINT32 runlen = 1 &lt;&lt; k; <span class="comment">// = 2^k</span></div><div class="line"><a name="l00909"></a><span class="lineno">  909</span>&#160;        <span class="keywordtype">bool</span> signBit = <span class="keyword">false</span>;</div><div class="line"><a name="l00910"></a><span class="lineno">  910</span>&#160;        <span class="keywordtype">bool</span> zeroAfterRun = <span class="keyword">false</span>;</div><div class="line"><a name="l00911"></a><span class="lineno">  911</span>&#160;</div><div class="line"><a name="l00912"></a><span class="lineno">  912</span>&#160;        <span class="keywordflow">while</span> (valPos &lt; bufferSize) {</div><div class="line"><a name="l00913"></a><span class="lineno">  913</span>&#160;                <span class="comment">// search next 1 in m_sigFlagVector using searching with sentinel</span></div><div class="line"><a name="l00914"></a><span class="lineno">  914</span>&#160;                sigEnd = valPos;</div><div class="line"><a name="l00915"></a><span class="lineno">  915</span>&#160;                <span class="keywordflow">while</span>(!<a class="code" href="classCDecoder_1_1CMacroBlock.html#af6931769654b397d6c3becae44e868b0">m_sigFlagVector</a>[sigEnd]) { sigEnd++; }</div><div class="line"><a name="l00916"></a><span class="lineno">  916</span>&#160;                sigEnd -= valPos;</div><div class="line"><a name="l00917"></a><span class="lineno">  917</span>&#160;                sigEnd += sigPos;</div><div class="line"><a name="l00918"></a><span class="lineno">  918</span>&#160;</div><div class="line"><a name="l00919"></a><span class="lineno">  919</span>&#160;                <span class="comment">// search 1&#39;s in sigBits[sigPos..sigEnd)</span></div><div class="line"><a name="l00920"></a><span class="lineno">  920</span>&#160;                <span class="comment">// these 1&#39;s are significant bits</span></div><div class="line"><a name="l00921"></a><span class="lineno">  921</span>&#160;                <span class="keywordflow">while</span> (sigPos &lt; sigEnd) {</div><div class="line"><a name="l00922"></a><span class="lineno">  922</span>&#160;                        <span class="comment">// search 0&#39;s</span></div><div class="line"><a name="l00923"></a><span class="lineno">  923</span>&#160;                        zerocnt = <a class="code" href="BitStream_8h.html#ae36276982f7302d827c1345dd6440a8c">SeekBitRange</a>(sigBits, sigPos, sigEnd - sigPos);</div><div class="line"><a name="l00924"></a><span class="lineno">  924</span>&#160;                        sigPos += zerocnt;</div><div class="line"><a name="l00925"></a><span class="lineno">  925</span>&#160;                        valPos += zerocnt;</div><div class="line"><a name="l00926"></a><span class="lineno">  926</span>&#160;                        <span class="keywordflow">if</span> (sigPos &lt; sigEnd) {</div><div class="line"><a name="l00927"></a><span class="lineno">  927</span>&#160;                                <span class="comment">// write bit to m_value</span></div><div class="line"><a name="l00928"></a><span class="lineno">  928</span>&#160;                                <a class="code" href="classCDecoder_1_1CMacroBlock.html#a4bf1b6bc026f95ef4d93fbdfaf69f724">SetBitAtPos</a>(valPos, planeMask);</div><div class="line"><a name="l00929"></a><span class="lineno">  929</span>&#160;</div><div class="line"><a name="l00930"></a><span class="lineno">  930</span>&#160;                                <span class="comment">// check sign bit</span></div><div class="line"><a name="l00931"></a><span class="lineno">  931</span>&#160;                                <span class="keywordflow">if</span> (count == 0) {</div><div class="line"><a name="l00932"></a><span class="lineno">  932</span>&#160;                                        <span class="comment">// all 1&#39;s have been set</span></div><div class="line"><a name="l00933"></a><span class="lineno">  933</span>&#160;                                        <span class="keywordflow">if</span> (zeroAfterRun) {</div><div class="line"><a name="l00934"></a><span class="lineno">  934</span>&#160;                                                <span class="comment">// finish the run with a 0</span></div><div class="line"><a name="l00935"></a><span class="lineno">  935</span>&#160;                                                signBit = <span class="keyword">false</span>;</div><div class="line"><a name="l00936"></a><span class="lineno">  936</span>&#160;                                                zeroAfterRun = <span class="keyword">false</span>;</div><div class="line"><a name="l00937"></a><span class="lineno">  937</span>&#160;                                        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00938"></a><span class="lineno">  938</span>&#160;                                                <span class="comment">// decode next sign bit</span></div><div class="line"><a name="l00939"></a><span class="lineno">  939</span>&#160;                                                <span class="keywordflow">if</span> (<a class="code" href="BitStream_8h.html#a69b4aa39485781bde435f86fd4851c0e">GetBit</a>(<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>, signPos++)) {</div><div class="line"><a name="l00940"></a><span class="lineno">  940</span>&#160;                                                        <span class="comment">// generate 1&#39;s run of length 2^k</span></div><div class="line"><a name="l00941"></a><span class="lineno">  941</span>&#160;                                                        count = runlen - 1;</div><div class="line"><a name="l00942"></a><span class="lineno">  942</span>&#160;                                                        signBit = <span class="keyword">true</span>;</div><div class="line"><a name="l00943"></a><span class="lineno">  943</span>&#160;                        </div><div class="line"><a name="l00944"></a><span class="lineno">  944</span>&#160;                                                        <span class="comment">// adapt k (double run-length interval)</span></div><div class="line"><a name="l00945"></a><span class="lineno">  945</span>&#160;                                                        <span class="keywordflow">if</span> (k &lt; <a class="code" href="PGFplatform_8h.html#abeb69f096b599bae58cbc58ba48250a5">WordWidth</a>) {</div><div class="line"><a name="l00946"></a><span class="lineno">  946</span>&#160;                                                                k++; </div><div class="line"><a name="l00947"></a><span class="lineno">  947</span>&#160;                                                                runlen &lt;&lt;= 1;</div><div class="line"><a name="l00948"></a><span class="lineno">  948</span>&#160;                                                        }</div><div class="line"><a name="l00949"></a><span class="lineno">  949</span>&#160;                                                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00950"></a><span class="lineno">  950</span>&#160;                                                        <span class="comment">// extract counter and generate 1&#39;s run of length count</span></div><div class="line"><a name="l00951"></a><span class="lineno">  951</span>&#160;                                                        <span class="keywordflow">if</span> (k &gt; 0) {</div><div class="line"><a name="l00952"></a><span class="lineno">  952</span>&#160;                                                                <span class="comment">// extract counter</span></div><div class="line"><a name="l00953"></a><span class="lineno">  953</span>&#160;                                                                count = <a class="code" href="BitStream_8h.html#a9ce8e37cd9f9d07d4a91094472a0fc5a">GetValueBlock</a>(<a class="code" href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">m_codeBuffer</a>, signPos, k); </div><div class="line"><a name="l00954"></a><span class="lineno">  954</span>&#160;                                                                signPos += k;</div><div class="line"><a name="l00955"></a><span class="lineno">  955</span>&#160;</div><div class="line"><a name="l00956"></a><span class="lineno">  956</span>&#160;                                                                <span class="comment">// adapt k (half run-length interval)</span></div><div class="line"><a name="l00957"></a><span class="lineno">  957</span>&#160;                                                                k--; </div><div class="line"><a name="l00958"></a><span class="lineno">  958</span>&#160;                                                                runlen &gt;&gt;= 1;</div><div class="line"><a name="l00959"></a><span class="lineno">  959</span>&#160;                                                        }</div><div class="line"><a name="l00960"></a><span class="lineno">  960</span>&#160;                                                        <span class="keywordflow">if</span> (count &gt; 0) {</div><div class="line"><a name="l00961"></a><span class="lineno">  961</span>&#160;                                                                count--;</div><div class="line"><a name="l00962"></a><span class="lineno">  962</span>&#160;                                                                signBit = <span class="keyword">true</span>;</div><div class="line"><a name="l00963"></a><span class="lineno">  963</span>&#160;                                                                zeroAfterRun = <span class="keyword">true</span>;</div><div class="line"><a name="l00964"></a><span class="lineno">  964</span>&#160;                                                        } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00965"></a><span class="lineno">  965</span>&#160;                                                                signBit = <span class="keyword">false</span>;</div><div class="line"><a name="l00966"></a><span class="lineno">  966</span>&#160;                                                        }</div><div class="line"><a name="l00967"></a><span class="lineno">  967</span>&#160;                                                }</div><div class="line"><a name="l00968"></a><span class="lineno">  968</span>&#160;                                        }</div><div class="line"><a name="l00969"></a><span class="lineno">  969</span>&#160;                                } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00970"></a><span class="lineno">  970</span>&#160;                                        ASSERT(count &gt; 0);</div><div class="line"><a name="l00971"></a><span class="lineno">  971</span>&#160;                                        ASSERT(signBit);</div><div class="line"><a name="l00972"></a><span class="lineno">  972</span>&#160;                                        count--;</div><div class="line"><a name="l00973"></a><span class="lineno">  973</span>&#160;                                }</div><div class="line"><a name="l00974"></a><span class="lineno">  974</span>&#160;</div><div class="line"><a name="l00975"></a><span class="lineno">  975</span>&#160;                                <span class="comment">// copy sign bit</span></div><div class="line"><a name="l00976"></a><span class="lineno">  976</span>&#160;                                <a class="code" href="classCDecoder_1_1CMacroBlock.html#a7fd4539d524903d148ceb4de940d3194">SetSign</a>(valPos, signBit); </div><div class="line"><a name="l00977"></a><span class="lineno">  977</span>&#160;</div><div class="line"><a name="l00978"></a><span class="lineno">  978</span>&#160;                                <span class="comment">// update significance flag vector</span></div><div class="line"><a name="l00979"></a><span class="lineno">  979</span>&#160;                                <a class="code" href="classCDecoder_1_1CMacroBlock.html#af6931769654b397d6c3becae44e868b0">m_sigFlagVector</a>[valPos++] = <span class="keyword">true</span>;</div><div class="line"><a name="l00980"></a><span class="lineno">  980</span>&#160;                                sigPos++; </div><div class="line"><a name="l00981"></a><span class="lineno">  981</span>&#160;                        }</div><div class="line"><a name="l00982"></a><span class="lineno">  982</span>&#160;                }</div><div class="line"><a name="l00983"></a><span class="lineno">  983</span>&#160;</div><div class="line"><a name="l00984"></a><span class="lineno">  984</span>&#160;                <span class="comment">// refinement bit</span></div><div class="line"><a name="l00985"></a><span class="lineno">  985</span>&#160;                <span class="keywordflow">if</span> (valPos &lt; bufferSize) {</div><div class="line"><a name="l00986"></a><span class="lineno">  986</span>&#160;                        <span class="comment">// write one refinement bit</span></div><div class="line"><a name="l00987"></a><span class="lineno">  987</span>&#160;                        <span class="keywordflow">if</span> (<a class="code" href="BitStream_8h.html#a69b4aa39485781bde435f86fd4851c0e">GetBit</a>(refBits, refPos)) {</div><div class="line"><a name="l00988"></a><span class="lineno">  988</span>&#160;                                <a class="code" href="classCDecoder_1_1CMacroBlock.html#a4bf1b6bc026f95ef4d93fbdfaf69f724">SetBitAtPos</a>(valPos, planeMask);</div><div class="line"><a name="l00989"></a><span class="lineno">  989</span>&#160;                        }</div><div class="line"><a name="l00990"></a><span class="lineno">  990</span>&#160;                        refPos++;</div><div class="line"><a name="l00991"></a><span class="lineno">  991</span>&#160;                        valPos++;</div><div class="line"><a name="l00992"></a><span class="lineno">  992</span>&#160;                }</div><div class="line"><a name="l00993"></a><span class="lineno">  993</span>&#160;        }</div><div class="line"><a name="l00994"></a><span class="lineno">  994</span>&#160;        ASSERT(sigPos &lt;= bufferSize);</div><div class="line"><a name="l00995"></a><span class="lineno">  995</span>&#160;        ASSERT(refPos &lt;= bufferSize);</div><div class="line"><a name="l00996"></a><span class="lineno">  996</span>&#160;        ASSERT(valPos == bufferSize);</div><div class="line"><a name="l00997"></a><span class="lineno">  997</span>&#160;</div><div class="line"><a name="l00998"></a><span class="lineno">  998</span>&#160;        <span class="keywordflow">return</span> sigPos;</div><div class="line"><a name="l00999"></a><span class="lineno">  999</span>&#160;}</div><div class="ttc" id="BitStream_8h_html_a69b4aa39485781bde435f86fd4851c0e"><div class="ttname"><a href="BitStream_8h.html#a69b4aa39485781bde435f86fd4851c0e">GetBit</a></div><div class="ttdeci">bool GetBit(UINT32 *stream, UINT32 pos)</div><div class="ttdef"><b>Definition:</b> <a href="BitStream_8h_source.html#l00065">BitStream.h:65</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_a4bf1b6bc026f95ef4d93fbdfaf69f724"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#a4bf1b6bc026f95ef4d93fbdfaf69f724">CDecoder::CMacroBlock::SetBitAtPos</a></div><div class="ttdeci">void SetBitAtPos(UINT32 pos, DataT planeMask)</div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00084">Decoder.h:84</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_a7fd4539d524903d148ceb4de940d3194"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#a7fd4539d524903d148ceb4de940d3194">CDecoder::CMacroBlock::SetSign</a></div><div class="ttdeci">void SetSign(UINT32 pos, bool sign)</div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00085">Decoder.h:85</a></div></div>
<div class="ttc" id="BitStream_8h_html_ae36276982f7302d827c1345dd6440a8c"><div class="ttname"><a href="BitStream_8h.html#ae36276982f7302d827c1345dd6440a8c">SeekBitRange</a></div><div class="ttdeci">UINT32 SeekBitRange(UINT32 *stream, UINT32 pos, UINT32 len)</div><div class="ttdef"><b>Definition:</b> <a href="BitStream_8h_source.html#l00206">BitStream.h:206</a></div></div>
<div class="ttc" id="BitStream_8h_html_a9ce8e37cd9f9d07d4a91094472a0fc5a"><div class="ttname"><a href="BitStream_8h.html#a9ce8e37cd9f9d07d4a91094472a0fc5a">GetValueBlock</a></div><div class="ttdeci">UINT32 GetValueBlock(UINT32 *stream, UINT32 pos, UINT32 k)</div><div class="ttdef"><b>Definition:</b> <a href="BitStream_8h_source.html#l00128">BitStream.h:128</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_af6931769654b397d6c3becae44e868b0"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#af6931769654b397d6c3becae44e868b0">CDecoder::CMacroBlock::m_sigFlagVector</a></div><div class="ttdeci">bool m_sigFlagVector[BufferSize+1]</div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00088">Decoder.h:88</a></div></div>
<div class="ttc" id="PGFplatform_8h_html_abeb69f096b599bae58cbc58ba48250a5"><div class="ttname"><a href="PGFplatform_8h.html#abeb69f096b599bae58cbc58ba48250a5">WordWidth</a></div><div class="ttdeci">#define WordWidth</div><div class="ttdoc">WordBytes*8. </div><div class="ttdef"><b>Definition:</b> <a href="PGFplatform_8h_source.html#l00073">PGFplatform.h:73</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_ace0702d7f8281972b1db091248c3c80b"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#ace0702d7f8281972b1db091248c3c80b">CDecoder::CMacroBlock::m_codeBuffer</a></div><div class="ttdeci">UINT32 m_codeBuffer[CodeBufferLen]</div><div class="ttdoc">input buffer for encoded bitstream </div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00077">Decoder.h:77</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a0425cb162ca41e04f6ae0886a62b3cc9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0425cb162ca41e04f6ae0886a62b3cc9">&#9670;&nbsp;</a></span>IsCompletelyRead()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool CDecoder::CMacroBlock::IsCompletelyRead </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>Returns true if this macro block has been completely read. </p><dl class="section return"><dt>Returns</dt><dd>true if current value position is at block end </dd></dl>

<p class="definition">Definition at line <a class="el" href="Decoder_8h_source.html#l00067">67</a> of file <a class="el" href="Decoder_8h_source.html">Decoder.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;{ <span class="keywordflow">return</span> <a class="code" href="classCDecoder_1_1CMacroBlock.html#a38f42e9e2d5ac8387db0122aecac79be">m_valuePos</a> &gt;= <a class="code" href="classCDecoder_1_1CMacroBlock.html#a19247bd5e6073252c45abf9d33b44ee0">m_header</a>.<a class="code" href="unionROIBlockHeader.html#a15ceb2e488c3767cc1ab774323c02ded">rbh</a>.<a class="code" href="structROIBlockHeader_1_1RBH.html#af0c3de8c247b06116a9d84d2f9515762">bufferSize</a>; }</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="classCDecoder_1_1CMacroBlock_html_a38f42e9e2d5ac8387db0122aecac79be"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#a38f42e9e2d5ac8387db0122aecac79be">CDecoder::CMacroBlock::m_valuePos</a></div><div class="ttdeci">UINT32 m_valuePos</div><div class="ttdoc">current position in m_value </div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00078">Decoder.h:78</a></div></div>
<div class="ttc" id="classCDecoder_1_1CMacroBlock_html_a19247bd5e6073252c45abf9d33b44ee0"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#a19247bd5e6073252c45abf9d33b44ee0">CDecoder::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="Decoder_8h_source.html#l00075">Decoder.h:75</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4bf1b6bc026f95ef4d93fbdfaf69f724"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4bf1b6bc026f95ef4d93fbdfaf69f724">&#9670;&nbsp;</a></span>SetBitAtPos()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void CDecoder::CMacroBlock::SetBitAtPos </td>
          <td>(</td>
          <td class="paramtype">UINT32&#160;</td>
          <td class="paramname"><em>pos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="PGFtypes_8h.html#acb1ee3f52ccfad782dcaa0abd79e5d05">DataT</a>&#160;</td>
          <td class="paramname"><em>planeMask</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="Decoder_8h_source.html#l00084">84</a> of file <a class="el" href="Decoder_8h_source.html">Decoder.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;{ (<a class="code" href="classCDecoder_1_1CMacroBlock.html#a7722de1000647fb5a894db2e2f348bdd">m_value</a>[pos] &gt;= 0) ? <a class="code" href="classCDecoder_1_1CMacroBlock.html#a7722de1000647fb5a894db2e2f348bdd">m_value</a>[pos] |= planeMask : <a class="code" href="classCDecoder_1_1CMacroBlock.html#a7722de1000647fb5a894db2e2f348bdd">m_value</a>[pos] -= planeMask; }</div><div class="ttc" id="classCDecoder_1_1CMacroBlock_html_a7722de1000647fb5a894db2e2f348bdd"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#a7722de1000647fb5a894db2e2f348bdd">CDecoder::CMacroBlock::m_value</a></div><div class="ttdeci">DataT m_value[BufferSize]</div><div class="ttdoc">output buffer of values with index m_valuePos </div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00076">Decoder.h:76</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a7fd4539d524903d148ceb4de940d3194"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7fd4539d524903d148ceb4de940d3194">&#9670;&nbsp;</a></span>SetSign()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void CDecoder::CMacroBlock::SetSign </td>
          <td>(</td>
          <td class="paramtype">UINT32&#160;</td>
          <td class="paramname"><em>pos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>sign</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p class="definition">Definition at line <a class="el" href="Decoder_8h_source.html#l00085">85</a> of file <a class="el" href="Decoder_8h_source.html">Decoder.h</a>.</p>
<div class="fragment"><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;{ <a class="code" href="classCDecoder_1_1CMacroBlock.html#a7722de1000647fb5a894db2e2f348bdd">m_value</a>[pos] = -<a class="code" href="classCDecoder_1_1CMacroBlock.html#a7722de1000647fb5a894db2e2f348bdd">m_value</a>[pos]*sign + <a class="code" href="classCDecoder_1_1CMacroBlock.html#a7722de1000647fb5a894db2e2f348bdd">m_value</a>[pos]*(!sign); }</div><div class="ttc" id="classCDecoder_1_1CMacroBlock_html_a7722de1000647fb5a894db2e2f348bdd"><div class="ttname"><a href="classCDecoder_1_1CMacroBlock.html#a7722de1000647fb5a894db2e2f348bdd">CDecoder::CMacroBlock::m_value</a></div><div class="ttdeci">DataT m_value[BufferSize]</div><div class="ttdoc">output buffer of values with index m_valuePos </div><div class="ttdef"><b>Definition:</b> <a href="Decoder_8h_source.html#l00076">Decoder.h:76</a></div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="ace0702d7f8281972b1db091248c3c80b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace0702d7f8281972b1db091248c3c80b">&#9670;&nbsp;</a></span>m_codeBuffer</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">UINT32 CDecoder::CMacroBlock::m_codeBuffer[<a class="el" href="Encoder_8h.html#a05a74e73e6c734fcad194efbca053ed5">CodeBufferLen</a>]</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>input buffer for encoded bitstream </p>

<p class="definition">Definition at line <a class="el" href="Decoder_8h_source.html#l00077">77</a> of file <a class="el" href="Decoder_8h_source.html">Decoder.h</a>.</p>

</div>
</div>
<a id="a4a4b0f49967a8fc938295fdcc5093e66"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a4b0f49967a8fc938295fdcc5093e66">&#9670;&nbsp;</a></span>m_decoder</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="classCDecoder.html">CDecoder</a>* CDecoder::CMacroBlock::m_decoder</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="Decoder_8h_source.html#l00087">87</a> of file <a class="el" href="Decoder_8h_source.html">Decoder.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="unionROIBlockHeader.html">ROIBlockHeader</a> CDecoder::CMacroBlock::m_header</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>block header </p>

<p class="definition">Definition at line <a class="el" href="Decoder_8h_source.html#l00075">75</a> of file <a class="el" href="Decoder_8h_source.html">Decoder.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool CDecoder::CMacroBlock::m_sigFlagVector[<a class="el" href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a>+1]</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="Decoder_8h_source.html#l00088">88</a> of file <a class="el" href="Decoder_8h_source.html">Decoder.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="PGFtypes_8h.html#acb1ee3f52ccfad782dcaa0abd79e5d05">DataT</a> CDecoder::CMacroBlock::m_value[<a class="el" href="PGFtypes_8h.html#aa362edf6db9662acf6ef958a6db19c35">BufferSize</a>]</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>output buffer of values with index m_valuePos </p>

<p class="definition">Definition at line <a class="el" href="Decoder_8h_source.html#l00076">76</a> of file <a class="el" href="Decoder_8h_source.html">Decoder.h</a>.</p>

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

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">UINT32 CDecoder::CMacroBlock::m_valuePos</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>current position in m_value </p>

<p class="definition">Definition at line <a class="el" href="Decoder_8h_source.html#l00078">78</a> of file <a class="el" href="Decoder_8h_source.html">Decoder.h</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="Decoder_8h_source.html">Decoder.h</a></li>
<li><a class="el" href="Decoder_8cpp_source.html">Decoder.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="classCDecoder.html">CDecoder</a></li><li class="navelem"><a class="el" href="classCDecoder_1_1CMacroBlock.html">CMacroBlock</a></li>
    <li class="footer">Generated on Mon Dec 31 2018 19:09:18 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>