summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/CameraSettings.java
diff options
context:
space:
mode:
authorSanthosh Kumar Thimmanna Bhattar <sthim@codeaurora.org>2014-10-20 12:30:14 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2014-10-27 06:15:36 -0700
commitbac24e32cc1d2ff2fd5150e304b0898f449628ef (patch)
tree611ffd215e3a2c998895c554c00f0b205a0226bc /src/com/android/camera/CameraSettings.java
parente6efb5bd958c5828fa93faacc8a3df120baf9126 (diff)
downloadandroid_packages_apps_Snap-bac24e32cc1d2ff2fd5150e304b0898f449628ef.tar.gz
android_packages_apps_Snap-bac24e32cc1d2ff2fd5150e304b0898f449628ef.tar.bz2
android_packages_apps_Snap-bac24e32cc1d2ff2fd5150e304b0898f449628ef.zip
SnapdragonCamera: Filter out unsupported video encoders in app
- Unsupported encoders are listing in video encoders list in camera application. - Added filter to remove unsupported video encoders from the list. Change-Id: I88b680bdd199bfe9540388129846ef0168e702bc
Diffstat (limited to 'src/com/android/camera/CameraSettings.java')
-rw-r--r--src/com/android/camera/CameraSettings.java32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index 3a63d0bfe..4c2a20651 100644
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -28,6 +28,10 @@ import android.hardware.Camera.CameraInfo;
import android.hardware.Camera.Parameters;
import android.hardware.Camera.Size;
import android.media.CamcorderProfile;
+import android.media.MediaRecorder;
+import android.media.EncoderCapabilities;
+import android.media.EncoderCapabilities.VideoEncoderCap;
+import java.util.HashMap;
import android.util.Log;
import com.android.camera.util.ApiHelper;
@@ -196,6 +200,15 @@ public class CameraSettings {
private final Parameters mParameters;
private final CameraInfo[] mCameraInfo;
private final int mCameraId;
+ private static final HashMap<Integer, String>
+ VIDEO_ENCODER_TABLE = new HashMap<Integer, String>();
+
+ static {
+ VIDEO_ENCODER_TABLE.put(MediaRecorder.VideoEncoder.H263, "h263");
+ VIDEO_ENCODER_TABLE.put(MediaRecorder.VideoEncoder.H264, "h264");
+ VIDEO_ENCODER_TABLE.put(MediaRecorder.VideoEncoder.H265, "h265");
+ VIDEO_ENCODER_TABLE.put(MediaRecorder.VideoEncoder.MPEG_4_SP, "m4v");
+ }
public CameraSettings(Activity activity, Parameters parameters,
int cameraId, CameraInfo[] cameraInfo) {
@@ -451,6 +464,20 @@ public class CameraSettings {
return split(str);
}
+ private static List<String> getSupportedVideoEncoders() {
+ ArrayList<String> supported = new ArrayList<String>();
+ String str = null;
+ List<VideoEncoderCap> videoEncoders = EncoderCapabilities.getVideoEncoders();
+ for (VideoEncoderCap videoEncoder: videoEncoders) {
+ str = VIDEO_ENCODER_TABLE.get(videoEncoder.mCodec);
+ if (str != null) {
+ supported.add(str);
+ }
+ }
+ return supported;
+
+ }
+
private void qcomInitPreferences(PreferenceGroup group){
//Qcom Preference add here
ListPreference powerMode = group.findPreference(KEY_POWER_MODE);
@@ -629,6 +656,7 @@ public class CameraSettings {
ListPreference videoHfrMode =
group.findPreference(KEY_VIDEO_HIGH_FRAME_RATE);
ListPreference seeMoreMode = group.findPreference(KEY_SEE_MORE);
+ ListPreference videoEncoder = group.findPreference(KEY_VIDEO_ENCODER);
// Since the screen could be loaded from different resources, we need
// to check if the preference is available here
@@ -647,6 +675,10 @@ public class CameraSettings {
mCameraId,mParameters));
}
+ if (videoEncoder != null) {
+ filterUnsupportedOptions(group, videoEncoder, getSupportedVideoEncoders());
+ }
+
if (pictureSize != null) {
filterUnsupportedOptions(group, pictureSize, sizeListToStringList(
mParameters.getSupportedPictureSizes()));