Hi
Angenommen der 1-te Teilnehmer kann nur g729 und bei dem anderen Teilnehmer ist dieser Codec nicht vorhanden. Dafür hat er andere Codecs wie z.B. GSM oder G726-32.
in Deinem Beispiel kommt, wie die Vorposter schon schrieben, im Allgemeinen(*) kein erfolgreicher Call zu Stande.
Grundsätzlich ist es im Standard aber so gelöst: In einem INVITE-Request wird vom Client A die von ihm unterstützten (genauer: gewünschten) Codecs signalisiert. Die Anzahl dieser gewünschten Codecs kann variieren, muss aber jedenfalls >0 sein. Der Angerufene signalisiert wiederum (zumeist) im "OK"-Response, welche Codecs er zu empfangen wünscht.
Nun verwendet Client A einen (der von ihm unterstützten) Codecs aus der 200OK-Response, und Client B einen (der von ihm unterstützen) Codecs aus dem INVITE.
Wie kommt die Verbindung und mit welchen Codecs zustande? Erfolgt die Verbindung i.d.R. direkt zwischen den zwei Teilnehmern oder wird das Gespräch im Server umcodiert?
Das hängt vom Provider ab. Manche verwenden sogenannte Media-Proxies, manche nicht.
Bei ersteren werden die RTP-Daten (ähnlich der SIP-Signalisierung) über einen vom Provider betriebenen Server geleitet. Hat den Vorteil, dass viele NAT/NAPT-Probleme der Kunden damit umgangen werden können. Hat den Nachteil, dass es für den Provider zusätzliche Kosten verursacht. Diese Medien-Proxies könnten oftmals Recoding, tun es aber eigentlich nicht, da es ressourcenteuer ist und delay/jitter verursacht.
Bei letzteren wird RTP direkt zwischen den Teilnehmern ausgetauscht und es kann kein Recoding stattfinden
(*) Anmerkung: SIP/SDP ist recht komplex - ich habe hier nur einen standardmässigen Offer/Answer gezeigt. In der trockenen Theorie könnte Dein Beispiel funktionieren - der Standard würde es erlauben
lg
der Michl