From 499bda86d351aed23348aa38103738231ae7d4c1 Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Fri, 3 Jan 2014 03:44:05 +0000 Subject: Close #1720: - Added configure flags --with-external-srtp and --disable-resample. - Added macro setting PJMEDIA_LIBSRTP_AUTO_INIT_DEINIT to allow application to handle libsrtp init & deinit by itself. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4701 74dad513-b988-da41-8d7b-12977e46ad98 --- pjmedia/build/Makefile | 9 ++------- pjmedia/build/os-auto.mak.in | 36 ++++++++++++++++++++++++++++++++++++ pjmedia/build/os-darwinos.mak | 36 ++++++++++++++++++++++++++++++++++++ pjmedia/build/os-linux.mak | 36 ++++++++++++++++++++++++++++++++++++ pjmedia/build/os-rtems.mak | 1 + pjmedia/build/os-win32.mak | 36 ++++++++++++++++++++++++++++++++++++ pjmedia/include/pjmedia/config.h | 13 +++++++++++++ pjmedia/src/pjmedia/transport_srtp.c | 10 +++++++++- 8 files changed, 169 insertions(+), 8 deletions(-) (limited to 'pjmedia') diff --git a/pjmedia/build/Makefile b/pjmedia/build/Makefile index e21e9c03..a567e63b 100644 --- a/pjmedia/build/Makefile +++ b/pjmedia/build/Makefile @@ -3,10 +3,6 @@ include ../../version.mak THIRD_PARTY:=$(PJDIR)/third_party -SRTP_INC=$(CC_INC)$(THIRD_PARTY)/build/srtp \ - $(CC_INC)$(THIRD_PARTY)/srtp/crypto/include \ - $(CC_INC)$(THIRD_PARTY)/srtp/include - include $(PJDIR)/build/common.mak export LIBDIR := ../lib @@ -48,8 +44,7 @@ export _CFLAGS := $(CC_CFLAGS) $(OS_CFLAGS) $(HOST_CFLAGS) $(M_CFLAGS) \ $(CC_INC)../../pjlib-util/include \ $(CC_INC)../../pjmedia/include \ $(CC_INC)../../pjnath/include \ - $(CC_INC)../.. \ - $(SRTP_INC) + $(CC_INC)../.. export _CXXFLAGS:= $(_CFLAGS) $(CC_CXXFLAGS) $(OS_CXXFLAGS) $(M_CXXFLAGS) \ $(HOST_CXXFLAGS) $(CXXFLAGS) @@ -71,7 +66,7 @@ export PJMEDIA_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ event.o format.o ffmpeg_util.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_resample.o resample_libsamplerate.o resample_speex.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 stream_common.o \ diff --git a/pjmedia/build/os-auto.mak.in b/pjmedia/build/os-auto.mak.in index b0502f3b..f451331e 100644 --- a/pjmedia/build/os-auto.mak.in +++ b/pjmedia/build/os-auto.mak.in @@ -128,6 +128,42 @@ endif endif +# +# SRTP +# +ifeq (@ac_external_srtp@,1) +# External SRTP +export CFLAGS += -DPJMEDIA_EXTERNAL_SRTP=1 +else +# Our SRTP in third_party +export CFLAGS += -I$(THIRD_PARTY)/build/srtp \ + -I$(THIRD_PARTY)/srtp/crypto/include \ + -I$(THIRD_PARTY)/srtp/include + +endif + +# +# Resample +# +AC_PJMEDIA_RESAMPLE=@ac_pjmedia_resample@ + +ifeq ($(AC_PJMEDIA_RESAMPLE),none) +# No resample support +export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_NONE +endif + +ifeq ($(AC_PJMEDIA_RESAMPLE),libresample) +export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBRESAMPLE +endif + +ifeq ($(AC_PJMEDIA_RESAMPLE),libsamplerate) +export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBSAMPLERATE +endif + +ifeq ($(AC_PJMEDIA_RESAMPLE),speex) +export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_SPEEX +endif + # # PortAudio # diff --git a/pjmedia/build/os-darwinos.mak b/pjmedia/build/os-darwinos.mak index 7904594e..3548c8ea 100644 --- a/pjmedia/build/os-darwinos.mak +++ b/pjmedia/build/os-darwinos.mak @@ -78,6 +78,42 @@ export CODEC_OBJS += g7221.o export G7221_CFLAGS += -I$(THIRD_PARTY) endif +# +# Resample +# +AC_PJMEDIA_RESAMPLE=libresample + +ifeq ($(AC_PJMEDIA_RESAMPLE),none) +# No resample support +export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_NONE +endif + +ifeq ($(AC_PJMEDIA_RESAMPLE),libresample) +export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBRESAMPLE +endif + +ifeq ($(AC_PJMEDIA_RESAMPLE),libsamplerate) +export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBSAMPLERATE +endif + +ifeq ($(AC_PJMEDIA_RESAMPLE),speex) +export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_SPEEX +endif + +# +# SRTP +# +#ifeq (@ac_external_srtp@,1) +ifeq (0,1) +# External SRTP +export CFLAGS += -DPJMEDIA_EXTERNAL_SRTP=1 +else +# Our SRTP in third_party +export CFLAGS += -I$(THIRD_PARTY)/build/srtp \ + -I$(THIRD_PARTY)/srtp/crypto/include \ + -I$(THIRD_PARTY)/srtp/include + +endif # # PortAudio diff --git a/pjmedia/build/os-linux.mak b/pjmedia/build/os-linux.mak index 63910c4a..eb050911 100644 --- a/pjmedia/build/os-linux.mak +++ b/pjmedia/build/os-linux.mak @@ -72,6 +72,42 @@ export CODEC_OBJS += g7221.o export G7221_CFLAGS += -I$(THIRD_PARTY) endif +# +# Resample +# +AC_PJMEDIA_RESAMPLE=libresample + +ifeq ($(AC_PJMEDIA_RESAMPLE),none) +# No resample support +export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_NONE +endif + +ifeq ($(AC_PJMEDIA_RESAMPLE),libresample) +export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBRESAMPLE +endif + +ifeq ($(AC_PJMEDIA_RESAMPLE),libsamplerate) +export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBSAMPLERATE +endif + +ifeq ($(AC_PJMEDIA_RESAMPLE),speex) +export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_SPEEX +endif + +# +# SRTP +# +#ifeq (@ac_external_srtp@,1) +ifeq (0,1) +# External SRTP +export CFLAGS += -DPJMEDIA_EXTERNAL_SRTP=1 +else +# Our SRTP in third_party +export CFLAGS += -I$(THIRD_PARTY)/build/srtp \ + -I$(THIRD_PARTY)/srtp/crypto/include \ + -I$(THIRD_PARTY)/srtp/include + +endif # # PortAudio diff --git a/pjmedia/build/os-rtems.mak b/pjmedia/build/os-rtems.mak index bbcfad4e..cf7440f8 100644 --- a/pjmedia/build/os-rtems.mak +++ b/pjmedia/build/os-rtems.mak @@ -6,3 +6,4 @@ export CFLAGS += -DPJMEDIA_SOUND_IMPLEMENTATION=PJMEDIA_SOUND_NULL_SOUND export PJMEDIA_OBJS += nullsound.o export SOUND_OBJS = $(NULLSOUND_OBJS) +export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBRESAMPLE diff --git a/pjmedia/build/os-win32.mak b/pjmedia/build/os-win32.mak index 498a9e1a..b85183a7 100644 --- a/pjmedia/build/os-win32.mak +++ b/pjmedia/build/os-win32.mak @@ -74,6 +74,42 @@ export CODEC_OBJS += g7221.o export G7221_CFLAGS += -I$(THIRD_PARTY) endif +# +# Resample +# +AC_PJMEDIA_RESAMPLE=libresample + +ifeq ($(AC_PJMEDIA_RESAMPLE),none) +# No resample support +export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_NONE +endif + +ifeq ($(AC_PJMEDIA_RESAMPLE),libresample) +export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBRESAMPLE +endif + +ifeq ($(AC_PJMEDIA_RESAMPLE),libsamplerate) +export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_LIBSAMPLERATE +endif + +ifeq ($(AC_PJMEDIA_RESAMPLE),speex) +export CFLAGS += -DPJMEDIA_RESAMPLE_IMP=PJMEDIA_RESAMPLE_SPEEX +endif + +# +# SRTP +# +#ifeq (@ac_external_srtp@,1) +ifeq (0,1) +# External SRTP +export CFLAGS += -DPJMEDIA_EXTERNAL_SRTP=1 +else +# Our SRTP in third_party +export CFLAGS += -I$(THIRD_PARTY)/build/srtp \ + -I$(THIRD_PARTY)/srtp/crypto/include \ + -I$(THIRD_PARTY)/srtp/include + +endif # # PortAudio diff --git a/pjmedia/include/pjmedia/config.h b/pjmedia/include/pjmedia/config.h index 9eec63e8..24fd5a99 100644 --- a/pjmedia/include/pjmedia/config.h +++ b/pjmedia/include/pjmedia/config.h @@ -913,6 +913,19 @@ #endif +/** + * Let the library handle libsrtp initialization and deinitialization. + * Application may want to disable this and manually perform libsrtp + * initialization and deinitialization when it needs to use libsrtp + * before the library is initialized or after the library is shutdown. + * + * By default it is enabled. + */ +#ifndef PJMEDIA_LIBSRTP_AUTO_INIT_DEINIT +# define PJMEDIA_LIBSRTP_AUTO_INIT_DEINIT 1 +#endif + + /** * Enable support to handle codecs with inconsistent clock rate * between clock rate in SDP/RTP & the clock rate that is actually used. diff --git a/pjmedia/src/pjmedia/transport_srtp.c b/pjmedia/src/pjmedia/transport_srtp.c index 85b43282..2e76c506 100644 --- a/pjmedia/src/pjmedia/transport_srtp.c +++ b/pjmedia/src/pjmedia/transport_srtp.c @@ -30,7 +30,11 @@ #if defined(PJMEDIA_HAS_SRTP) && (PJMEDIA_HAS_SRTP != 0) -#include +#if defined(PJMEDIA_EXTERNAL_SRTP) && (PJMEDIA_EXTERNAL_SRTP != 0) +# include +#else +# include +#endif #define THIS_FILE "transport_srtp.c" @@ -276,6 +280,7 @@ static void pjmedia_srtp_deinit_lib(pjmedia_endpt *endpt); PJ_DEF(pj_status_t) pjmedia_srtp_init_lib(pjmedia_endpt *endpt) { +#if PJMEDIA_LIBSRTP_AUTO_INIT_DEINIT if (libsrtp_initialized == PJ_FALSE) { err_status_t err; @@ -298,6 +303,9 @@ PJ_DEF(pj_status_t) pjmedia_srtp_init_lib(pjmedia_endpt *endpt) libsrtp_initialized = PJ_TRUE; } +#else + PJ_UNUSED_ARG(endpt); +#endif return PJ_SUCCESS; } -- cgit v1.2.3