summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/settings/SettingsUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/settings/SettingsUtil.java')
-rw-r--r--src/com/android/camera/settings/SettingsUtil.java17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/com/android/camera/settings/SettingsUtil.java b/src/com/android/camera/settings/SettingsUtil.java
index d0f9b09ee..acf892116 100644
--- a/src/com/android/camera/settings/SettingsUtil.java
+++ b/src/com/android/camera/settings/SettingsUtil.java
@@ -24,6 +24,7 @@ import android.media.CamcorderProfile;
import android.util.SparseArray;
import com.android.camera.debug.Log;
+import com.android.camera.util.ApiHelper;
import com.android.camera.util.Callback;
import com.android.camera2.R;
import com.android.ex.camera2.portability.CameraDeviceInfo;
@@ -353,7 +354,8 @@ public class SettingsUtil {
*/
private static int getNextSupportedVideoQualityIndex(int cameraId, int start) {
for (int i = start + 1; i < sVideoQualities.length; ++i) {
- if (CamcorderProfile.hasProfile(cameraId, sVideoQualities[i])) {
+ if (isVideoQualitySupported(sVideoQualities[i])
+ && CamcorderProfile.hasProfile(cameraId, sVideoQualities[i])) {
// We found a new supported quality.
return i;
}
@@ -371,6 +373,19 @@ public class SettingsUtil {
}
/**
+ * @return Whether the given {@link CamcorderProfile} is supported on the
+ * current device/OS version.
+ */
+ private static boolean isVideoQualitySupported(int videoQuality) {
+ // 4k is only supported on L or higher but some devices falsely report
+ // to have support for it on K, see b/18172081.
+ if (!ApiHelper.isLOrHigher() && videoQuality == CamcorderProfile.QUALITY_2160P) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
* Returns the index of the size within the given list that is closest to
* the given target pixel count.
*/