diff options
-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); } |