diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2018-11-12 22:46:36 -0800 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-11-12 22:46:36 -0800 |
commit | e9aabb7cafb7d22063af963aeaf8c0fe0e9a2294 (patch) | |
tree | 6eb6a70d442a8f9bc093477122897e1f24979519 /src | |
parent | 643321227dad78528486fd26e89cb4fb54d31260 (diff) | |
parent | 9ba7011686b5936261e0695751ff5c8109808779 (diff) | |
download | android_packages_apps_Snap-e9aabb7cafb7d22063af963aeaf8c0fe0e9a2294.tar.gz android_packages_apps_Snap-e9aabb7cafb7d22063af963aeaf8c0fe0e9a2294.tar.bz2 android_packages_apps_Snap-e9aabb7cafb7d22063af963aeaf8c0fe0e9a2294.zip |
Merge "SnapdraongCamera:HEIF surface mode" into camera-SnapdragonCamera.lnx.2.0
Diffstat (limited to 'src')
-rwxr-xr-x | src/com/android/camera/CaptureModule.java | 34 | ||||
-rwxr-xr-x | src/com/android/camera/Storage.java | 7 |
2 files changed, 33 insertions, 8 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index f1cc72ed7..f66cd5b35 100755 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -2179,12 +2179,14 @@ public class CaptureModule implements CameraModule, PhotoController, NamedEntity name = mNamedImages.getNextNameEntity(); String title = (name == null) ? null : name.title; long date = (name == null) ? -1 : name.date; - String path = Storage.generateFilepath(title, "heif"); + String pictureFormat = mLongshotActive? "heifs":"heif"; + String path = Storage.generateFilepath(title, pictureFormat); String value = mSettingsManager.getValue(SettingsManager.KEY_JPEG_QUALITY); int quality = getQualityNumber(value); int orientation = CameraUtil.getJpegRotation(id,mOrientation); + int imageCount = mLongshotActive? MAX_IMAGEREADERS*2 : 1; HeifWriter writer = createHEIFEncoder(path,mPictureSize.getWidth(),mPictureSize.getHeight(), - orientation,quality); + orientation,imageCount,quality); if (writer != null) { mHeifImage = new HeifImage(writer,path,title,date,orientation,quality); Surface input = writer.getInputSurface(); @@ -2312,6 +2314,24 @@ public class CaptureModule implements CameraModule, PhotoController, @Override public void onCaptureSequenceCompleted(CameraCaptureSession session, int sequenceId, long frameNumber) { + if (mSettingsManager.getSavePictureFormat() == SettingsManager.HEIF_FORMAT) { + if (mHeifImage != null) { + try { + mHeifOutput.removeSurface(mHeifImage.getInputSurface()); + session.updateOutputConfiguration(mHeifOutput); + mHeifImage.getWriter().stop(3000); + mHeifImage.getWriter().close(); + mActivity.getMediaSaveService().addHEIFImage(mHeifImage.getPath(), + mHeifImage.getTitle(),mHeifImage.getDate(),null,mPictureSize.getWidth(),mPictureSize.getHeight(), + mHeifImage.getOrientation(),null,mContentResolver,mOnMediaSavedListener,mHeifImage.getQuality(),"heifs"); + mHeifImage = null; + } catch (TimeoutException | IllegalStateException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } if(mLongshotActive) { captureStillPicture(getMainCameraId()); } else { @@ -2423,7 +2443,7 @@ public class CaptureModule implements CameraModule, PhotoController, int quality = getQualityNumber(value); int orientation = CameraUtil.getJpegRotation(id,mOrientation); HeifWriter writer = createHEIFEncoder(path,mVideoSize.getWidth(), - mVideoSize.getHeight(), orientation,quality); + mVideoSize.getHeight(),orientation,1,quality); if (writer != null) { mLiveShotImage = new HeifImage(writer,path,title,date,orientation,quality); Surface input = writer.getInputSurface(); @@ -2550,7 +2570,7 @@ public class CaptureModule implements CameraModule, PhotoController, mInitHeifWriter.close(); } mInitHeifWriter = createHEIFEncoder(tmpPath, mPictureSize.getWidth(), - mPictureSize.getHeight(), 0, 85); + mPictureSize.getHeight(), 0,1, 85); } for (int i = 0; i < cameraIdList.length; i++) { String cameraId = cameraIdList[i]; @@ -2693,13 +2713,13 @@ public class CaptureModule implements CameraModule, PhotoController, } public static HeifWriter createHEIFEncoder(String path, int width, int height, - int orientation, int quality) { + int orientation, int imageCount, int quality) { HeifWriter heifWriter = null; try { HeifWriter.Builder builder = new HeifWriter.Builder(path, width, height, HeifWriter.INPUT_MODE_SURFACE); builder.setQuality(quality); - builder.setMaxImages(1); + builder.setMaxImages(imageCount); builder.setPrimaryIndex(0); builder.setRotation(orientation); builder.setGridEnabled(true); @@ -2719,7 +2739,7 @@ public class CaptureModule implements CameraModule, PhotoController, if (mSettingsManager.getSavePictureFormat() == SettingsManager.HEIF_FORMAT) { String tmpPath = mActivity.getCacheDir().getPath() + "/" + "liveshot_heif.tmp"; mLiveShotInitHeifWriter = createHEIFEncoder(tmpPath,mVideoSize.getWidth(), - mVideoSize.getHeight(),0, 85); + mVideoSize.getHeight(),0, 1,85); return; } mVideoSnapshotImageReader = ImageReader.newInstance(mVideoSnapshotSize.getWidth(), diff --git a/src/com/android/camera/Storage.java b/src/com/android/camera/Storage.java index 65b700fe2..1f5671c97 100755 --- a/src/com/android/camera/Storage.java +++ b/src/com/android/camera/Storage.java @@ -146,6 +146,8 @@ public class Storage { if (mimeType.equalsIgnoreCase("heif")){ values.put(ImageColumns.DISPLAY_NAME, title + ".heic"); + } else if(mimeType.equalsIgnoreCase("heifs")){ + values.put(ImageColumns.DISPLAY_NAME, title + ".heics"); } else { values.put(ImageColumns.DISPLAY_NAME, title + ".jpg"); } @@ -271,10 +273,13 @@ public class Storage { public static String generateFilepath(String title, String pictureFormat) { if (pictureFormat == null || pictureFormat.equalsIgnoreCase("jpeg") - || pictureFormat.equalsIgnoreCase("heif")) { + || pictureFormat.equalsIgnoreCase("heif") + || pictureFormat.equalsIgnoreCase("heifs")) { String suffix = ".jpg"; if (pictureFormat.equalsIgnoreCase("heif")) { suffix = ".heic"; + }else if(pictureFormat.equalsIgnoreCase("heifs")) { + suffix = ".heics"; } if (isSaveSDCard() && SDCard.instance().isWriteable()) { return SDCard.instance().getDirectory() + '/' + title + suffix; |