AMR-WB Integration
This commit is contained in:
parent
036e629b3b
commit
9d8d6be92f
14 changed files with 158 additions and 24 deletions
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -49,3 +49,6 @@
|
|||
[submodule "submodules/mssilk"]
|
||||
path = submodules/mssilk
|
||||
url = git://git.linphone.org/mssilk.git
|
||||
[submodule "submodules/externals/vo-amrwbenc"]
|
||||
path = submodules/externals/vo-amrwbenc
|
||||
url = git://opencore-amr.git.sourceforge.net/gitroot/opencore-amr/vo-amrwbenc
|
||||
|
|
9
README
9
README
|
@ -13,10 +13,11 @@ To build liblinphone for Android, you must:
|
|||
|
||||
Some options can be passed to ndk-build, like "ndk-build SOME_OPTION=SOME_VALUE"
|
||||
|
||||
Option Name | Possible values
|
||||
---------------------------------------------------------------------------------
|
||||
BUILD_X264 0 (don't build x264) or 1 (build x264)
|
||||
BUILD_AMR 0 (don't build amr codec), light (try to use amr codec from android), full (build your own amr codec)
|
||||
Option Name | Possible values | Default value
|
||||
-------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
BUILD_X264 0 (don't build x264) or 1 (build x264)
|
||||
BUILD_AMRNB 0 (don't build amrnb codec), light (try to use amrnb codec from android), full (build your own amrnb codec) | light
|
||||
BUILD_AMRWB 0 (don't build amrwb codec), 1 (build your own amrwb codec) | 1
|
||||
BUILD_GPLV3_ZRTP 0 (don't support ZRTP), 1 (support ZRTP and make the whole program GPLv3)
|
||||
BUILD_SILK 0 (don't build silk plugin), 1 (build silk) [silk is Skype nonfree patented audio codec]
|
||||
BUILD_TUNNEL 0 (don't build tunnel), 1 (build tunnel) [requires a tunnel implementation in submodules/linphone/tunnel]
|
||||
|
|
|
@ -1,8 +1,15 @@
|
|||
# script expect linphone-root-dir variable to be set by parent !
|
||||
|
||||
#default values
|
||||
BUILD_AMR=light
|
||||
ifeq ($(BUILD_AMRNB),)
|
||||
BUILD_AMRNB=light
|
||||
endif
|
||||
ifeq ($(BUILD_AMRWB),)
|
||||
BUILD_AMRWB=0
|
||||
endif
|
||||
ifeq ($(BUILD_AMRWB),)
|
||||
BUILD_SRTP=1
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
|
||||
BUILD_X264=1
|
||||
|
@ -13,7 +20,6 @@ BUILD_X264=0
|
|||
endif
|
||||
|
||||
|
||||
|
||||
##ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
|
||||
ifeq ($(BUILD_GPLV3_ZRTP), 1)
|
||||
BUILD_SRTP=1
|
||||
|
@ -112,7 +118,20 @@ endif
|
|||
|
||||
include $(linphone-root-dir)/submodules/linphone/build/android/Android.mk
|
||||
|
||||
ifneq ($(BUILD_AMR), 0)
|
||||
_BUILD_AMR=0
|
||||
ifneq ($(BUILD_AMRNB), 0)
|
||||
_BUILD_AMR=1
|
||||
endif
|
||||
|
||||
ifneq ($(BUILD_AMRWB), 0)
|
||||
_BUILD_AMR=1
|
||||
endif
|
||||
|
||||
ifneq ($(_BUILD_AMR), 0)
|
||||
include $(linphone-root-dir)/submodules/externals/build/opencore-amr/Android.mk
|
||||
include $(linphone-root-dir)/submodules/msamr/Android.mk
|
||||
endif
|
||||
|
||||
ifneq ($(BUILD_AMRWB), 0)
|
||||
include $(linphone-root-dir)/submodules/externals/build/vo-amrwbenc/Android.mk
|
||||
endif
|
||||
|
|
|
@ -2,14 +2,38 @@ APP_PROJECT_PATH := $(call my-dir)/../
|
|||
APP_MODULES :=libspeex libgsm libortp libosip2 libeXosip2 libmediastreamer2 liblinphone
|
||||
APP_STL := stlport_static
|
||||
|
||||
#default values
|
||||
ifeq ($(BUILD_AMRNB),)
|
||||
BUILD_AMRNB=light
|
||||
endif
|
||||
ifeq ($(BUILD_AMRWB),)
|
||||
BUILD_AMRWB=0
|
||||
endif
|
||||
ifeq ($(BUILD_AMRWB),)
|
||||
BUILD_SRTP=1
|
||||
endif
|
||||
|
||||
ifeq ($(LINPHONE_VIDEO),1)
|
||||
APP_MODULES += libavutil libavcore libavcodec libswscale libvpx
|
||||
endif
|
||||
|
||||
ifeq ($(BUILD_AMR),1)
|
||||
_BUILD_AMR=0
|
||||
ifneq ($(BUILD_AMRNB), 0)
|
||||
_BUILD_AMR=1
|
||||
endif
|
||||
|
||||
ifneq ($(BUILD_AMRWB), 0)
|
||||
_BUILD_AMR=1
|
||||
endif
|
||||
|
||||
ifneq ($(_BUILD_AMR), 0)
|
||||
APP_MODULES += libopencoreamr libmsamr
|
||||
endif
|
||||
|
||||
ifneq ($(BUILD_AMRWB), 0)
|
||||
APP_MODULES += libvoamrwbenc
|
||||
endif
|
||||
|
||||
ifeq ($(BUILD_X264),1)
|
||||
APP_MODULES +=libx264 libmsx264
|
||||
endif
|
||||
|
|
|
@ -55,6 +55,7 @@
|
|||
<string name="pref_codec_gsm_key">pref_codec_gsm_key</string>
|
||||
<string name="pref_codec_g722_key">pref_codec_g722_key</string>
|
||||
<string name="pref_codec_amr_key">pref_codec_amr_key</string>
|
||||
<string name="pref_codec_amrwb_key">pref_codec_amrwb_key</string>
|
||||
<string name="pref_codec_ilbc_key">pref_codec_ilbc_key</string>
|
||||
<string name="pref_codec_speex8_key">pref_codec_speex8_key</string>
|
||||
<string name="pref_codec_speex16_key">pref_codec_speex16_key</string>
|
||||
|
|
|
@ -150,6 +150,7 @@
|
|||
<string name="pref_codec_gsm">gsm</string>
|
||||
<string name="pref_codec_g722">g722</string>
|
||||
<string name="pref_codec_amr">amr</string>
|
||||
<string name="pref_codec_amrwb">amr-wb</string>
|
||||
<string name="pref_codec_ilbc">ilbc</string>
|
||||
<string name="pref_codec_speex8">speex 8 Khz</string>
|
||||
<string name="pref_codec_speex16">speex 16 Khz</string>
|
||||
|
|
|
@ -77,6 +77,10 @@
|
|||
android:title="@string/pref_codec_amr"
|
||||
android:defaultValue="true"
|
||||
android:shouldDisableView="true" />
|
||||
<CheckBoxPreference android:key="@string/pref_codec_amrwb_key"
|
||||
android:title="@string/pref_codec_amrwb"
|
||||
android:defaultValue="true"
|
||||
android:shouldDisableView="true" />
|
||||
<CheckBoxPreference android:key="@string/pref_codec_gsm_key"
|
||||
android:title="@string/pref_codec_gsm"/>
|
||||
<CheckBoxPreference android:key="@string/pref_codec_g722_key"
|
||||
|
|
|
@ -27,6 +27,7 @@ import static android.media.AudioManager.STREAM_RING;
|
|||
import static android.media.AudioManager.STREAM_VOICE_CALL;
|
||||
import static android.media.AudioManager.VIBRATE_TYPE_RINGER;
|
||||
import static org.linphone.R.string.pref_codec_amr_key;
|
||||
import static org.linphone.R.string.pref_codec_amrwb_key;
|
||||
import static org.linphone.R.string.pref_codec_ilbc_key;
|
||||
import static org.linphone.R.string.pref_codec_speex16_key;
|
||||
import static org.linphone.R.string.pref_codec_speex32_key;
|
||||
|
@ -572,6 +573,7 @@ public final class LinphoneManager implements LinphoneCoreListener {
|
|||
enableDisableAudioCodec("PCMU", 8000, R.string.pref_codec_pcmu_key);
|
||||
enableDisableAudioCodec("PCMA", 8000, R.string.pref_codec_pcma_key);
|
||||
enableDisableAudioCodec("AMR", 8000, R.string.pref_codec_amr_key);
|
||||
enableDisableAudioCodec("AMR-WB", 16000, R.string.pref_codec_amrwb_key);
|
||||
enableDisableAudioCodec("SILK", 24000, R.string.pref_codec_silk24_key);
|
||||
enableDisableAudioCodec("SILK", 16000, R.string.pref_codec_silk16_key);
|
||||
enableDisableAudioCodec("SILK", 12000, R.string.pref_codec_silk12_key);
|
||||
|
@ -1121,6 +1123,10 @@ public final class LinphoneManager implements LinphoneCoreListener {
|
|||
.findPayloadType("AMR", 8000)!=null;
|
||||
e.putBoolean(getString(pref_codec_amr_key), amr);
|
||||
|
||||
boolean amrwb = LinphoneService.isReady() && LinphoneManager.getLc()
|
||||
.findPayloadType("AMR-WB", 16000)!=null;
|
||||
e.putBoolean(getString(pref_codec_amrwb_key), amrwb);
|
||||
|
||||
if (Version.sdkStrictlyBelow(5) || !Version.hasNeon() || !Hacks.hasCamera()) {
|
||||
e.putBoolean(getString(pref_video_enable_key), false);
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ package org.linphone;
|
|||
|
||||
import static org.linphone.R.string.ec_calibrating;
|
||||
import static org.linphone.R.string.pref_codec_amr_key;
|
||||
import static org.linphone.R.string.pref_codec_amrwb_key;
|
||||
import static org.linphone.R.string.pref_codec_ilbc_key;
|
||||
import static org.linphone.R.string.pref_codec_speex16_key;
|
||||
import static org.linphone.R.string.pref_echo_cancellation_key;
|
||||
|
@ -193,7 +194,8 @@ public class LinphonePreferencesActivity extends PreferenceActivity implements E
|
|||
|
||||
initializeMediaEncryptionPreferences();
|
||||
|
||||
detectAudioCodec(pref_codec_amr_key,"AMR",8000, false);
|
||||
detectAudioCodec(pref_codec_amr_key,"AMR", 8000, false);
|
||||
detectAudioCodec(pref_codec_amrwb_key,"AMR-WB", 16000, false);
|
||||
//detectAudioCodec(R.string.pref_codec_silk8_key,"SILK",8000, true);
|
||||
//detectAudioCodec(R.string.pref_codec_silk12_key,"SILK",12000, true);
|
||||
detectAudioCodec(R.string.pref_codec_silk16_key,"SILK",16000, true);
|
||||
|
|
|
@ -8,16 +8,32 @@ include $(CLEAR_VARS)
|
|||
|
||||
LOCAL_MODULE := libopencoreamr
|
||||
|
||||
LOCAL_SRC_FILES := \
|
||||
amrnb/wrapper.cpp
|
||||
_ADD_COMMON=0
|
||||
ifneq ($(BUILD_AMRWB),0)
|
||||
_ADD_COMMON=1
|
||||
endif
|
||||
ifeq ($(BUILD_AMRNB),full)
|
||||
_ADD_COMMON=1
|
||||
endif
|
||||
|
||||
ifeq ($(BUILD_AMR),light)
|
||||
ifneq ($(BUILD_AMRNB),0)
|
||||
LOCAL_SRC_FILES += \
|
||||
amrnb/wrapper.cpp
|
||||
endif
|
||||
ifneq ($(BUILD_AMRWB),0)
|
||||
LOCAL_SRC_FILES += \
|
||||
amrwb/wrapper.cpp
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(BUILD_AMRNB),light)
|
||||
#in this mode we try to dynamically link against the opencore-amr provided by android
|
||||
LOCAL_CFLAGS += -include ../build/opencore-amr/stubs.h
|
||||
LOCAL_SRC_FILES += ../build/opencore-amr/stubs.cpp
|
||||
else
|
||||
#in the other mode (full) we build our own opencore-amr.
|
||||
endif
|
||||
|
||||
ifeq ($(BUILD_AMRNB),full)
|
||||
#in the other mode (full) we build our own opencore-amr.
|
||||
|
||||
#common files
|
||||
|
||||
|
@ -178,12 +194,6 @@ LOCAL_SRC_FILES += \
|
|||
opencore/codecs_v2/audio/gsm_amr/amr_nb/dec/src/sp_dec.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_nb/dec/src/wmf_to_ets.cpp
|
||||
|
||||
endif
|
||||
|
||||
LOCAL_ARM_MODE := arm
|
||||
|
||||
|
||||
|
||||
#for including config.h:
|
||||
LOCAL_C_INCLUDES += \
|
||||
$(LOCAL_PATH)/opencore/codecs_v2/audio/gsm_amr/amr_nb/enc/include \
|
||||
|
@ -192,8 +202,70 @@ LOCAL_C_INCLUDES += \
|
|||
$(LOCAL_PATH)/opencore/codecs_v2/audio/gsm_amr/amr_nb/enc/src \
|
||||
$(LOCAL_PATH)/opencore/codecs_v2/audio/gsm_amr/amr_nb/common/include \
|
||||
$(LOCAL_PATH)/opencore/codecs_v2/audio/gsm_amr/common/dec/include \
|
||||
$(LOCAL_PATH)/amrnb \
|
||||
$(LOCAL_PATH)/amrnb
|
||||
endif
|
||||
|
||||
ifneq ($(BUILD_AMRWB),0)
|
||||
LOCAL_SRC_FILES += \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/agc2_amr_wb.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/band_pass_6k_7k.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/dec_acelp_2p_in_64.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/dec_acelp_4p_in_64.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/dec_alg_codebook.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/dec_gain2_amr_wb.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/deemphasis_32.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/dtx_decoder_amr_wb.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/get_amr_wb_bits.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/highpass_400hz_at_12k8.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/highpass_50hz_at_12k8.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/homing_amr_wb_dec.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/interpolate_isp.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/isf_extrapolation.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/isp_az.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/isp_isf.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/lagconceal.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/low_pass_filt_7k.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/median5.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/mime_io.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/noise_gen_amrwb.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/normalize_amr_wb.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/oversamp_12k8_to_16k.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/phase_dispersion.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/pit_shrp.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/pred_lt4.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/preemph_amrwb_dec.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/pvamrwb_math_op.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/pvamrwbdecoder.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/q_gain2_tab.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/qisf_ns.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/qisf_ns_tab.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/qpisf_2s.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/qpisf_2s_tab.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/scale_signal.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/synthesis_amr_wb.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/voice_factor.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/wb_syn_filt.cpp \
|
||||
opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/weight_amrwb_lpc.cpp
|
||||
|
||||
#decoder files
|
||||
# opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src/decoder_amr_wb.cpp \
|
||||
|
||||
#for including config.h:
|
||||
LOCAL_C_INCLUDES += \
|
||||
$(LOCAL_PATH)/opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/include \
|
||||
$(LOCAL_PATH)/opencore/codecs_v2/audio/gsm_amr/amr_wb/dec/src \
|
||||
$(LOCAL_PATH)/opencore/codecs_v2/audio/gsm_amr/common/dec/include \
|
||||
$(LOCAL_PATH)/amrwb
|
||||
endif
|
||||
|
||||
|
||||
LOCAL_ARM_MODE := arm
|
||||
|
||||
#Common
|
||||
ifeq ($(_ADD_COMMON),1)
|
||||
LOCAL_C_INCLUDES += \
|
||||
$(LOCAL_PATH)/oscl
|
||||
endif
|
||||
|
||||
include $(BUILD_STATIC_LIBRARY)
|
||||
|
||||
|
|
1
submodules/externals/vo-amrwbenc
vendored
Submodule
1
submodules/externals/vo-amrwbenc
vendored
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit e96f4b5d3fe38b3bee5d71fefdaa1af8b842dde9
|
|
@ -1 +1 @@
|
|||
Subproject commit 29e89fc9de102f88b8ebf36a5fe7449a26a8bbff
|
||||
Subproject commit d964a2516783eed76b916415db2c2339745c3134
|
|
@ -1 +1 @@
|
|||
Subproject commit 93274c2b87c7f0e9805ba235fbe531b8f61d6dc7
|
||||
Subproject commit 2d6201d948ae30d1eff9c3db8f3c7f7475e615c3
|
|
@ -1 +1 @@
|
|||
Subproject commit 98fb31155c687155139817eea86bd612c59fe88c
|
||||
Subproject commit 3882685bd108d3a425ff0981da8a2fbcb0e82bb7
|
Loading…
Reference in a new issue