diff options
author | Byunghun Jeon <bjeon@codeaurora.org> | 2015-10-06 14:50:11 -0700 |
---|---|---|
committer | Jaimin Bhise <jbhise@codeaurora.org> | 2015-10-29 14:04:57 -0700 |
commit | 7a123a775778e72c208ad214858ea8d448d1538e (patch) | |
tree | 6ee72848f779a1fdb2571aa81863be7ff08425b0 | |
parent | 454942261d26f4babd064f0c3e8459670abbab4a (diff) | |
download | android_packages_apps_Snap-7a123a775778e72c208ad214858ea8d448d1538e.tar.gz android_packages_apps_Snap-7a123a775778e72c208ad214858ea8d448d1538e.tar.bz2 android_packages_apps_Snap-7a123a775778e72c208ad214858ea8d448d1538e.zip |
SnapdragonCamera: add video snapshot size option
Add developer option to choose video snapshot size.
The "Auto" option will revert back to old behavior of
choosing the largest size with the same aspect ratio
as the preview.
Change-Id: Ice68aef1963c1199d30e1edde4cccf7203f8fbbf
-rw-r--r-- | res/values/arrays.xml | 71 | ||||
-rw-r--r-- | res/values/qcomstrings.xml | 2 | ||||
-rw-r--r-- | res/xml/camera_preferences.xml | 6 | ||||
-rw-r--r-- | res/xml/video_preferences.xml | 4 | ||||
-rw-r--r-- | src/com/android/camera/CameraSettings.java | 17 | ||||
-rw-r--r-- | src/com/android/camera/VideoMenu.java | 3 | ||||
-rw-r--r-- | src/com/android/camera/VideoModule.java | 27 |
7 files changed, 107 insertions, 23 deletions
diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 476bd2084..0d93cffab 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -238,6 +238,77 @@ <item>176x144</item> </string-array> + <!-- Camera Preferences video snapshot size dialog box entries --> + <string-array name="pref_camera_video_snapsize_entries" translatable="false"> + <item>Auto</item> + <item>@string/pref_camera_picturesize_entry_21mp</item> + <item>@string/pref_camera_picturesize_entry_16mp</item> + <item>@string/pref_camera_picturesize_entry_16mp_wide</item> + <item>@string/pref_camera_picturesize_entry_13mp</item> + <item>@string/pref_camera_picturesize_entry_12mp</item> + <item>@string/pref_camera_picturesize_entry_8mp</item> + <item>@string/pref_camera_picturesize_entry_8mp</item> + <item>@string/pref_camera_picturesize_entry_square</item> + <item>@string/pref_camera_picturesize_entry_5mp</item> + <item>@string/pref_camera_picturesize_entry_5mp</item> + <item>@string/pref_camera_picturesize_entry_5mp</item> + <item>@string/pref_camera_picturesize_entry_4mp_wide</item> + <item>@string/pref_camera_picturesize_entry_3mp</item> + <item>@string/pref_camera_picturesize_entry_3mp</item> + <item>@string/pref_camera_picturesize_entry_1920x1080</item> + <item>@string/pref_camera_picturesize_entry_2mp</item> + <item>@string/pref_camera_picturesize_entry_2mp_wide</item> + <item>@string/pref_camera_picturesize_entry_1_5mp</item> + <item>@string/pref_camera_picturesize_entry_1_3mp</item> + <item>@string/pref_camera_picturesize_entry_1280x768</item> + <item>@string/pref_camera_picturesize_entry_1280x720</item> + <item>@string/pref_camera_picturesize_entry_1mp</item> + <item>@string/pref_camera_picturesize_entry_800x600</item> + <item>@string/pref_camera_picturesize_entry_800x480</item> + <item>960 x 720</item> + <item>720 x 480</item> + <item>@string/pref_camera_picturesize_entry_vga</item> + <item>@string/pref_camera_picturesize_entry_352x288</item> + <item>@string/pref_camera_picturesize_entry_qvga</item> + <item>@string/pref_camera_picturesize_entry_176x144</item> + </string-array> + + <!-- default is auto, which calculates largest snapshot + size with same aspect ratio as preview. --> + <string-array name="pref_camera_video_snapsize_entryvalues" translatable="false"> + <item>auto</item> + <item>5344x4008</item> + <item>4608x3456</item> + <item>5312x2988</item> + <item>4160x3120</item> + <item>4000x3000</item> + <item>3840x2160</item> + <item>3264x2448</item> + <item>2976x2976</item> + <item>2592x1944</item> + <item>2592x1936</item> + <item>2560x1920</item> + <item>2688x1512</item> + <item>2048x1536</item> + <item>2048x1520</item> + <item>1920x1080</item> + <item>1600x1200</item> + <item>1920x1088</item> + <item>1440x1080</item> + <item>1280x960</item> + <item>1280x768</item> + <item>1280x720</item> + <item>1024x768</item> + <item>800x600</item> + <item>800x480</item> + <item>960x720</item> + <item>720x480</item> + <item>640x480</item> + <item>352x288</item> + <item>320x240</item> + <item>176x144</item> + </string-array> + <!-- Camera Preferences focus mode dialog box entries --> <string-array name="pref_camera_focusmode_entries" translatable="false"> <item>@string/pref_camera_focusmode_entry_auto</item> diff --git a/res/values/qcomstrings.xml b/res/values/qcomstrings.xml index 5f0fbbea6..48c043af9 100644 --- a/res/values/qcomstrings.xml +++ b/res/values/qcomstrings.xml @@ -798,7 +798,7 @@ <!-- Toast showing error if invalid size selected for time lapse [CHAR LIMIT=65] --> <string name="time_lapse_error">Invalid video-size for time-lapse recording.</string> - <string name="pref_camera_videosnapsize_default" translatable="false">1920x1080</string> + <string name="pref_camera_videosnapsize_default" translatable="false">auto</string> <!-- longshot value --> <string name="pref_camera_longshot_default" translatable="false">off</string> diff --git a/res/xml/camera_preferences.xml b/res/xml/camera_preferences.xml index caf2a93d7..8d101c71e 100644 --- a/res/xml/camera_preferences.xml +++ b/res/xml/camera_preferences.xml @@ -289,12 +289,6 @@ camera:singleIcon="@drawable/ic_settings_storage" camera:entryValues="@array/pref_camera_savepath_entryvalues" /> <ListPreference - camera:key="pref_camera_videosnapsize_key" - camera:title="@string/pref_camera_picturesize_title" - camera:defaultValue="@string/pref_camera_videosnapsize_default" - camera:entries="@array/pref_camera_picturesize_entries" - camera:entryValues="@array/pref_camera_picturesize_entryvalues" /> - <ListPreference camera:key="pref_camera_advanced_features_key" camera:defaultValue="@string/pref_camera_advanced_feature_default" camera:title="@string/pref_camera_advanced_features_title" diff --git a/res/xml/video_preferences.xml b/res/xml/video_preferences.xml index 1937e3e3a..63346a0d1 100644 --- a/res/xml/video_preferences.xml +++ b/res/xml/video_preferences.xml @@ -154,8 +154,8 @@ camera:key="pref_camera_videosnapsize_key" camera:defaultValue="@string/pref_camera_videosnapsize_default" camera:title="@string/pref_camera_picturesize_title" - camera:entries="@array/pref_camera_picturesize_entries" - camera:entryValues="@array/pref_camera_picturesize_entryvalues" /> + camera:entries="@array/pref_camera_video_snapsize_entries" + camera:entryValues="@array/pref_camera_video_snapsize_entryvalues" /> <IconListPreference camera:key="pref_camera_savepath_key" camera:defaultValue="@string/pref_camera_savepath_default" diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java index 7605f65f6..80115b238 100644 --- a/src/com/android/camera/CameraSettings.java +++ b/src/com/android/camera/CameraSettings.java @@ -570,6 +570,14 @@ public class CameraSettings { return split(str); } + // add auto as a valid video snapshot size. + public static List<String> getSupportedVideoSnapSizes(Parameters params) { + List<String> sizes = sizeListToStringList(params.getSupportedPictureSizes()); + sizes.add(0, "auto"); + + return sizes; + } + // Splits a comma delimited string to an ArrayList of String. // Return null if the passing string is null or the size is 0. private static ArrayList<String> split(String str) { @@ -741,12 +749,9 @@ public class CameraSettings { autoExposure, mParameters.getSupportedAutoexposure()); } - if (!mParameters.isPowerModeSupported()){ - filterUnsupportedOptions(group, - videoSnapSize, null); - } else { - filterUnsupportedOptions(group, videoSnapSize, sizeListToStringList( - mParameters.getSupportedPictureSizes())); + if(videoSnapSize != null) { + filterUnsupportedOptions(group, videoSnapSize, getSupportedVideoSnapSizes(mParameters)); + filterSimilarPictureSize(group, videoSnapSize); } if (histogram!= null) { diff --git a/src/com/android/camera/VideoMenu.java b/src/com/android/camera/VideoMenu.java index 622d7654a..3d45bd169 100644 --- a/src/com/android/camera/VideoMenu.java +++ b/src/com/android/camera/VideoMenu.java @@ -134,7 +134,8 @@ public class VideoMenu extends MenuController CameraSettings.KEY_POWER_MODE, CameraSettings.KEY_VIDEO_ROTATION, CameraSettings.KEY_VIDEO_CDS_MODE, - CameraSettings.KEY_VIDEO_TNR_MODE + CameraSettings.KEY_VIDEO_TNR_MODE, + CameraSettings.KEY_VIDEO_SNAPSHOT_SIZE }; mFrontBackSwitcher.setVisibility(View.INVISIBLE); initSwitchItem(CameraSettings.KEY_CAMERA_ID, mFrontBackSwitcher); diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java index 42e2d3f9f..8cb372f5e 100644 --- a/src/com/android/camera/VideoModule.java +++ b/src/com/android/camera/VideoModule.java @@ -2477,13 +2477,26 @@ public class VideoModule implements CameraModule, // The logic here is different from the logic in still-mode camera. // There we determine the preview size based on the picture size, but // here we determine the picture size based on the preview size. - List<Size> supported = mParameters.getSupportedPictureSizes(); - Size optimalSize = CameraUtil.getOptimalVideoSnapshotPictureSize(supported, - (double) mDesiredPreviewWidth / mDesiredPreviewHeight); - Size original = mParameters.getPictureSize(); - if (!original.equals(optimalSize)) { - mParameters.setPictureSize(optimalSize.width, optimalSize.height); + String videoSnapshotSize = mPreferences.getString( + CameraSettings.KEY_VIDEO_SNAPSHOT_SIZE, + mActivity.getString(R.string.pref_camera_videosnapsize_default)); + Size optimalSize; + if(videoSnapshotSize.equals("auto")) { + List<Size> supported = mParameters.getSupportedPictureSizes(); + optimalSize = CameraUtil.getOptimalVideoSnapshotPictureSize(supported, + (double) mDesiredPreviewWidth / mDesiredPreviewHeight); + Size original = mParameters.getPictureSize(); + if (!original.equals(optimalSize)) { + mParameters.setPictureSize(optimalSize.width, optimalSize.height); + } + } else { + CameraSettings.setCameraPictureSize( + videoSnapshotSize, + mParameters.getSupportedPictureSizes(), + mParameters); + optimalSize = mParameters.getPictureSize(); } + Log.v(TAG, "Video snapshot size is " + optimalSize.width + "x" + optimalSize.height); @@ -2494,7 +2507,7 @@ public class VideoModule implements CameraModule, List<Size> sizes = mParameters.getSupportedJpegThumbnailSizes(); optimalSize = CameraUtil.getOptimalJpegThumbnailSize(sizes, (double) size.width / size.height); - original = mParameters.getJpegThumbnailSize(); + Size original = mParameters.getJpegThumbnailSize(); if (!original.equals(optimalSize)) { mParameters.setJpegThumbnailSize(optimalSize.width, optimalSize.height); } |