G729 es G729, lo de A, B, C, D y E (creo que la última es la E), solo
significan mejoras en cuestión de rendimiento de codificación, no recuerdo
que haya ningún tipo de incompabilidad entre ellas.
--
Raúl Alexis Betancor Santana
Dimensión Virtual
Había leído algo sobre la G y 12 MIPS ... pero ni warra ... hace tiempo que no
le sigo la pista de por donde van, pero lo que está claro es solo la E
ha "reducido" un poco más el ancho consumido ... el resto son simples
optimizaciones desde el punto de vista de cuantos MIPS se traga.
Umm ... yo concluiría que tu proveedor no tiene ni puta idea. Como ya te
comenté en el otro mail, G729 es G729 aquí y en pekín, la diferencia entre A
y B es exclusivamente el soporte de VAD frames, es IMPOSIBLE que un
dispositivo que soporte G729B no soporte el A, además que la especificaciones
son muy claras al respecto, toda la "familia" de los G729 son compatibles
entre ellos, las diferencias entre unos y otros es simplemente a nivel de
implementación en DSP.
La descripción del codec un parámetro opcional en el SDP, si se fían de
eso ... menudo proveedor.
Esto se contradice con lo que dice Raúl, ¡queremos la réplica ya! XD
Jejeje ...¿tienes ganas a guerra? X)
¡Pues ale!, Elio tiene razón, parcialmente.
Un dispositivo que codifique/decodifique frames G729A acepta frames de G729B y
viceversa.
Con el G729E la cosa difiere, porque el es un G729 a 22Khz sino recuerdo mal.
Del resto ni idea, porque no los he probado, pero por lo que he leído, el C y
el D simplemente son re-implementaciones del AB que consumen menos MIPS de
los DSP.
Te voy a explicar un caso práctico en el que Elio se equivoca ... ;-)
> Bueno, me dice que no son compatibles, lo que no ha aclarado es si no son
> compatibles 100%, porque alguna de las funcionalidades se puedan emplear en
> uno y en el otro no, o que directamente no se hablan entre ellos...
Veamos ..., escenario:
-Asterisk con codec g729 (da igual si el de digium ó el "educativo"), no vale
con tarjeta TCM400
-Teléfono IP con G729AB (ó solo B, pero eso no existe, quien soporta B,
soporta A) y VAD activado.
Llamada a/desde el terminal:
- Asterisk ofrece G729A a 8Khz
- Teléfono ofrece G729B a 8Khz y VAD (en realidad ofrece g729a)
- Se hablan ... y en la consola de asterisk verás a porrilo el famoso mensaje
de "Unable to create CNG frame, please disable VAD or CNG on the other
device" ...
Osea, Asterisk recibe los frames de G729B y los procesa perfectamente (los que
contienen audio), los frames de CNG los ignora como una perra, porque no los
soporta.
Según lo que ha dicho Raúl:
Que morruos ... que no puede ofrecer solo B ... veamos como lo explico de
forma más gráfica ... ummm ..
G729B RTP Flow = G729A Frame | G729A Frame | G729B VAD Begin | VAD T1 | VAD
T2 | G729A Frame .....
¿Lo pillas? ... un SIP device que solo soporte G729A (como Asterisk) IGNORA
los VAD frames.
El "efecto audible" (fácilmente reproducible activado el VAD en cualquier
teléfono IP conectado a Asterisk y que se fuerce a pasar el RTP por
Asterisk), son "silencios bruscos", ya que Asterisk ni forwadea los VAD
frames, ni es capaz de generar CNG frames para la pata "b" de la llamada.
¿Qué más da que sea un teléfono, una centralita o un gateway? Al final
es un SIP UA (que no un proxy ni un B2BUA sólo señalización) así que a
efectos de SIP y de RTP es lo mismo :)
Claro, por eso lo decía, porque ese escenario ha salido en la lista 33.000
veces...
El tema es que no tengo nada a mano que tenga codec G.729B para probar con
un G.729A.
A ver si alguien puede hacer la prueba y salimos de dudas.
Elio, no es por dudar de lo que cuentas, pero sí podríamos llegar a dudar de
lo que nos dice el proveedor, que perfectamente pudo tener el problema en
otro sitio y decir que cambió el codec, salvo que tú comprobaras que
realmente fue el codec lo único que cambió... Ya sabes, habemos gente "pa
tó"... ;-)
Te las doy, que me he peleado yo con cacharros de esos ... ;-) ...
Los que dicen "solo soportar G729B", se refieren a G729+VAD+10ms framing y lo
cachondo es que no lo "anuncian" en el SDP, con lo que teniendo en cuenta que
el g729 de asterisk es solo A y que está a "fuego" a 20ms de framming ...
jamás conseguiras una conversación con ese otro extremo, si ese extremo no
cambia su configuración a una de G729 más "standar"
Saludos
--
Raúl Alexis Betancor Santana
Dimensión Virtual S.L.
Ummm aquí yo discrepo, porque tuve un cliente que quería conectarse a un operador (que no recuerdo cual era) y era porque el operador tenía G729B (que no G729AB) y claro, al enviar el audio, no llegaba nada, daba un error raro y fallaba.
Al hablar con el operador me confirmó que ellos utilizaban nosequemaquina que sólo soporta el G729B (que es igual al G729A pero con VAD) pero se ve que no era compatible.
Le quitamos el VAD en el teléfono, pero seguía sin ir, hasta que al final conseguimos que el operador cambiara a G729AB y entonces sí iba bien. ¿conclusiones? -averigua-
Por eso te comento, ya sabes que muchas veces son unos cachondos…
El tema es a ver si lo podemos probar nosotros.
Lo que sigo sin entender es lo de las especificaciones del teléfono que comentaban, soporta “G.729A (Annex B)”. ¿Eso es G.729 (Annex B), por lo que podría ser G.729B, ó es G.729AB, ó es verdad que G.729A tiene un Anexo B que no se lleva bien con su predecesor…?
Saludos,
Ramses
Captura ese RTP y echale un ojo con el wireshark ... verás donde está el
problema rapidito .. ;-)
--
Raúl Alexis Betancor Santana
Dimensión Virtual S.L.
Si, los fabricantes tienen ganas de complicar la historia ... veamos ..
Tenemos:
G729A
G729AB (el UA es capaz de detectar el framing y los VAD, por lo menos los que
he probado lo hacen bien)
G729B (normalmente conocido como G729A+VAD+framing a 10ms)
G729C (G729AB de menos consumo de MIPS)
G729D (Ígual que el C)
G729E (G729AB a 16 o 22Khz)
Del resto me pierdo, suelen ser implementaciones especiales para radioenlaces
o cosas así.
Saludos
--
Raúl Alexis Betancor Santana
Dimensión Virtual S.L.
También aparece: a=fmtp:4 annexa=yes
Para el 4, osea G723.a
Cosa que Asterisk ignorará como una perra ... XDD
Si lo és ..., es Asterisk quien no lo implementa correctamente ... ;-)
A ver si aprendemos a diferenciar entre lo que es una limitación del
protocolo/codec y lo que es una limitación de las implementaciones chapuceras
que hace Asterisk de todo ... ;-)
Un terminal SIP que soporte solo G729A, acepta el RTP de un G729B, (ya que
toda la familia de G729 permite framing dinámico, y una correcta
implementación de la pila RTP detectará el framing de 10ms que implica el B) y
viceversa.
Cosa bien distinta es que la pila RTP de Asterisk pase olímpicamente de los
framing y que lo deja en manos de los codecs, que en el caso del G729A
disponible para Asterisk no soporta otra cosa que no sea 20ms.
El problema no era incompatibilidad de codecs ... el problema era
incompatibilidad de framings ... que en Asterisk no puede "ajustar".
Como resumen final, entre dos terminales, uno soportando G729A y el otro SOLO
G729B (cosa que como ya hemos comentado, no existe, quien soporta B, soporta A
y AB), la única diferencia audible, debería ser "silencios bruscos" cuando el
UAC-B "se calla" y el UAC-A no oirá NADITA.
> m=audio 18348 RTP/AVP 18 4 8 0 3 104 19
> c=IN IP4 XXXXXXX
> a=rtpmap:18 G729/8000
> a=fmtp:18 annexb=yes
> a=rtpmap:4 G723/8000
> a=fmtp:4 annexa=yes
> a=rtpmap:8 PCMA/8000
> a=rtpmap:0 PCMU/8000
> a=rtpmap:3 GSM/8000
> a=rtpmap:104 X-NSE/8000
> a=fmtp:104 192-194
> a=rtpmap:19 CN/8000
>
>
> Fijaros en el "a=fmtp:18 annexb=yes"
Yo he visto problemas de interoperabilidad debido a que un UA especificaba:
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=yes
y otro:
a=rtpmap:18 G729B/8000
Por supuesto la correcta es la primera. Vi este problema entre EyeBeam
y no sé qué gateway...
¿Es que no quedó claro hace rato que no te puedes fiar ni de tu madre en estas
cosas? ... X)
> P.D.: Seguís sin aclararme lo del G.729A (Annex B)... :-(
Creía haberlo aclarado, cuando dicen eso, se refieren a G729AB
Pasaría exactamente los mismo, funcionaría. De hecho las implementaciones de
la mayoría de los terminales de G729 son muchísimo mejores que la truñada que
hay para Asterisk.
> Si el rtp no pasa por asterisk ¿podrían hablar
> a pesar del distinto tamaño de frames?
Eso depende del fabricante del terminal, es evidente que si son del mismo
fabricante no debería de haber problemas, si son de diferentes
fabricantes .... ya depende de si han implementado todas las características
del codec ó solo las que les "cabían"/"querían"
Saludos