diff --git a/jni/Android.mk b/jni/Android.mk index 87a283b15..820a5c80b 100755 --- a/jni/Android.mk +++ b/jni/Android.mk @@ -1,7 +1,11 @@ root-dir:=$(APP_PROJECT_PATH) + ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) +BUILD_X264?=1 LINPHONE_VIDEO=1 +else +BUILD_X264=0 endif include $(root-dir)/submodules/externals/build/speex/Android.mk @@ -21,10 +25,13 @@ include $(root-dir)/submodules/linphone/mediastreamer2/tests/Android.mk ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) include $(root-dir)/submodules/msilbc/Android.mk -include $(root-dir)/submodules/msx264/Android.mk -include $(root-dir)/submodules/externals/build/ffmpeg/Android.mk -include $(root-dir)/submodules/externals/build/x264/Android.mk +ifeq ($(BUILD_X264), 1) +include $(root-dir)/submodules/msx264/Android.mk +include $(root-dir)/submodules/externals/build/x264/Android.mk +endif + +include $(root-dir)/submodules/externals/build/ffmpeg/Android.mk endif include $(root-dir)/submodules/linphone/build/android/Android.mk diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java index cdf097f5c..78be8b6e7 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -379,7 +379,12 @@ public final class LinphoneManager implements LinphoneCoreListener { lInputStream.close(); } - + public boolean detectVideoCodec(String mime) { + for (PayloadType videoCodec : mLc.listVideoCodecs()) { + if (mime.equals(videoCodec.getMime())) return true; + } + return false; + } public void initFromConf(Context context) throws LinphoneConfigException { //traces diff --git a/src/org/linphone/LinphonePreferencesActivity.java b/src/org/linphone/LinphonePreferencesActivity.java index fe783fa4f..628a74ae7 100644 --- a/src/org/linphone/LinphonePreferencesActivity.java +++ b/src/org/linphone/LinphonePreferencesActivity.java @@ -58,6 +58,15 @@ public class LinphonePreferencesActivity extends PreferenceActivity implements E return (CheckBoxPreference) findPreference(getString(key)); } + private void detectAudioCodec(int id, String mime, int rate) { + boolean enable = LinphoneService.isReady() && LinphoneManager.getLc().findPayloadType(mime, rate)!=null; + findPreference(id).setEnabled(enable); + } + private void detectVideoCodec(int id, String mime) { + findPreference(id).setEnabled(LinphoneManager.getInstance().detectVideoCodec(mime)); + } + + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -76,8 +85,7 @@ public class LinphonePreferencesActivity extends PreferenceActivity implements E boolean fastCpu = Version.isArmv7(); if (fastCpu) { - boolean ilbc = LinphoneService.isReady() && LinphoneManager.getLc().findPayloadType("iLBC", 8000)!=null; - findPreference(pref_codec_ilbc_key).setEnabled(ilbc); + detectAudioCodec(pref_codec_ilbc_key, "iLBC", 8000); findPreference(pref_codec_speex16_key).setEnabled(true); //findPreference(pref_codec_speex32_key)).setEnabled(enableIlbc); } @@ -94,6 +102,8 @@ public class LinphonePreferencesActivity extends PreferenceActivity implements E prefs().edit().putBoolean(LinphoneActivity.PREF_FIRST_LAUNCH, false).commit(); } + + detectVideoCodec(R.string.pref_video_codec_h264_key, "H264"); } diff --git a/submodules/linphone b/submodules/linphone index 2e35f52d3..ecca92fc2 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 2e35f52d35dc6f2e22ffa85130ad233172a5f488 +Subproject commit ecca92fc21b379fe227980f4a21dc759b7aca260