A couple of years ago I tried using TWSocket with Skype to send audio back and 
forth between my Delphi 6 application and the Skype client.  I never could get 
it to work until I switched to the Indy components.

Since then I've used ICS in several applications they have always worked great. 
 Now I have another application that interfaces with Skype and again I am 
having trouble trying to get TWSocket to work with Skype.

My application acts as a middleman between an external WiFi webcam device 
relaying audio from its microphone to Skype's input audio port and relaying 
audio from Skype's output audio port to the webcam device's speaker.  I am 
using ICS on both sides now.  TWSocket works just fine with the external WiFi 
webcam, however, I can't make it work with Skype.  The audio going to Skype is 
frequently "jamming up" whereby the buffered byte count rises quickly for short 
durations, enough to make the audio stream going to Skype unusable (calling 
TWSocket.Send).  The socket receiving audio from Skype receives about 11 to 20 
data deliveries successfully and then just dies (OnDataAvailable stops firing). 
 The connection stays open, but Skype stops sending audio permanently.

Both sockets for the pair of connections are spawned by a listening socket.  
The way you tell the Skype client to receive audio from your application is to 
open a socket on a port number of your choice and Listen.  You then tell Skype 
the port number you are using and Skype connects to you on that port.   The 
same goes for the socket you use send audio to Skype.  In both cases you Listen 
and Skype connects to you on the given port.  The difference of course being 
that you repeatedly handle OnDataAvailable() events on the socket that is 
receiving audio from Skype, and repeatedly call Send() on the socket that is 
sending audio to Skype.

I'd rather keep things ICS all around but I'm close to switching to Indy on the 
Skype side.  I recently found out that Skype uses Indy for its Windows clients. 
 I'm also aware that Indy uses a thread that blocks to do its work as opposed 
to TWSocket which uses a message loop.

Can anyone speculate as to what about Indy's sockets are more compatible with 
Skype than (at least for me) TWSocket sockets?  What could I try to quickly fix 
this situation, perhaps by more closely emulating Indy's behavior?

To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to