aMSN Forums
February 11, 2012, 09:23:16 am *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: New forum for aMSN !!
 
   Home   Help Search Login Register  
Pages: 1 ... 4 5 [6] 7 8 ... 46
  Print  
Author Topic: Audio/Video conversation  (Read 320943 times)
trv
Super Power User
**
Offline Offline

Posts: 154


View Profile WWW
« Reply #75 on: April 14, 2008, 04:05:16 pm »

xm i have the latest svn yes, and the debs for hardy from ppa.

i'll test more in a while.

The freezes are only on the login stage, not everywhere, and i have yet to test if voice conversation actually works Smiley
Logged
Quetzal
Power user
*
Offline Offline

Posts: 72


View Profile
« Reply #76 on: April 14, 2008, 05:22:57 pm »

All seem work but the other person listen nothing.
It's very strange because sound device is busy while farsight run and farsight seem running correctly.
But I don't use .debs, I use my own farsight with tcl/tk 8.5 on ubuntu 8.04...
Logged
flomar34
Newbie

Offline Offline

Posts: 47


View Profile
« Reply #77 on: April 14, 2008, 06:23:19 pm »

Hello,

We have no problem with the installation using your debs.

I can send an audio call invitation.

MSN user can accept it but he didn't hear anything.

Is there something to verify (like a log file) (With simply words please i'm very new with this Smiley )

Thanks
Logged
kakaroto
Administrator
Super Power User
*****
Offline Offline

Posts: 9424


View Profile WWW
« Reply #78 on: April 14, 2008, 06:37:13 pm »

ahhhh, why is everyone asking the same thing!
someone just asked me over MSN and now.. 3 people asking the same thing here...
let me make it clear to you (you should all read and understood this very already  with all the details I gave before) :
Quote

The current issues are that if you receive a call from WLM, he doesn't seem to work because he expects ICE connections (which will be fixed someday), we answer him that we're temporarly unavailable and we give you the choice to call him back (if you call WLM, it works, if you get a call from WLM, it doesn't).
If you call a WLM user, you should be able to receive him, but he will not be able to receive your sound *unless you're in the same network* (it disables ICE so it can't find its external IP and gives you only the internal IP).. note though that if the WLM user is not inside a NAT, it should work.
The best compatibility now is between two aMSN users... simply because we send our external ip instead of the internal ip.
If you call someone (amsn or WLM) from the same NAT (local network), it will not work because we send the external ip...

so just to make it clear again...

if a user on WLM can't hear you, it's because WLM is stupid.. a WLM user can only hear you if he's not in a NAT (connected directly to internet) but it should work correctly between two amsn users.
And to fix this issue, I'll need to fix this 'ICE' thing I've been talking about from the start that noone understood..

and to simplify even more :
1 - call an aMSN user if you want to both hear each other
2 - call a WLM user if you want to hear him, but he won't hear you


EDIT oh and btw, congrats on quetzal and flomar for making it work! Smiley now everyone seems to have it working... apart from trv but I'm sure it's because he did something wrong :p
Logged

KaKaRoTo
flomar34
Newbie

Offline Offline

Posts: 47


View Profile
« Reply #79 on: April 14, 2008, 06:49:54 pm »

Quote
and to simplify even more :
1 - call an aMSN user if you want to both hear each other
2 - call a WLM user if you want to hear him, but he won't hear you


This is clear enought for me now Smiley

Thanks a lot for the job you made i will continue to follow this post every day because i'm sure  that  ...

[FRENCH] ...je suis sur que quelque chose d'important se passe ici [/FRENCH]
Logged
kakaroto
Administrator
Super Power User
*****
Offline Offline

Posts: 9424


View Profile WWW
« Reply #80 on: April 14, 2008, 07:05:19 pm »

hehe, I really had to dumb it down :p
and yes, something important is happening in here! Smiley
for now, everyone who tried it, worked for them (apart from trv but he didn't test the latest svn yet).
What you'll want to be looking for next in this thread is whether or not I finished implementing ICE ... which will allow you to call a WLM user and both hear each other and have it work if you're in the same network or on different networks, firewalled, etc...
Logged

KaKaRoTo
Quetzal
Power user
*
Offline Offline

Posts: 72


View Profile
« Reply #81 on: April 14, 2008, 10:46:08 pm »

Quote from: "kakaroto"

The current issues are that if you receive a call from WLM, he doesn't seem to work because he expects ICE connections (which will be fixed someday), we answer him that we're temporarly unavailable and we give you the choice to call him back (if you call WLM, it works, if you get a call from WLM, it doesn't).
If you call a WLM user, you should be able to receive him, but he will not be able to receive your sound *unless you're in the same network* (it disables ICE so it can't find its external IP and gives you only the internal IP).. note though that if the WLM user is not inside a NAT, it should work.
The best compatibility now is between two aMSN users... simply because we send our external ip instead of the internal ip.
If you call someone (amsn or WLM) from the same NAT (local network), it will not work because we send the external ip...


Rhaaaaa, it seem me that i've read this before, but I was unable to find it and I know that I make a mistake but I post it (traduction in french (parce que je ne suis pas sur d'avoir bien dit ce que je voulais: il me semblait bien que j'avais vu ca qque part mais comme je n'arrivais pas a le retrouver j'ai posté quand meme en sachant que je fesais une betise ^^) bon je ne posterai plus en francais ici promis ^^)
Logged
kakaroto
Administrator
Super Power User
*****
Offline Offline

Posts: 9424


View Profile WWW
« Reply #82 on: April 14, 2008, 11:19:03 pm »

lol, ok, c pas grave! :p

btw, I think I found a solution for making it work with WLM without ICE :p
Logged

KaKaRoTo
rowanparker
Super Power User
**
Offline Offline

Posts: 235



View Profile WWW
« Reply #83 on: April 15, 2008, 08:26:49 am »

Quote from: "kakaroto"
btw, I think I found a solution for making it work with WLM without ICE :p


Go on, try us out Wink
We might understand Cheesy
Logged

kakaroto
Administrator
Super Power User
*****
Offline Offline

Posts: 9424


View Profile WWW
« Reply #84 on: April 15, 2008, 10:47:38 am »

LOL.. you might.. but you still won't :p ok maybe you can, assuming you know a bit about stun/ice/turn (you can read the rfcs).. basically, the current problem is that we have two types of 'invite', one which uses ICE and the other which doesn't...
if we don't use ICE (raw udp), it means we just use a normal UDP socket an we send/receive with that.. we use STUN to allow the traversal of the NAT by mapping our internally allocated port to an external port opened by the router for our UDP 'answers' to reach us.. (it thinks we sent a message and we expect a response, so it forwards the response to us, while in fact we are receiving the actual data.. that's what stun is used for, you send an outgoing message, the router remembers your internal ip/port and when it receives an answer on that port, it redirects it to you thinking it's an answer.. so you send a STUN (udp) message, and wait for the reply).
With raw udp, we can only send/receive to one ip/port.. with ICE you have multiple 'candidates' (which are just ip/port combinations)... so if you're both in separate locations, you send your external ip/port, and it works, but if you're in the same local network, it doesn't work because you only have the external ip, and the routers usually don't allow a packet going out and coming back in.
The thing is that if we use ICE, we will send multiple candidates, like candidate 1 : internal ip/port, candidate 2 : external ip/port, candidate 3 : a relay server in case internal AND external failed to work (rare). That relay server which is used only when both users are in symmetric NATs where the router is smart enough (5% of the cases?) to blablabla read STUN and NAT traversal to know why it would block those packets :p
anyways... the thing is that during the negociation you give it these 3 (or more depending on how many internal interfaces you have) ip/port combinations... and ICE will try to connect to each one (depending on priority, local network has higher priority than going through the external network) and it will fallback on the relay server (called a TURN server). There's also an interesting fact, when you send your ICE candidates during the negociation, you also send a single 'ip/port' (usually also found in the ICE candidates) for those clients who do not support ICE so they can fallback on it.. and MSN uses the TURN server as the fallback.. and the reason is... I just found out about it in the TURN draft 2 that M$ might be implementing :
TURN specs say that you must request from the TURN server an 'allocate' which simply means you tell it to allocate an ip/port for you on the relay server, it will give you that ip/port and you use that as you ICE candidate... what happens is that the first person to send a packet to that ip/port will be remembered by the server and it will send any data it receives from it back to you (it remembers your ip/port when send the request to allocate the resource)... and in the same way, whenever you send something to it, it will send it back to that person that connected to it...
This means that what we could do is that for WLM users, we could 'accept' the ICE request instead of rejecting it, then just use the relay server which will guarantee that it will work.. problem is, not sure about the bandwidth... maybe the sound will be a bit less 'smooth'... but anyways, at 2KB/s I don't think it will be much of a problem! Smiley
so that's my idea.. to summarize it.. always use the TURN (relay) server when talking to WLM so it can always get our data Smiley

oh.. and by the way, if you're wondering why we can't just use the ICE candidates we received, since we receive all 3 ip/port addresses (internal, external, relay).. it's simply because if we use the internal or external ip, then it's not TURN, it's just normal ICE, and that needs authentification.. you see an ice candidate is not only an ip and a port, it's actually a username (random), a password (random), a media type (rtp or rtcp), a transport (udp or tcp), a priority, then the ip and port.. that's for each candidate (so you get 6 (rtp+rtcp) candidates for your internal/external/relay and each one has a different username and password).
ICE is made to receive a lot of candidates (all internal, external (server reflexive and peer reflexive)) and only choose one as the 'selected pair'.. so since it's UDP, you have no way of knowing if the packet arrived or not, so it uses STUN to authenticate and make sure we are talking to the righ person (it doesn't want you to send your video/sound to someone other than the person you want to send to) so it sends a STUN request with *our* username and an sha1 hmac hash using password, so we know that it's the right person sending the request, and we answer it likewise (using their username/password), once and only once it receives an authenticated response to the STUN request, will it then 'elect' that candidate pair (our candidate + the remote's candidate) and start streaming to it... since we don't reply to the STUN message, it thinks that ip/port combination gets bumped on a firewall, so that candidate (or that ip/port) is useless..
it will only elect one candidate pair because if you have many candidates (in my case, I get 12 candidates), you don't want to send the same data to all of them (12 times the bandwidth usage)...
so we either have to answer to the STUN request, or use the TURN server which doesn't need STUN (I think)....
and why don't we just answer the STUN request instead of all that? simple.. we use farsight, we use gstreamer, we use a raw udp transmitter.. first, that raw udp transmitter can only send to one ip/port, so we can't just give it all the candidates we received, and assume it will work... also, because we have no access to the data unless we start playing with the gstreamer pipeline.. and I don't want to do that!!! and also because a 'ice transmitter' will very soon be ready which will take care of all that for us!!!

I hoe this explanation was good enough, I tried to make it as detailed and simple as possible :p
Logged

KaKaRoTo
rowanparker
Super Power User
**
Offline Offline

Posts: 235



View Profile WWW
« Reply #85 on: April 15, 2008, 03:59:40 pm »

Thank you for that explanation.
It made quite a lot of sense actually Smiley
I wish you luck with what you are doing.
Can't wait for it to be a proper feature. Cheesy
Logged

tofg
Newbie

Offline Offline

Posts: 1


View Profile
« Reply #86 on: April 16, 2008, 11:10:40 am »

I'm really astonished by your work.
But as i'm a noob on debian, i can't feel it to do it myself.
I hope it will be implement on the standard version soon.
And as i'm french, i will just say "Bravo"
Logged
lucianolev
Power user
*
Offline Offline

Posts: 56


View Profile
« Reply #87 on: April 16, 2008, 03:13:41 pm »

I've been reading this thread beginning (this is indeed not my first post) and I'm very impressed by the speed you manage to solve every obstacle in such a complicated job. Providing new support for compatibility of a closed source application (and made by Microsoft!!) like WLM is a very difficult task as far as i'm concerned, so congratulations! Thanks again for your work.

Hope to see this implemented nicely for non-technical people in next stable version.  Cheesy
Logged
kakaroto
Administrator
Super Power User
*****
Offline Offline

Posts: 9424


View Profile WWW
« Reply #88 on: April 16, 2008, 05:50:33 pm »

Hi all,
@rowanparker : glad you understood it, I tried my best to make it easy :p
@tofg: thanks for taking the time to register jus to give me that "Bravo".. so.. "Merci" Smiley
@lucianolev : thanks for the nice comments Smiley It's a bit complicated, yes (as you might understand from all the technical details I gave), but honestly, it wasn't that difficult simply because WLM is using all standard protocols for this, SIP/SDP/RTP/ICE/TURN/STUN.. all those are standard and the specs are available on the net.. and there is no difference between the official specs and what Microsoft does, so this is very helpful! The difficult part would be to understand all that, but I'm ok since I already knew pretty much all of that because that's my field of work so I already knew all those standards from work so I just had to implement it.
Logged

KaKaRoTo
Auria
Power user
*
Offline Offline

Posts: 121


View Profile
« Reply #89 on: April 16, 2008, 07:48:17 pm »

Quote from: "kakaroto"
Hi all,
@rowanparker : glad you understood it, I tried my best to make it easy :p
@tofg: thanks for taking the time to register jus to give me that "Bravo".. so.. "Merci" Smiley
@lucianolev : thanks for the nice comments Smiley It's a bit complicated, yes (as you might understand from all the technical details I gave), but honestly, it wasn't that difficult simply because WLM is using all standard protocols for this, SIP/SDP/RTP/ICE/TURN/STUN.. all those are standard and the specs are available on the net.. and there is no difference between the official specs and what Microsoft does, so this is very helpful! The difficult part would be to understand all that, but I'm ok since I already knew pretty much all of that because that's my field of work so I already knew all those standards from work so I just had to implement it.


microsoft using standards? I'm impressed  :lol:
Logged
Pages: 1 ... 4 5 [6] 7 8 ... 46
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!