diff options
Diffstat (limited to 'src/com/android/camera/SettingsManager.java')
-rwxr-xr-x | src/com/android/camera/SettingsManager.java | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index 53b0d7602..0856beb29 100755 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -348,8 +348,9 @@ public class SettingsManager implements ListMenu.SettingsListener { notifyListeners(changed); } - public void updateQcfaPictureSize() { + public void updatePictureAndVideoSize() { ListPreference picturePref = mPreferenceGroup.findPreference(KEY_PICTURE_SIZE); + ListPreference videoQualityPref = mPreferenceGroup.findPreference(KEY_VIDEO_QUALITY); if (picturePref != null) { picturePref.setEntries(mContext.getResources().getStringArray( R.array.pref_camera2_picturesize_entries)); @@ -358,6 +359,14 @@ public class SettingsManager implements ListMenu.SettingsListener { filterUnsupportedOptions(picturePref, getSupportedPictureSize( getCurrentCameraId())); } + if (videoQualityPref != null) { + videoQualityPref.setEntries(mContext.getResources().getStringArray( + R.array.pref_camera2_video_quality_entries)); + videoQualityPref.setEntryValues(mContext.getResources().getStringArray( + R.array.pref_camera2_video_quality_entryvalues)); + filterUnsupportedOptions(videoQualityPref,getSupportedVideoSize( + getCurrentCameraId())); + } } public void init() { @@ -481,6 +490,7 @@ public class SettingsManager implements ListMenu.SettingsListener { initDependencyTable(); initializeValueMap(); filterChromaflashPictureSizeOptions(); + filterHeifSizeOptions(); } private Size parseSize(String value) { @@ -1072,6 +1082,8 @@ public class SettingsManager implements ListMenu.SettingsListener { filterChromaflashPictureSizeOptions(); } else if ( pref.getKey().equals(KEY_VIDEO_ENCODER) ) { filterVideoEncoderProfileOptions(); + } else if (pref.getKey().equals(KEY_PICTURE_FORMAT)) { + filterHeifSizeOptions(); } } @@ -1267,6 +1279,19 @@ public class SettingsManager implements ListMenu.SettingsListener { } } + private void filterHeifSizeOptions() { + ListPreference picturePref = mPreferenceGroup.findPreference(KEY_PICTURE_SIZE); + ListPreference videoQualityPref = mPreferenceGroup.findPreference(KEY_VIDEO_QUALITY); + if (filterUnsupportedOptions(picturePref, getSupportedPictureSize( + getCurrentCameraId()))) { + mFilteredKeys.add(picturePref.getKey()); + } + if (filterUnsupportedOptions(videoQualityPref, getSupportedVideoSize( + getCurrentCameraId()))) { + mFilteredKeys.add(videoQualityPref.getKey()); + } + } + private void filterHFROptions() { ListPreference hfrPref = mPreferenceGroup.findPreference(KEY_VIDEO_HIGH_FRAME_RATE); if (hfrPref != null) { @@ -1702,8 +1727,12 @@ public class SettingsManager implements ListMenu.SettingsListener { StreamConfigurationMap map = mCharacteristics.get(cameraId).get( CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); Size[] sizes = map.getOutputSizes(MediaRecorder.class); + boolean isHeifEnabled = getSavePictureFormat() == HEIF_FORMAT; List<String> res = new ArrayList<>(); for (int i = 0; i < sizes.length; i++) { + if (isHeifEnabled && (Math.min(sizes[i].getWidth(),sizes[i].getHeight()) < 512)) { + continue; + } if (CameraSettings.VIDEO_QUALITY_TABLE.containsKey(sizes[i].toString())) { Integer profile = CameraSettings.VIDEO_QUALITY_TABLE.get(sizes[i].toString()); if (profile != null) { |