Sophie

Sophie

distrib > Mandriva > 2010.2 > i586 > by-pkgid > def0228095a1541e2d3632b6b6da7c38 > files > 513

gnuradio-doc-3.3.0-8mdv2010.1.i586.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"/>
<title>GNU Radio 3.3.0 C++ API: atsci_equalizer Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.3 -->
<div class="contents">
<h1>atsci_equalizer Class Reference</h1><!-- doxytag: class="atsci_equalizer" -->
<p>abstract base class for ATSC equalizer  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="atsci__equalizer_8h_source.html">atsci_equalizer.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for atsci_equalizer:</div>
<div class="dynsection">
<div class="center"><img src="classatsci__equalizer__inherit__graph.png" border="0" usemap="#atsci__equalizer_inherit__map" alt="Inheritance graph"/></div>
<map name="atsci__equalizer_inherit__map" id="atsci__equalizer_inherit__map">
<area shape="rect" id="node3" href="classatsci__equalizer__lms.html" title="atsci_equalizer_lms" alt="" coords="5,83,141,112"/><area shape="rect" id="node5" href="classatsci__equalizer__lms2.html" title="atsci_equalizer_lms2" alt="" coords="165,83,309,112"/><area shape="rect" id="node7" href="classatsci__equalizer__nop.html" title="atsci_equalizer_nop" alt="" coords="333,83,469,112"/></map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="classatsci__equalizer-members.html">List of all members.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classatsci__equalizer.html#ac0a5af23fc9f5fb75f75da695b085003">atsci_equalizer</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classatsci__equalizer.html#a96543909a04bd0861632aa2b21388507">~atsci_equalizer</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classatsci__equalizer.html#ae1f4fea799066b5a030bf9cedd9f9141">reset</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">reset state (e.g., on channel change)  <a href="#ae1f4fea799066b5a030bf9cedd9f9141"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classatsci__equalizer.html#a652624aa36e1a9973e63fa22e05fceb4">filter</a> (const float *input_samples, const <a class="el" href="structatsc_1_1syminfo.html">atsc::syminfo</a> *input_tags, float *output_samples, int nsamples)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">produce <code>nsamples</code> of output from given inputs and tags  <a href="#a652624aa36e1a9973e63fa22e05fceb4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classatsci__equalizer.html#a8db8cff0e3739aa59911eeb059913d9b">ntaps</a> () const =0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">how much history the input data stream requires.  <a href="#a8db8cff0e3739aa59911eeb059913d9b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classatsci__equalizer.html#a3d1ec7e9d8d647af683be66334658b9a">npretaps</a> () const =0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">how many taps are "in the future".  <a href="#a3d1ec7e9d8d647af683be66334658b9a"></a><br/></td></tr>
<tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classatsci__equalizer.html#af41b4d5184df08f6df672752d1d3c9d3">filter_normal</a> (const float *input_samples, float *output_samples, int nsamples)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classatsci__equalizer.html#a1826a36e71cd5b23b37212a382363a59">filter_data_seg_sync</a> (const float *input_samples, float *output_samples, int nsamples, int offset)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classatsci__equalizer.html#a4731ead6a02b3ebba75f3e0b70eefe55">filter_field_sync</a> (const float *input_samples, float *output_samples, int nsamples, int offset, int which_field)=0</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>abstract base class for ATSC equalizer </p>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ac0a5af23fc9f5fb75f75da695b085003"></a><!-- doxytag: member="atsci_equalizer::atsci_equalizer" ref="ac0a5af23fc9f5fb75f75da695b085003" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">atsci_equalizer::atsci_equalizer </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a96543909a04bd0861632aa2b21388507"></a><!-- doxytag: member="atsci_equalizer::~atsci_equalizer" ref="a96543909a04bd0861632aa2b21388507" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual atsci_equalizer::~atsci_equalizer </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a652624aa36e1a9973e63fa22e05fceb4"></a><!-- doxytag: member="atsci_equalizer::filter" ref="a652624aa36e1a9973e63fa22e05fceb4" args="(const float *input_samples, const atsc::syminfo *input_tags, float *output_samples, int nsamples)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void atsci_equalizer::filter </td>
          <td>(</td>
          <td class="paramtype">const float *&nbsp;</td>
          <td class="paramname"> <em>input_samples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structatsc_1_1syminfo.html">atsc::syminfo</a> *&nbsp;</td>
          <td class="paramname"> <em>input_tags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float *&nbsp;</td>
          <td class="paramname"> <em>output_samples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nsamples</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>produce <code>nsamples</code> of output from given inputs and tags </p>
<p>This is the main entry point. It examines the input_tags and local state and invokes the appropriate virtual function to handle each sub-segment of the input data.</p>
<p><code>input_samples</code> must have (nsamples + <a class="el" href="classatsci__equalizer.html#a8db8cff0e3739aa59911eeb059913d9b" title="how much history the input data stream requires.">ntaps()</a> - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + <a class="el" href="classatsci__equalizer.html#a8db8cff0e3739aa59911eeb059913d9b" title="how much history the input data stream requires.">ntaps()</a> - 1] are referenced to compute the output values.</p>
<p><code>input_tags</code> must have nsamples valid entries. input_tags[0] .. input_tags[nsamples - 1] are referenced to compute the output values. </p>

</div>
</div>
<a class="anchor" id="a1826a36e71cd5b23b37212a382363a59"></a><!-- doxytag: member="atsci_equalizer::filter_data_seg_sync" ref="a1826a36e71cd5b23b37212a382363a59" args="(const float *input_samples, float *output_samples, int nsamples, int offset)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void atsci_equalizer::filter_data_seg_sync </td>
          <td>(</td>
          <td class="paramtype">const float *&nbsp;</td>
          <td class="paramname"> <em>input_samples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float *&nbsp;</td>
          <td class="paramname"> <em>output_samples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nsamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>offset</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Input range is known to consist of only a data segment sync or a portion of a data segment sync. <code>nsamples</code> will be in [1,4]. <code>offset</code> will be in [0,3]. <code>offset</code> is the offset of the input from the beginning of the data segment sync pattern.</p>
<p><code>input_samples</code> has (nsamples + <a class="el" href="classatsci__equalizer.html#a8db8cff0e3739aa59911eeb059913d9b" title="how much history the input data stream requires.">ntaps()</a> - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + <a class="el" href="classatsci__equalizer.html#a8db8cff0e3739aa59911eeb059913d9b" title="how much history the input data stream requires.">ntaps()</a> - 1] may be referenced to compute the output values. </p>

<p>Implemented in <a class="el" href="classatsci__equalizer__lms.html#a4d8b1c86277efdb78890150b564b71ef">atsci_equalizer_lms</a>, <a class="el" href="classatsci__equalizer__lms2.html#a2b010d57187868eb372bb5e0903be619">atsci_equalizer_lms2</a>, and <a class="el" href="classatsci__equalizer__nop.html#a2d21e46afdfcd4dd3ff753d104e51a6f">atsci_equalizer_nop</a>.</p>

</div>
</div>
<a class="anchor" id="a4731ead6a02b3ebba75f3e0b70eefe55"></a><!-- doxytag: member="atsci_equalizer::filter_field_sync" ref="a4731ead6a02b3ebba75f3e0b70eefe55" args="(const float *input_samples, float *output_samples, int nsamples, int offset, int which_field)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void atsci_equalizer::filter_field_sync </td>
          <td>(</td>
          <td class="paramtype">const float *&nbsp;</td>
          <td class="paramname"> <em>input_samples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float *&nbsp;</td>
          <td class="paramname"> <em>output_samples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nsamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>offset</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>which_field</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Input range is known to consist of only a field sync segment or a portion of a field sync segment. <code>nsamples</code> will be in [1,832]. <code>offset</code> will be in [0,831]. <code>offset</code> is the offset of the input from the beginning of the data segment sync pattern. We consider the 4 symbols of the immediately preceding data segment sync to be the first symbols of the field sync segment. <code>which_field</code> is in [0,1] and specifies which field (duh).</p>
<p><code>input_samples</code> has (nsamples + <a class="el" href="classatsci__equalizer.html#a8db8cff0e3739aa59911eeb059913d9b" title="how much history the input data stream requires.">ntaps()</a> - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + <a class="el" href="classatsci__equalizer.html#a8db8cff0e3739aa59911eeb059913d9b" title="how much history the input data stream requires.">ntaps()</a> - 1] may be referenced to compute the output values. </p>

<p>Implemented in <a class="el" href="classatsci__equalizer__lms.html#a16f3f405c5eee8cd233d87e6ee67748b">atsci_equalizer_lms</a>, <a class="el" href="classatsci__equalizer__lms2.html#a8545c2e4fc07d4a7ec4d4ed403108cce">atsci_equalizer_lms2</a>, and <a class="el" href="classatsci__equalizer__nop.html#aabe199fee2a80db95cf5437a68c19901">atsci_equalizer_nop</a>.</p>

</div>
</div>
<a class="anchor" id="af41b4d5184df08f6df672752d1d3c9d3"></a><!-- doxytag: member="atsci_equalizer::filter_normal" ref="af41b4d5184df08f6df672752d1d3c9d3" args="(const float *input_samples, float *output_samples, int nsamples)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void atsci_equalizer::filter_normal </td>
          <td>(</td>
          <td class="paramtype">const float *&nbsp;</td>
          <td class="paramname"> <em>input_samples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float *&nbsp;</td>
          <td class="paramname"> <em>output_samples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nsamples</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [protected, pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Input range is known NOT TO CONTAIN data segment syncs or field syncs. This should be the fast path. In the non decicion directed case, this just runs the input through the filter without adapting it.</p>
<p><code>input_samples</code> has (nsamples + <a class="el" href="classatsci__equalizer.html#a8db8cff0e3739aa59911eeb059913d9b" title="how much history the input data stream requires.">ntaps()</a> - 1) valid entries. input_samples[0] .. input_samples[nsamples - 1 + <a class="el" href="classatsci__equalizer.html#a8db8cff0e3739aa59911eeb059913d9b" title="how much history the input data stream requires.">ntaps()</a> - 1] may be referenced to compute the output values. </p>

<p>Implemented in <a class="el" href="classatsci__equalizer__lms.html#af29b102348176dc728260eb52d4954d4">atsci_equalizer_lms</a>, <a class="el" href="classatsci__equalizer__lms2.html#a4733555f4c5f69d0619ccdad90c9ff0f">atsci_equalizer_lms2</a>, and <a class="el" href="classatsci__equalizer__nop.html#a11feb6978266a24cc44059e3b4998b89">atsci_equalizer_nop</a>.</p>

</div>
</div>
<a class="anchor" id="a3d1ec7e9d8d647af683be66334658b9a"></a><!-- doxytag: member="atsci_equalizer::npretaps" ref="a3d1ec7e9d8d647af683be66334658b9a" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int atsci_equalizer::npretaps </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>how many taps are "in the future". </p>
<p>This allows us to handle what the ATSC folks call "pre-ghosts". What it really does is allow the caller to jack with the offset between the tags and the data so that everything magically works out.</p>
<p>npretaps () must return a value between 0 and <a class="el" href="classatsci__equalizer.html#a8db8cff0e3739aa59911eeb059913d9b" title="how much history the input data stream requires.">ntaps()</a> - 1.</p>
<p>If npretaps () returns 0, this means that the equalizer will only handle multipath "in the past." I suspect that a good value would be something like 15% - 20% of ntaps (). </p>

<p>Implemented in <a class="el" href="classatsci__equalizer__lms.html#a22680b8926f2ce6bd5c5fb38e25de25b">atsci_equalizer_lms</a>, <a class="el" href="classatsci__equalizer__lms2.html#ae9e1dd9e384136c7eae624428a79a4a6">atsci_equalizer_lms2</a>, and <a class="el" href="classatsci__equalizer__nop.html#aea25eeb6ebfbebb2f2faa891a5cd2610">atsci_equalizer_nop</a>.</p>

</div>
</div>
<a class="anchor" id="a8db8cff0e3739aa59911eeb059913d9b"></a><!-- doxytag: member="atsci_equalizer::ntaps" ref="a8db8cff0e3739aa59911eeb059913d9b" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int atsci_equalizer::ntaps </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>how much history the input data stream requires. </p>
<p>This must return a value &gt;= 1. Think of this as the number of samples you need to look at to compute a single output sample. </p>

<p>Implemented in <a class="el" href="classatsci__equalizer__lms.html#a175be27cd2a7066c00ef70e73a4d8a21">atsci_equalizer_lms</a>, <a class="el" href="classatsci__equalizer__lms2.html#ade874736b434c36c3e1916c737208406">atsci_equalizer_lms2</a>, and <a class="el" href="classatsci__equalizer__nop.html#a0940bb621986b9827d24200e19b0d5dd">atsci_equalizer_nop</a>.</p>

</div>
</div>
<a class="anchor" id="ae1f4fea799066b5a030bf9cedd9f9141"></a><!-- doxytag: member="atsci_equalizer::reset" ref="ae1f4fea799066b5a030bf9cedd9f9141" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void atsci_equalizer::reset </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>reset state (e.g., on channel change) </p>
<p>Note, subclasses must invoke the superclass's method too! </p>

<p>Reimplemented in <a class="el" href="classatsci__equalizer__lms.html#ada8cd96d000ac03af7b53276651bfab7">atsci_equalizer_lms</a>, <a class="el" href="classatsci__equalizer__lms2.html#a343eccda6d3406e61d4e3f7a3f03584a">atsci_equalizer_lms2</a>, and <a class="el" href="classatsci__equalizer__nop.html#a56b9b85bf850d88aa88fcefa44a3eb54">atsci_equalizer_nop</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="atsci__equalizer_8h_source.html">atsci_equalizer.h</a></li>
</ul>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated on Wed Dec 29 19:52:31 2010 for GNU Radio 3.3.0 C++ API by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>