PJSip 1.6を iPhone3.2SDKでビルド

「PJSip 1.6を iPhone3.2SDKでビルド」の編集履歴(バックアップ)一覧はこちら

PJSip 1.6を iPhone3.2SDKでビルド」(2010/06/10 (木) 21:50:21) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

**macのターミナルを起動しsvnでソースをゲット >cd ~ >svn checkout http://svn.pjsip.org/repos/pjproject/trunk pjproject >cd pjproject **aconfigure.acを編集 >vi aconfigure.ac 以下のような内容に+が追加-が削除の行。arm-apple-darwin*)が目印。 ac_pjmedia_snd=iphoneを追加する。(PJSip1.5であればarm-apple-darwin*)から存在していない。) case $target in arm-apple-darwin*) LIBS=”$LIBS -framework CoreAudio -framework CoreFoundation -framework AudioToolbox” + ac_pjmedia_snd=iphone AC_MSG_RESULT([Checking sound device backend... AudioQueue]) ;; *darwin*) LIBS="$LIBS -framework CoreAudio -framework CoreServices -framework AudioUnit -framework AudioToolbox" **build/rules.makを編集 >vi build/rules.mak $(RANLIB)ではなくlibtoolが正解 $(LIB): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) if test ! -d $(LIBDIR); then $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)),$(HOST_MKDIR); fi -$(AR) $(LIB) $(OBJS) -$(RANLIB) $(LIB) +libtool -static -o $(LIB) $(OBJS) **pjlib/include/pj/config_site.hを作成 >vi pjlib/include/pj/config_site.h #undef PJ_HAS_FLOATING_POINT #define PJ_HAS_FLOATING_POINT 1 /* SRTP has not been ported to iPhone yet */ #undef PJMEDIA_HAS_SRTP #define PJMEDIA_HAS_SRTP 0 /* Disable some codecs for now */ #define PJMEDIA_HAS_GSM_CODEC 1 #define PJMEDIA_HAS_L16_CODEC 0 #define PJMEDIA_HAS_ILBC_CODEC 0 #define PJMEDIA_HAS_SPEEX_CODEC 0 #define PJMEDIA_HAS_G722_CODEC 0 #define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO 0 **pjmedia/build/os-auto.mak.inを編集 >vi pjmedia/build/os-auto.mak.in # - ds: Win32 DirectSound (dsound.c) +# - iphone: iPhone AudioQueue (iphonesound.c) # - null: Null sound device (nullsound.c) さらに下の export CFLAGS += -DPJMEDIA_AUDIO_DEV_HAS_WMME=0 endif +# +# iPod/iPhone +# +ifeq ($(AC_PJMEDIA_SND),iphone) +export CFLAGS += -DPJMEDIA_AUDIO_LEG_HAS_AUDIOQUEUE=1 -DPJMEDIA_AUDIO_DEV_HAS_LEGACY_DEVICE=1 +endif + # # Null sound device を変更 **Makefileを編集 >vi Makefile pj-sip-appsを削除 -DIRS = pjlib pjlib-util pjnath third_party pjmedia pjsip pjsip-apps +DIRS = pjlib pjlib-util pjnath third_party pjmedia pjsip **pjmedia/build/Makefileを編集 >vi pjmedia/build/Makefile sound_legacy.oをiphonesound.oに変えるだけです export PJMEDIA_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ alaw_ulaw.o alaw_ulaw_table.o bidirectional.o clock_thread.o codec.o \ conference.o conf_switch.o delaybuf.o echo_common.o \ echo_port.o echo_suppress.o endpoint.o errno.o \ g711.o jbuf.o master_port.o mem_capture.o mem_player.o \ null_port.o plc_common.o port.o splitcomb.o \ resample_resample.o resample_libsamplerate.o \ resample_port.o rtcp.o rtcp_xr.o rtp.o \ sdp.o sdp_cmp.o sdp_neg.o session.o silencedet.o \ - sound_legacy.o sound_port.o stereo_port.o \ + iphonesound.o sound_port.o stereo_port.o \ stream.o tonegen.o transport_adapter_sample.o \ transport_ice.o transport_loop.o \ transport_srtp.o transport_udp.o \ wav_player.o wav_playlist.o wav_writer.o wave.o \ wsola.o さらに下の # $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. # -TARGETS := pjmedia pjmedia-audiodev pjmedia-codec pjsdp pjmedia-test +TARGETS := pjmedia pjmedia-audiodev pjmedia-codec pjsdp all: $(TARGETS) **pjmedia/src/pjmedia-audiodev/legacy_dev.cを編集 >vi pjmedia/src/pjmedia-audiodev/legacy_dev.c return status; } *p_aud_strm = &strm->base; + (*p_aud_strm)->op = &stream_op; return PJ_SUCCESS; } **pjmedia/src/pjmedia-audiodev/audiodev.cを編集 >vi pjmedia/src/pjmedia-audiodev/audiodev.c MAX_DRIVERS のdefineが目印 +#if PJMEDIA_AUDIO_DEV_HAS_LEGACY_DEVICE +pjmedia_aud_dev_factory* pjmedia_legacy_factory(pj_pool_factory *pf); +#endif + #define MAX_DRIVERS 16 #define MAX_DEVS 64 さらに下の「Initialize each factory and build the device ID list」が目印 +#if PJMEDIA_AUDIO_DEV_HAS_LEGACY_DEVICE + aud_subsys.drv[aud_subsys.drv_cnt++].create = &pjmedia_legacy_factory; +#endif /* Initialize each factory and build the device ID list */ for (i=0; i<aud_subsys.drv_cnt; ++i) { **iphonesound.cをDL Download from http://siphon.googlecode.com/files/iphonesound-20091226.c そして pjmedia/src/pjmedia/iphonesound.c に移動&リネーム **環境変数の設定 >export DEV=/Developer/Platforms/iPhoneOS.platform/Developer >export SDK=${DEV}/SDKs/iPhoneOS3.2.sdk >export PATH=${DEV}/usr/bin:${PATH} >export CFLAGS="-O2 -arch armv6 -isysroot ${SDK}" >export LDFLAGS="-O2 -arch armv6 -isysroot ${SDK}" >export CPP="${DEV}/usr/bin/cpp" **コンパイルのためのシンボリックリンクを作成 >cd ${DEV}/usr/bin >ln -s arm-apple-darwin9-gcc-4.0.1 arm-apple-darwin9-gcc >ln -s arm-apple-darwin9-g++-4.0.1 arm-apple-darwin9-g++ >ln -s ranlib arm-apple-darwin9-ranlib >cd ~/pjproject **設定ファイル生成 >autoconf aconfigure.ac > aconfigure **コンパイル開始 数分待ちましょう ./aconfigure --host=arm-apple-darwin9 --disable-speex-aec \ --disable-speex-codec --disable-l16-codec --disable-g722-codec \ --disable-ilbc-codec --disable-ssl make dep && make clean && make 以上、お疲れ様でした!(&counter()) 本家をみても上手くビルド出来なかったので http://www.piemontewireless.net/PJSip155_and_iPhoneSDK312#How_compile_PJSip_1.x_.28svn_trunk_or_1.5.5.29_with_iPhone_SDK_3.1.2 を参考にさせてもらいました
**macのターミナルを起動しsvnでソースをゲット >cd ~ >svn checkout http://svn.pjsip.org/repos/pjproject/trunk pjproject >cd pjproject **aconfigure.acを編集 >vi aconfigure.ac 以下のような内容に+が追加-が削除の行。arm-apple-darwin*)が目印。 ac_pjmedia_snd=iphoneを追加する。(PJSip1.5であればarm-apple-darwin*)から存在していない。) case $target in arm-apple-darwin*) LIBS=”$LIBS -framework CoreAudio -framework CoreFoundation -framework AudioToolbox” + ac_pjmedia_snd=iphone AC_MSG_RESULT([Checking sound device backend... AudioQueue]) ;; *darwin*) LIBS="$LIBS -framework CoreAudio -framework CoreServices -framework AudioUnit -framework AudioToolbox" **build/rules.makを編集 >vi build/rules.mak $(RANLIB)ではなくlibtoolが正解 $(LIB): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP) if test ! -d $(LIBDIR); then $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)),$(HOST_MKDIR); fi -$(AR) $(LIB) $(OBJS) -$(RANLIB) $(LIB) +libtool -static -o $(LIB) $(OBJS) **pjlib/include/pj/config_site.hを作成 >vi pjlib/include/pj/config_site.h #undef PJ_HAS_FLOATING_POINT #define PJ_HAS_FLOATING_POINT 1 /* SRTP has not been ported to iPhone yet */ #undef PJMEDIA_HAS_SRTP #define PJMEDIA_HAS_SRTP 0 /* Disable some codecs for now */ #define PJMEDIA_HAS_GSM_CODEC 1 #define PJMEDIA_HAS_L16_CODEC 0 #define PJMEDIA_HAS_ILBC_CODEC 0 #define PJMEDIA_HAS_SPEEX_CODEC 0 #define PJMEDIA_HAS_G722_CODEC 0 #define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO 0 **pjmedia/build/os-auto.mak.inを編集 >vi pjmedia/build/os-auto.mak.in # - ds: Win32 DirectSound (dsound.c) +# - iphone: iPhone AudioQueue (iphonesound.c) # - null: Null sound device (nullsound.c) さらに下の export CFLAGS += -DPJMEDIA_AUDIO_DEV_HAS_WMME=0 endif +# +# iPod/iPhone +# +ifeq ($(AC_PJMEDIA_SND),iphone) +export CFLAGS += -DPJMEDIA_AUDIO_LEG_HAS_AUDIOQUEUE=1 -DPJMEDIA_AUDIO_DEV_HAS_LEGACY_DEVICE=1 +endif + # # Null sound device を変更 **Makefileを編集 >vi Makefile pj-sip-appsを削除 -DIRS = pjlib pjlib-util pjnath third_party pjmedia pjsip pjsip-apps +DIRS = pjlib pjlib-util pjnath third_party pjmedia pjsip **pjmedia/build/Makefileを編集 >vi pjmedia/build/Makefile sound_legacy.oをiphonesound.oに変えるだけです export PJMEDIA_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ alaw_ulaw.o alaw_ulaw_table.o bidirectional.o clock_thread.o codec.o \ conference.o conf_switch.o delaybuf.o echo_common.o \ echo_port.o echo_suppress.o endpoint.o errno.o \ g711.o jbuf.o master_port.o mem_capture.o mem_player.o \ null_port.o plc_common.o port.o splitcomb.o \ resample_resample.o resample_libsamplerate.o \ resample_port.o rtcp.o rtcp_xr.o rtp.o \ sdp.o sdp_cmp.o sdp_neg.o session.o silencedet.o \ - sound_legacy.o sound_port.o stereo_port.o \ + iphonesound.o sound_port.o stereo_port.o \ stream.o tonegen.o transport_adapter_sample.o \ transport_ice.o transport_loop.o \ transport_srtp.o transport_udp.o \ wav_player.o wav_playlist.o wav_writer.o wave.o \ wsola.o さらに下の # $(TARGET) is defined in os-$(OS_NAME).mak file in current directory. # -TARGETS := pjmedia pjmedia-audiodev pjmedia-codec pjsdp pjmedia-test +TARGETS := pjmedia pjmedia-audiodev pjmedia-codec pjsdp all: $(TARGETS) **pjmedia/src/pjmedia-audiodev/legacy_dev.cを編集 >vi pjmedia/src/pjmedia-audiodev/legacy_dev.c return status; } *p_aud_strm = &strm->base; + (*p_aud_strm)->op = &stream_op; return PJ_SUCCESS; } **pjmedia/src/pjmedia-audiodev/audiodev.cを編集 >vi pjmedia/src/pjmedia-audiodev/audiodev.c MAX_DRIVERS のdefineが目印 +#if PJMEDIA_AUDIO_DEV_HAS_LEGACY_DEVICE +pjmedia_aud_dev_factory* pjmedia_legacy_factory(pj_pool_factory *pf); +#endif + #define MAX_DRIVERS 16 #define MAX_DEVS 64 さらに下の「Initialize each factory and build the device ID list」が目印 +#if PJMEDIA_AUDIO_DEV_HAS_LEGACY_DEVICE + aud_subsys.drv[aud_subsys.drv_cnt++].create = &pjmedia_legacy_factory; +#endif /* Initialize each factory and build the device ID list */ for (i=0; i<aud_subsys.drv_cnt; ++i) { **iphonesound.cをDL Download from http://siphon.googlecode.com/files/iphonesound-20091226.c そして pjmedia/src/pjmedia/iphonesound.c に移動&リネーム **環境変数の設定 >export DEV=/Developer/Platforms/iPhoneOS.platform/Developer >export SDK=${DEV}/SDKs/iPhoneOS3.2.sdk >export PATH=${DEV}/usr/bin:${PATH} >export CFLAGS="-O2 -arch armv6 -isysroot ${SDK}" >export LDFLAGS="-O2 -arch armv6 -isysroot ${SDK}" >export CPP="${DEV}/usr/bin/cpp" **コンパイルのためのシンボリックリンクを作成 >cd ${DEV}/usr/bin >ln -s arm-apple-darwin9-gcc-4.0.1 arm-apple-darwin9-gcc >ln -s arm-apple-darwin9-g++-4.0.1 arm-apple-darwin9-g++ >ln -s ranlib arm-apple-darwin9-ranlib >cd ~/pjproject **設定ファイル生成 >autoconf aconfigure.ac > aconfigure **コンパイル開始 数分待ちましょう ./aconfigure --host=arm-apple-darwin9 --disable-speex-aec \ --disable-speex-codec --disable-l16-codec --disable-g722-codec \ --disable-ilbc-codec --disable-ssl make dep && make clean && make 以上、お疲れ様でした!(&counter()) 本家をみても上手くビルド出来なかったので http://www.piemontewireless.net/PJSip155_and_iPhoneSDK312#How_compile_PJSip_1.x_.28svn_trunk_or_1.5.5.29_with_iPhone_SDK_3.1.2 を参考にさせてもらいました

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。