aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--system/settings/android.xml6
-rw-r--r--xbmc/Application.cpp27
-rw-r--r--xbmc/settings/Settings.cpp2
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();