<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"Comic Sans MS";
        panose-1:3 15 7 2 3 3 2 2 2 4;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        font-size:10.5pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
p
        {mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:SimSun;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Comic Sans MS";
        color:windowtext;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
 /* Page Definitions */
 @page Section1
        {size:595.3pt 841.9pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;
        layout-grid:15.6pt;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=ZH-CN link=blue vlink=purple style='text-justify-trim:punctuation'>

<div class=Section1 style='layout-grid:15.6pt'>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>Hi, Lennart<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>Sorry for being late, was fully
occupied by other tasks.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>I modified the volume
ramping feature per your suggestions.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>1, rewind envelop when rewinding
sink-input. And keep the envelop around until i-&gt;sink-&gt;max_rewind is
processed after the envelop is finished.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>2, make all envelop
manipulation inside the IO context, main thread just set the pa_envelope_def
and then send out SET_ENVELOPE message to let IO thread create the envelop. And
this will make it possible to create envelope in other places, not just inside set_volume_with_ramping
set_mute_with_ramping. <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>3, future_volume,
future_mute is introduced to avoid distortion before envelop takes effect, e.g.
when unmute, if you change the thread_info.muted immediately, you will hear a
short loud sound before ramping up takes effect, future_mute could avoid this
issue. <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>4, do not apply sink&#8217;s
volume when setting ramp info. Since it does not help a lot to avoid
calculation overflow.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>I do not use pa_envelope_replace,
it seems envelope_replace is intend to replace the pa_envelope_def inside pa_envelope_item,
our code only has one pa_envelope_def, if I call replace, it&#8217;s like
replace myself with myself, I&#8217;m not sure if that is proper.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>I&#8217;m sorry I didn&#8217;t
have time to make envelop be able to aware of balancing stuff, will it be
possible to make it as a future enhancement? <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>Thanks for your review!<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>From
bf68ed5814ab313007a42cbe64210c61c2de78c9 Mon Sep 17 00:00:00 2001<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>From: zbt
&lt;huan.zheng@intel.com&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>Date: Tue, 14 Jul 2009
14:58:00 +0800<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>Subject: [PATCH] Add
volume ramping feature<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>---<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;src/pulsecore/envelope.c&nbsp;&nbsp;
|&nbsp; 365 ++++++++++++++++++++++++++++++++++----------<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;src/pulsecore/envelope.h&nbsp;&nbsp;
|&nbsp;&nbsp;&nbsp; 3 +<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;src/pulsecore/sink-input.c
|&nbsp; 351 +++++++++++++++++++++++++++++++++++-------<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;src/pulsecore/sink-input.h
|&nbsp;&nbsp; 21 +++<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;src/pulsecore/sink.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
|&nbsp;&nbsp;&nbsp; 6 +-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;5 files changed, 605
insertions(+), 141 deletions(-)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>diff --git
a/src/pulsecore/envelope.c b/src/pulsecore/envelope.c<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>index fd6a948..ebf0bd5
100644<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>---
a/src/pulsecore/envelope.c<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+++
b/src/pulsecore/envelope.c<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -177,7 +177,7 @@ static
int32_t item_get_int(pa_envelope_item *i, pa_usec_t x) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
pa_assert(i-&gt;j &gt; 0);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
pa_assert(i-&gt;def-&gt;points_x[i-&gt;j-1] &lt;= x);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
pa_assert(x &lt; i-&gt;def-&gt;points_x[i-&gt;j]);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(x &lt;= i-&gt;def-&gt;points_x[i-&gt;j]);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
return linear_interpolate_int(i-&gt;def-&gt;points_x[i-&gt;j-1],
i-&gt;def-&gt;points_y.i[i-&gt;j-1],<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i-&gt;def-&gt;points_x[i-&gt;j],
i-&gt;def-&gt;points_y.i[i-&gt;j], x);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -200,7 +200,7 @@ static
float item_get_float(pa_envelope_item *i, pa_usec_t x) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
pa_assert(i-&gt;j &gt; 0);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
pa_assert(i-&gt;def-&gt;points_x[i-&gt;j-1] &lt;= x);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
pa_assert(x &lt; i-&gt;def-&gt;points_x[i-&gt;j]);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(x &lt;= i-&gt;def-&gt;points_x[i-&gt;j]);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
return linear_interpolate_float(i-&gt;def-&gt;points_x[i-&gt;j-1],
i-&gt;def-&gt;points_y.f[i-&gt;j-1],<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;def-&gt;points_x[i-&gt;j], i-&gt;def-&gt;points_y.f[i-&gt;j], x);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -550,7 +550,7 @@ static
int32_t linear_get_int(pa_envelope *e, int v) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;points[v].cached_valid = TRUE;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp; return
e-&gt;points[v].y.i[e-&gt;points[v].n_current] + (e-&gt;points[v].cached_dy_i *
(int32_t) (e-&gt;x - e-&gt;points[v].x[e-&gt;points[v].n_current])) / (int32_t)
e-&gt;points[v].cached_dx;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
e-&gt;points[v].y.i[e-&gt;points[v].n_current] +
((float)e-&gt;points[v].cached_dy_i * (int32_t) (e-&gt;x -
e-&gt;points[v].x[e-&gt;points[v].n_current])) / (int32_t)
e-&gt;points[v].cached_dx;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;static float
linear_get_float(pa_envelope *e, int v) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -596,35 +596,61 @@ void
pa_envelope_apply(pa_envelope *e, pa_memchunk *chunk) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p = (uint8_t*) pa_memblock_acquire(chunk-&gt;memblock) + chunk-&gt;index;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
fs = pa_frame_size(&amp;e-&gt;sample_spec);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
n = chunk-&gt;length;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_log_debug(&quot;Envelop position %d applying factor %d=%f, sample spec is
%d, chunk's length is %d, fs is %d\n&quot;, e-&gt;x, linear_get_int(e, v),
((float) linear_get_int(e,v))/0x10000, e-&gt;sample_spec.format, n, fs);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
switch (e-&gt;sample_spec.format) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font><font size=2 face="Comic Sans MS"><span lang=FR style='font-size:
10.0pt;font-family:"Comic Sans MS"'>case PA_SAMPLE_U8: {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
uint8_t *t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
uint8_t *d, *s;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned channel;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t factor = linear_get_int(e, v); <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (t = p; n &gt; 0; n -= fs) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned c;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
s = (uint8_t*) p + n;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (c = 0; c &lt; e-&gt;sample_spec.channels; c++, t++)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*t = (uint8_t) (((factor * ((int16_t) *t - 0x80)) / 0x10000) + 0x80);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (channel = 0, d = p; d &lt; s; d++) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t t, hi, lo;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
hi = factor &gt;&gt; 16;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lo = factor &amp; 0xFFFF;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = (int32_t) *d - 0x80;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = ((t * lo) &gt;&gt; 16) + (t * hi);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = PA_CLAMP_UNLIKELY(t, -0x80, 0x7F);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*d = (uint8_t) (t + 0x80);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (PA_UNLIKELY(++channel &gt;= e-&gt;sample_spec.channels)) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
channel = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
break;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SAMPLE_ULAW: {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
uint8_t *t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (t = p; n &gt; 0; n -= fs) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;unsigned c;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (c = 0; c &lt; e-&gt;sample_spec.channels; c++, t++) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int16_t k = st_ulaw2linear16(*t);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*t = (uint8_t) st_14linear2ulaw((int16_t) (((factor * k) / 0x10000) &gt;&gt;
2));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
uint8_t *d, *s;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned channel;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t factor = linear_get_int(e, v); <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
s = (uint8_t*) p + n;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (channel = 0, d = p; d &lt; s; d++) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t t, hi, lo;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
hi = factor &gt;&gt; 16;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lo = factor &amp; 0xFFFF;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = (int32_t) st_ulaw2linear16(*d);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = ((t * lo) &gt;&gt; 16) + (t * hi);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*d = (uint8_t) st_14linear2ulaw((int16_t) t &gt;&gt; 2);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (PA_UNLIKELY(++channel &gt;= e-&gt;sample_spec.channels)) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
channel = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -632,48 +658,83 @@ void
pa_envelope_apply(pa_envelope *e, pa_memchunk *chunk) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SAMPLE_ALAW: {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
uint8_t *t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
uint8_t *d, *s;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned channel;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t factor = linear_get_int(e, v); <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (t = p; n &gt; 0; n -= fs) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned c;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
s = (uint8_t*) p + n;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (c = 0; c &lt; e-&gt;sample_spec.channels; c++, t++) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int16_t k = st_alaw2linear16(*t);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*t = (uint8_t) st_13linear2alaw((int16_t) (((factor * k) / 0x10000) &gt;&gt;
3));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (channel = 0, d = p; d &lt; s; d++) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t t, hi, lo;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
hi = factor &gt;&gt; 16;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lo = factor &amp; 0xFFFF;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = (int32_t) st_alaw2linear16(*d);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = ((t * lo) &gt;&gt; 16) + (t * hi);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*d = (uint8_t) st_13linear2alaw((int16_t) t &gt;&gt; 3);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (PA_UNLIKELY(++channel &gt;= e-&gt;sample_spec.channels)) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
channel = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
break;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SAMPLE_S16NE: {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int16_t *t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (t = p; n &gt; 0; n -= fs) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned c;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (c = 0; c &lt; e-&gt;sample_spec.channels; c++, t++)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*t = (int16_t) ((factor * *t) / 0x10000);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int16_t *d, *s;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned channel;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t factor = linear_get_int(e, v); <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
s = (int16_t*) p + n/sizeof(int16_t);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (channel = 0, d = p; d &lt; s; d++) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t t, hi, lo;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
hi = factor &gt;&gt; 16;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lo = factor &amp; 0xFFFF;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = (int32_t)(*d);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = ((t * lo) &gt;&gt; 16) + (t * hi);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*d
= (int16_t) t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (PA_UNLIKELY(++channel &gt;= e-&gt;sample_spec.channels)) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
channel = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
break;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SAMPLE_S16RE: {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int16_t *t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int16_t *d, *s;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned channel;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t factor = linear_get_int(e, v); <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (t = p; n &gt; 0; n -= fs) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned c;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
s = (int16_t*) p + n/sizeof(int16_t);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (c = 0; c &lt; e-&gt;sample_spec.channels; c++, t++) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int16_t r = (int16_t) ((factor * PA_INT16_SWAP(*t)) / 0x10000);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*t = PA_INT16_SWAP(r);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (channel = 0, d = p; d &lt; s; d++) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t t, hi, lo;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
hi = factor &gt;&gt; 16;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lo = factor &amp; 0xFFFF;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = (int32_t) PA_INT16_SWAP(*d);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = ((t * lo) &gt;&gt; 16) + (t * hi);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = PA_CLAMP_UNLIKELY(t, -0x8000, 0x7FFF);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*d = PA_INT16_SWAP((int16_t) t);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (PA_UNLIKELY(++channel &gt;= e-&gt;sample_spec.channels)) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
channel = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -681,40 +742,59 @@ void
pa_envelope_apply(pa_envelope *e, pa_memchunk *chunk) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SAMPLE_S32NE: {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t *t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (t = p; n &gt; 0; n -= fs) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned c;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (c = 0; c &lt;
e-&gt;sample_spec.channels; c++, t++)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*t = (int32_t) (((int64_t) factor * (int64_t) *t) / 0x10000);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t *d, *s;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned channel;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t factor = linear_get_int(e,
v);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
s = (int32_t*) p + n/sizeof(int32_t);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (channel = 0, d = p; d &lt; s; d++) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int64_t t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = (int64_t)(*d);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = (t * factor) &gt;&gt; 16;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*d = (int32_t) t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (PA_UNLIKELY(++channel &gt;= e-&gt;sample_spec.channels)) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
channel = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
break;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SAMPLE_S32RE: {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t *t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (t = p; n &gt; 0; n -= fs) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned c;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (c = 0; c &lt; e-&gt;sample_spec.channels; c++, t++) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t r = (int32_t) (((int64_t) factor * (int64_t) PA_INT32_SWAP(*t)) /
0x10000);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*t = PA_INT32_SWAP(r);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t *d, *s;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned channel;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
s = (int32_t*) p + n/sizeof(int32_t);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (channel = 0, d = p; d &lt; s; d++) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int64_t t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = (int64_t) PA_INT32_SWAP(*d);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = (t * factor) &gt;&gt; 16;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*d = PA_INT32_SWAP((int32_t) t);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (PA_UNLIKELY(++channel &gt;= e-&gt;sample_spec.channels)) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
channel = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SAMPLE_FLOAT32NE: {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*Seems the FLOAT32NE part of pa_volume_memchunk not right, do not reuse here*/<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
float *t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (t = p; n &gt; 0; n -= fs) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
float factor = linear_get_float(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned c;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -723,11 +803,12 @@ void
pa_envelope_apply(pa_envelope *e, pa_memchunk *chunk) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font><font size=2 face="Comic Sans MS"><span lang=FR style='font-size:
10.0pt;font-family:"Comic Sans MS"'>for (c = 0; c &lt;
e-&gt;sample_spec.channels; c++, t++)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*t = *t * factor;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></font><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
break;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SAMPLE_FLOAT32RE: {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/*Seems the FLOAT32RE part of pa_volume_memchunk not right, do not reuse here*/<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
float *t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (t = p; n &gt; 0; n -= fs) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -744,10 +825,101 @@
void pa_envelope_apply(pa_envelope *e, pa_memchunk *chunk) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
break;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SAMPLE_S24LE:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SAMPLE_S24BE:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SAMPLE_S24_32LE:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SAMPLE_S24_32BE:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SAMPLE_S24NE: {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
uint8_t *d, *s;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned channel;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
s = (uint8_t*) p + n/3;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (channel = 0, d = p; d &lt; s; d++) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int64_t t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = (int64_t)((int32_t) (PA_READ24NE(d) &lt;&lt; 8));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = (t * factor) &gt;&gt; 16;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
PA_WRITE24NE(d, ((uint32_t) (int32_t) t) &gt;&gt; 8);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (PA_UNLIKELY(++channel &gt;= e-&gt;sample_spec.channels)) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
channel = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
break;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SAMPLE_S24RE: {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
uint8_t *d, *s;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned channel;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
s = (uint8_t*) p + n/3;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (channel = 0, d = p; d &lt; s; d++) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int64_t t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = (int64_t)((int32_t) (PA_READ24RE(d) &lt;&lt; 8));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = (t * factor) &gt;&gt; 16;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
PA_WRITE24RE(d, ((uint32_t) (int32_t) t) &gt;&gt; 8);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (PA_UNLIKELY(++channel &gt;= e-&gt;sample_spec.channels)) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
channel = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
break;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SAMPLE_S24_32NE: {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
uint32_t *d, *s;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned channel;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int32_t factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
s = (uint32_t*) p + n/sizeof(uint32_t);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (channel = 0, d = p; d &lt; s; d++) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int64_t t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = (int64_t) ((int32_t) (*d &lt;&lt; 8));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t
= (t * factor) &gt;&gt; 16;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*d = ((uint32_t) ((int32_t) t)) &gt;&gt; 8;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (PA_UNLIKELY(++channel &gt;= e-&gt;sample_spec.channels)) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
channel = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
break;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SAMPLE_S24_32RE: {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
uint32_t *d, *s;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unsigned channel;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t factor = linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
s = (uint32_t*) p + n/sizeof(uint32_t);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;for (channel = 0, d = p; d &lt; s; d++) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int64_t t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = (int64_t) ((int32_t) (PA_UINT32_SWAP(*d) &lt;&lt; 8));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = (t * factor) &gt;&gt; 16;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
t = PA_CLAMP_UNLIKELY(t, -0x80000000LL, 0x7FFFFFFFLL);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*d = PA_UINT32_SWAP(((uint32_t) ((int32_t) t)) &gt;&gt; 8);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (PA_UNLIKELY(++channel &gt;= e-&gt;sample_spec.channels)) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
channel = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += fs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factor
= linear_get_int(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
break;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* FIXME */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_assert_not_reached();<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -757,8 +929,6 @@ void
pa_envelope_apply(pa_envelope *e, pa_memchunk *chunk) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_memblock_release(chunk-&gt;memblock);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x += chunk-&gt;length;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp; }
else {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* When we have no envelope to apply we reset our origin */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -774,13 +944,48 @@ void
pa_envelope_rewind(pa_envelope *e, size_t n_bytes) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
envelope_begin_read(e, &amp;v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp; if
(n_bytes &lt; e-&gt;x)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x -= n_bytes;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; if
(e-&gt;x - n_bytes &lt;= e-&gt;points[v].x[0])<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x = e-&gt;points[v].x[0];<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp; </span></font><font
size=2 face="Comic Sans MS"><span lang=EN-US style='font-size:10.0pt;
font-family:"Comic Sans MS"'>else<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;x -= n_bytes;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;points[v].n_current = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
e-&gt;points[v].cached_valid = FALSE;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
envelope_commit_read(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;</span></font><font
size=2 face="Comic Sans MS"><span lang=FR style='font-size:10.0pt;font-family:
"Comic Sans MS"'>}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+void
pa_envelope_restart(pa_envelope* e) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; int v;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(e);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
envelope_begin_read(e, &amp;v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
e-&gt;x = e-&gt;points[v].x[0];<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
envelope_commit_read(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+pa_bool_t
pa_envelope_is_finished(pa_envelope* e) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(e);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; int v;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_bool_t finished;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; envelope_begin_read(e,
&amp;v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
finished = (e-&gt;x &gt;=&nbsp; e-&gt;points[v].x[e-&gt;points[v].n_points-1]);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
envelope_commit_read(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; return
finished;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+int32_t
pa_envelope_length(pa_envelope *e) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(e);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; int v;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; size_t
size;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
envelope_begin_read(e, &amp;v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; size =
e-&gt;points[v].x[e-&gt;points[v].n_points-1] - e-&gt;points[v].x[0];<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
envelope_commit_read(e, v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; return
size;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>diff --git
a/src/pulsecore/envelope.h b/src/pulsecore/envelope.h<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>index 5296415..4fa3657 100644<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>---
a/src/pulsecore/envelope.h<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+++
b/src/pulsecore/envelope.h<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -49,5 +49,8 @@
pa_envelope_item *pa_envelope_replace(pa_envelope *e, pa_envelope_item *i,
const<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;void
pa_envelope_remove(pa_envelope *e, pa_envelope_item *i);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;void
pa_envelope_apply(pa_envelope *e, pa_memchunk *chunk);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;void
pa_envelope_rewind(pa_envelope *e, size_t n_bytes);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+void
pa_envelope_restart(pa_envelope* e);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+pa_bool_t
pa_envelope_is_finished(pa_envelope* e);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+int32_t
pa_envelope_length(pa_envelope *e);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;#endif<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>diff --git a/src/pulsecore/sink-input.c
b/src/pulsecore/sink-input.c<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>index a5f9635..29c259f
100644<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>---
a/src/pulsecore/sink-input.c<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+++
b/src/pulsecore/sink-input.c<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -38,6 +38,7 @@<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;#include
&lt;pulsecore/play-memblockq.h&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;#include
&lt;pulsecore/namereg.h&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;#include &lt;pulsecore/core-util.h&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+#include
&lt;pulse/timeval.h&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;#include
&quot;sink-input.h&quot;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -47,6 +48,11 @@<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;static
PA_DEFINE_CHECK_TYPE(pa_sink_input, pa_msgobject);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;static void
sink_input_free(pa_object *o);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+static void
sink_input_set_ramping_info(pa_sink_input* i, pa_volume_t&nbsp;
pre_virtual_volume, pa_volume_t target_virtual_volume, pa_usec_t t);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+static void
sink_input_set_ramping_info_for_mute(pa_sink_input* i, pa_bool_t mute,
pa_usec_t t);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+static void sink_input_volume_ramping(pa_sink_input*
i, pa_memchunk* chunk);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+static void
sink_input_rewind_ramp_info(pa_sink_input *i, size_t nbytes);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+static void
sink_input_release_envelope(pa_sink_input *i);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;pa_sink_input_new_data*
pa_sink_input_new_data_init(pa_sink_input_new_data *data) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
pa_assert(data);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -301,6 +307,16 @@ int
pa_sink_input_new(<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
reset_callbacks(i);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;userdata = NULL;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; /* Set
Ramping info */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.is_ramping = FALSE;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.envelope_dead = TRUE;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.envelope = NULL;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.item = NULL;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.envelope_dying = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_atomic_store(&amp;i-&gt;before_ramping_v, 0);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_atomic_store(&amp;i-&gt;before_ramping_m, 0);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.state = i-&gt;state;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.attached = FALSE;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
pa_atomic_store(&amp;i-&gt;thread_info.drained, 1);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -480,6 +496,12 @@
static void sink_input_free(pa_object *o) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
pa_assert(!i-&gt;thread_info.attached);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; if
(i-&gt;thread_info.ramp_info.envelope) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_log_debug (&quot;Freeing envelope\n&quot;);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_envelope_free(i-&gt;thread_info.ramp_info.envelope);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.envelope = NULL;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
if (i-&gt;thread_info.render_memblockq)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_memblockq_free(i-&gt;thread_info.render_memblockq);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -565,6 +587,7 @@
pa_usec_t pa_sink_input_get_latency(pa_sink_input *i, pa_usec_t *sink_latency)
{<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;void
pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */,
pa_memchunk *chunk, pa_cvolume *volume) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
pa_bool_t do_volume_adj_here;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
pa_bool_t volume_is_norm;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_bool_t ramping;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
size_t block_size_max_sink, block_size_max_sink_input;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
size_t ilength;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -608,7 +631,7 @@ void
pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */, p<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
* to adjust the volume *before* we resample. Otherwise we can do<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
* it after and leave it for the sink code */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
do_volume_adj_here = !pa_channel_map_equal(&amp;i-&gt;channel_map,
&amp;i-&gt;sink-&gt;channel_map);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
do_volume_adj_here = !pa_channel_map_equal(&amp;i-&gt;channel_map,
&amp;i-&gt;sink-&gt;channel_map) || i-&gt;thread_info.ramp_info.is_ramping;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
volume_is_norm = pa_cvolume_is_norm(&amp;i-&gt;thread_info.soft_volume)
&amp;&amp; !i-&gt;thread_info.muted;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
while (!pa_memblockq_is_readable(i-&gt;thread_info.render_memblockq)) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -649,7 +672,7 @@ void
pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */, p<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
wchunk.length = block_size_max_sink_input;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* It might be necessary to adjust the volume here */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (do_volume_adj_here &amp;&amp; !volume_is_norm) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (do_volume_adj_here &amp;&amp; !volume_is_norm &amp;&amp;
!i-&gt;thread_info.ramp_info.is_ramping) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_memchunk_make_writable(&amp;wchunk, 0);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (i-&gt;thread_info.muted)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -691,6 +714,23 @@ void
pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */, p<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
if (chunk-&gt;length &gt; block_size_max_sink)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
chunk-&gt;length = block_size_max_sink;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
ramping = i-&gt;thread_info.ramp_info.is_ramping;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; if
(ramping)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
sink_input_volume_ramping(i, chunk);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; if
(!i-&gt;thread_info.ramp_info.envelope_dead) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.envelope_dying += chunk-&gt;length;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_log_debug(&quot;Envelope dying is %d, chunk length is %d, dead thresholder
is %d\n&quot;, i-&gt;thread_info.ramp_info.envelope_dying,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
chunk-&gt;length,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;sink-&gt;thread_info.max_rewind +
pa_envelope_length(i-&gt;thread_info.ramp_info.envelope));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (i-&gt;thread_info.ramp_info.envelope_dying &gt;=
(i-&gt;sink-&gt;thread_info.max_rewind +
pa_envelope_length(i-&gt;thread_info.ramp_info.envelope))) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_log_debug(&quot;RELEASE Envelop&quot;);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.envelope_dead = TRUE;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
sink_input_release_envelope(i);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
/* Let's see if we had to apply the volume adjustment ourselves,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
* or if this can be done by the sink for us */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -733,6 +773,7 @@ void
pa_sink_input_process_rewind(pa_sink_input *i, size_t nbytes /* in sink sam<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
if (nbytes &gt; 0 &amp;&amp; !i-&gt;thread_info.dont_rewind_render) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_log_debug(&quot;Have to rewind %lu bytes on render memblockq.&quot;,
(unsigned long) nbytes);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_memblockq_rewind(i-&gt;thread_info.render_memblockq, nbytes);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
sink_input_rewind_ramp_info(i, nbytes);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
if (i-&gt;thread_info.rewrite_nbytes == (size_t) -1) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -873,50 +914,8 @@
pa_usec_t pa_sink_input_get_requested_latency(pa_sink_input *i) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;/* Called from main
context */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;void pa_sink_input_set_volume(pa_sink_input
*i, const pa_cvolume *volume, pa_bool_t save, pa_bool_t absolute) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
pa_cvolume v;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
pa_sink_input_assert_ref(i);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
pa_assert(PA_SINK_INPUT_IS_LINKED(i-&gt;state));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
pa_assert(volume);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
pa_assert(pa_cvolume_valid(volume));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
pa_assert(pa_cvolume_compatible(volume, &amp;i-&gt;sample_spec));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp; if
((i-&gt;sink-&gt;flags &amp; PA_SINK_FLAT_VOLUME) &amp;&amp; !absolute) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
v = i-&gt;sink-&gt;reference_volume;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_cvolume_remap(&amp;v, &amp;i-&gt;sink-&gt;channel_map,
&amp;i-&gt;channel_map);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
volume = pa_sw_cvolume_multiply(&amp;v, &amp;v, volume);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp; if
(pa_cvolume_equal(volume, &amp;i-&gt;virtual_volume))<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
i-&gt;virtual_volume = *volume;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
i-&gt;save_volume = save;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp; if
(i-&gt;sink-&gt;flags &amp; PA_SINK_FLAT_VOLUME) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_cvolume new_volume;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* We are in flat volume mode, so let's update all sink input<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
* volumes and update the flat volume of the sink */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_sink_update_flat_volume(i-&gt;sink, &amp;new_volume);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_sink_set_volume(i-&gt;sink, &amp;new_volume, FALSE, TRUE, FALSE, FALSE);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp; } else
{<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* OK, we are in normal volume mode. The volume only affects<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
* ourselves */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_sink_input_set_relative_volume(i, volume);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* Hooks have the ability to play games with i-&gt;soft_volume */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_hook_fire(&amp;i-&gt;core-&gt;hooks[PA_CORE_HOOK_SINK_INPUT_SET_VOLUME], i);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* Copy the new soft_volume to the thread_info struct */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_assert_se(pa_asyncmsgq_send(i-&gt;sink-&gt;asyncmsgq, PA_MSGOBJECT(i),
PA_SINK_INPUT_MESSAGE_SET_SOFT_VOLUME, NULL, 0, NULL) == 0);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp; /* The
virtual volume changed, let's tell people so */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
pa_subscription_post(i-&gt;core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE,
i-&gt;index);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; /*
test ramping -&gt; return pa_sink_input_set_volume_with_ramping(i, volume,
save, absolute, 2000 * PA_USEC_PER_MSEC); */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; return
pa_sink_input_set_volume_with_ramping(i, volume, save, absolute, 0);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;/* Called from main
context */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -985,18 +984,8 @@ void
pa_sink_input_set_relative_volume(pa_sink_input *i, const pa_cvolume *v) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;/* Called from main
context */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;void
pa_sink_input_set_mute(pa_sink_input *i, pa_bool_t mute, pa_bool_t save) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
pa_assert(i);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
pa_sink_input_assert_ref(i);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
pa_assert(PA_SINK_INPUT_IS_LINKED(i-&gt;state));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp; if
(!i-&gt;muted == !mute)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
i-&gt;muted = mute;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
i-&gt;save_muted = save;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
pa_assert_se(pa_asyncmsgq_send(i-&gt;sink-&gt;asyncmsgq, PA_MSGOBJECT(i),
PA_SINK_INPUT_MESSAGE_SET_SOFT_MUTE, NULL, 0, NULL) == 0);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;
pa_subscription_post(i-&gt;core,
PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i-&gt;index);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; /*
test ramping -&gt; return pa_sink_input_set_mute_with_ramping(i, mute, save,
2000 * PA_USEC_PER_MSEC); */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; return
pa_sink_input_set_mute_with_ramping(i, mute, save, 0);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;/* Called from main
context */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -1347,15 +1336,23 @@
int pa_sink_input_process_msg(pa_msgobject *o, int code, void *userdata,
int64_t<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
switch (code) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SINK_INPUT_MESSAGE_SET_SOFT_VOLUME:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (pa_atomic_load(&amp;i-&gt;before_ramping_v))<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.future_soft_volume = i-&gt;soft_volume;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (!pa_cvolume_equal(&amp;i-&gt;thread_info.soft_volume,
&amp;i-&gt;soft_volume)) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.soft_volume = i-&gt;soft_volume;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (!pa_atomic_load(&amp;i-&gt;before_ramping_v))<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.soft_volume = i-&gt;soft_volume;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_sink_input_request_rewind(i, 0, TRUE, FALSE, FALSE);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SINK_INPUT_MESSAGE_SET_SOFT_MUTE:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (pa_atomic_load(&amp;i-&gt;before_ramping_m))<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.future_muted = i-&gt;muted;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (i-&gt;thread_info.muted != i-&gt;muted) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.muted = i-&gt;muted;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (!pa_atomic_load(&amp;i-&gt;before_ramping_m))<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i-&gt;thread_info.muted
= i-&gt;muted;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_sink_input_request_rewind(i, 0, TRUE, FALSE, FALSE);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -1403,6 +1400,26 @@ int
pa_sink_input_process_msg(pa_msgobject *o, int code, void *userdata, int64_t<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*r = i-&gt;thread_info.requested_sink_latency;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
case PA_SINK_INPUT_MESSAGE_SET_ENVELOPE: {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!i-&gt;thread_info.ramp_info.envelope)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.envelope =
pa_envelope_new(&amp;i-&gt;sink-&gt;sample_spec);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (i-&gt;thread_info.ramp_info.envelope &amp;&amp;
i-&gt;thread_info.ramp_info.item) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_envelope_remove(i-&gt;thread_info.ramp_info.envelope,
i-&gt;thread_info.ramp_info.item);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.item = NULL;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.item =
pa_envelope_add(i-&gt;thread_info.ramp_info.envelope, &amp;i-&gt;using_def);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.is_ramping = TRUE;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.envelope_dead = FALSE;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.envelope_dying = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (i-&gt;thread_info.ramp_info.envelope)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_envelope_restart(i-&gt;thread_info.ramp_info.envelope);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
return -PA_ERR_NOTIMPLEMENTED;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -1550,3 +1567,217 @@
finish:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
if (pl)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_proplist_free(pl);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+/* Called from IO context
*/<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+static void
sink_input_volume_ramping(pa_sink_input* i, pa_memchunk* chunk) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(i);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(chunk);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(chunk-&gt;memblock);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(i-&gt;thread_info.ramp_info.is_ramping);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; /*
Volume is adjusted with ramping effect here */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_envelope_apply(i-&gt;thread_info.ramp_info.envelope, chunk);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; if
(pa_envelope_is_finished(i-&gt;thread_info.ramp_info.envelope)) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.is_ramping = FALSE;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (pa_atomic_load(&amp;i-&gt;before_ramping_v)) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.soft_volume = i-&gt;thread_info.future_soft_volume;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_atomic_store(&amp;i-&gt;before_ramping_v, 0);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
else if (pa_atomic_load(&amp;i-&gt;before_ramping_m)) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.muted = i-&gt;thread_info.future_muted;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_atomic_store(&amp;i-&gt;before_ramping_m, 0);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+/* <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+ * Called from main
context<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+ * This function should
be called inside pa_sink_input_set_volume_with_ramping <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+ * should be called after
soft_volume of sink_input and sink are all adjusted<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+ */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+static void
sink_input_set_ramping_info(pa_sink_input* i, pa_volume_t&nbsp;
pre_virtual_volume, pa_volume_t target_virtual_volume, pa_usec_t t) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
int32_t target_abs_vol, target_apply_vol, pre_apply_vol;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(i);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_log_debug(&quot;Sink input's soft volume is %d= %f &quot;,
pa_cvolume_avg(&amp;i-&gt;soft_volume),
pa_sw_volume_to_linear(pa_cvolume_avg(&amp;i-&gt;soft_volume)));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; /*
Calculation formula are target_abs_vol := i-&gt;soft_volume<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
target_apply_vol := lrint(pa_sw_volume_to_linear(target_abs_vol) * 0x10000)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pre_apply_vol := ( previous_virtual_volume / target_virtual_volume ) *
target_apply_vol<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;
*<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;
* Will do volume adjustment inside pa_sink_input_peek<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;
*/<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
target_abs_vol = pa_cvolume_avg(&amp;i-&gt;soft_volume);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
target_apply_vol = (int32_t) lrint(pa_sw_volume_to_linear(target_abs_vol) *
0x10000);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pre_apply_vol = (int32_t) ((pa_sw_volume_to_linear(pre_virtual_volume) /
pa_sw_volume_to_linear(target_virtual_volume)) * target_apply_vol);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;using_def.n_points = 2;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;using_def.points_x[0] = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;using_def.points_x[1] = t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;using_def.points_y.i[0] = pre_apply_vol;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;using_def.points_y.i[1] = target_apply_vol;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;using_def.points_y.f[0] = ((float) i-&gt;using_def.points_y.i[0])
/0x10000;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;using_def.points_y.f[1] = ((float) i-&gt;using_def.points_y.i[1])
/0x10000;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_log_debug(&quot;Volume Ramping: Point 1 is %d=%f, Point 2 is %d=%f\n&quot;,
i-&gt;using_def.points_y.i[0], i-&gt;using_def.points_y.f[0],<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;using_def.points_y.i[1], i-&gt;using_def.points_y.f[1]);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert_se(pa_asyncmsgq_send(i-&gt;sink-&gt;asyncmsgq, PA_MSGOBJECT(i),
PA_SINK_INPUT_MESSAGE_SET_ENVELOPE, NULL, 0, NULL) == 0);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+/* Called from main
context */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+static void
sink_input_set_ramping_info_for_mute(pa_sink_input* i, pa_bool_t mute, pa_usec_t
t) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
int32_t cur_vol;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(i);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;using_def.n_points = 2;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;using_def.points_x[0] = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;using_def.points_x[1] = t;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
cur_vol = (int32_t) lrint(
pa_sw_volume_to_linear(pa_cvolume_avg(&amp;i-&gt;soft_volume)) * 0x10000);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; if
(mute) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;using_def.points_y.i[0] = cur_vol;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;using_def.points_y.i[1] = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; } else
{<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;using_def.points_y.i[0] = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;using_def.points_y.i[1] = cur_vol;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;using_def.points_y.f[0] = ((float) i-&gt;using_def.points_y.i[0])
/0x10000;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;using_def.points_y.f[1] = ((float) i-&gt;using_def.points_y.i[1])
/0x10000;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_log_debug(&quot;Mute Ramping: Point 1 is %d=%f, Point 2 is %d=%f\n&quot;,
i-&gt;using_def.points_y.i[0], i-&gt;using_def.points_y.f[0],<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;using_def.points_y.i[1], i-&gt;using_def.points_y.f[1]);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert_se(pa_asyncmsgq_send(i-&gt;sink-&gt;asyncmsgq, PA_MSGOBJECT(i),
PA_SINK_INPUT_MESSAGE_SET_ENVELOPE, NULL, 0, NULL) == 0);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+/* Called from IO context
*/<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+static void
sink_input_release_envelope(pa_sink_input *i) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(i);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(!i-&gt;thread_info.ramp_info.is_ramping);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(i-&gt;thread_info.ramp_info.envelope_dead);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_envelope_free(i-&gt;thread_info.ramp_info.envelope);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.envelope = NULL;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.item = NULL;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+/* Called from IO context
*/<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+static void
sink_input_rewind_ramp_info(pa_sink_input *i, size_t nbytes) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(i);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; if (!i-&gt;thread_info.ramp_info.envelope_dead)
{<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_assert(i-&gt;thread_info.ramp_info.envelope);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t envelope_length =
pa_envelope_length(i-&gt;thread_info.ramp_info.envelope);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (i-&gt;thread_info.ramp_info.envelope_dying &gt; envelope_length) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if ((i-&gt;thread_info.ramp_info.envelope_dying - nbytes) &lt; envelope_length)
{<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_log_debug(&quot;Envelope Become Alive&quot;);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_envelope_rewind(i-&gt;thread_info.ramp_info.envelope, envelope_length -
(i-&gt;thread_info.ramp_info.envelope_dying - nbytes));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.is_ramping = TRUE;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
} else if (i-&gt;thread_info.ramp_info.envelope_dying &lt; envelope_length) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if ((i-&gt;thread_info.ramp_info.envelope_dying - nbytes) &lt;= 0) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_log_debug(&quot;Envelope Restart&quot;);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_envelope_restart(i-&gt;thread_info.ramp_info.envelope);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
else {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_log_debug(&quot;Envelope Simple Rewind&quot;);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_envelope_rewind(i-&gt;thread_info.ramp_info.envelope, nbytes);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
} <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.envelope_dying -= nbytes;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (i-&gt;thread_info.ramp_info.envelope_dying &lt;= 0)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.ramp_info.envelope_dying = 0;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+void
pa_sink_input_set_volume_with_ramping(pa_sink_input *i, const pa_cvolume
*volume, pa_bool_t save, pa_bool_t absolute, pa_usec_t t){<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_cvolume v;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_volume_t previous_virtual_volume, target_virtual_volume;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_sink_input_assert_ref(i);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(PA_SINK_INPUT_IS_LINKED(i-&gt;state));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(volume);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=FR
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(pa_cvolume_valid(volume));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(pa_cvolume_compatible(volume, &amp;i-&gt;sample_spec));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; if
((i-&gt;sink-&gt;flags &amp; PA_SINK_FLAT_VOLUME) &amp;&amp; !absolute) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
v = i-&gt;sink-&gt;reference_volume;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_cvolume_remap(&amp;v, &amp;i-&gt;sink-&gt;channel_map,
&amp;i-&gt;channel_map);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
volume = pa_sw_cvolume_multiply(&amp;v, &amp;v, volume);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; if
(pa_cvolume_equal(volume, &amp;i-&gt;virtual_volume))<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
previous_virtual_volume = pa_cvolume_avg(&amp;i-&gt;virtual_volume);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
target_virtual_volume = pa_cvolume_avg(volume);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; if (t
&gt; 0 &amp;&amp; target_virtual_volume &gt; 0)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_log_debug(&quot;SetVolumeWithRamping: Virtual Volume From %u=%f to
%u=%f\n&quot;, previous_virtual_volume,
pa_sw_volume_to_linear(previous_virtual_volume),<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
target_virtual_volume, pa_sw_volume_to_linear(target_virtual_volume));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;virtual_volume = *volume;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;save_volume = save;&nbsp;&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; /* Set
this flag before the following code modify i-&gt;thread_info.soft_volume */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; if (t
&gt; 0 &amp;&amp; target_virtual_volume &gt; 0)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_atomic_store(&amp;i-&gt;before_ramping_v, 1);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; if
(i-&gt;sink-&gt;flags &amp; PA_SINK_FLAT_VOLUME) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_cvolume new_volume;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* We are in flat volume mode, so let's update all sink input<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
* volumes and update the flat volume of the sink */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_sink_update_flat_volume(i-&gt;sink, &amp;new_volume);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_sink_set_volume(i-&gt;sink, &amp;new_volume, FALSE, TRUE, FALSE, FALSE);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; } else
{<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* OK, we are in normal volume mode. The volume only affects<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
* ourselves */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_sink_input_set_relative_volume(i, volume);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* Hooks have the ability to play games with i-&gt;soft_volume */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_hook_fire(&amp;i-&gt;core-&gt;hooks[PA_CORE_HOOK_SINK_INPUT_SET_VOLUME], i);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* Copy the new soft_volume to the thread_info struct */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_assert_se(pa_asyncmsgq_send(i-&gt;sink-&gt;asyncmsgq, PA_MSGOBJECT(i),
PA_SINK_INPUT_MESSAGE_SET_SOFT_VOLUME, NULL, 0, NULL) == 0);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; if (t
&gt; 0 &amp;&amp; target_virtual_volume &gt; 0)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
sink_input_set_ramping_info(i, previous_virtual_volume, target_virtual_volume,
t);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; /* The
virtual volume changed, let's tell people so */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_subscription_post(i-&gt;core,
PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i-&gt;index);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+void
pa_sink_input_set_mute_with_ramping(pa_sink_input *i, pa_bool_t mute, pa_bool_t
save, pa_usec_t t){<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(i);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_sink_input_assert_ref(i);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert(PA_SINK_INPUT_IS_LINKED(i-&gt;state));<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; if
(!i-&gt;muted == !mute)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;muted = mute;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
i-&gt;save_muted = save;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; /* Set
this flag before the following code modify i-&gt;thread_info.muted, otherwise
distortion will be heard */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; if (t
&gt; 0)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_atomic_store(&amp;i-&gt;before_ramping_m, 1);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_assert_se(pa_asyncmsgq_send(i-&gt;sink-&gt;asyncmsgq, PA_MSGOBJECT(i),
PA_SINK_INPUT_MESSAGE_SET_SOFT_MUTE, NULL, 0, NULL) == 0);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; if (t
&gt; 0)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
sink_input_set_ramping_info_for_mute(i, mute, t);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_subscription_post(i-&gt;core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE,
i-&gt;index);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>diff --git
a/src/pulsecore/sink-input.h b/src/pulsecore/sink-input.h<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>index 98144d4..036806f
100644<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>---
a/src/pulsecore/sink-input.h<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+++
b/src/pulsecore/sink-input.h<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -35,6 +35,7 @@ typedef
struct pa_sink_input pa_sink_input;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;#include
&lt;pulsecore/client.h&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;#include
&lt;pulsecore/sink.h&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;#include
&lt;pulsecore/core.h&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+#include
&lt;pulsecore/envelope.h&gt;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;typedef enum
pa_sink_input_state {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
PA_SINK_INPUT_INIT,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*&lt; The
stream is not active yet, because pa_sink_put() has not been called yet */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -212,8 +213,23 @@
struct pa_sink_input {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_usec_t requested_sink_latency;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_hashmap *direct_outputs;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
struct {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_bool_t is_ramping:1;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_bool_t envelope_dead:1;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int32_t envelope_dying; /* Increasing while envelop is not dead.&nbsp; Reduce
it while process_rewind. */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_envelope *envelope;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_envelope_item *item;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
} ramp_info;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;pa_cvolume future_soft_volume;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_bool_t future_muted;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp; }
thread_info;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_atomic_t before_ramping_v;&nbsp; /* Indicates future volume */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_atomic_t before_ramping_m;&nbsp; /* Indicates future mute */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
pa_envelope_def using_def;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp; &nbsp;&nbsp;&nbsp;void
*userdata;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;};<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -228,6 +244,7 @@ enum {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
PA_SINK_INPUT_MESSAGE_SET_STATE,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
PA_SINK_INPUT_MESSAGE_SET_REQUESTED_LATENCY,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
PA_SINK_INPUT_MESSAGE_GET_REQUESTED_LATENCY,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;
PA_SINK_INPUT_MESSAGE_SET_ENVELOPE,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
PA_SINK_INPUT_MESSAGE_MAX<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;};<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -359,4 +376,8 @@
pa_memchunk* pa_sink_input_get_silence(pa_sink_input *i, pa_memchunk *ret);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;/* To be used by
sink.c only */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;void
pa_sink_input_set_relative_volume(pa_sink_input *i, const pa_cvolume *v);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+/* Volume ramping*/<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+void
pa_sink_input_set_volume_with_ramping(pa_sink_input *i, const pa_cvolume
*volume, pa_bool_t save, pa_bool_t absolute, pa_usec_t t);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+void
pa_sink_input_set_mute_with_ramping(pa_sink_input *i, pa_bool_t mute, pa_bool_t
save, pa_usec_t t);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;#endif<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>diff --git
a/src/pulsecore/sink.c b/src/pulsecore/sink.c<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>index d8f3c7d..2950071
100644<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>--- a/src/pulsecore/sink.c<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+++ b/src/pulsecore/sink.c<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>@@ -1599,10 +1599,14 @@
static void sync_input_volumes_within_thread(pa_sink *s) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;
pa_sink_assert_ref(s);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp; &nbsp;while
((i = PA_SINK_INPUT(pa_hashmap_iterate(s-&gt;thread_info.inputs, &amp;state,
NULL)))) {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (pa_atomic_load(&amp;i-&gt;before_ramping_v))<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.future_soft_volume = i-&gt;soft_volume;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (pa_cvolume_equal(&amp;i-&gt;thread_info.soft_volume,
&amp;i-&gt;soft_volume))<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
continue;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.soft_volume = i-&gt;soft_volume;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (!pa_atomic_load(&amp;i-&gt;before_ramping_v))<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
i-&gt;thread_info.soft_volume = i-&gt;soft_volume;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
pa_sink_input_request_rewind(i, 0, TRUE, FALSE, FALSE);<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>&nbsp;}<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>-- <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'>1.5.6.3<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Comic Sans MS"><span lang=EN-US
style='font-size:10.0pt;font-family:"Comic Sans MS"'><o:p>&nbsp;</o:p></span></font></p>

<p style='margin:0cm;margin-bottom:.0001pt'><font size=1 face="Comic Sans MS"><span
lang=EN-US style='font-size:7.5pt;font-family:"Comic Sans MS"'>Best Regards,
Zheng, Huan(ZBT)<o:p></o:p></span></font></p>

<p style='margin:0cm;margin-bottom:.0001pt'><font size=1 face="Comic Sans MS"><span
lang=EN-US style='font-size:7.5pt;font-family:"Comic Sans MS"'>OTC/SSD/SSG</span></font><span
lang=EN-US><o:p></o:p></span></p>

<p style='margin:0cm;margin-bottom:.0001pt'><font size=1 face="Comic Sans MS"><span
lang=EN-US style='font-size:7.5pt;font-family:"Comic Sans MS"'>Intel
Asia-Pacific Research &amp; Developement Ltd</span></font><span lang=EN-US><o:p></o:p></span></p>

<p style='margin:0cm;margin-bottom:.0001pt'><font size=1 face="Comic Sans MS"><span
lang=EN-US style='font-size:7.5pt;font-family:"Comic Sans MS"'>Tel: 021-6116
6435</span></font><span lang=EN-US><o:p></o:p></span></p>

<p style='margin:0cm;margin-bottom:.0001pt'><font size=1 face="Comic Sans MS"><span
lang=EN-US style='font-size:7.5pt;font-family:"Comic Sans MS"'>Inet: 8821 6435</span></font><span
lang=EN-US><o:p></o:p></span></p>

<p style='margin:0cm;margin-bottom:.0001pt'><font size=1 face="Comic Sans MS"><span
lang=EN-US style='font-size:7.5pt;font-family:"Comic Sans MS"'>Cub: 3W035</span></font><span
lang=EN-US><o:p></o:p></span></p>

<p class=MsoNormal><font size=2 face="Times New Roman"><span lang=EN-US><o:p>&nbsp;</o:p></span></font></p>

</div>

</body>

</html>