diff options
Diffstat (limited to 'src/com/android/camera/MediaSaveService.java')
-rw-r--r-- | src/com/android/camera/MediaSaveService.java | 59 |
1 files changed, 19 insertions, 40 deletions
diff --git a/src/com/android/camera/MediaSaveService.java b/src/com/android/camera/MediaSaveService.java index 3c5dbe586..58ebc11b4 100644 --- a/src/com/android/camera/MediaSaveService.java +++ b/src/com/android/camera/MediaSaveService.java @@ -16,7 +16,6 @@ package com.android.camera; -import java.io.ByteArrayOutputStream; import java.io.File; import java.nio.ByteOrder; @@ -25,9 +24,6 @@ import android.content.ContentResolver; import android.content.ContentValues; import android.content.Intent; import android.graphics.BitmapFactory; -import android.graphics.Rect; -import android.graphics.YuvImage; -import android.hardware.camera2.TotalCaptureResult; import android.location.Location; import android.net.Uri; import android.os.AsyncTask; @@ -36,13 +32,7 @@ import android.os.IBinder; import android.provider.MediaStore.Video; import android.util.Log; -import com.android.camera.PhotoModule; import com.android.camera.exif.ExifInterface; - -import java.io.File; - -import org.codeaurora.snapcam.filter.ClearSightNativeEngine.ClearsightImage; - import com.android.camera.mpo.MpoData; import com.android.camera.mpo.MpoImageData; import com.android.camera.mpo.MpoInterface; @@ -99,9 +89,9 @@ public class MediaSaveService extends Service { return (mMemoryUse >= SAVE_TASK_MEMORY_LIMIT); } - public void addMpoImage(final ClearsightImage csImage, - final YuvImage bayerImg, final YuvImage monoImg, - TotalCaptureResult bayerResult, TotalCaptureResult monoResult, + public void addMpoImage(final byte[] csImage, + final byte[] bayerImg, final byte[] monoImg, + int width, int height, String title, long date, Location loc, int orientation, OnMediaSavedListener l, ContentResolver resolver, String pictureFormat) { @@ -111,12 +101,12 @@ public class MediaSaveService extends Service { } MpoSaveTask t = new MpoSaveTask(csImage, bayerImg, monoImg, - bayerResult, monoResult, title, date, loc, orientation, l, + width, height, title, date, loc, orientation, l, resolver, pictureFormat); long size = (csImage == null ? 0 - : csImage.getDataLength()) - + bayerImg.getYuvData().length + monoImg.getYuvData().length; + : csImage.length) + + bayerImg.length + monoImg.length; mMemoryUse += size; if (isQueueFull()) { onQueueFull(); @@ -179,23 +169,20 @@ public class MediaSaveService extends Service { } private class MpoSaveTask extends AsyncTask<Void, Void, Uri> { - private ClearsightImage csImage; - private YuvImage bayerImage; - private YuvImage monoImage; + private byte[] csImage; + private byte[] bayerImage; + private byte[] monoImage; private String title; private long date; private Location loc; private int width, height; private int orientation; - private TotalCaptureResult bayerResult; - private TotalCaptureResult monoResult; private ContentResolver resolver; private OnMediaSavedListener listener; private String pictureFormat; - public MpoSaveTask(ClearsightImage csImage, YuvImage bayerImg, - YuvImage monoImg, TotalCaptureResult bayerResult, - TotalCaptureResult monoResult, String title, long date, + public MpoSaveTask(byte[] csImage, byte[] bayerImg, + byte[] monoImg, int width, int height, String title, long date, Location loc, int orientation, OnMediaSavedListener listener, ContentResolver resolver, String pictureFormat) { this.csImage = csImage; @@ -204,11 +191,9 @@ public class MediaSaveService extends Service { this.title = title; this.date = date; this.loc = loc; - this.width = bayerImg.getWidth(); - this.height = bayerImg.getHeight(); + this.width = width; + this.height = height; this.orientation = orientation; - this.bayerResult = bayerResult; - this.monoResult = monoResult; this.resolver = resolver; this.listener = listener; this.pictureFormat = pictureFormat; @@ -218,23 +203,17 @@ public class MediaSaveService extends Service { protected Uri doInBackground(Void... v) { // encode jpeg and add exif for all images MpoData mpo = new MpoData(); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - bayerImage.compressToJpeg(new Rect(0, 0, bayerImage.getWidth(), - bayerImage.getHeight()), 100, baos); - MpoImageData bayer = new MpoImageData(baos.toByteArray(), + MpoImageData bayer = new MpoImageData(bayerImage, ByteOrder.BIG_ENDIAN); - baos.reset(); - monoImage.compressToJpeg(new Rect(0, 0, monoImage.getWidth(), - monoImage.getHeight()), 100, baos); - MpoImageData mono = new MpoImageData(baos.toByteArray(), + MpoImageData mono = new MpoImageData(monoImage, ByteOrder.BIG_ENDIAN); if (csImage == null) { mpo.addAuxiliaryMpoImage(mono); mpo.setPrimaryMpoImage(bayer); } else { - MpoImageData cs = new MpoImageData(csImage.compressToJpeg(), + MpoImageData cs = new MpoImageData(csImage, ByteOrder.BIG_ENDIAN); mpo.addAuxiliaryMpoImage(bayer); @@ -260,9 +239,9 @@ public class MediaSaveService extends Service { listener.onMediaSaved(uri); boolean previouslyFull = isQueueFull(); long size = (csImage == null ? 0 - : csImage.getDataLength()) - + bayerImage.getYuvData().length - + monoImage.getYuvData().length; + : csImage.length) + + bayerImage.length + + monoImage.length; mMemoryUse -= size; if (isQueueFull() != previouslyFull) onQueueAvailable(); |