------------------------------------------------
v=0
o=- 428274843 428274843 IN IP4 88.24.6.135
s=-
c=IN IP4 88.24.6.135
t=0 0
m=audio 42442 RTP/AVP 18 8 0 101
a=ptime:20
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
m=image 50292 udptl t38
a=T38FaxUdpEC:t38UDPRedundancy
------------------------------------------------
Es decir, no menciona ningún codec ("telephone-event" es para tema DTMF dentro
del RTP).
El caso es que Asterisk acepta el INVITE seleccionando G771A:
------------------------------------------------
v=0
o=root 31271 31271 IN IP4 85.94.0.115
s=session
c=IN IP4 85.94.0.115
t=0 0
m=audio 19290 RTP/AVP 8
a=rtpmap:8 PCMA/8000
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv
------------------------------------------------
Lo normal entiendo que suele ser recibir algo en plan:
------------------------------------------------
m=audio 8802 RTP/AVP 98 97 8 0 3 101
a=rtpmap:98 speex/16000
a=rtpmap:97 speex/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=ptime:20
------------------------------------------------
donde claramente se ven los codecs que se ofrecen en el INVITE.
El caso es que no me fío de la negociación SDP de Asterisk (he oído bugs al
respecto) y no sé si Asterisk acepta la llamada porque "se la come" y asume
G771A.
¿No es incorrecto/incompleto el SDP que me envía el proveedor?
Gracias.
--
Iñaki Baz Castillo
i...@in.ilimit.es
Julián J. M.
On Jan 4, 2008 11:39 AM, Iñaki Baz Castillo <i...@in.ilimit.es> wrote:
>
> Hola, desde un proveedor SIP recibo un INVITE con un SDP tal que así:
>
> ------------------------------------------------
> v=0
> o=- 428274843 428274843 IN IP4 88.24.6.135
> s=-
> c=IN IP4 88.24.6.135
> t=0 0
> m=audio 42442 RTP/AVP 18 8 0 101
> a=ptime:20
> a=rtpmap:101 telephone-event/8000
> a=fmtp:101 0-15
> m=image 50292 udptl t38
> a=T38FaxUdpEC:t38UDPRedundancy
> ------------------------------------------------
Qué va, es un INVITE desde un teléfono. Es más, ese INVITE ha llegado a
Asterisk que ha aceptado la llamada (indicando g711a en el SDP del 200 OK) y
posteriormente el dialplan de Asterisk ha llamado a un usuario SIP interno
(todo con "canreinvite=no") y hemos estado hablando ¿?¿?
> On Jan 4, 2008 11:39 AM, Iñaki Baz Castillo <i...@in.ilimit.es> wrote:
> > Hola, desde un proveedor SIP recibo un INVITE con un SDP tal que así:
> >
> > ------------------------------------------------
> > v=0
> > o=- 428274843 428274843 IN IP4 88.24.6.135
> > s=-
> > c=IN IP4 88.24.6.135
> > t=0 0
> > m=audio 42442 RTP/AVP 18 8 0 101
> > a=ptime:20
> > a=rtpmap:101 telephone-event/8000
> > a=fmtp:101 0-15
> > m=image 50292 udptl t38
> > a=T38FaxUdpEC:t38UDPRedundancy
> > ------------------------------------------------
--
Iñaki Baz Castillo
i...@in.ilimit.es
Sí, ya lo había pensado pero qué va, nada. Este es el ACK que me envía el
proveedor:
* INVITE desde el proveedor:
------------------------------------------------
v=0
o=- 428274843 428274843 IN IP4 88.24.6.135
s=-
c=IN IP4 88.24.6.135
t=0 0
m=audio 42442 RTP/AVP 18 8 0 101
a=ptime:20
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
m=image 50292 udptl t38
a=T38FaxUdpEC:t38UDPRedundancy
------------------------------------------------
* 200 OK de Asterisk:
------------------------------------------------
v=0
o=root 31271 31271 IN IP4 85.94.0.115
s=session
c=IN IP4 85.94.0.115
t=0 0
m=audio 19290 RTP/AVP 8
a=rtpmap:8 PCMA/8000
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv
------------------------------------------------
* ACK desde el proveedor:
-------------------------------------------------
ACK sip:XXXXXXXXX@XXXXX SIP/2.0
From: <sip:XXXXXXX@XXXXX:5060>;tag=13c4-477e103b-a08f5ef0-7e8af979
To: <sip:XXXXXXXXX@XXXXXXXX:5060>;tag=as36025379
Call-ID: 7e2ff81c90000e3e13c4477xe103ba08f5eef6a8d5ee89da57e0-0228-5720
CSeq: 1 ACK
User-agent: CS2000_NGSS/8.0
Max-Forwards: 70
Supported: 100rel
Allow: ACK,BYE,CANCEL,INVITE,OPTIONS,INFO,SUBSCRIBE,REFER,NOTIFY,PRACK,UPDATE
Via: SIP/2.0/UDP
XXXXXX:5060;maddr=XXXXXXXXX;branch=z9hG4bK-477e1049-a08f95a5-551e93cf
Contact: <sip:XXXXXXXXXXXXX:5060>
Content-Length: 0
-------------------------------------------------
¿?¿?¿
No ;)
Voicetrading sólo para enviar (a veces funciona XDDDD).
El proxy te está ofreciendo G729 (18), alaw (8) y ulaw (0).. además de
DTMF out-of-band (rfc2833) (101). El único problema es que no tiene un
rtpmap para explicar lo que significa cada código.
Debe haber algún RFC con los códigos estándar para los codecs más
utilizados. Lo siguiente está sacado de asterisk/main/rtp.c. Fijate en
las posiciones 0,8 y 18 del array:
/* Static (i.e., well-known) RTP payload types for our "AST_FORMAT..."s:
also, our own choices for dynamic payload types. This is our master
table for transmission */
static struct rtpPayloadType static_RTP_PT[MAX_RTP_PT] = {
[0] = {1, AST_FORMAT_ULAW},
#ifdef USE_DEPRECATED_G726
[2] = {1, AST_FORMAT_G726}, /* Technically this is G.721, but
if Cisco can do it, so can we... */
#endif
[3] = {1, AST_FORMAT_GSM},
[4] = {1, AST_FORMAT_G723_1},
[5] = {1, AST_FORMAT_ADPCM}, /* 8 kHz */
[6] = {1, AST_FORMAT_ADPCM}, /* 16 kHz */
[7] = {1, AST_FORMAT_LPC10},
[8] = {1, AST_FORMAT_ALAW},
[9] = {1, AST_FORMAT_G722},
[10] = {1, AST_FORMAT_SLINEAR}, /* 2 channels */
[11] = {1, AST_FORMAT_SLINEAR}, /* 1 channel */
[13] = {0, AST_RTP_CN},
[16] = {1, AST_FORMAT_ADPCM}, /* 11.025 kHz */
[17] = {1, AST_FORMAT_ADPCM}, /* 22.050 kHz */
[18] = {1, AST_FORMAT_G729A},
[19] = {0, AST_RTP_CN}, /* Also used for CN */
[26] = {1, AST_FORMAT_JPEG},
[31] = {1, AST_FORMAT_H261},
[34] = {1, AST_FORMAT_H263},
[103] = {1, AST_FORMAT_H263_PLUS},
[97] = {1, AST_FORMAT_ILBC},
[99] = {1, AST_FORMAT_H264},
[101] = {0, AST_RTP_DTMF},
[110] = {1, AST_FORMAT_SPEEX},
[111] = {1, AST_FORMAT_G726},
[112] = {1, AST_FORMAT_G726_AAL2},
[121] = {0, AST_RTP_CISCO_DTMF}, /* Must be type 121 */
};
Saludos
Julián J. M.
Lo probaré, gracias :)
¿Sólo durante la negociación? XDD
> Debe haber algún RFC con los códigos estándar para los codecs más
> utilizados. Lo siguiente está sacado de asterisk/main/rtp.c. Fijate en
> las posiciones 0,8 y 18 del array:
Vaya, y yo que me iba a leer el "RFC 4566 - SDP", pues ya no me hace falta
XDDD
Gracias Julián, la voz-ip no existiría sin ti.
Completamente, gracias ;)
Eso es imposible, ni siquiera Elio puede. XD