2016년 10월 17일 월요일

PJSIP 설치

컴파일

2.      컴파일 환경 설정
1) environment-setup-cortexa5hf-vfp-poky-linux-gnueabi
에서 LD = $CC로 수정
2) source /home/albert/Workspace2/VoIP/yocto_gcc/environment-setup-cortexa5hf-vfp-poky-linux-gnueabi (
sama5d31ek_build 문서참조)
3) make distclean &&  make clean
4) ./configure --host=arm-linux
5) pjlib/include/pj/config_site.h
에서 PJ_DEBUG 1, PJ_LOG_MAX_LEVEL 4 로 수정
6) make dep && make

3.      Alsa 라이브러리 설치
rootfs에 라이브러리가 없을 경우 필요한 작업이다.
1) cp –r poky/build-atmel/tmp/sysroots/sama5d3xek/usr/include/alsa  ~/yocto_sdk/sysroots/cortexa5hf-vfp-poky-linux-gnueabi/usr/include;
2) cp poky/build-atmel/tmp /sysroots/sama5d3xek/usr/lib/libasound.so*  ~/yocto_sdk/sysroots/cortexa5hf-vfp-poky-linux-gnueabi/usr/lib

4.      시스템 설정
A.     소켓버퍼 최대 사이즈를 늘린다. 아래처럼 명령을 이용하거나 etc/sysctl.conf에 설정한다. (“net.core.rmem_max=26214400” 형식으로 설정)
                                   i.         $ sysctl -w net.core.rmem_max=26214400
$ sysctl -w net.core.wmem_max=26214400

5.      테스트
pjlib-test: PJLIB 기능테스트, pjlib/bin/pjlib-test-*
pjsip-test: PJSIP
SIP 기능테스트, pjsip/bin/pjsip-test*
pjsystest:
오디오 기능테스트, pjsip-apps/bin/pjsystest-*

 pjsua application on pjsip-apps/bin directory. PJSUA manual can be found in http://www.pjsip.org/pjsua.htm page.

컴파일시 발생 문제해결

문제:
../src/pjmedia-audiodev/alsa_dev.c:37:28: fatal error: alsa/asoundlib.h: No such file or directory
해결: alsa 라이브러리 헤더 추가
cp –r poky/build-atmel/tmp/sysroots/sama5d3xek/usr/include/alsa  ~/yocto_sdk/sysroots/cortexa5hf-vfp-poky-linux-gnueabi/usr/include

문제:
/src/pjmedia-audiodev/alsa_dev.c:317: undefined reference to `snd_lib_error_set_handler'
해결링크옵션에 alsa 라이브러리 추가
cp -l r poky/build-atmel/tmp /sysroots/sama5d3xek/usr/lib/libasound.so*  ~/yocto_sdk/sysroots/cortexa5hf-vfp-poky-linux-gnueabi/usr/lib/

문제:
sphinx-build -b html -d _build/doctrees   . _build/html
make: sphinx-build: Command not found
make: *** [html] Error 127




해결: apt-file 을 설치해서 sphix-build가 어떤 패키지에 있는지 검색 후 설치한다.
1.      sudo apt-get install apt-file
2.      apt-file search sphinx-build
3.      sudo apt-get install python-sphinx

문제: 컴파일 후 타겟에서 실행하면 실행안됨
root@sama5d3xek:/mnt# ls -al pjsip-apps-bin/pjsua-arm-unknown-linux-gnu
-rwxrwxr-x 1 1000 1000 6015936 May 18  2016 pjsip-apps-bin/pjsua-arm-unknown-linux-gnu
root@sama5d3xek:/mnt# ./pjsip-apps-bin/pjsua-arm-unknown-linux-gnu
-sh: ./pjsip-apps-bin/pjsua-arm-unknown-linux-gnu: No such file or directory
해결: source /yocto_sdk/environment-setup-cortexa5hf-vfp-poky-linux-gnueabi 에서
LD = $CC 로 수정한다. 추가로 필요한 링커 옵션은 –Wl 으로 넘긴다.
arm-poky-linux-gnueabi-ld 로 링킹할 경우 스텁코드링킹이 정상적으로 바인딩되지 않는 것 같다.

설정파일

예시1(using-opensip proxy)

--id sip:atmel@192.168.1.220
--registrar sip:192.168.1.220
--proxy sip:192.168.1.220;lr
--realm *
--username atmel
--password atmel
--play-file TheCubanMissileCrisis_8K.wav
--rec-file rec.wav
--add-buddy sip:cisco@192.168.1.220
--add-buddy sip:windows@192.168.1.220
--add-buddy sip:android@192.168.1.220
--auto-answer 200
--log-file log_file.txt
--log-level 4
--app-log-level 4
--ec-tail=400
--ec-opt=1


기능테스트

pjlib-test

- 모든 테스트 성공.

loopbask mic to speaker

 - pjsua: >>>> cc 0 0
 - 노이즈 없이 깨끗하게 잘 들림.

pjsip-test

x86테스트
- x86에 같은버젼의 alsa pjsip를 설치후 pjsip-test를 돌리면 모든 테스트 성공.(26분소요)
10:20:18 ./pjsip/bin/pjsip-test-x86_64-unknown-linux-gnu
(….)
10:46:55.616 Peak memory size=4154504685 MB
10:46:55.621 10:46:55.621 Stack max usage: 0, deepest: :0
10:46:55.621 Looks like everything is okay!..

Running tsx_uas_test(loop-dgram) 실패 : test10
문제:
tsx_uas_tes 10 timeout 실패
해결: 소켓 버퍼의 최대사이즈를 늘린다.
- receive buffer = rmem, send buffer = wmem
$ sysctl -w net.core.rmem_max=26214400
$ sysctl -w net.core.wmem_max=26214400

pjsua

전화걸기:
./pjsua sip:192.168.1.64

전화받기:
>>> a
>>> 200

자동응답:
$ pjsua --play-file /path/PROMPT.WAV --auto-answer 200 --auto-play --auto-loop

RTP 송수신 퍼포먼스 테스트

pc-server: /pjsip-apps/bin/samples/…/streamutil --send-recv --play-file=test.wav --remote=192.168.1.10:4000
target-client: /pjsip-apps/bin/samples/…/streamutil --send-recv --play-file=test.wav --remote=192.168.1.212:4000



댓글 없음:

댓글 쓰기