diff options
Diffstat (limited to 'src/org/codeaurora/snapcam/filter')
-rw-r--r-- | src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java | 75 | ||||
-rw-r--r-- | src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java | 6 |
2 files changed, 40 insertions, 41 deletions
diff --git a/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java b/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java index c33726322..bafbbb8eb 100644 --- a/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java +++ b/src/org/codeaurora/snapcam/filter/ClearSightImageProcessor.java @@ -30,7 +30,6 @@ package org.codeaurora.snapcam.filter; import java.io.ByteArrayOutputStream; -import java.io.File; import java.nio.ByteBuffer; import java.util.ArrayDeque; import java.util.ArrayList; @@ -69,7 +68,6 @@ import com.android.camera.MediaSaveService; import com.android.camera.MediaSaveService.OnMediaSavedListener; import com.android.camera.PhotoModule.NamedImages; import com.android.camera.PhotoModule.NamedImages.NamedEntity; -import com.android.camera.SDCard; import com.android.camera.Storage; public class ClearSightImageProcessor { @@ -353,6 +351,7 @@ public class ClearSightImageProcessor { private ArrayDeque<Image> mMonoImages = new ArrayDeque<Image>( mNumBurstCount); private ReprocessableImage mClearSightFrame; + private NamedEntity mNamedEntity; private int[] mNumImagesToProcess = new int[NUM_CAM]; private ProcessState mState = ProcessState.IDLE; @@ -491,6 +490,10 @@ public class ClearSightImageProcessor { mCallback.onClearSightFailure(); return; } else { + // Generate filename + mNamedImages.nameNewImage(System.currentTimeMillis()); + mNamedEntity = mNamedImages.getNextNameEntity(); + int frameCount = Math.min(mMonoFrames.size(), mBayerFrames.size()); sendReprocessRequests(CAM_TYPE_BAYER, frameCount); sendReprocessRequests(CAM_TYPE_MONO, frameCount); @@ -587,10 +590,12 @@ public class ClearSightImageProcessor { Log.d(TAG, "reprocess - processNewImg"); if(mDumpImages) { - saveDebugImageAsJpeg(mMediaSaveService, image, isBayer); - if(mDumpYUV) { - saveDebugImageAsNV21(image, isBayer); - } + saveDebugImageAsJpeg(mMediaSaveService, image, isBayer, mNamedEntity, + ClearSightNativeEngine.getInstance().getImageCount(isBayer)); + } + if(mDumpYUV) { + saveDebugImageAsNV21(image, isBayer, mNamedEntity, + ClearSightNativeEngine.getInstance().getImageCount(isBayer)); } if (!ClearSightNativeEngine.getInstance() @@ -664,11 +669,12 @@ public class ClearSightImageProcessor { ClearSightNativeEngine.getInstance().reset(); mClearSightFrame = null; mState = ProcessState.IDLE; + mNamedEntity = null; } private void sendEncodeRequests() { mImageEncodeHandler.obtainMessage( - MSG_START_CAPTURE, (mClearSightFrame != null)?1:0, 0).sendToTarget(); + MSG_START_CAPTURE, (mClearSightFrame != null)?1:0, 0, mNamedEntity).sendToTarget(); // First Mono CameraCaptureSession session = mCaptureSessions[CAM_TYPE_MONO]; @@ -745,6 +751,7 @@ public class ClearSightImageProcessor { private Image mMonoImage; private Image mBayerImage; private Image mClearSightImage; + private NamedEntity mNamedEntity; public ImageEncodeHandler(Looper looper) { super(looper); @@ -755,6 +762,7 @@ public class ClearSightImageProcessor { switch (msg.what) { case MSG_START_CAPTURE: mClearsightEncode = (msg.arg1 == 1); + mNamedEntity = (NamedEntity) msg.obj; break; case MSG_NEW_IMG: case MSG_NEW_RESULT: @@ -786,10 +794,8 @@ public class ClearSightImageProcessor { } private void saveMpoImage() { - mNamedImages.nameNewImage(System.currentTimeMillis()); - NamedEntity name = mNamedImages.getNextNameEntity(); - String title = (name == null) ? null : name.title; - long date = (name == null) ? -1 : name.date; + String title = (mNamedEntity == null) ? null : mNamedEntity.title; + long date = (mNamedEntity == null) ? -1 : mNamedEntity.date; int width = mBayerImage.getWidth(); int height = mBayerImage.getHeight(); @@ -813,63 +819,52 @@ public class ClearSightImageProcessor { mClearSightImage.close(); mClearSightImage = null; } + mNamedEntity = null; } } public void saveDebugImageAsJpeg(MediaSaveService service, byte[] data, - int width, int height, boolean isBayer) { - mNamedImages.nameNewImage(System.currentTimeMillis()); - NamedEntity name = mNamedImages.getNextNameEntity(); - String title = (name == null) ? null : name.title; - long date = (name == null) ? -1 : name.date; - - if (isBayer) { - title += "_bayer"; - } else { - title += "_mono"; - } + int width, int height, boolean isBayer, NamedEntity namedEntity, int count) { + String type = isBayer?"bayer":"mono"; + long date = (namedEntity == null) ? -1 : namedEntity.date; + String title = String.format("%s_%s_%02d", namedEntity.title, type, count); service.addImage(data, title, date, null, width, height, 0, null, null, service.getContentResolver(), "jpeg"); } - public void saveDebugImageAsJpeg(MediaSaveService service, YuvImage image, boolean isBayer) { + public void saveDebugImageAsJpeg(MediaSaveService service, YuvImage image, boolean isBayer, + NamedEntity namedEntity, int count) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); image.compressToJpeg( new Rect(0, 0, image.getWidth(), image.getHeight()), 100, baos); saveDebugImageAsJpeg(service, baos.toByteArray(), image.getWidth(), image.getHeight(), - isBayer); + isBayer, namedEntity, count); } - public void saveDebugImageAsJpeg(MediaSaveService service, Image image, boolean isBayer) { + public void saveDebugImageAsJpeg(MediaSaveService service, Image image, boolean isBayer, + NamedEntity namedEntity, int count) { if(image.getFormat() == ImageFormat.YUV_420_888) - saveDebugImageAsJpeg(service, createYuvImage(image), isBayer); + saveDebugImageAsJpeg(service, createYuvImage(image), isBayer, namedEntity, count); else if (image.getFormat() == ImageFormat.JPEG) { - saveDebugImageAsJpeg(service, getJpegData(image), image.getWidth(), image.getHeight(), isBayer); + saveDebugImageAsJpeg(service, getJpegData(image), image.getWidth(), image.getHeight(), + isBayer, namedEntity, count); } } - public void saveDebugImageAsNV21(Image image, boolean isBayer) { + public void saveDebugImageAsNV21(Image image, boolean isBayer, NamedEntity namedEntity, int count) { if(image.getFormat() != ImageFormat.YUV_420_888) { Log.d(TAG, "saveDebugImageAsNV21 - invalid param"); } - mNamedImages.nameNewImage(System.currentTimeMillis()); - NamedEntity name = mNamedImages.getNextNameEntity(); - StringBuilder pathSB = (name == null) ? new StringBuilder() : new StringBuilder(name.title); - pathSB.append("_" + image.getWidth() + "x" + image.getHeight()); - pathSB.append("_NV21"); - - if (isBayer) { - pathSB.append("_bayer"); - } else { - pathSB.append("_mono"); - } + String type = isBayer?"bayer":"mono"; + String title = String.format("%s_%dx%d_NV21_%s_%02d", namedEntity.title, + image.getWidth(), image.getHeight(), type, count); YuvImage yuv = createYuvImage(image); - String path = Storage.generateFilepath(pathSB.toString(), "yuv"); + String path = Storage.generateFilepath(title, "yuv"); Storage.writeFile(path, yuv.getYuvData(), null, "yuv"); } diff --git a/src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java b/src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java index 0fc23f1bf..f2793c822 100644 --- a/src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java +++ b/src/org/codeaurora/snapcam/filter/ClearSightNativeEngine.java @@ -157,7 +157,11 @@ public class ClearSightNativeEngine { } public boolean hasReferenceImage(boolean color) { - return !(color ? mSrcColor.isEmpty() : mSrcMono.isEmpty()); + return (getImageCount(color) > 0); + } + + public int getImageCount(boolean color) { + return color ? mSrcColor.size() : mSrcMono.size(); } public Image getReferenceImage(boolean color) { |