macのターミナルを起動しsvnでソースをゲット
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
環境変数の設定
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
以上、お疲れ様でした!( - )
最終更新:2010年06月10日 21:50