Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 2ff8806b45ba9c96e77e01e6d40e440b > files > 152

libsc68_2.2.1-devel-2.2.1-11mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>sc68fordevelopers: audio mixer</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.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>audio mixer<br>
<small>
[<a class="el" href="group__api68__devel.html">api68 library documentation.</a>]</small>
</h1>sc68 audio mixer provides functions for computing audio data PCM.  
<a href="#_details">More...</a>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api68__mixer.html#g6cf4ac92a7819850801fea45cb19b4ff">SC68mixer_stereo_16_LR</a> (<a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *dest, <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *src, int nb, const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> sign)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy 16-bit-stereo PCM with optionnal sign change.  <a href="#g6cf4ac92a7819850801fea45cb19b4ff"></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="group__api68__mixer.html#g9c79c2498992c74b7583130a2a5c949c">SC68mixer_stereo_16_RL</a> (<a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *dest, <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *src, int nb, const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> sign)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy 16-bit-stereo PCM with channel swapping and optionnal sign change.  <a href="#g9c79c2498992c74b7583130a2a5c949c"></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="group__api68__mixer.html#g03451c633f2341922cad9dff8d66135f">SC68mixer_stereo_FL_LR</a> (float *dest, <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *src, int nb, const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> sign, const float norm)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy 16-bit-stereo PCM into normalized float-stereo (-norm.  <a href="#g03451c633f2341922cad9dff8d66135f"></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="group__api68__mixer.html#gcc55f8e17ffb52ffcac33a257d2d60e6">SC68mixer_dup_L_to_R</a> (<a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *dest, <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *src, int nb, const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> sign)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy left channel of 16-bit stereo PCM into L/R channels with optionnal sign change.  <a href="#gcc55f8e17ffb52ffcac33a257d2d60e6"></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="group__api68__mixer.html#g68f1b9f67d75297d98f6329f19ce3d46">SC68mixer_dup_R_to_L</a> (<a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *dest, <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *src, int nb, const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> sign)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy right channel of 16-bit stereo PCM into L/R channels with optionnal sign change.  <a href="#g68f1b9f67d75297d98f6329f19ce3d46"></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="group__api68__mixer.html#g235035937483e02b8343d4e61ab1dfa3">SC68mixer_blend_LR</a> (<a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *dest, <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *src, int nb, int factor, const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> sign_r, const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> sign_w)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy 16-bit-stereo PCM with L/R blending and optionnal sign change.  <a href="#g235035937483e02b8343d4e61ab1dfa3"></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="group__api68__mixer.html#g3554c9d92271cd756fd03002732070b5">SC68mixer_mult_LR</a> (<a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *dest, <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *src, int nb, const int ml, const int mr, const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> sign_r, const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> sign_w)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy 16-bit-stereo PCM with L/R amplitude factor and optionnal sign change.  <a href="#g3554c9d92271cd756fd03002732070b5"></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="group__api68__mixer.html#gc03ee6ac4e44ff818e306fa2f66bade9">SC68mixer_fill</a> (<a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *dest, int nb, const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> sign)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Fill 16-bit-stereo buffer with sign value (RRRRLLLL).  <a href="#gc03ee6ac4e44ff818e306fa2f66bade9"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Constants for PCM sign transformation.</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api68__mixer.html#gb5a2a081947c2a58fa91c78caaa84684">MIXER68_SAME_SIGN</a>&nbsp;&nbsp;&nbsp;0x00000000</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">No channel.  <a href="#gb5a2a081947c2a58fa91c78caaa84684"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api68__mixer.html#g6fe21848d3a3dbdd9061110f19c13eca">MIXER68_CHANGE_LEFT_CHANNEL_SIGN</a>&nbsp;&nbsp;&nbsp;0x00008000</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Left channel.  <a href="#g6fe21848d3a3dbdd9061110f19c13eca"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api68__mixer.html#gc2f7b213c375a5b1397109924a925841">MIXER68_CHANGE_RIGHT_CHANNEL_SIGN</a>&nbsp;&nbsp;&nbsp;0x80000000</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Right channel.  <a href="#gc2f7b213c375a5b1397109924a925841"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__api68__mixer.html#g8c2dff867f2492a36f0047a6cdfedf4e">MIXER68_CHANGE_SIGN</a>&nbsp;&nbsp;&nbsp;0x80008000</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Both channels.  <a href="#g8c2dff867f2492a36f0047a6cdfedf4e"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
sc68 audio mixer provides functions for computing audio data PCM. 
<p>
Almost all functions work on 16 bit stereo PCM. Some functions require signed input to work properly. All functions allow to change PCM sign. Functions that require signed input perform a double sign change operation which allow to have any kind of input PCM.<p>
Internaly PCM are read as 32bit integer. This implies that buffer must be properly aligned (depending on the architecture). Left channel is stored the less signifiant 16 bit and right the most signifiant 16 bit. Ensure the audio device use the same byte order. <hr><h2>Define Documentation</h2>
<a class="anchor" name="gb5a2a081947c2a58fa91c78caaa84684"></a><!-- doxytag: member="mixer68.h::MIXER68_SAME_SIGN" ref="gb5a2a081947c2a58fa91c78caaa84684" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MIXER68_SAME_SIGN&nbsp;&nbsp;&nbsp;0x00000000          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
No channel. 
<p>

</div>
</div><p>
<a class="anchor" name="g6fe21848d3a3dbdd9061110f19c13eca"></a><!-- doxytag: member="mixer68.h::MIXER68_CHANGE_LEFT_CHANNEL_SIGN" ref="g6fe21848d3a3dbdd9061110f19c13eca" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MIXER68_CHANGE_LEFT_CHANNEL_SIGN&nbsp;&nbsp;&nbsp;0x00008000          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Left channel. 
<p>

</div>
</div><p>
<a class="anchor" name="gc2f7b213c375a5b1397109924a925841"></a><!-- doxytag: member="mixer68.h::MIXER68_CHANGE_RIGHT_CHANNEL_SIGN" ref="gc2f7b213c375a5b1397109924a925841" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MIXER68_CHANGE_RIGHT_CHANNEL_SIGN&nbsp;&nbsp;&nbsp;0x80000000          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Right channel. 
<p>

</div>
</div><p>
<a class="anchor" name="g8c2dff867f2492a36f0047a6cdfedf4e"></a><!-- doxytag: member="mixer68.h::MIXER68_CHANGE_SIGN" ref="g8c2dff867f2492a36f0047a6cdfedf4e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MIXER68_CHANGE_SIGN&nbsp;&nbsp;&nbsp;0x80008000          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Both channels. 
<p>

</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g6cf4ac92a7819850801fea45cb19b4ff"></a><!-- doxytag: member="mixer68.h::SC68mixer_stereo_16_LR" ref="g6cf4ac92a7819850801fea45cb19b4ff" args="(u32 *dest, u32 *src, int nb, const u32 sign)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SC68mixer_stereo_16_LR           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a>&nbsp;</td>
          <td class="paramname"> <em>sign</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy 16-bit-stereo PCM with optionnal sign change. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Destination PCM buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>Source PCM buffer (can be same as dest). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nb</em>&nbsp;</td><td>Number of PCM </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sign</em>&nbsp;</td><td>Sign transformation. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g9c79c2498992c74b7583130a2a5c949c"></a><!-- doxytag: member="mixer68.h::SC68mixer_stereo_16_RL" ref="g9c79c2498992c74b7583130a2a5c949c" args="(u32 *dest, u32 *src, int nb, const u32 sign)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SC68mixer_stereo_16_RL           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a>&nbsp;</td>
          <td class="paramname"> <em>sign</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy 16-bit-stereo PCM with channel swapping and optionnal sign change. 
<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Sign change occurs after channel swapping.</dd></dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Destination PCM buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>Source PCM buffer (can be same as dest). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nb</em>&nbsp;</td><td>Number of PCM </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sign</em>&nbsp;</td><td>Sign transformation. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g03451c633f2341922cad9dff8d66135f"></a><!-- doxytag: member="mixer68.h::SC68mixer_stereo_FL_LR" ref="g03451c633f2341922cad9dff8d66135f" args="(float *dest, u32 *src, int nb, const u32 sign, const float norm)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SC68mixer_stereo_FL_LR           </td>
          <td>(</td>
          <td class="paramtype">float *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a>&nbsp;</td>
          <td class="paramname"> <em>sign</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const float&nbsp;</td>
          <td class="paramname"> <em>norm</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy 16-bit-stereo PCM into normalized float-stereo (-norm. 
<p>
.+norm).<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Sign change occurs before float transformation. </dd></dl>
<dl class="warning" compact><dt><b>Warning:</b></dt><dd>PCM are assumed to be signed after sign transform.</dd></dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Destination PCM buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>Source PCM buffer (can be same as dest). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nb</em>&nbsp;</td><td>Number of PCM </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sign</em>&nbsp;</td><td>Sign transformation. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>norm</em>&nbsp;</td><td>float absolute range (normalization).</td></tr>
  </table>
</dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Minus norm causes a sign/phase inversion. </dd></dl>

</div>
</div><p>
<a class="anchor" name="gcc55f8e17ffb52ffcac33a257d2d60e6"></a><!-- doxytag: member="mixer68.h::SC68mixer_dup_L_to_R" ref="gcc55f8e17ffb52ffcac33a257d2d60e6" args="(u32 *dest, u32 *src, int nb, const u32 sign)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SC68mixer_dup_L_to_R           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a>&nbsp;</td>
          <td class="paramname"> <em>sign</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy left channel of 16-bit stereo PCM into L/R channels with optionnal sign change. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Destination PCM buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>Source PCM buffer (can be same as dest). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nb</em>&nbsp;</td><td>Number of PCM </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sign</em>&nbsp;</td><td>Sign transformation. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g68f1b9f67d75297d98f6329f19ce3d46"></a><!-- doxytag: member="mixer68.h::SC68mixer_dup_R_to_L" ref="g68f1b9f67d75297d98f6329f19ce3d46" args="(u32 *dest, u32 *src, int nb, const u32 sign)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SC68mixer_dup_R_to_L           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a>&nbsp;</td>
          <td class="paramname"> <em>sign</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy right channel of 16-bit stereo PCM into L/R channels with optionnal sign change. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Destination PCM buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>Source PCM buffer (can be same as dest). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nb</em>&nbsp;</td><td>Number of PCM </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sign</em>&nbsp;</td><td>Sign transformation. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g235035937483e02b8343d4e61ab1dfa3"></a><!-- doxytag: member="mixer68.h::SC68mixer_blend_LR" ref="g235035937483e02b8343d4e61ab1dfa3" args="(u32 *dest, u32 *src, int nb, int factor, const u32 sign_r, const u32 sign_w)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SC68mixer_blend_LR           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>factor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a>&nbsp;</td>
          <td class="paramname"> <em>sign_r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a>&nbsp;</td>
          <td class="paramname"> <em>sign_w</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy 16-bit-stereo PCM with L/R blending and optionnal sign change. 
<p>
This function performs following transformations in this order :<ul>
<li>Read 32 bit value from src.</li><li>Apply sign_r transformation; it is a bitwise EOR.</li><li>Apply blending (here PCM are asuumed to be signed).</li><li>Apply sign_w transformation; it is a bitwise EOR too.</li><li>Store 32 bit value.</li></ul>
<p>
<dl class="warning" compact><dt><b>Warning:</b></dt><dd>As the blending occurs on signed PCM the sign_r and the sign_w must be setted properly.</dd></dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Destination PCM buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>Source PCM buffer (can be same as dest). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nb</em>&nbsp;</td><td>Number of PCM </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>factor</em>&nbsp;</td><td>Blending factor from [0..65536].<ul>
<li>0, blend nothing.</li><li>65536, Swap L/R.</li><li>other value, linear blending. </li></ul>
</td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sign_r</em>&nbsp;</td><td>sign transform for input PCM. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sign_w</em>&nbsp;</td><td>sign transform for output PCM. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="g3554c9d92271cd756fd03002732070b5"></a><!-- doxytag: member="mixer68.h::SC68mixer_mult_LR" ref="g3554c9d92271cd756fd03002732070b5" args="(u32 *dest, u32 *src, int nb, const int ml, const int mr, const u32 sign_r, const u32 sign_w)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SC68mixer_mult_LR           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *&nbsp;</td>
          <td class="paramname"> <em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&nbsp;</td>
          <td class="paramname"> <em>ml</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&nbsp;</td>
          <td class="paramname"> <em>mr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a>&nbsp;</td>
          <td class="paramname"> <em>sign_r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a>&nbsp;</td>
          <td class="paramname"> <em>sign_w</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy 16-bit-stereo PCM with L/R amplitude factor and optionnal sign change. 
<p>
This function performs following transformations in this order :<ul>
<li>Read 32 bit value from src.</li><li>Apply sign_r transformation; it is a bitwise EOR.</li><li>Apply signed modulation to both channels.</li><li>Apply sign_w transformation; it is a bitwise EOR too.</li><li>Store 32 bit value.</li></ul>
<p>
<dl class="warning" compact><dt><b>Warning:</b></dt><dd>As the modulation occurs on signed PCM the sign_r and the sign_w must be setted properly.</dd></dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Amplitude factors (ml and mr) can be minus to invert phase.</dd></dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Destination PCM buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>src</em>&nbsp;</td><td>Source PCM buffer (can be same as dest). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nb</em>&nbsp;</td><td>Number of PCM </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ml</em>&nbsp;</td><td>Left channel factor from [-65536..65536]. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mr</em>&nbsp;</td><td>Like ml but for right channel. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sign_r</em>&nbsp;</td><td>sign transform for input PCM. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sign_w</em>&nbsp;</td><td>sign transform for output PCM. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="gc03ee6ac4e44ff818e306fa2f66bade9"></a><!-- doxytag: member="mixer68.h::SC68mixer_fill" ref="gc03ee6ac4e44ff818e306fa2f66bade9" args="(u32 *dest, int nb, const u32 sign)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SC68mixer_fill           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a>&nbsp;</td>
          <td class="paramname"> <em>sign</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Fill 16-bit-stereo buffer with sign value (RRRRLLLL). 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>Destination PCM buffer </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nb</em>&nbsp;</td><td>Number of PCM </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sign</em>&nbsp;</td><td>PCM value written (right channel is MSW). </td></tr>
  </table>
</dl>

</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 15 03:58:05 2009 for sc68fordevelopers by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>