AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Танцы с бубном: сборка кодека G729 для FreeBSD :)

Библиотека 15 сообщений -
#1

сначала ставим spandsp

./configure --prefix=/usr
make
make install

копируем app_rxfax.c app_txfax.c в /usr/src/asterisk-1.4.х/apps
в /usr/src/asterisk-1.4.х/ правим: (добавляем строчку только ту, что с +. Остальные строки написаны для того, чтобы было понятно где это!!!)

Код:
build_tools/menuselect-deps.in

RADIUS=@PBX_RADIUS@
+SPANDSP=@PBX_SPANDSP@
SPEEX=@PBX_SPEEX@
SQLITE=@PBX_SQLITE@

configure.ac

AST_EXT_LIB_SETUP([RADIUS], [Radius Client], [radius])
+AST_EXT_LIB_SETUP([SPANDSP], [spandsp Library], [spandsp])
AST_EXT_LIB_SETUP([SPEEX], [Speex], [speex])



configure.ac


AST_EXT_LIB_CHECK([RADIUS], [radiusclient-ng], [rc_read_config], [radiusclient-ng.h])

+AST_EXT_LIB_CHECK([SPANDSP], [spandsp], [fax_init], [spandsp.h], [-ltiff])
+
AST_EXT_LIB_CHECK([SPEEX], [speex], [speex_encode], [speex/speex.h], [-lm])

AST_EXT_LIB_CHECK([SQLITE], [sqlite], [sqlite_exec], [sqlite.h])



makeopts.in


RADIUS_INCLUDE=@RADIUS_INCLUDE@
RADIUS_LIB=@RADIUS_LIB@

+SPANDSP_INCLUDE=@SPANDSP_INCLUDE@
+SPANDSP_LIB=@SPANDSP_LIB@
+
SPEEX_INCLUDE=@SPEEX_INCLUDE@
SPEEX_LIB=@SPEEX_LIB


далее в исходниках астериска:
Код:
./bootstrap.sh
./configure
make menuselect (select the rxfax and txfax apps), then save (use "x" to exit)
make
make install


если при компиляции возникает подобная ерунда:
Код:
[CC] app_rxfax.c -> app_rxfax.o
In file included from /usr/src/asterisk-new/asterisk-1.4.2/include/asterisk/translate.h:35,
from app_rxfax.c:38:
/usr/src/asterisk-new/asterisk-1.4.2/include/asterisk/plc.h:127: error: conflicting types for ‘plc_state_t’
/usr/local/include/spandsp/plc.h:128: error: previous declaration of ‘plc_state_t’ was here
/usr/src/asterisk-new/asterisk-1.4.2/include/asterisk/plc.h:140: error: conflicting types for ‘plc_rx’
/usr/local/include/spandsp/plc.h:142: error: previous declaration of ‘plc_rx’ was here
/usr/src/asterisk-new/asterisk-1.4.2/include/asterisk/plc.h:148: error: conflicting types for ‘plc_fillin’
/usr/local/include/spandsp/plc.h:150: error: previous declaration of ‘plc_fillin’ was here
/usr/src/asterisk-new/asterisk-1.4.2/include/asterisk/plc.h:154: error: conflicting types for ‘plc_init’
/usr/local/include/spandsp/plc.h:156: error: previous declaration of ‘plc_init’ was here
make[1]: *** [app_rxfax.o] Error 1
make: *** [apps] Error 2


то мы делаем следующие телодвижения:
Код:
cp -a /usr/local/include/spandsp/plc.h /usr/src/asterisk-1.4.x/include/asterisk/


и всё должно нормально откомпилиться



Код:
CLI> core show application RxFax
#2

по последним данным, приведённый выше метод не работает, если стоит spandsp 4, так что юзайте третий
#3

Описание очень хорошее, но у меня с asterisk-1.4.10, после всего проделаного в menuconfig не появились пункты app_rxfax и app_txfax :(
Не подскажете, что можно проверить или дописать чтобы сработало?
#4

у меня все сработало странно Shocked
_________________
Ubuntu-Server 6.06 /Asterisk 1.4.12/app_fax /spandsp4pre9
Digium TDM400/NateksNetworks VC115-2/Polycom IP301 SP /Snom 360
#5

cache, расскажи, как делал. Я сегодня попробую на десятый прикрутить
#6

Поправка на местности, оказалось что у меня оно в списке app_* не появилось, но тем не менее скомпилилось (внимательно следил за компиляцией) :)))
Буду пробовать конфигурить.
#7

noize писал(а):
cache, расскажи, как делал. Я сегодня попробую на десятый прикрутить


да все стандартно


а восче я здалал так

удалили весь spandsp3
cd spandsp3_src
make unintsall
ldconfig

потом скомпилил и поставил занового
cd spandsp3_src
./configure
make
make install
ldconfig

далше по товему рукаводству патчил астериск
и собрал и все

Added after 3 minutes:

errno писал(а):
Поправка на местности, оказалось что у меня оно в списке app_* не появилось, но тем не менее скомпилилось (внимательно следил за компиляцией) BigGrin3)
Буду пробовать конфигурить.

у меня также было и астериск падал при вызове их Mad

_________________
Ubuntu-Server 6.06 /Asterisk 1.4.12/app_fax /spandsp4pre9
Digium TDM400/NateksNetworks VC115-2/Polycom IP301 SP /Snom 360
#8

offtop: если честно, то мануал не мой. Его написал коллега с моей бывшей работы. Я его дополнил немного и опубликовал тут.
#9

мануал придумал я Smile на самом деле, это всё видно из патча к 1.4.х, который почему-то не работает. По крайненй мере у меня Smile

Итак, хочу кое-что заметить.
1) Когда собираете spandsp, укажите директорию сборки /usr (--prefix=/usr). Это сделано для того, чтобы либы писались в /usr/include
у многих в ld config не прописан путь /usr/local, поэтому простая сборка типа "./configure" не даст результатов (т.е. configure скрипт не увидит spandsp библиотек)

2) Если вы собрали spandsp, поправили файлы в директории с сорцами asteriskа, а app_rxfax и app_txfax так и не появились, то делаем так:
Код:
c0rn asterisk-1.4.10.1 # ./configure | grep spandsp
checking for fax_init in -lspandsp... yes
checking spandsp.h usability... no
checking spandsp.h presence... no
checking for spandsp.h... no

из чего видно, что астериск не может найти spandsp.h
Я не знаю, почему в сборке spandsp-20070813 этот header не ставится, но я потом собрал spandsp-0.0.4pre4 и header появился!
Код:
c0rn asterisk-1.4.10.1 # whereis spandsp
spandsp: /usr/src/spandsp-0.0.4/spandsp.spec /usr/src/spandsp-0.0.4/spandsp /usr/include/spandsp [b]/usr/include/spandsp.h[/b] /usr/share/spandsp

после чего повторный configure asteriska мне выдал:
Код:
checking for fax_init in -lspandsp... yes
checking spandsp.h usability... yes
checking spandsp.h presence... yes
checking for spandsp.h... yes

И соответственно в menuselect появились app_rxfax и app_txfax

Я правда один раз сталкивался с проблемой, когда при приёме факса астериск вылетает (и было это на 1.2). К сожалению, я тогда не проверил на что ссылается app_rxfax и насколько удовлетворены его зависимости. Но в последнее время, всё ок.

Как видите, на 1.4.10.1 RxFax тоже собирается.
#10

Зачёт! Smile
_________________
Успехов!
#11

Для начала. Что нужно, для того, чтобы собрать g729 кодек для FreeBSD.

1. Собственно сам asterisk.
2. Эмуляция линукса для этапа выковыривания rpm из intel библиотеки l_ipp_ia32_itanium_p_ ....
и, наверно, она нужна для работы самого кодека (не проверял).
3. rpm из портов. (надеюсь как его поставить из портов объяснять не надо)
4. linux-base из портов, чтобы запустить install из _ipp_ia32_itanium_p_4_1_2.tar


Подготовка.

1. Создаем учетную запись asterisk со своей home директорией.
Создаем поддиректорию src, куда будем складывать исходники, для порядка...
Создаем поддиректорию tmp, в ней будут валяться всяческие промежуточные файлы.
Предполагаем, что у нас asterisk устанавливается в директорию /home/asterisk
Тогда его .h файлы, после его установки находятся в директории /home/asterisk/include

2. Меняем себя на пользователя root:
#su
и идем качать в src нужные нам исходники:
cd /home/asterisk/src
(предполагается, что мы уже собрали и установили сам asterisk)

3. Качаем:
wget ftp://download.intel.com/software/produc ... _4_1_2.tar
Распаковываем:
tar xvzf l_ipp_ia32_itanium_p_4_1_2.tar
После этого этот архив можно перенести в любое другое темное прохладное место, с глаз подальше.

4. Получаем .lic файл с интела и кладем его в ту директорию, которая у нас получалась после распаковки файла l_ipp_ia32_itanium_p_4_1_2.tar


5. Теперь нам нужен l_ipp-sample-speech-coding_p_4.1.008.tgz
intel зачем-то убрал его с ftp сайта, найти его можно у меня:
http://voip.rus.net/tiki-download_file.php?fileId=18
Стоит отметить, в новых версиях все поменялось и патчик на них не ляжет Sad.

6. Распаковываем файлик l_ipp-sample-speech-coding_p_4.1.008.tgz в директории /home/asterisk/src

7. В получившуюся поддиректорию ipp_sample кладем патч ipp_svn8.diff, который качаем отсюда:
http://www.readytechnology.co.uk/open/ip ... -svn8.diff

8. Идем в эту директорию и накладываем патч:
patch -p0
#12

Respect
#13

С 2007 года многое изменилось. Нет ли инструкции поновее?
#14

[offtopic]
А мне так ни кто и не сказал работает ли теперь dahdi_dummy в FreeBSD из последнего rev транка или нет.
Все как в воду канули...
А то человеки из digiuma интересуются..
[/offtopic]

_________________
ys
http://voip.rus.net/
#15

[offtopic]
А мне так ни кто и не сказал работает ли теперь dahdi_dummy в FreeBSD из последнего rev транка или нет.
[/offtopic]
У меня заработала конференция на *-1.6-свн, об этом я сообщал на другом форуме, где обсуждался этот вопрос.
http://asterisk-support.ru/forum/topics/4128/?page=2

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

PS. *-1.6 с портов конференция не работает.
WARNING[1264]: app_meetme.c:1964 conf_run: Unable to set flags: Inappropriate ioctl for device