Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 06e1e0ab98898582c876a8be34ecb5e9 > files > 195

capisuite-0.4.5-5mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>CapiSuite: AudioReceive Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.8 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<h1>AudioReceive Class Reference</h1>Call Module for receiving audio.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="audioreceive_8h-source.html">audioreceive.h</a>&gt;</code>
<p>
<p>Inheritance diagram for AudioReceive:
<p><center><img src="classAudioReceive.png" usemap="#AudioReceive_map" border="0" alt=""></center>
<map name="AudioReceive_map">
<area href="classCallModule.html" alt="CallModule" shape="rect" coords="0,56,91,80">
<area href="classCallInterface.html" alt="CallInterface" shape="rect" coords="0,0,91,24">
</map>
<a href="classAudioReceive-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classAudioReceive.html#a0">AudioReceive</a> (<a class="el" href="classConnection.html">Connection</a> *<a class="el" href="classCallModule.html#p3">conn</a>, string <a class="el" href="classAudioReceive.html#r2">file</a>, int <a class="el" href="classCallModule.html#p5">timeout</a>, int <a class="el" href="classAudioReceive.html#r1">silence_timeout</a>, bool <a class="el" href="classCallModule.html#p0">DTMF_exit</a>)  throw (CapiExternalError)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. Create an object and test for audio mode.  <a href="#a0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classAudioReceive.html#a1">mainLoop</a> ()  throw (CapiWrongState, CapiExternalError)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start file reception, wait for one of the timeouts or disconnection and stop the reception.  <a href="#a1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classAudioReceive.html#a2">dataIn</a> (unsigned char *data, unsigned length)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test all received audio packets for silence and count silent packets.  <a href="#a2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classAudioReceive.html#a3">duration</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return the time in seconds since start of <a class="el" href="classAudioReceive.html#a1">mainLoop()</a>.  <a href="#a3"></a><br></td></tr>
<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classAudioReceive.html#r0">silence_count</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">counter how many consecutive samples (bytes) have been silent  <a href="#r0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classAudioReceive.html#r1">silence_timeout</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">amount of silence samples after which record is finished  <a href="#r1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classAudioReceive.html#r2">file</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">file name to save audio data to  <a href="#r2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classAudioReceive.html#r3">start_time</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">time in seconds since the epoch when the recording was started  <a href="#r3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>long&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classAudioReceive.html#r4">end_time</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">time in seconds since the epoch when the recording was finished  <a href="#r4"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Call Module for receiving audio. 
<p>
This module handles the reception of an audio wave file. It can recognize silence in the signal and timeout after a given period of silence, after a general timeout or after the reception of a DTMF signal.<p>
If DTMF abort is enabled, the module will abort immediately if the DTMF receiving buffer (see <a class="el" href="classConnection.html#a14">Connection::getDTMF</a>) isn't empty when it is created. That allows the user to abort subsequent audio receive and send commands with one DTMF signal w/o needing to check for received DTMF after each command.<p>
The call must be in audio mode (by connecting with service VOICE), otherwise an exception will be caused.<p>
The created file will be saved in the format given by <a class="el" href="classCapi.html">Capi</a>, that is bit-reversed A-Law (or u-Law), 8 kHz mono.<p>
<dl compact><dt><b>Author:</b></dt><dd>Gernot Hillier </dd></dl>

<p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="a0" doxytag="AudioReceive::AudioReceive" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> AudioReceive::AudioReceive           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="classConnection.html">Connection</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>conn</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>string&nbsp;</td>
          <td class="mdname" nowrap> <em>file</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap> <em>timeout</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap> <em>silence_timeout</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>bool&nbsp;</td>
          <td class="mdname" nowrap> <em>DTMF_exit</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2">  throw (<a class="el" href="classCapiExternalError.html">CapiExternalError</a>)</td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Constructor. Create an object and test for audio mode. 
<p>
The constructor also converts the given silence_timeout from seconds to number of samples (bytes).<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td></td><td valign=top><em>conn</em>&nbsp;</td><td>reference to <a class="el" href="classConnection.html">Connection</a> object </td></tr>
    <tr><td></td><td valign=top><em>file</em>&nbsp;</td><td>name of file to save received audio stream to. </td></tr>
    <tr><td></td><td valign=top><em>timeout</em>&nbsp;</td><td>timeout in seconds after which record is finished, 0=record forever (until call is finished) </td></tr>
    <tr><td></td><td valign=top><em>silence_timeout</em>&nbsp;</td><td>duration of silence in seconds after which record is finished, 0=no silence detection </td></tr>
    <tr><td></td><td valign=top><em>DTMF_exit</em>&nbsp;</td><td>true: abort if we receive DTMF during <a class="el" href="classAudioReceive.html#a1">mainLoop()</a> or if DTMF was received before </td></tr>
  </table>
</dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td></td><td valign=top><em>CapiExternalError</em>&nbsp;</td><td>Thrown if connection is not in speech mode</td></tr>
  </table>
</dl>
    </td>
  </tr>
</table>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="a2" doxytag="AudioReceive::dataIn" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void AudioReceive::dataIn           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">unsigned char *&nbsp;</td>
          <td class="mdname" nowrap> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>unsigned&nbsp;</td>
          <td class="mdname" nowrap> <em>length</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"><code> [virtual]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Test all received audio packets for silence and count silent packets. 
<p>
All bytes of a received packages (i.e. 2048 bytes) are partly A-Law decoded, added and compared to a threshhold. If silence is found, silence_count is increased, otherwise the counter is reset to 0.<p>
If the silence_timeout value is reached, the mainLoop is signalled to finish.
<p>
Reimplemented from <a class="el" href="classCallModule.html#a9">CallModule</a>.
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="a3" doxytag="AudioReceive::duration" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> long AudioReceive::duration           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Return the time in seconds since start of <a class="el" href="classAudioReceive.html#a1">mainLoop()</a>. 
<p>
<dl compact><dt><b>Returns:</b></dt><dd>time in seconds since start of <a class="el" href="classAudioReceive.html#a1">mainLoop()</a></dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="a1" doxytag="AudioReceive::mainLoop" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void AudioReceive::mainLoop           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap>  throw (<a class="el" href="classCapiWrongState.html">CapiWrongState</a>, <a class="el" href="classCapiExternalError.html">CapiExternalError</a>)<code> [virtual]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Start file reception, wait for one of the timeouts or disconnection and stop the reception. 
<p>
If the recording was finished because of silence, the silence is truncated away from the recorded file<p>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td></td><td valign=top><em>CapiWrongState</em>&nbsp;</td><td>Thrown if disconnect is recognized </td></tr>
    <tr><td></td><td valign=top><em>CapiExternalError</em>&nbsp;</td><td>Thrown by <a class="el" href="classConnection.html#a6">Connection::start_file_reception()</a>.</td></tr>
  </table>
</dl>

<p>
Reimplemented from <a class="el" href="classCallModule.html#a2">CallModule</a>.
<p>
    </td>
  </tr>
</table>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="r4" doxytag="AudioReceive::end_time" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> long <a class="el" href="classAudioReceive.html#r4">AudioReceive::end_time</a><code> [private]</code>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
time in seconds since the epoch when the recording was finished 
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="r2" doxytag="AudioReceive::file" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> string <a class="el" href="classAudioReceive.html#r2">AudioReceive::file</a><code> [private]</code>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
file name to save audio data to 
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="r0" doxytag="AudioReceive::silence_count" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> unsigned int <a class="el" href="classAudioReceive.html#r0">AudioReceive::silence_count</a><code> [private]</code>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
counter how many consecutive samples (bytes) have been silent 
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="r1" doxytag="AudioReceive::silence_timeout" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> unsigned int <a class="el" href="classAudioReceive.html#r1">AudioReceive::silence_timeout</a><code> [private]</code>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
amount of silence samples after which record is finished 
<p>
    </td>
  </tr>
</table>
<a class="anchor" name="r3" doxytag="AudioReceive::start_time" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> long <a class="el" href="classAudioReceive.html#r3">AudioReceive::start_time</a><code> [private]</code>          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
time in seconds since the epoch when the recording was started 
<p>
    </td>
  </tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="audioreceive_8h-source.html">audioreceive.h</a><li>audioreceive.cpp</ul>
<hr size="1"><address style="align: right;"><small>Generated on Sun Nov 28 14:37:44 2004 for CapiSuite by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 ></a> 1.3.8 </small></address>
</body>
</html>