diff options
Diffstat (limited to 'src/com/android/camera/SettingsManager.java')
-rw-r--r-- | src/com/android/camera/SettingsManager.java | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index af796c6a7..d5539318e 100644 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -150,6 +150,7 @@ public class SettingsManager implements ListMenu.SettingsListener { public static final HashMap<String, Integer> KEY_ISO_INDEX = new HashMap<String, Integer>(); public static final String KEY_BSGC_DETECTION = "pref_camera2_bsgc_key"; public static final String KEY_ZSL = "pref_camera2_zsl_key"; + public static final String KEY_VIDEO_ENCODER_PROFILE = "pref_camera2_videoencoderprofile_key"; private static final String TAG = "SnapCam_SettingsManager"; @@ -166,6 +167,7 @@ public class SettingsManager implements ListMenu.SettingsListener { private JSONObject mDependency; private int mCameraId; private Set<String> mFilteredKeys; + private static Map<String, Set<String>> VIDEO_ENCODER_PROFILE_TABLE = new HashMap<>(); public Map<String, Values> getValuesMap() { return mValuesMap; @@ -185,6 +187,10 @@ public class SettingsManager implements ListMenu.SettingsListener { KEY_ISO_INDEX.put("400", 4); KEY_ISO_INDEX.put("800", 5); KEY_ISO_INDEX.put("1600", 6); + Set<String> h265 = new HashSet<>(); + h265.add("HEVCProfileMain10"); + h265.add("HEVCProfileMain10HDR10"); + VIDEO_ENCODER_PROFILE_TABLE.put("h265", h265); } private SettingsManager(Context context) { @@ -394,6 +400,7 @@ public class SettingsManager implements ListMenu.SettingsListener { turnOn.remove(it.next()); } + for (String keyToTurnOn: turnOn) { Set<String> dependsOnSet = mDependendsOnMap.get(keyToTurnOn); if (dependsOnSet == null || dependsOnSet.size() == 0) continue; @@ -754,6 +761,7 @@ public class SettingsManager implements ListMenu.SettingsListener { // These list can be changed run-time filterHFROptions(); filterVideoEncoderOptions(); + filterVideoEncoderProfileOptions(); if (!mIsFrontCameraPresent || !isFacingFront(mCameraId)) { removePreference(mPreferenceGroup, KEY_SELFIE_FLASH); @@ -766,6 +774,8 @@ public class SettingsManager implements ListMenu.SettingsListener { mFilteredKeys.add(zoom.getKey()); } } + + } private void runTimeUpdateDependencyOptions(ListPreference pref) { @@ -775,6 +785,8 @@ public class SettingsManager implements ListMenu.SettingsListener { filterVideoEncoderOptions(); } else if (pref.getKey().equals(KEY_SCENE_MODE)) { filterChromaflashPictureSizeOptions(); + } else if ( pref.getKey().equals(KEY_VIDEO_ENCODER) ) { + filterVideoEncoderProfileOptions(); } } @@ -898,6 +910,20 @@ public class SettingsManager implements ListMenu.SettingsListener { } } + private void filterVideoEncoderProfileOptions() { + ListPreference videoEncoderProfilePref = + mPreferenceGroup.findPreference(KEY_VIDEO_ENCODER_PROFILE); + ListPreference videoEncoderPref = mPreferenceGroup.findPreference(KEY_VIDEO_ENCODER); + if ( videoEncoderProfilePref != null && videoEncoderPref != null ) { + String videoEncoder = videoEncoderPref.getValue(); + videoEncoderProfilePref.reloadInitialEntriesAndEntryValues(); + if ( filterUnsupportedOptions(videoEncoderProfilePref, + getSupportedVideoEncoderProfile(videoEncoder)) ) { + mFilteredKeys.add(videoEncoderProfilePref.getKey()); + } + } + } + private List<String> getSupportedChromaFlashPictureSize() { StreamConfigurationMap map = mCharacteristics.get(getCurrentCameraId()).get( CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); @@ -1184,7 +1210,7 @@ public class SettingsManager implements ListMenu.SettingsListener { String resolutionFpsEncoder = key + ":" + profile.videoCodec; if (CameraSettings.VIDEO_ENCODER_BITRATE.containsKey(resolutionFpsEncoder)) { bitRate = CameraSettings.VIDEO_ENCODER_BITRATE.get(resolutionFpsEncoder); - } else if (CameraSettings.VIDEO_ENCODER_BITRATE.containsKey(key) ) { + } else if (CameraSettings.VIDEO_ENCODER_BITRATE.containsKey(key)) { bitRate = CameraSettings.VIDEO_ENCODER_BITRATE.get(key); } else { Log.i(TAG, "No pre-defined bitrate for "+key); @@ -1442,6 +1468,15 @@ public class SettingsManager implements ListMenu.SettingsListener { return modes; } + public List<String> getSupportedVideoEncoderProfile(String videoEncoder) { + List<String> profile = new ArrayList<>(); + profile.add("off"); + if ( VIDEO_ENCODER_PROFILE_TABLE.containsKey(videoEncoder) ) { + profile.addAll(VIDEO_ENCODER_PROFILE_TABLE.get(videoEncoder)); + } + return profile; + } + public boolean isHistogramSupport(){ String value = getValue(KEY_HISTOGRAM); return value != null && value.equals("enable"); |