liyujie
2025-08-28 786ff4f4ca2374bdd9177f2e24b503d43e7a3b93
android/packages/apps/Camera2/src/com/android/camera/settings/ResolutionSetting.java
old mode 100755new mode 100644
....@@ -144,7 +144,6 @@
144144 pictureSize.width() > 0 && pictureSize.height() > 0;
145145
146146 if (!isPictureSizeSettingSet || isPictureSizeBlacklisted || !isPictureSizeFromSettingsValid) {
147
- final Rational aspectRatio = ResolutionUtil.ASPECT_RATIO_4x3;
148147
149148 OneCameraCharacteristics cameraCharacteristics =
150149 mOneCameraManager.getOneCameraCharacteristics(cameraId);
....@@ -153,8 +152,25 @@
153152 ResolutionUtil.filterBlackListedSizes(
154153 cameraCharacteristics.getSupportedPictureSizes(ImageFormat.JPEG),
155154 blacklist);
156
- final Size fallbackPictureSize =
157
- ResolutionUtil.getLargestPictureSize(aspectRatio, supportedPictureSizes);
155
+ for (Size size: supportedPictureSizes) {
156
+ Log.v(TAG, "supportedPictureSizes size w = " + size.getWidth() +" h = " + size.getHeight());
157
+ }
158
+
159
+ //provide 4x3 and 16x9 selections, compare them and choose larger one.
160
+ //The chosen size must achieve 16bit aligned requirement.
161
+ Size fallbackPictureSize;
162
+ Size LargestPictureSize_4x3 =
163
+ ResolutionUtil.getLargestPictureSize(ResolutionUtil.ASPECT_RATIO_4x3,
164
+ supportedPictureSizes);
165
+ Size LargestPictureSize_16x9 =
166
+ ResolutionUtil.getLargestPictureSize(ResolutionUtil.ASPECT_RATIO_16x9,
167
+ supportedPictureSizes);
168
+ if (LargestPictureSize_4x3.getWidth() > LargestPictureSize_16x9.getWidth()) {
169
+ fallbackPictureSize = LargestPictureSize_4x3;
170
+ } else {
171
+ fallbackPictureSize = LargestPictureSize_16x9;
172
+ }
173
+
158174 mSettingsManager.set(
159175 SettingsManager.SCOPE_GLOBAL,
160176 pictureSizeSettingKey,