<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.3314" name=GENERATOR></HEAD>
<BODY>
<DIV dir=ltr align=left><SPAN class=192541611-06052008><FONT face=Arial 
color=#0000ff size=2>Anthony seams to be right.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=192541611-06052008><FONT face=Arial 
color=#0000ff size=2>I tested around a little bit and i see:</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=192541611-06052008><FONT face=Arial 
color=#0000ff size=2>- the main problem is the soundcard (-driver), it gives 480 
frames all 60 ms </FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=192541611-06052008><FONT face=Arial 
color=#0000ff size=2>- if i chose 160 (256) frames ringbuffer size i get only 
160 frames all 60 ms, and it sounds really croppy (of course, there are not 
enough samples ...)</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=192541611-06052008><FONT face=Arial 
color=#0000ff size=2>- i get really good results if i store the last timestamp 
when </FONT><FONT face=Arial><FONT color=#0000ff><FONT 
size=2>ReadAudioStream<SPAN class=192541611-06052008>() returns, and if current 
timestamp is less than 20ms from last i wait 20 
ms,</SPAN></FONT></FONT></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=192541611-06052008><FONT face=Arial><FONT 
color=#0000ff><FONT size=2><SPAN class=192541611-06052008>so the packet 
difference went from 60-0-0-60-0-0 ms to 
20-20-20-20-20-20</SPAN></FONT></FONT></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=192541611-06052008><FONT face=Arial><FONT 
color=#0000ff><FONT size=2><SPAN class=192541611-06052008>- i use 
HighPerformanceCounter to measure the time in 
WinXP</SPAN></FONT></FONT></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=192541611-06052008><FONT face=Arial><FONT 
color=#0000ff><FONT size=2><SPAN 
class=192541611-06052008></SPAN></FONT></FONT></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=192541611-06052008><FONT><FONT><SPAN 
class=192541611-06052008><FONT face=Arial color=#0000ff size=2>I thought we 
could use&nbsp;</FONT><FONT face=Arial><FONT color=#0000ff><FONT 
size=2>switch_core_timer_check<SPAN class=192541611-06052008>() to do that 
timestamp work, but it doesn't work as 
expected,</SPAN></FONT></FONT></FONT></SPAN></FONT></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=192541611-06052008><FONT><FONT><SPAN 
class=192541611-06052008><FONT face=Arial><FONT color=#0000ff><FONT size=2><SPAN 
class=192541611-06052008>seams we have to synchronize to the 60ms clock from 
soundcard, at least at the beginning, which means the delay 
increase.</SPAN></FONT></FONT></FONT></SPAN></FONT></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=192541611-06052008><FONT><FONT><SPAN 
class=192541611-06052008><FONT face=Arial><FONT color=#0000ff><FONT size=2><SPAN 
class=192541611-06052008></SPAN></FONT></FONT></FONT></SPAN></FONT></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=192541611-06052008><FONT><FONT><SPAN 
class=192541611-06052008><FONT face=Arial><FONT color=#0000ff><FONT size=2><SPAN 
class=192541611-06052008>Thomas</SPAN></FONT></FONT></FONT></SPAN></FONT></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=192541611-06052008><FONT><FONT><SPAN 
class=192541611-06052008><FONT face=Arial><FONT color=#0000ff><FONT size=2><SPAN 
class=192541611-06052008></SPAN></FONT></FONT></FONT></SPAN></FONT></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=192541611-06052008><FONT><FONT><SPAN 
class=192541611-06052008><FONT face=Arial><FONT color=#0000ff><FONT size=2><SPAN 
class=192541611-06052008>PS: i attach a patch for better 
understanding&nbsp;</SPAN></FONT></FONT></FONT></SPAN></FONT></FONT></SPAN></DIV><BR>
<DIV class=OutlookMessageHeader lang=de dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>Von:</B> 
freeswitch-users-bounces@lists.freeswitch.org 
[mailto:freeswitch-users-bounces@lists.freeswitch.org] <B>Im Auftrag von 
</B>Anthony Minessale<BR><B>Gesendet:</B> Dienstag, 6. Mai 2008 
00:38<BR><B>An:</B> freeswitch-users@lists.freeswitch.org<BR><B>Betreff:</B> Re: 
[Freeswitch-users] mod_portaudio send 3 rtp packet/60ms insteadof1 
packet/20ms<BR></FONT><BR></DIV>
<DIV></DIV>This is not normal sleep it's microsecond sleep.&nbsp; Its done 
because we are doing nonblocking read on the ringbuffer that's tied to the 
hardware.&nbsp; Since this is voip, we must drop audio frames when they are late 
and in order to do that we must have a high resolution loop.&nbsp; This is only 
a problem when the audio device is not sending audio at the interval we asked it 
to.&nbsp; Some cheap hardware cannot reliably deliver audio at 20ms intervals 
which is why i suggested higher value intervals in the config.&nbsp; The request 
to remove the sleep is to confirm the proposition that sleep 1ms was really 
taking 15ms.<BR><BR>I appreciate the suggestion and I understand you are not 
trying to be a smart ass.<BR><BR><BR><BR>
<DIV class=gmail_quote>On Mon, May 5, 2008 at 4:35 PM, Michael Jerris &lt;<A 
href="mailto:mike@jerris.com">mike@jerris.com</A>&gt; wrote:<BR>
<BLOCKQUOTE class=gmail_quote 
style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">The 
  place this is trickiest is when you are in a loop where you want<BR>to wait 
  for audio, AND do something every x ms or so. &nbsp;You can't do a<BR>blocking 
  read, and a read with timeout tends to be quite expensive.<BR>There are some 
  ways around this, but sometimes its just the most<BR>efficient, even if not 
  preferred method.<BR><BR>Mike<BR>
  <DIV>
  <DIV></DIV>
  <DIV class=Wj3C7c><BR><BR>On May 5, 2008, at 5:26 PM, ?ukasz Zwierko 
  wrote:<BR><BR>&gt; Hi,<BR>&gt;<BR>&gt; Just a thought here: using calls like 
  delay(), sleep() etc. for very<BR>&gt; short amount of time (like in this case 
  a couple of miliseconds)<BR>&gt; should in my opinion be really discouraged. 
  It is often a symptom of<BR>&gt; bad programming even in an embedded 
  enviroment, not mentioning<BR>&gt; platforms like Windows or Linux where you 
  can't really tell what<BR>&gt; priority does your task have, and will it not 
  be starved for a long<BR>&gt; time by other tasks. I should be avoided 
  whenever possible.<BR>&gt; Don't want to sound like a smart ass here, but 
  isn't there any other<BR>&gt; way? From what I understood you wait until some 
  &nbsp;amount of voice<BR>&gt; samples is collected? If that's the case than 
  perhaps you can measure<BR>&gt; an amount of data collected not the time... If 
  these are PCM samples<BR>&gt; than the correlation is straightforward.<BR>&gt; 
  Again, sorry if I'm being a smart ass here but I've seen some really<BR>&gt; 
  bad code with sleep() calls and such like, and I can tell you that it<BR>&gt; 
  only worked fine in specific conditions, and had a tendency to work<BR>&gt; 
  very poorly when for example CPU was under heavy load.<BR>&gt;<BR>&gt; 
  Luaksz<BR>&gt;<BR>&gt; 2008/5/5 Anthony Minessale &lt;<A 
  href="mailto:anthony.minessale@gmail.com">anthony.minessale@gmail.com</A>&gt;:<BR>&gt;&gt; 
  did you try setting the ptime on the rtp to 30 or 60ms<BR>&gt;&gt;<BR>&gt;&gt; 
  when you choose a codec in your sip settings on FS in vars.xml,<BR>&gt;&gt; 
  instead of<BR>&gt;&gt; PCMU try PCMU@30i or PCMU@60i<BR>&gt;&gt; it may be 
  that the other side is doing 30 or 60 ms and not telling<BR>&gt;&gt; 
  us.<BR>&gt;&gt;<BR>&gt;&gt; also in pablio.c in the portaudio_mod directory in 
  ReadAudioStream<BR>&gt;&gt; func,<BR>&gt;&gt; there is a sleep 1 ms 
  too<BR>&gt;&gt; if the windows is really sleeping a lot longer than that, 
  try<BR>&gt;&gt; omitting line<BR>&gt;&gt; 158.<BR>&gt;&gt; This probably will 
  consume the whole cpu but if it fixes your<BR>&gt;&gt; problem it<BR>&gt;&gt; 
  will support the theory that the sleep on windows in 
  inaccurate.<BR>&gt;&gt;<BR>&gt;&gt;<BR>&gt;&gt;<BR>&gt;&gt;<BR>&gt;&gt;<BR>&gt;&gt; 
  On Mon, May 5, 2008 at 11:38 AM, Csaba Zelei<BR>&gt;&gt; &lt;<A 
  href="mailto:csaba.zelei@gmail.com">csaba.zelei@gmail.com</A>&gt; 
  wrote:<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; 
  With a little hack I can make mod_portaudio to send rtp packets 
  with<BR>&gt;&gt; ~24ms, ~16ms delay alternately on linux. This result in a 
  constant<BR>&gt;&gt; 4ms<BR>&gt;&gt; jitter but its better than the original. 
  (diff attached)<BR>&gt;&gt;&gt; However on windows the delta between rtp 
  packets is 15-32 ms<BR>&gt;&gt;&gt; randomly,<BR>&gt;&gt; with occasionally 
  high 70-100ms delta.<BR>&gt;&gt;&gt; I also tried to tweak the windows timer 
  without success.<BR>&gt;&gt;&gt; Does anybody has any idea how to make windows 
  xp more accurate?<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; Sluschny, Thomas 
  wrote:<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; 
  as you can see here:<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; <A 
  href="http://jira.freeswitch.org/browse/MODENDP-40" 
  target=_blank>http://jira.freeswitch.org/browse/MODENDP-40</A><BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; 
  i have this problem all the time (the error mentioned in this<BR>&gt;&gt;&gt; 
  issue was<BR>&gt;&gt; only related with this).<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; 
  It has to do with windows handle sleep() method, you has say<BR>&gt;&gt;&gt; 
  sleep(1) for<BR>&gt;&gt; 1ms but on my<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; machine 
  it waits 15ms (it depends on your hardware, other PCs behave<BR>&gt;&gt; 
  different!). So i tested around with high performance 
  counters.<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; For now i ignore that problem an set 
  jitterbuffers on other device<BR>&gt;&gt;&gt; big<BR>&gt;&gt; 
  enough.<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; Thomas<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; 
  ________________________________<BR>&gt;&gt; Von: <A 
  href="mailto:freeswitch-users-bounces@lists.freeswitch.org">freeswitch-users-bounces@lists.freeswitch.org</A><BR>&gt;&gt; 
  [mailto:<A 
  href="mailto:freeswitch-users-bounces@lists.freeswitch.org">freeswitch-users-bounces@lists.freeswitch.org</A>] 
  Im Auftrag<BR>&gt;&gt; von Zelei<BR>&gt;&gt; Csaba<BR>&gt;&gt;&gt; Gesendet: 
  Donnerstag, 24. April 2008 19:05<BR>&gt;&gt;&gt; An: <A 
  href="mailto:freeswitch-users@lists.freeswitch.org">freeswitch-users@lists.freeswitch.org</A><BR>&gt;&gt;&gt; 
  Betreff: [Freeswitch-users] mod_portaudio send 3 rtp 
  packet/60ms<BR>&gt;&gt;&gt; instead<BR>&gt;&gt; of1 
  packet/20ms<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; Dear 
  all,<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; I tried to use FS in client mode, 
  starting calls with<BR>&gt;&gt;&gt; mod_portaudio to our<BR>&gt;&gt; providers 
  gateway ( a Cirpack softswitch )<BR>&gt;&gt;&gt; I experienced that there is 
  2-3 sec delay in the call, its choppy<BR>&gt;&gt;&gt; and<BR>&gt;&gt; robot 
  like.<BR>&gt;&gt;&gt; I tested it with a softphone, and an ip phone and 
  everything was<BR>&gt;&gt;&gt; fine. I<BR>&gt;&gt; traced back the problem to 
  mod_portaudio sending 3 rtp packet in 60ms<BR>&gt;&gt; instead of 1 
  packet/20ms.<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; Here is an rtp statistic from a 
  call: (see<BR>&gt;&gt; <A href="http://pastebin.freeswitch.org/4307" 
  target=_blank>http://pastebin.freeswitch.org/4307</A> for the complete list 
  and sip<BR>&gt;&gt; trace)<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; Packet &nbsp; 
  &nbsp;Sequence &nbsp; &nbsp;Delta (ms)<BR>&gt;&gt;&gt; 42 &nbsp;26138 &nbsp; 
  &nbsp;0.00<BR>&gt;&gt;&gt; 43 &nbsp; &nbsp;26139 &nbsp; 
  &nbsp;0.02<BR>&gt;&gt;&gt; 46 &nbsp; &nbsp;26140 &nbsp; 
  &nbsp;45.69<BR>&gt;&gt;&gt; 47 &nbsp; &nbsp;26141 &nbsp; 
  &nbsp;0.02<BR>&gt;&gt;&gt; 48 &nbsp; &nbsp;26142 &nbsp; 
  &nbsp;2.96<BR>&gt;&gt;&gt; 52 &nbsp; &nbsp;26143 &nbsp; 
  &nbsp;56.31<BR>&gt;&gt;&gt; 53 &nbsp; &nbsp;26144 &nbsp; 
  &nbsp;5.75<BR>&gt;&gt;&gt; 54 &nbsp; &nbsp;26145 &nbsp; 
  &nbsp;0.02<BR>&gt;&gt;&gt; 58 &nbsp; &nbsp;26146 &nbsp; 
  &nbsp;51.99<BR>&gt;&gt;&gt; 59 &nbsp; &nbsp;26147 &nbsp; 
  &nbsp;0.03<BR>&gt;&gt;&gt; 60 &nbsp; &nbsp;26148 &nbsp; 
  &nbsp;2.96<BR>&gt;&gt;&gt; 63 &nbsp; &nbsp;26149 &nbsp; 
  &nbsp;42.95<BR>&gt;&gt;&gt; 65 &nbsp; &nbsp;26150 &nbsp; 
  &nbsp;17.06<BR>&gt;&gt;&gt; 66 &nbsp; &nbsp;26151 &nbsp; 
  &nbsp;0.02<BR>&gt;&gt;&gt; 67 &nbsp; &nbsp;26152 &nbsp; 
  &nbsp;2.90<BR>&gt;&gt;&gt; 71 &nbsp; &nbsp;26153 &nbsp; 
  &nbsp;56.99<BR>&gt;&gt;&gt; 72 &nbsp; &nbsp;26154 &nbsp; 
  &nbsp;0.03<BR>&gt;&gt;&gt; 73 &nbsp; &nbsp;26155 &nbsp; 
  &nbsp;0.02<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; Did anyone else experience similar 
  problems?<BR>&gt;&gt;&gt; Is this the desired behaviour, because portaudio get 
  data in 60ms<BR>&gt;&gt;&gt; interval<BR>&gt;&gt; or can I set it to 20ms 
  somehow?<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; 
  Thanks,<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; Csaba 
  Zelei<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; 
  ________________________________<BR>&gt;&gt;<BR>&gt;&gt;&gt; 
  _______________________________________________<BR>&gt;&gt;&gt; 
  Freeswitch-users mailing list<BR>&gt;&gt;&gt; <A 
  href="mailto:Freeswitch-users@lists.freeswitch.org">Freeswitch-users@lists.freeswitch.org</A><BR>&gt;&gt;&gt; 
  <A href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" 
  target=_blank>http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</A><BR>&gt;&gt;&gt; 
  UNSUBSCRIBE:<A 
  href="http://lists.freeswitch.org/mailman/options/freeswitch-users" 
  target=_blank>http://lists.freeswitch.org/mailman/options/freeswitch-users</A><BR>&gt;&gt;&gt; 
  <A href="http://www.freeswitch.org" 
  target=_blank>http://www.freeswitch.org</A><BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; 
  Index: mod_portaudio.c<BR>&gt;&gt;&gt; 
  ===================================================================<BR>&gt;&gt;&gt; 
  --- mod_portaudio.c &nbsp; &nbsp; (revision 8260)<BR>&gt;&gt;&gt; +++ 
  mod_portaudio.c &nbsp; &nbsp; (working copy)<BR>&gt;&gt;&gt; @@ -121,6 +121,7 
  @@<BR>&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; int ring_interval;<BR>&gt;&gt;&gt; 
  &nbsp; &nbsp; &nbsp; GFLAGS flags;<BR>&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; 
  switch_timer_t timer;<BR>&gt;&gt;&gt; + &nbsp; &nbsp; &nbsp; switch_timer_t 
  sync_timer;<BR>&gt;&gt;&gt; } 
  globals;<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; @@ -282,7 +283,15 
  @@<BR>&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; }<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; 
  &nbsp; &nbsp; &nbsp; switch_set_flag_locked(tech_pvt, 
  TFLAG_IO);<BR>&gt;&gt;&gt; +<BR>&gt;&gt;&gt; + &nbsp; &nbsp; &nbsp; /* Start 
  Synchronization Timer */<BR>&gt;&gt;&gt; + &nbsp; &nbsp; &nbsp; //Is it ok to 
  always use 20ms? What about the 160 sample????<BR>&gt;&gt;&gt; + &nbsp; &nbsp; 
  &nbsp; if (<BR>&gt;&gt; 
  switch_core_timer_init(&amp;globals.sync_timer,"soft",<BR>&gt;&gt; 
  20,160,switch_core_session_get_pool(session))<BR>&gt;&gt; != 
  SWITCH_STATUS_SUCCESS)<BR>&gt;&gt;&gt; + &nbsp; &nbsp; &nbsp; 
  {<BR>&gt;&gt;&gt; + &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
  switch_log_printf(SWITCH_CHANNEL_LOG,<BR>&gt;&gt;&gt; 
  SWITCH_LOG_DEBUG,<BR>&gt;&gt; "Sync Timer failed!!\n");<BR>&gt;&gt;&gt; + 
  &nbsp; &nbsp; &nbsp; }<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; +<BR>&gt;&gt;&gt; 
  &nbsp; &nbsp; &nbsp; /* Move Channel's State Machine to RING 
  */<BR>&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; switch_channel_set_state(channel, 
  CS_RING);<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; @@ -412,6 +421,8 @@<BR>&gt;&gt;&gt; 
  &nbsp; &nbsp; &nbsp; }<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; 
  switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s<BR>&gt;&gt;&gt; 
  CHANNEL<BR>&gt;&gt; HANGUP\n",<BR>&gt;&gt; 
  switch_channel_get_name(switch_core_session_get_channel(session)));<BR>&gt;&gt;&gt; 
  + &nbsp; &nbsp; &nbsp; /* Destroy timer */<BR>&gt;&gt;&gt; + &nbsp; &nbsp; 
  &nbsp; 
  switch_core_timer_destroy(&amp;globals.sync_timer);<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; 
  &nbsp; &nbsp; &nbsp; return SWITCH_STATUS_SUCCESS;<BR>&gt;&gt;&gt; 
  }<BR>&gt;&gt;&gt; @@ -542,12 +553,17 @@<BR>&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; 
  switch_mutex_lock(globals.device_lock);<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; 
  get_samples:<BR>&gt;&gt;&gt; -<BR>&gt;&gt;&gt; +<BR>&gt;&gt;&gt; &nbsp; &nbsp; 
  &nbsp; if ((samples = ReadAudioStream(globals.audio_stream,<BR>&gt;&gt; 
  globals.read_frame.data,<BR>&gt;&gt;&gt;<BR>&gt;&gt; 
  globals.read_codec.implementation-&gt;samples_per_frame,<BR>&gt;&gt;&gt;<BR>&gt;&gt; 
  &amp;globals.timer)) == 0) {<BR>&gt;&gt;&gt; +<BR>&gt;&gt;&gt; + &nbsp; &nbsp; 
  &nbsp; //switch_log_printf(SWITCH_CHANNEL_LOG, 
  SWITCH_LOG_DEBUG,<BR>&gt;&gt;&gt; "No data<BR>&gt;&gt; reset 
  timer\n");<BR>&gt;&gt;&gt; + &nbsp; &nbsp; &nbsp; 
  switch_core_timer_sync(&amp;globals.sync_timer);<BR>&gt;&gt;&gt; &nbsp; &nbsp; 
  &nbsp; &nbsp;switch_yield(1000);<BR>&gt;&gt;&gt; +<BR>&gt;&gt;&gt; &nbsp; 
  &nbsp; &nbsp; &nbsp;goto get_samples;<BR>&gt;&gt;&gt; +<BR>&gt;&gt;&gt; &nbsp; 
  &nbsp; &nbsp; } else {<BR>&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
  &nbsp; &nbsp; globals.read_frame.datalen = samples * 2;<BR>&gt;&gt;&gt; &nbsp; 
  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; globals.read_frame.samples = 
  samples;<BR>&gt;&gt;&gt; @@ -562,7 +578,9 @@<BR>&gt;&gt;&gt; &nbsp; &nbsp; 
  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; status = 
  SWITCH_STATUS_SUCCESS;<BR>&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; }<BR>&gt;&gt;&gt; 
  &nbsp; &nbsp; &nbsp; switch_mutex_unlock(globals.device_lock);<BR>&gt;&gt;&gt; 
  -<BR>&gt;&gt;&gt; +<BR>&gt;&gt;&gt; + &nbsp; &nbsp; &nbsp; 
  switch_core_timer_next(&amp;globals.sync_timer);<BR>&gt;&gt;&gt; 
  +<BR>&gt;&gt;&gt; &nbsp; &nbsp; &nbsp; return 
  status;<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; 
  }<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; 
  _______________________________________________<BR>&gt;&gt;&gt; 
  Freeswitch-users mailing list<BR>&gt;&gt;&gt; <A 
  href="mailto:Freeswitch-users@lists.freeswitch.org">Freeswitch-users@lists.freeswitch.org</A><BR>&gt;&gt;&gt; 
  <A href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" 
  target=_blank>http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</A><BR>&gt;&gt;&gt; 
  UNSUBSCRIBE:<A 
  href="http://lists.freeswitch.org/mailman/options/freeswitch-users" 
  target=_blank>http://lists.freeswitch.org/mailman/options/freeswitch-users</A><BR>&gt;&gt;&gt; 
  <A href="http://www.freeswitch.org" 
  target=_blank>http://www.freeswitch.org</A><BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt;<BR>&gt;&gt;<BR>&gt;&gt;<BR>&gt;&gt;<BR>&gt;&gt; 
  --<BR>&gt;&gt; Anthony Minessale II<BR>&gt;&gt;<BR>&gt;&gt; FreeSWITCH <A 
  href="http://www.freeswitch.org/" 
  target=_blank>http://www.freeswitch.org/</A><BR>&gt;&gt; ClueCon <A 
  href="http://www.cluecon.com/" 
  target=_blank>http://www.cluecon.com/</A><BR>&gt;&gt;<BR>&gt;&gt; AIM: 
  anthm<BR>&gt;&gt; <A 
  href="mailto:MSN%3Aanthony_minessale@hotmail.com">MSN:anthony_minessale@hotmail.com</A><BR>&gt;&gt; 
  GTALK/JABBER/<A 
  href="mailto:PAYPAL%3Aanthony.minessale@gmail.com">PAYPAL:anthony.minessale@gmail.com</A><BR>&gt;&gt; 
  IRC: <A href="http://irc.freenode.net" target=_blank>irc.freenode.net</A> 
  #freeswitch<BR>&gt;&gt;<BR>&gt;&gt; FreeSWITCH Developer 
  Conference<BR>&gt;&gt; <A 
  href="mailto:sip%3A888@conference.freeswitch.org">sip:888@conference.freeswitch.org</A><BR>&gt;&gt; 
  <A href="http://iax:guest@conference.freeswitch.org/888" 
  target=_blank>iax:guest@conference.freeswitch.org/888</A><BR>&gt;&gt; <A 
  href="mailto:googletalk%3Aconf%2B888@conference.freeswitch.org">googletalk:conf+888@conference.freeswitch.org</A><BR>&gt;&gt; 
  pstn:213-799-1400<BR>&gt;&gt; 
  _______________________________________________<BR>&gt;&gt; Freeswitch-users 
  mailing list<BR>&gt;&gt; <A 
  href="mailto:Freeswitch-users@lists.freeswitch.org">Freeswitch-users@lists.freeswitch.org</A><BR>&gt;&gt; 
  <A href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" 
  target=_blank>http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</A><BR>&gt;&gt; 
  UNSUBSCRIBE:<A 
  href="http://lists.freeswitch.org/mailman/options/freeswitch-users" 
  target=_blank>http://lists.freeswitch.org/mailman/options/freeswitch-users</A><BR>&gt;&gt; 
  <A href="http://www.freeswitch.org" 
  target=_blank>http://www.freeswitch.org</A><BR>&gt;&gt;<BR>&gt;&gt;<BR>&gt;<BR>&gt; 
  _______________________________________________<BR>&gt; Freeswitch-users 
  mailing list<BR>&gt; <A 
  href="mailto:Freeswitch-users@lists.freeswitch.org">Freeswitch-users@lists.freeswitch.org</A><BR>&gt; 
  <A href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" 
  target=_blank>http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</A><BR>&gt; 
  UNSUBSCRIBE:<A 
  href="http://lists.freeswitch.org/mailman/options/freeswitch-users" 
  target=_blank>http://lists.freeswitch.org/mailman/options/freeswitch-users</A><BR>&gt; 
  <A href="http://www.freeswitch.org" 
  target=_blank>http://www.freeswitch.org</A><BR><BR><BR>_______________________________________________<BR>Freeswitch-users 
  mailing list<BR><A 
  href="mailto:Freeswitch-users@lists.freeswitch.org">Freeswitch-users@lists.freeswitch.org</A><BR><A 
  href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users" 
  target=_blank>http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</A><BR>UNSUBSCRIBE:<A 
  href="http://lists.freeswitch.org/mailman/options/freeswitch-users" 
  target=_blank>http://lists.freeswitch.org/mailman/options/freeswitch-users</A><BR><A 
  href="http://www.freeswitch.org" 
  target=_blank>http://www.freeswitch.org</A><BR></DIV></DIV></BLOCKQUOTE></DIV><BR><BR 
clear=all><BR>-- <BR>Anthony Minessale II<BR><BR>FreeSWITCH <A 
href="http://www.freeswitch.org/">http://www.freeswitch.org/</A><BR>ClueCon <A 
href="http://www.cluecon.com/">http://www.cluecon.com/</A><BR><BR>AIM: 
anthm<BR><A 
href="mailto:MSN%3Aanthony_minessale@hotmail.com">MSN:anthony_minessale@hotmail.com</A><BR>GTALK/JABBER/<A 
href="mailto:PAYPAL%3Aanthony.minessale@gmail.com">PAYPAL:anthony.minessale@gmail.com</A><BR>IRC: 
<A href="http://irc.freenode.net">irc.freenode.net</A> 
#freeswitch<BR><BR>FreeSWITCH Developer Conference<BR><A 
href="mailto:sip%3A888@conference.freeswitch.org">sip:888@conference.freeswitch.org</A><BR><A 
href="http://iax:guest@conference.freeswitch.org/888">iax:guest@conference.freeswitch.org/888</A><BR><A 
href="mailto:googletalk%3Aconf%2B888@conference.freeswitch.org">googletalk:conf+888@conference.freeswitch.org</A><BR>pstn:213-799-1400 
</BODY></HTML>