summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2018-11-12 22:46:36 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2018-11-12 22:46:36 -0800
commite9aabb7cafb7d22063af963aeaf8c0fe0e9a2294 (patch)
tree6eb6a70d442a8f9bc093477122897e1f24979519 /src
parent643321227dad78528486fd26e89cb4fb54d31260 (diff)
parent9ba7011686b5936261e0695751ff5c8109808779 (diff)
downloadandroid_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-xsrc/com/android/camera/CaptureModule.java34
-rwxr-xr-xsrc/com/android/camera/Storage.java7
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;