summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorByunghun Jeon <bjeon@codeaurora.org>2015-10-06 14:50:11 -0700
committerJaimin Bhise <jbhise@codeaurora.org>2015-10-29 14:04:57 -0700
commit7a123a775778e72c208ad214858ea8d448d1538e (patch)
tree6ee72848f779a1fdb2571aa81863be7ff08425b0
parent454942261d26f4babd064f0c3e8459670abbab4a (diff)
downloadandroid_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.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);
}