「PJSip 1.6を iPhone3.2SDKでビルド」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
**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 を参考にさせてもらいました