Слот меню 4

Личный кабинет




Автор: Admin
Разместил: admin   Дата: 22-02-2013

     Подняли одному клиенту телефонию на Asterisk. В качестве ОС поставил FreeBSD 8.2. Обновил порты и увидел, что в портах появился Asterisk 10 и даже 11. 11 ставить не рискнул, поставил 10-ку. Клиент работает с телефонией Эр-Телеком, который активно использует кодек g729.

Кучу времени убил на то, чтобы сначала найти, а потом скомпилировать 729 кодек. Далее, всем страждущим посвящается.

     Скачиваем исходники кодека

Код:
mkdir g729
cd g729
fetch [url]http://asterisk.hosting.lv/src/asterisk-g72x-1.1.tar.bz2[/url]
tar -xvf asterisk-g72x-1.1.tar.bz2


     Далее нужны Intel® Integrated Performance Primitives (Intel® IPP) for Linux. Нужно зайти на http://software.intel.com/en-us/articles/non-commercial-software-download/ и там зарегистрироваться и получить ссылку для скачивания. Но не буду мучать, дам прямую ссылку.

Код:
cd ..
mkdir ipp
cd ipp
fetch [url]http://registrationcenter-download.intel.com/akdlm/irc_nas/2855/l_ipp_7.1.1.117_intel64.tgz[/url]
tar -xvf l_ipp_7.1.1.117_intel64.tgz


     Заходим в получившийся каталог l_ipp_7.1.1.117_intel64 и далее в rpms. Там будет 6 rpm. Чтобы их распаковать понадобится порт rpm2cpio

Код:
cd /usr/ports/archivers/rpm2cpio
make install clean
rehash


     Возвращаемся обратно в каталог rpms и распаковываем rpm-ы

Код:
rpm2cpio.pl intel-compilerpro-common-117-13.0-1.noarch.rpm | cpio --extract --make-directories
rpm2cpio.pl intel-ipp-117-7.1-1.x86_64.rpm | cpio --extract --make-directories
rpm2cpio.pl intel-ipp-common-117-7.1-1.noarch.rpm | cpio --extract --make-directories
rpm2cpio.pl intel-ipp-devel-117-7.1-1.x86_64.rpm | cpio --extract --make-directories
rpm2cpio.pl intel-openmp-117-13.0-1.x86_64.rpm | cpio --extract --make-directories
rpm2cpio.pl intel-openmp-devel-117-13.0-1.x86_64.rpm | cpio --extract --make-directories


     У нас должен создастся каталог opt. Заходим opt -> intel -> composer_xe_2013.1.117 -> ipp и запоминаем путь. Далее возвращаемся в каталог с исходниками кодека и даём команду:

Код:
./configure --with-ipp=путь_до_ipp --with-asterisk100 --enable-тип_проца
ца
[/code]

"путь_до_ipp" - понятно. Его запомнили и записали без кавычек
"--enable-тип_проца" - нужно определиться с типом проца. Вот тут я ебался надо сказать долго. То компилятор не находил каких-то файлов, то писал, что выбранный тип проца не поддерживает 64-х битные инструкции. В общем, всё собралось только когда я указал тип nocona. У меня сервер стоял внутри бесплатного гипервизора VmWare ESXi 5.1. Виртуалке было выделено 3 ядра от проца. Система в виртуалке определяет проц так:

[code]
CPU: Intel(R) Xeon(R) CPU E5430 @ 2.66GHz (2665.73-MHz K8-class CPU)
Origin = "GenuineIntel" Id = 0x10676 Family = 6 Model = 17 Stepping = 6
Features=0xfa3fbff
Features2=0x80082201>
AMD Features=0x20100800
AMD Features2=0x1
TSC: P-state invariant
[/code]

     Надо будет как-нибудь проверить на других процах. С другой стороны, на сколько я понял весь процесс, мы скачивали IPP специально для того, чтобы не привязываться к процу на хосте. В общем, это пока осталось непонятым.

     Возможные варианты проца содержатся в configure в исходниках кодека. Варианты:

barcelona
opteron_sse3
opteron
athlon
geode
avx
penryn
core2
atom
nocona
pentium4
pentiumm
pentium3
pentium2
pentium

     Выбрав тип проца, вы должны написать в командной строке --enable_pentium4 или --enable_nocona.

     После этого компилируем

[code]
gmake
[/code]

     Должна появиться папочка ./libs. Там лежат заветные кодеки (кстати, там же собирается и 723 кодек).

     Заходим в папку и копируем файлы кодеков в директорию с модулями asterisk

[code]
cp codec_g723.so /usr/local/lib/asterisk/modules/codec_g723.so
cp codec_g729.so /usr/local/lib/asterisk/modules/codec_g729.so
[/code]

     После этого везде советуют зайти на CLI астериска и загрузить модуль. Но у меня астериск почему-то ругался, что не может найти какой-то там буфер. В собщем, я перезагрузил астериск и он увидел оба кодека.


Комментарии: (0)   Рейтинг: