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

<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1><pre>Jean-Marc, Frank,<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>I have stumbled across a similar situation regarding optimization.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>I seem to have a similar setup as Frank does with a fixed 48khz in and out. The wideband mode and ultra-wideband modes are really what I’m looking for.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>I have a test application that reads audio, downsample to 16kHz (or 32kHz), speex encode, speex decode, upsample back to 48kHz, and playback.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>If I remove the speex encode and decode, I get perfect audio, up and down resampling is great.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>When I use the encoder/decoder pass, and I use the non-asm-optimized speex library, I get good results (aside using a lot of CPU). Audio is good.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>When I used the asm-optimized library, I seem to get good audio only if I configure the encoder in mode 10. Anything below results in noisy speech). These results are similar for 1.2beta3 and 1.2beta2. Changing the complexity doesn’t seem to affect the results.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>I tried the most recent git/svn trunk, and I get a bus error in the encoder. I noticed that the only thing that seem different (for what I’m using) is the file quant_lsp_bfin.h. So I replaced that file only in a 1.2beta3 package and I got the same bus error. (this patched version works fine if I don’t use asm-optimization).<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>I’m in a similar situation as Frank once again where I need both the libspeex and libspeexdsp, so I have not been able to enable fixed-debug.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Please let me know if you have any clues on how to fix the issue and if there’s anything I can do to help.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Kind Regards,<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>Stephane<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>&gt;<i> after some problems with getting svn to work here I finally made it.<o:p></o:p></i></pre><pre>&gt;<i> Problem is, you write that I cannot use libspeex and libspeexdsp at<o:p></o:p></i></pre><pre>&gt;<i> the same time now -- because I use a &quot;live&quot; system (mic-in -&gt;<o:p></o:p></i></pre><pre>&gt;<i> speex_enc -&gt; speex_dec -&gt; headphone out) and I can run the AD1836<o:p></o:p></i></pre><pre>&gt;<i> audio codec on 48 kHz only, I cannot use my program now (because I<o:p></o:p></i></pre><pre>&gt;<i> use speex resampling...)<o:p></o:p></i></pre><pre><o:p>&nbsp;</o:p></pre><pre>Well, you can't use libspeex and libspeexdsp together *only if* you<o:p></o:p></pre><pre>enable fixed-point debugging. I'll fix that when I get some time.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>&gt;<i> So I tried to do file I/O, but the described problem (that the<o:p></o:p></i></pre><pre>&gt;<i> encoder corrupts its input buffer) is gone in this configuration.<o:p></o:p></i></pre><pre><o:p>&nbsp;</o:p></pre><pre>The encoder always corrupts its input buffer. This is not new.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>&gt;<i> But nevertheless, when I try to encode an overdriven (saturated)<o:p></o:p></i></pre><pre>&gt;<i> signal, the strange toggling between -MAX and MAX values on a<o:p></o:p></i></pre><pre>&gt;<i> sample-by-sample basis still happens. The debug output for this is as<o:p></o:p></i></pre><pre>&gt;<i> follows:<o:p></o:p></i></pre><pre><o:p>&nbsp;</o:p></pre><pre>What happens if you first saturate the signal to (e.g.) +/- 32000<o:p></o:p></pre><pre>instead of +/- 32767? BTW, can you send the signal you were using.<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>...<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>&gt;<i> So there seem to be three different positions in code where<o:p></o:p></i></pre><pre>&gt;<i> assumptions are &quot;broken&quot;. It should be pointed out that the above<o:p></o:p></i></pre><pre>&gt;<i> debug outputs occur only on frames with overdriven signal, but not<o:p></o:p></i></pre><pre>&gt;<i> every frame with overdriven signal produces a debug-output.<o:p></o:p></i></pre><pre><o:p>&nbsp;</o:p></pre><pre>Yes, I've always assumed sort of a &quot;non totally broken&quot; input signal and<o:p></o:p></pre><pre>I'm not sure what to do here... Sure I could fix it, but then it would<o:p></o:p></pre><pre>make the code less optimal for the normal case (and it doesn't change<o:p></o:p></pre><pre>anything if you've got saturating arithmetic anyway).<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>BTW, what happens if you turn on the Blackfin assembly? Do you get the<o:p></o:p></pre><pre>same output (approximately) or does it get worse?<o:p></o:p></pre><pre><o:p>&nbsp;</o:p></pre><pre>        <span
lang=FR-CA>Jean-Marc<o:p></o:p></span></pre><pre><span lang=FR-CA><o:p>&nbsp;</o:p></span></pre><pre><span
lang=FR-CA>&gt;<i> best regards, Frank<o:p></o:p></i></span></pre><pre><span
lang=FR-CA>&gt;<i> <o:p></o:p></i></span></pre><pre><span lang=FR-CA>&gt;<i> <o:p></o:p></i></span></pre><pre><span
lang=FR-CA>&gt;<i> -----Ursprüngliche Nachricht----- Von: &quot;Jean-Marc Valin&quot;<o:p></o:p></i></span></pre><pre>&gt;<i> &lt;<a
href="http://lists.xiph.org/mailman/listinfo/speex-dev">jean-marc.valin at usherbrooke.ca</a>&gt; Gesendet: 12.02.08 22:49:49 An:<o:p></o:p></i></pre><pre>&gt;<i> Frank Lorenz &lt;<a
href="http://lists.xiph.org/mailman/listinfo/speex-dev">Frank_wtal at web.de</a>&gt; CC: <a
href="http://lists.xiph.org/mailman/listinfo/speex-dev">speex-dev at xiph.org</a> Betreff: Re:<o:p></o:p></i></pre><pre>&gt;<i> [Speex-dev] Problem with Blackfin assembly optimizations -- bug in<o:p></o:p></i></pre><pre>&gt;<i> fixed_bfin.h / resampler saturation???<o:p></o:p></i></pre><pre>&gt;<i> <o:p></o:p></i></pre><pre>&gt;<i> <o:p></o:p></i></pre><pre>&gt;<i> OK, a few things got accidentally broken. I've partially fixed it in <o:p></o:p></i></pre><pre>&gt;<i> svn/git (the limitation is that you can't link with both libspeex and<o:p></o:p></i></pre><pre>&gt;<i>  libspeexdsp if configured as fixed-point debug).<o:p></o:p></i></pre><pre>&gt;<i> <o:p></o:p></i></pre><pre>&gt;<i> Can you compile/test now?<o:p></o:p></i></pre><pre><span
lang=FR-CA>&gt;<i> <o:p></o:p></i></span></pre><pre><span lang=FR-CA>&gt;<i> Jean-Marc<o:p></o:p></i></span></pre><pre><span
lang=FR-CA>&gt;<i> <o:p></o:p></i></span></pre><pre><span lang=FR-CA>&gt;<i> Frank Lorenz a écrit :<o:p></o:p></i></span></pre><pre>&gt;&gt;<i> Hi,<o:p></o:p></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;<i> when I compile with FIXED_DEBUG enabled, I get an error -- both<o:p></o:p></i></pre><pre>&gt;&gt;<i> when make tries to build testenc.o and when I try to link my app<o:p></o:p></i></pre><pre>&gt;&gt;<i> against the speex lib:<o:p></o:p></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;<i> <a
href="http://lists.xiph.org/mailman/listinfo/speex-dev">lorenz at panelmaker</a>:~/Blackfin/tests/speex_loopthrough$ make <o:p></o:p></i></pre><pre>&gt;&gt;<i> bfin-uclinux-gcc -c -g -I/home/lorenz/include -o main.o main.c <o:p></o:p></i></pre><pre>&gt;&gt;<i> bfin-uclinux-gcc -gl -elf2flt -L/home/lorenz/lib -o speex_through<o:p></o:p></i></pre><pre>&gt;&gt;<i> main.o -lspeex_debug -lspeexdsp -lm <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(bits.o): In function<o:p></o:p></i></pre><pre>&gt;&gt;<i> `speex_bits_set_bit_buffer': <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/Blackfin/speex-1.2beta3/libspeex/bits.c:72: multiple<o:p></o:p></i></pre><pre>&gt;&gt;<i> definition of `_spx_mips' <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(speex.o):/home/lorenz/Blackfin/speex-1.2beta3/libspeex/speex.c:52:<o:p></o:p></i></pre><pre>&gt;&gt;<i> first defined here /home/lorenz/lib/libspeex_debug.a(modes.o): In<o:p></o:p></i></pre><pre>&gt;&gt;<i> function `speex_mode_query': <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/Blackfin/speex-1.2beta3/libspeex/modes.c:359: multiple<o:p></o:p></i></pre><pre>&gt;&gt;<i> definition of `_spx_mips' <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(speex.o):/home/lorenz/Blackfin/speex-1.2beta3/libspeex/speex.c:52:<o:p></o:p></i></pre><pre>&gt;&gt;<i> first defined here /home/lorenz/lib/libspeex_debug.a(modes_wb.o):<o:p></o:p></i></pre><pre>&gt;&gt;<i> In function `speex_lib_get_mode': <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/Blackfin/speex-1.2beta3/libspeex/modes_wb.c:293:<o:p></o:p></i></pre><pre>&gt;&gt;<i> multiple definition of `_spx_mips' <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(speex.o):/home/lorenz/Blackfin/speex-1.2beta3/libspeex/speex.c:52:<o:p></o:p></i></pre><pre>&gt;&gt;<i> first defined here /home/lorenz/lib/libspeex_debug.a(nb_celp.o): In<o:p></o:p></i></pre><pre>&gt;&gt;<i> function `_ADD32': <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/Blackfin/speex-1.2beta3/libspeex/fixed_debug.h:207:<o:p></o:p></i></pre><pre>&gt;&gt;<i> multiple definition of `_spx_mips' <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(speex.o):/home/lorenz/Blackfin/speex-1.2beta3/libspeex/speex.c:52:<o:p></o:p></i></pre><pre>&gt;&gt;<i> first defined here /home/lorenz/lib/libspeex_debug.a(quant_lsp.o):<o:p></o:p></i></pre><pre>&gt;&gt;<i> In function `compute_quant_weights': <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/Blackfin/speex-1.2beta3/libspeex/quant_lsp.c:72:<o:p></o:p></i></pre><pre>&gt;&gt;<i> multiple definition of `_spx_mips' <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(speex.o):/home/lorenz/Blackfin/speex-1.2beta3/libspeex/speex.c:52:<o:p></o:p></i></pre><pre>&gt;&gt;<i> first defined here /home/lorenz/lib/libspeex_debug.a(sb_celp.o): In<o:p></o:p></i></pre><pre>&gt;&gt;<i> function `_DIV32': <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/Blackfin/speex-1.2beta3/libspeex/fixed_debug.h:466:<o:p></o:p></i></pre><pre>&gt;&gt;<i> multiple definition of `_spx_mips' <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(speex.o):/home/lorenz/Blackfin/speex-1.2beta3/libspeex/speex.c:52:<o:p></o:p></i></pre><pre>&gt;&gt;<i> first defined here <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(speex_callbacks.o): In function<o:p></o:p></i></pre><pre>&gt;&gt;<i> `speex_default_user_handler': <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/Blackfin/speex-1.2beta3/libspeex/speex_callbacks.c:140:<o:p></o:p></i></pre><pre>&gt;&gt;<i> multiple definition of `_spx_mips' <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(speex.o):/home/lorenz/Blackfin/speex-1.2beta3/libspeex/speex.c:52:<o:p></o:p></i></pre><pre>&gt;&gt;<i> first defined here <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(window.o):(.bss+0x0): multiple<o:p></o:p></i></pre><pre>&gt;&gt;<i> definition of `_spx_mips' <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(speex.o):/home/lorenz/Blackfin/speex-1.2beta3/libspeex/speex.c:52:<o:p></o:p></i></pre><pre>&gt;&gt;<i> first defined here /home/lorenz/lib/libspeex_debug.a(cb_search.o):<o:p></o:p></i></pre><pre>&gt;&gt;<i> In function `compute_weighted_codebook': <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/Blackfin/speex-1.2beta3/libspeex/cb_search_bfin.h:38:<o:p></o:p></i></pre><pre>&gt;&gt;<i> multiple definition of `_spx_mips' <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(speex.o):/home/lorenz/Blackfin/speex-1.2beta3/libspeex/speex.c:52:<o:p></o:p></i></pre><pre>&gt;&gt;<i> first defined here /home/lorenz/lib/libspeex_debug.a(filters.o): In<o:p></o:p></i></pre><pre>&gt;&gt;<i> function `normalize16': <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/Blackfin/speex-1.2beta3/libspeex/filters_bfin.h:37:<o:p></o:p></i></pre><pre>&gt;&gt;<i> multiple definition of `_spx_mips' <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(speex.o):/home/lorenz/Blackfin/speex-1.2beta3/libspeex/speex.c:52:<o:p></o:p></i></pre><pre>&gt;&gt;<i> first defined here /home/lorenz/lib/libspeex_debug.a(lsp.o): In<o:p></o:p></i></pre><pre>&gt;&gt;<i> function `lsp_enforce_margin': <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/Blackfin/speex-1.2beta3/libspeex/lsp.c:594: multiple<o:p></o:p></i></pre><pre>&gt;&gt;<i> definition of `_spx_mips' <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(speex.o):/home/lorenz/Blackfin/speex-1.2beta3/libspeex/speex.c:52:<o:p></o:p></i></pre><pre>&gt;&gt;<i> first defined here /home/lorenz/lib/libspeex_debug.a(ltp.o): In<o:p></o:p></i></pre><pre>&gt;&gt;<i> function `inner_prod': <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/Blackfin/speex-1.2beta3/libspeex/ltp_bfin.h:38:<o:p></o:p></i></pre><pre>&gt;&gt;<i> multiple definition of `_spx_mips' <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(speex.o):/home/lorenz/Blackfin/speex-1.2beta3/libspeex/speex.c:52:<o:p></o:p></i></pre><pre>&gt;&gt;<i> first defined here /home/lorenz/lib/libspeex_debug.a(vbr.o): In<o:p></o:p></i></pre><pre>&gt;&gt;<i> function `vbr_destroy': <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/Blackfin/speex-1.2beta3/libspeex/vbr.c:272: multiple<o:p></o:p></i></pre><pre>&gt;&gt;<i> definition of `_spx_mips' <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(speex.o):/home/lorenz/Blackfin/speex-1.2beta3/libspeex/speex.c:52:<o:p></o:p></i></pre><pre>&gt;&gt;<i> first defined here /home/lorenz/lib/libspeex_debug.a(vq.o): In<o:p></o:p></i></pre><pre>&gt;&gt;<i> function `vq_nbest': <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/Blackfin/speex-1.2beta3/libspeex/vq_bfin.h:38:<o:p></o:p></i></pre><pre>&gt;&gt;<i> multiple definition of `_spx_mips' <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(speex.o):/home/lorenz/Blackfin/speex-1.2beta3/libspeex/speex.c:52:<o:p></o:p></i></pre><pre>&gt;&gt;<i> first defined here /home/lorenz/lib/libspeex_debug.a(lpc.o): In<o:p></o:p></i></pre><pre>&gt;&gt;<i> function `_spx_lpc': <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/Blackfin/speex-1.2beta3/libspeex/lpc.c:78: multiple<o:p></o:p></i></pre><pre>&gt;&gt;<i> definition of `_spx_mips' <o:p></o:p></i></pre><pre>&gt;&gt;<i> /home/lorenz/lib/libspeex_debug.a(speex.o):/home/lorenz/Blackfin/speex-1.2beta3/libspeex/speex.c:52:<o:p></o:p></i></pre><pre>&gt;&gt;<i> first defined here collect2: ld gab 1 als Ende-Status zurÃŒck make:<o:p></o:p></i></pre><pre>&gt;&gt;<i> *** [speex_through] Fehler 1<o:p></o:p></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;<i> again: any ideas how to proceed?<o:p></o:p></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;<i> best regards, Frank<o:p></o:p></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;<i> -----Ursprüngliche Nachricht----- Von: &quot;Jean-Marc Valin&quot;<o:p></o:p></i></pre><pre>&gt;&gt;<i> &lt;<a
href="http://lists.xiph.org/mailman/listinfo/speex-dev">jean-marc.valin at usherbrooke.ca</a>&gt; Gesendet: 08.02.08 21:50:56 An:<o:p></o:p></i></pre><pre>&gt;&gt;<i> Frank Lorenz &lt;<a
href="http://lists.xiph.org/mailman/listinfo/speex-dev">Frank_wtal at web.de</a>&gt; CC: <a
href="http://lists.xiph.org/mailman/listinfo/speex-dev">speex-dev at xiph.org</a> Betreff:<o:p></o:p></i></pre><pre>&gt;&gt;<i> Re: [Speex-dev] Problem with Blackfin assembly optimizations -- bug<o:p></o:p></i></pre><pre>&gt;&gt;<i> in fixed_bfin.h / resampler saturation???<o:p></o:p></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;<i> Frank Lorenz a écrit :<o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> Yes, this is another point: I wrote that the resampler breaks,<o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> but this is not the case. Instead, the speex encoder corrupts its<o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> input buffer when the &quot;DIV32_16 bug&quot; described above happens. Do<o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> you have any idea how to proceed?<o:p></o:p></i></pre><pre>&gt;&gt;<i> Can you try enabling --enable-fixed-point-debug (FIXED_DEBUG) and<o:p></o:p></i></pre><pre>&gt;&gt;<i> see if any error gets printed. I suspect there might be a place<o:p></o:p></i></pre><pre>&gt;&gt;<i> where the assumptions of DIV32_16 are violated, i.e. either the<o:p></o:p></i></pre><pre>&gt;&gt;<i> right hand side doesn't fit in 16 bits or the result doesn't fit in<o:p></o:p></i></pre><pre>&gt;&gt;<i> 16 bits. Can you check?<o:p></o:p></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;<i> Jean-Marc<o:p></o:p></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> best regards, Frank<o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> -----Ursprüngliche Nachricht----- Von: &quot;Jean-Marc Valin&quot; <o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> &lt;<a
href="http://lists.xiph.org/mailman/listinfo/speex-dev">jean-marc.valin at usherbrooke.ca</a>&gt; Gesendet: 06.02.08 11:07:46 An: <o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> Frank Lorenz &lt;<a
href="http://lists.xiph.org/mailman/listinfo/speex-dev">Frank_wtal at web.de</a>&gt; CC: <a
href="http://lists.xiph.org/mailman/listinfo/speex-dev">speex-dev at xiph.org</a> Betreff:<o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> Re: [Speex-dev] Problem with Blackfin assembly optimizations --<o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> bug in fixed_bfin.h / resampler saturation???<o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> Frank Lorenz a écrit :<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> I just started to examine the DIV32_16 function (Blackfin ASM <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> version), and wondered why the return value of the function<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> inside 'fixed_bfin.h' is of type 'spx_word16_t', but the local<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> variable 'res' which is returned by this function is of type<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> 'spx_word32_t'. Is this a trick of optimization or a bug? (Same<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> question for PDIV32_16 and MAX16, too!)<o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> Neither (AFAIK). The idea is that sometimes gcc does <o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> silly/counter-intuitive things when I specify a 16-bit variable<o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> as a constraint. That way, I force the top 16 bits to be zero.<o:p></o:p></i></pre><pre><span
lang=FR-CA>&gt;&gt;&gt;<i> <o:p></o:p></i></span></pre><pre><span lang=FR-CA>&gt;&gt;&gt;<i> Jean-Marc<o:p></o:p></i></span></pre><pre><span
lang=FR-CA>&gt;&gt;&gt;<i> <o:p></o:p></i></span></pre><pre><span lang=FR-CA>&gt;&gt;&gt;&gt;<i> best regards, Frank<o:p></o:p></i></span></pre><pre><span
lang=FR-CA>&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></span></pre><pre><span
lang=FR-CA>&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></span></pre><pre><span
lang=FR-CA>&gt;&gt;&gt;&gt;<i> -----Ursprüngliche Nachricht----- Von: &quot;Jean-Marc Valin&quot; <o:p></o:p></i></span></pre><pre>&gt;&gt;&gt;&gt;<i> &lt;<a
href="http://lists.xiph.org/mailman/listinfo/speex-dev">jean-marc.valin at usherbrooke.ca</a>&gt; Gesendet: 02.02.08 06:26:08<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> An: speex-dev &lt;<a
href="http://lists.xiph.org/mailman/listinfo/speex-dev">speex-dev at xiph.org</a>&gt; Betreff: Re: FW: Re:<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> [Speex-dev] Problem with Blackfin assembly optimizations -- bug<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> in fixed_bfin.h / resampler saturation???<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> Frank Lorenz a écrit :<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> And yes, the same &quot;overflow&quot; happens even when I disable<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> Blackfin ASM optimizations.<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> Indeed, that shouldn't happen. Just to make sure I understand,<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> so far there's two problems: 1) DIV32_16() in Blackfin assembly<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> causes problems 2) The resampler overflows<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> When you fix/workaround those two, is the encoder/decoder<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> working correctly or are there other issues?<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> About the DIV32_16() issue, could you try and replace it with a<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i>  function that compares the Blackfin-asm result with the real <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> division and dumps the args and output when they don't match.<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> I'd like to understand for what inputs that functions fails.<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> That would help in fixing the problem.<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> Thanks,<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> Jean-Marc<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> best regards, Frank<o:p></o:p></i></pre><pre><span
lang=FR-CA>&gt;&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></span></pre><pre><span
lang=FR-CA>&gt;&gt;&gt;&gt;&gt;<i> -----Ursprüngliche Nachricht----- Von: &quot;Jean-Marc Valin&quot; <o:p></o:p></i></span></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> &lt;<a
href="http://lists.xiph.org/mailman/listinfo/speex-dev">jean-marc.valin at usherbrooke.ca</a>&gt; Gesendet: 01.02.08 12:11:39<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> An: Frank Lorenz &lt;<a
href="http://lists.xiph.org/mailman/listinfo/speex-dev">Frank_wtal at web.de</a>&gt; CC: <a
href="http://lists.xiph.org/mailman/listinfo/speex-dev">speex-dev at xiph.org</a><o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> Betreff: Re: FW: Re: [Speex-dev] Problem with Blackfin<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> assembly optimizations -- bug in fixed_bfin.h / resampler<o:p></o:p></i></pre><pre><span
lang=FR-CA>&gt;&gt;&gt;&gt;&gt;<i> saturation???<o:p></o:p></i></span></pre><pre><span
lang=FR-CA>&gt;&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></span></pre><pre><span
lang=FR-CA>&gt;&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></span></pre><pre><span
lang=FR-CA>&gt;&gt;&gt;&gt;&gt;<i> Frank Lorenz a écrit :<o:p></o:p></i></span></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> didn't get a reply to my last post (see below) -- do you<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> have no idea what happens here?<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> Sorry, been quite busy lately. Still have a backlog of things<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> to respond to (sorry to others as well), some of it quite<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> old.<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> After some more tests, I disabled the DIV32_16 Blackfin <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> optimizations and now get good quality on the Blackfin.<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> OK, I'll need to investigate that one. It's mostly taken from<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> the ADI manual, so I don't see what could have happened.<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> But when I have overdrive on the input, things become very<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> bad<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> Does that happen without any assembly. Some amount of badness<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> is expected from the fixed-point because of saturation<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> issues. It shouldn't overflow though (can you check?)<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> -- I'm not sure if this is really a filter stability issue<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> like I wrote some weeks ago.<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> I don't think it has to do with filters.<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> I use the speex resampler to downsample from 48 to 16 kHz.<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> When I look to the downsampled signal before passing it to<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> the encoder, there seems to be a bug in saturation. On<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> overdrive, instead of holding a too big signal value at<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> maximum (e.g. 32767) for some samples, the sample values I<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> get from the resampler are [-32768,32767,-32768,...], i.e.<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> the output of the resampler alters between the biggest<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> possible negative value and the biggest possible positive<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> value.<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> This is definitely bad. Can you send me an example file.<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> Also, can you reproduce that problem without the Blackfin<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> assembly?<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> Does the resampler use the hardware saturation available on<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i>  Blackfin, or does it saturate by software? Can you point<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> me to the place I have to look at inside the resampler<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;&gt;<i> function for saturation?<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> Saturation is entirely done in software. The resampler does<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> the conversion using the WORD2INT macro.<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> Jean-Marc<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> _______________________________________________________________________<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i>  Jetzt neu! Schützen Sie Ihren PC mit McAfee und WEB.DE. 30<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> Tage kostenlos testen. <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> <a
href="http://www.pc-sicherheit.web.de/startseite/?mc=022220">http://www.pc-sicherheit.web.de/startseite/?mc=022220</a><o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> _________________________________________________________________________<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i>  In 5 Schritten zur eigenen Homepage. Jetzt Domain sichern und<o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i>  gestalten! </i><i><span
lang=FR-CA>Nur 3,99 EUR/Monat! <o:p></o:p></span></i></pre><pre><span
lang=FR-CA>&gt;&gt;&gt;&gt;<i> </i></span><i><a
href="http://www.maildomain.web.de/?mc=021114"><span lang=FR-CA>http://www.maildomain.web.de/?mc=021114</span></a></i><i><span
lang=FR-CA><o:p></o:p></span></i></pre><pre>&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> _______________________________________________________________________<o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i>  Jetzt neu! Schützen Sie Ihren PC mit McAfee und WEB.DE. 30 Tage<o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i>  kostenlos testen. <o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> <a
href="http://www.pc-sicherheit.web.de/startseite/?mc=022220">http://www.pc-sicherheit.web.de/startseite/?mc=022220</a><o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;<i> _________________________________________________________________________<o:p></o:p></i></pre><pre>&gt;&gt;<i>  In 5 Schritten zur eigenen Homepage. Jetzt Domain sichern und<o:p></o:p></i></pre><pre>&gt;&gt;<i> gestalten! </i><i><span
lang=FR-CA>Nur 3,99 EUR/Monat!<o:p></o:p></span></i></pre><pre><span
lang=FR-CA>&gt;&gt;<i> </i></span><i><a
href="http://www.maildomain.web.de/?mc=021114"><span lang=FR-CA>http://www.maildomain.web.de/?mc=021114</span></a></i><i><span
lang=FR-CA><o:p></o:p></span></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;<i> _______________________________________________ Speex-dev mailing<o:p></o:p></i></pre><pre>&gt;&gt;<i> list <a
href="http://lists.xiph.org/mailman/listinfo/speex-dev">Speex-dev at xiph.org</a> <o:p></o:p></i></pre><pre>&gt;&gt;<i> <a
href="http://lists.xiph.org/mailman/listinfo/speex-dev">http://lists.xiph.org/mailman/listinfo/speex-dev</a><o:p></o:p></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;&gt;<i> <o:p></o:p></i></pre><pre>&gt;<i> <o:p></o:p></i></pre><pre>&gt;<i> <o:p></o:p></i></pre><pre>&gt;<i> <o:p></o:p></i></pre><pre>&gt;<i> _______________________________________________________________________<o:p></o:p></i></pre><pre>&gt;<i>  Jetzt neu! Schützen Sie Ihren PC mit McAfee und WEB.DE. 30 Tage <o:p></o:p></i></pre><pre>&gt;<i> kostenlos testen.<o:p></o:p></i></pre><pre>&gt;<i> <a
href="http://www.pc-sicherheit.web.de/startseite/?mc=022220">http://www.pc-sicherheit.web.de/startseite/?mc=022220</a><o:p></o:p></i></pre><pre>&gt;<i> <o:p></o:p></i></pre><pre>&gt;<i> <o:p></o:p></i></pre><pre>&gt;<i> </i><o:p></o:p></pre>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</body>

</html>