diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2014-11-27 12:45:32 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2014-11-27 12:45:32 -0800 |
commit | bbf8105892d0e8fea832a0c71d2acd471b1ade0f (patch) | |
tree | b318f3bc1dbff80b26ab3aa1432221807e852674 /src | |
parent | 3763a1268969a201a7b5f66a2ca729b941057612 (diff) | |
parent | 0d33346534a728a1f8efaec05fcdccbe3e5440e1 (diff) | |
download | android_packages_apps_Snap-bbf8105892d0e8fea832a0c71d2acd471b1ade0f.tar.gz android_packages_apps_Snap-bbf8105892d0e8fea832a0c71d2acd471b1ade0f.tar.bz2 android_packages_apps_Snap-bbf8105892d0e8fea832a0c71d2acd471b1ade0f.zip |
Merge "SnapdragonCamera: Fix compatibility issues with KK."
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/camera/AndroidCameraManagerImpl.java | 9 | ||||
-rw-r--r-- | src/com/android/camera/CameraSettings.java | 37 | ||||
-rw-r--r-- | src/com/android/camera/PhotoModule.java | 2 | ||||
-rw-r--r-- | src/com/android/camera/VideoModule.java | 6 |
4 files changed, 39 insertions, 15 deletions
diff --git a/src/com/android/camera/AndroidCameraManagerImpl.java b/src/com/android/camera/AndroidCameraManagerImpl.java index 42ae20f02..637a5f5c5 100644 --- a/src/com/android/camera/AndroidCameraManagerImpl.java +++ b/src/com/android/camera/AndroidCameraManagerImpl.java @@ -201,14 +201,7 @@ class AndroidCameraManagerImpl implements CameraManager { try { switch (msg.what) { case OPEN_CAMERA: - try { - mCamera = android.hardware.Camera.openLegacy(msg.arg1, - android.hardware.Camera.CAMERA_HAL_API_VERSION_1_0); - } catch (RuntimeException e) { - /* Retry with open if openLegacy fails */ - Log.v(TAG, "openLegacy failed. Using open instead"); - mCamera = android.hardware.Camera.open(msg.arg1); - } + mCamera = android.hardware.Camera.open(msg.arg1); if (mCamera != null) { mParametersIsDirty = true; diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java index 315cf62b9..7b5b2e7a6 100644 --- a/src/com/android/camera/CameraSettings.java +++ b/src/com/android/camera/CameraSettings.java @@ -247,13 +247,30 @@ public class CameraSettings { private final int mCameraId; private static final HashMap<Integer, String> VIDEO_ENCODER_TABLE = new HashMap<Integer, String>(); + public static final HashMap<String, Integer> + VIDEO_QUALITY_TABLE = new HashMap<String, Integer>(); static { + //video encoders 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"); - } + + //video qualities + VIDEO_QUALITY_TABLE.put("4096x2160", CamcorderProfile.QUALITY_4kDCI); + VIDEO_QUALITY_TABLE.put("3840x2160", CamcorderProfile.QUALITY_2160P); + VIDEO_QUALITY_TABLE.put("1920x1080", CamcorderProfile.QUALITY_1080P); + VIDEO_QUALITY_TABLE.put("1280x720", CamcorderProfile.QUALITY_720P); + VIDEO_QUALITY_TABLE.put("720x480", CamcorderProfile.QUALITY_480P); + VIDEO_QUALITY_TABLE.put("864x480", CamcorderProfile.QUALITY_FWVGA); + VIDEO_QUALITY_TABLE.put("800x480", CamcorderProfile.QUALITY_WVGA); + VIDEO_QUALITY_TABLE.put("640x480", CamcorderProfile.QUALITY_VGA); + VIDEO_QUALITY_TABLE.put("400x240", CamcorderProfile.QUALITY_WQVGA); + VIDEO_QUALITY_TABLE.put("352x288", CamcorderProfile.QUALITY_CIF); + VIDEO_QUALITY_TABLE.put("320x240", CamcorderProfile.QUALITY_QVGA); + VIDEO_QUALITY_TABLE.put("176x144", CamcorderProfile.QUALITY_QCIF); + } public CameraSettings(Activity activity, Parameters parameters, int cameraId, CameraInfo[] cameraInfo) { @@ -275,7 +292,7 @@ public class CameraSettings { String defaultQuality,Parameters parameters) { // When launching the camera app first time, we will set the video quality // to the first one (i.e. highest quality) in the supported list - List<String> supported = getSupportedVideoQuality(cameraId,parameters); + List<String> supported = getSupportedVideoQualities(cameraId,parameters); if (supported == null) { Log.e(TAG, "No supported video quality is found"); return defaultQuality; @@ -734,7 +751,7 @@ public class CameraSettings { } if (videoQuality != null) { - filterUnsupportedOptions(group, videoQuality, getSupportedVideoQuality( + filterUnsupportedOptions(group, videoQuality, getSupportedVideoQualities( mCameraId,mParameters)); } @@ -1151,6 +1168,20 @@ public class CameraSettings { } } + + public static ArrayList<String> getSupportedVideoQualities(int cameraId,Parameters parameters) { + ArrayList<String> supported = new ArrayList<String>(); + List<String> temp = sizeListToStringList(parameters.getSupportedVideoSizes()); + for (String videoSize : temp) { + if (VIDEO_QUALITY_TABLE.containsKey(videoSize)) { + int profile = VIDEO_QUALITY_TABLE.get(videoSize); + if (CamcorderProfile.hasProfile(cameraId, profile)) { + supported.add(videoSize); + } + } + } + return supported; + } public static int getVideoDurationInMillis(String quality) { if (VIDEO_QUALITY_MMS.equals(quality)) { return MMS_VIDEO_DURATION * 1000; diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index 2c59c2aa1..e60f4c419 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -2588,7 +2588,7 @@ public class PhotoModule /** This can run on a background thread, so don't do UI updates here. Post any view updates to MainHandler or do it on onPreviewStarted() . */ private void startPreview() { - if (mPaused || mCameraDevice == null) { + if (mPaused || mCameraDevice == null || mParameters == null) { return; } diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java index 5bec8ef14..e66d529b3 100644 --- a/src/com/android/camera/VideoModule.java +++ b/src/com/android/camera/VideoModule.java @@ -770,11 +770,11 @@ public class VideoModule implements CameraModule, String videoQuality = mPreferences.getString(CameraSettings.KEY_VIDEO_QUALITY, null); if (videoQuality == null) { - mParameters = mCameraDevice.getParameters(); + mParameters = mCameraDevice.getParameters(); String defaultQuality = mActivity.getResources().getString( R.string.pref_video_quality_default); boolean hasProfile = CamcorderProfile.hasProfile( - Integer.parseInt(defaultQuality)); + CameraSettings.VIDEO_QUALITY_TABLE.get(defaultQuality)); if (hasProfile == true){ videoQuality = defaultQuality; } else { @@ -784,7 +784,7 @@ public class VideoModule implements CameraModule, } mPreferences.edit().putString(CameraSettings.KEY_VIDEO_QUALITY, videoQuality); } - int quality = Integer.valueOf(videoQuality); + int quality = CameraSettings.VIDEO_QUALITY_TABLE.get(videoQuality); // Set video quality. Intent intent = mActivity.getIntent(); |