Ok, well I took a hack into pulling in these files into pulse audio (the ubuntu fiesty debian package of it).<br><br>I took these files.<br><div><br><a href="http://svn.xiph.org/trunk/speex/libspeex/resample.c">http://svn.xiph.org/trunk/speex/libspeex/resample.c
</a><br><a href="http://svn.xiph.org/trunk/speex/include/speex/speex_resampler.h">http://svn.xiph.org/trunk/speex/include/speex/speex_resampler.h</a><br><br>The pulse audio code is written well and was easy to modify.&nbsp;&nbsp; I have got it interfacing properly with the resample code, however I can not get the resample code to work in Fixed point mode.
<br><br>From resample.c<br><pre>TODO list:<br>      - Variable calculation resolution depending on quality setting<br>         - Single vs double in float mode<br>         - 16-bit vs 32-bit (sinc only) in fixed-point mode
<br>      - Make sure the filter update works even when changing params <br>             after only a few samples procesed</pre>Has this code been tested on fixed point?&nbsp; The test files seems to only try floating point.<br>
<br><a href="http://svn.xiph.org/trunk/speex/libspeex/testresample.c">http://svn.xiph.org/trunk/speex/libspeex/testresample.c</a> <br><br>I tried putting #define FIXED_POINT and #define OUTSIDE_SPEEX, and then hackishly defining MULT16_16 and PSHR32.&nbsp; Now I get random noise.&nbsp; Jean-Marc Valin, can you give a little info on the status of 
resample.c with respect to FIXED_POINT<br><br>I&#39;m really interested in getting pulse audio to run with fixed point resampling.&nbsp; Anything I can do to help, let me know.<br><br>Keith Preston<br></div><br><br><br><div><span class="gmail_quote">
On 2/13/07, <b class="gmail_sendername">Lennart Poettering</b> &lt;<a href="mailto:lennart@poettering.net">lennart@poettering.net</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Mon, 12.02.07 13:35, keith preston (<a href="mailto:keithpre@gmail.com">keithpre@gmail.com</a>) wrote:<br><br>&gt; I was wondering about a status update on getting a fixed point<br>&gt; resampler into pulseaudio.&nbsp;&nbsp;I heard some of this work was taking
<br>&gt; place, but had not yet seen anything.&nbsp;&nbsp;I am interested in helping if<br>&gt; it would speed things along.<br><br>During FOMS and <a href="http://linux.conf.au">linux.conf.au</a> Jean-Marc Valin from Speex hacked up a
<br>fixed-point resampler:<br><br><a href="http://svn.xiph.org/trunk/speex/libspeex/resample.h">http://svn.xiph.org/trunk/speex/libspeex/resample.h</a><br><a href="http://svn.xiph.org/trunk/speex/libspeex/resample.c">http://svn.xiph.org/trunk/speex/libspeex/resample.c
</a><br><br>It has a nice API and is reasonably high-quality. As soon as I am done<br>with my thesis and can focus full-time on PulseAudio again I will add<br>support for this new resampler.<br><br>If you are interested to work on this: it should be not too difficult,
<br>probably requires substantial changes only in resampler.[ch] and a few<br>minor changes in some other files. (such as all files where<br>PA_RESAMPLER_SRC_ is referenced.)<br><br>Of course, libsamplerate support should be kept in, because it has
<br>better quality. The current resampler.h API already supports two<br>implementations (a naive internal one, and libsamplerate), hence<br>adding a third one shouldn&#39;t be too difficult. libsamplerate should<br>be downgraded to an optional dependency, however.
<br><br>To become truly useful on non-FP CPUs the current (naive) mixing code<br>needs to be rewritten, based on liboil. That however is not trivial,<br>since liboil lacks a few features (like adding 16bit integer arrays<br>
into 32bit integer arrays), and we don&#39;t have a thread-safe bounce<br>buffer abstraction yet. And then we enter squishy ground, since the<br>whole thread-safety stuff is only available in the &quot;lockfree&quot; branch
<br>for now - and that branch doesn&#39;t really work yet.<br><br>(BTW: If you interested read<br><a href="http://0pointer.de/blog/projects/foms-lca-recap.html">http://0pointer.de/blog/projects/foms-lca-recap.html</a> for a longer
<br>list of what&#39;s new and what&#39;s coming in PulseAudio land.)<br><br>&gt; I&#39;m also interesting in helping with APIs especially like what gsmartmix was<br>&gt; going to try and do.<br><br>This area is very much in flux right now. Since I am not quite sure
<br>how a good API might look like I implemented only &quot;automatic&quot; policy<br>modules for now - which don&#39;t need a user API. Those are<br>module-volume-restore and module-rescue-streams.<br><br>In short: for now, feel free to work on adding the Speex resampler
<br>into PA, but the rest is too unsettled, please wait with any further<br>work until I am done with my thesis and can focus on PA full-time<br>again (some time next month)<br><br>Thanks for your interest!<br><br>Lennart
<br><br>--<br>Lennart Poettering; lennart [at] poettering [dot] net<br>ICQ# 11060553; GPG 0x1A015CC4; <a href="http://0pointer.net/lennart/">http://0pointer.net/lennart/</a><br>_______________________________________________
<br>pulseaudio-discuss mailing list<br><a href="mailto:pulseaudio-discuss@mail.0pointer.de">pulseaudio-discuss@mail.0pointer.de</a><br><a href="https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss">https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
</a><br></blockquote></div><br>