Страница 1 из 1

Запрет транскодинга между g.722 и ulaw-alaw

Добавлено: 25 дек 2014, 20:55
gaspaarr
Внутренние телефоны поддерживают 722 кодек (и он у них в приоритетах):

m=audio 16082 RTP/AVP 9 8 2 18 0 101
a=rtpmap:9 G722/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:2 G726-32/8000
a=rtpmap:18 G729/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000

Если в * ставлю такой приоритет:

disallow=all
allow=ulaw
allow=alaw
allow=g722

Соединения между внутренними ext происходят в ulaw, наружу уходят тоже в ulaw (внешние транки поддерживают только aulaw и g729), т.о. 722 никогда не используется.

Если меняю приоритет на
disallow=all
allow=g722
allow=ulaw
allow=alaw

Соединения между внутренними ext происходят в 722, но так же начинается транскодинг между g722 и ulaw, в т.ч. при звонках на feature codes и на внешние транки. Незнаю с чем связано, но при включении громкой связи на телефонах (panasonic TPA50) качество звука падает, как будто динамик не справляется, при обычной (не громкой) связи все нормально, видимо издержки транскодинга. Плюс возрастает загрузка процессора.

Reinvite запрещен, т.к. * пишет звонки.

Можно ли как-то штатными средствами разрулить эту ситуацию? Т.е. чтобы g722 использовался только тогда, когда обе стороны его поддерживают? Или если звонок начался в g722, а поток проходит через * и второй peer не поддерживает g722, первый peer переходил на поддерживаемый обоими peer'ами кодек, вместо транскодинга в центре?

Re: Запрет транскодинга между g.722 и ulaw-alaw

Добавлено: 25 дек 2014, 21:24
awsswa
а не проще всё в alaw сделать ? и запретить остальные кодаки ?

Re: Запрет транскодинга между g.722 и ulaw-alaw

Добавлено: 25 дек 2014, 22:26
gosha
> Плюс возрастает загрузка процессора.

722 он совсем не прожорливый. А так почитать про SIP_CODEC_INBOUND & SIP_CODEC_OUTBOUND.

Re: Запрет транскодинга между g.722 и ulaw-alaw

Добавлено: 25 дек 2014, 22:27
ded
Оставьте для внутренних номеров приоритет
disallow=all
allow=g722
allow=ulaw
allow=alaw
а для транка в мир
allow=ulaw
allow=alaw

Re: Запрет транскодинга между g.722 и ulaw-alaw

Добавлено: 26 дек 2014, 16:24
gaspaarr
Тут даже не в загрузке процессора дело (действительно не критично), а в поганости звука, очень по ушам бъет компрессия, если в 711 ее как бы не чувствуется (глухо и глухо, бубнит), то в 722 после расширения полосы все срезанные частоты (особенно верх) начинают на уши давить...

От 722 не хотелось бы отказываться, при внутренних звонках качество очень хорошее.

На транке в мир и так стоит disallow=all, allow=alaw,ulaw но при этом все равно транскодинг происходит.
Притом при входящих на оба плеча alaw, а при исходящих 722<->alaw получаю...
Не особо силен в sip сигнализации, но ведь при факсах железки могут договориться и перейти на T38, с голосом так нельзя поступить? Т.е. что-то типа реинвайта, но не напрямую между железками, а так же через * но с изменением кодека?

Re: Запрет транскодинга между g.722 и ulaw-alaw

Добавлено: 26 дек 2014, 16:43
ded
Unfortanly asterisk will select codec on first device (device A)
Reason: codec choosed on invite from device A, after that it check dialplan and call device B.
There is patch for asterisk which solve this issue(do change of codec when get B call), but that patch is not in default asterisk tree
http://www.b2bua.org/wiki/AsteriskCodecNegotiationPatch
http://stackoverflow.com/questions/2382 ... preference

Re: Запрет транскодинга между g.722 и ulaw-alaw

Добавлено: 26 дек 2014, 18:23
gaspaarr
Жаль для 13 версии нет...

Current versions

Asterisk 1.4.26.2 patch
Asterisk Addons 1.4.6 patch
Asterisk 1.2.26.1 - 1.2.32 patch

Re: Запрет транскодинга между g.722 и ulaw-alaw

Добавлено: 11 сен 2020, 09:21
ЯковС
* 11, при соединении между внутренними абонентами с g722 качество аудио не g722, как я понимаю за счет транскодинга. А как вам удалось избежать транскодинга между внутренними абонентами?

Код: Выделить всё

 NativeFormats: alaw
   WriteFormat: g722
    ReadFormat: g722
WriteTranscode: Yes (g722)->(slin)->(alaw)
 ReadTranscode: Yes (alaw)->(slin)->(g722)

Re: Запрет транскодинга между g.722 и ulaw-alaw

Добавлено: 14 сен 2020, 23:39
Zavr2008
Ничего не мешает устанавливать правильно SIP_CODEC_OUTBOUND в явном виде в зависимости от нужного маршрута.

Например :

Код: Выделить всё

exten => _XXX.,1,Noop()
  same=>n,Set(SIP_CODEC_OUTBOUND=g722)
  same=>n,Dial(SIP/${EXTEN})

exten => _X.,1,Noop()
  same=>n,Set(SIP_CODEC_OUTBOUND=alaw)
  same=>n,Dial(SIP/${EXTEN}@some-provider)

Стоит включить отладку и посмотреть что в обоих SDP в инвайте и в ответе на него.

При этом я бы лично у ВСЕХ оставил бы

Код: Выделить всё

disallow=all
allow=g722
allow=ulaw
allow=alaw
Ну и версия 11 уже аут давно, возможно настало время обновиться - уже в 13-й версии совсем иначе потроха бриджей внутри.