summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values/arrays.xml71
-rw-r--r--res/values/qcomstrings.xml2
-rw-r--r--res/xml/camera_preferences.xml6
-rw-r--r--res/xml/video_preferences.xml4
-rw-r--r--src/com/android/camera/CameraSettings.java17
-rw-r--r--src/com/android/camera/VideoMenu.java3
-rw-r--r--src/com/android/camera/VideoModule.java27
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);
}