<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>

Hello All<br><br>I'm accessing speex via jni, I have successfully
decoded and encoded data and capture and play it back in java. Now my
challenge is speex's echo canceller.<br>My capture and playback are not synchronized, so i got to use the method from 1.2beta2 right?<br>What's
the proper way to fit speex_echo_capture() and speex_echo_playback()
into the following procedures, assuming they were already wrapped by
jni properly?<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  <span style="font-family: Courier New,Courier,Monospace;">speexInit();</span><br><span style="font-family: Courier New,Courier,Monospace;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; final PcmRecorder r = new PcmRecorder();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; final PcmPlayer p = new PcmPlayer();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; r.setListener(new RecorderListener() {<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public void recorded(Object source, byte[] bytes, int length) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  // WHEN A FRAME IS CAPTURED, THIS CALLBACK WILL BE TRIGGERED<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; int c = speexEncode(bytes);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  // this is just for local playback, a demo only<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; speexDecode(bytes, c);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p.write(bytes, 0, length);&nbsp;&nbsp;&nbsp; // THIS IS WHERE A FRAME WAS WRITTEN FOR PLAYBACK<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; p.start();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; r.start();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Runtime.getRuntime().addShutdownHook(new Thread() {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; public void run() {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; speexDestroy();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });</span><br /><hr />Invite your mail contacts to join your friends list with Windows Live Spaces. It's easy! <a href='http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.aspx&mkt=en-us' target='_new'>Try it!</a></body>
</html>