diff options
-rw-r--r-- | system/settings/android.xml | 6 | ||||
-rw-r--r-- | xbmc/Application.cpp | 27 | ||||
-rw-r--r-- | xbmc/settings/Settings.cpp | 2 |
3 files changed, 35 insertions, 0 deletions
diff --git a/system/settings/android.xml b/system/settings/android.xml index ce46a88af4..4eb5a6c09d 100644 --- a/system/settings/android.xml +++ b/system/settings/android.xml @@ -14,6 +14,9 @@ <requirement>HAVE_AMCODEC</requirement> <level>2</level> <default>true</default> + <updates> + <update type="change" /> + </updates> </setting> </group> </category> @@ -34,6 +37,9 @@ <visible>HAS_MEDIACODEC</visible> <level>2</level> <default>true</default> + <updates> + <update type="change" /> + </updates> </setting> </group> </category> diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp index 080f6149ee..a8408706e2 100644 --- a/xbmc/Application.cpp +++ b/xbmc/Application.cpp @@ -335,12 +335,17 @@ #if defined(TARGET_ANDROID) #include "android/activity/XBMCApp.h" +#include "android/activity/AndroidFeatures.h" #endif #ifdef TARGET_WINDOWS #include "utils/Environment.h" #endif +#if defined(HAS_LIBAMCODEC) +#include "utils/AMLUtils.h" +#endif + using namespace std; using namespace ADDON; using namespace XFILE; @@ -1687,6 +1692,28 @@ bool CApplication::OnSettingUpdate(CSetting* &setting, const char *oldSettingId, return true; } } + else if (settingId == "videoplayer.useamcodec") + { + // Do not permit amcodec to be used on non-aml platforms. + // The setting will be hidden but the default value is true, + // so change it to false. + if (!aml_present()) + { + CSettingBool *useamcodec = (CSettingBool*)setting; + useamcodec->SetValue(false); + } + } + else if (settingId == "videoplayer.usemediacodec") + { + // Do not permit MediaCodec to be used Android platforms that do not have it. + // The setting will be hidden but the default value is true, + // so change it to false. + if (CAndroidFeatures::GetVersion() < 16) + { + CSettingBool *usemediacodec = (CSettingBool*)setting; + usemediacodec->SetValue(false); + } + } return false; } diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp index da10a5dd50..0cacce6737 100644 --- a/xbmc/settings/Settings.cpp +++ b/xbmc/settings/Settings.cpp @@ -911,6 +911,8 @@ void CSettings::InitializeISettingCallbacks() settingSet.insert("screensaver.settings"); settingSet.insert("videoscreen.guicalibration"); settingSet.insert("videoscreen.testpattern"); + settingSet.insert("videoplayer.useamcodec"); + settingSet.insert("videoplayer.usemediacodec"); m_settingsManager->RegisterCallback(&g_application, settingSet); settingSet.clear(); |