summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/MosaicPreviewRenderer.java
diff options
context:
space:
mode:
authorJay Wang <jaywang@codeaurora.org>2014-12-26 18:10:22 -0800
committerByunghun Jeon <bjeon@codeaurora.org>2015-02-09 20:00:21 -0800
commit30b2309e7c40a46ea9506344c25b58c9e8ce8dde (patch)
treefde7703eb9feb2d676b522dfb2bf8c3d0b78b144 /src/com/android/camera/MosaicPreviewRenderer.java
parent5e266938aac08975bbe198915adda22cc59ffebe (diff)
downloadandroid_packages_apps_Snap-30b2309e7c40a46ea9506344c25b58c9e8ce8dde.tar.gz
android_packages_apps_Snap-30b2309e7c40a46ea9506344c25b58c9e8ce8dde.tar.bz2
android_packages_apps_Snap-30b2309e7c40a46ea9506344c25b58c9e8ce8dde.zip
SnapdragonCamera: Add FullScreen Preview when in Panoramic shoot
Changed the Panoramic preview to full screen Resized the warped preview image to smaller Size and render on top of the full screen preview image Warped preview image can be turned on/off Change-Id: I859839542ce94c5f70d7fe7983e93b5e9534b415
Diffstat (limited to 'src/com/android/camera/MosaicPreviewRenderer.java')
-rw-r--r--src/com/android/camera/MosaicPreviewRenderer.java40
1 files changed, 32 insertions, 8 deletions
diff --git a/src/com/android/camera/MosaicPreviewRenderer.java b/src/com/android/camera/MosaicPreviewRenderer.java
index 42da4d9e7..ba35b6f5a 100644
--- a/src/com/android/camera/MosaicPreviewRenderer.java
+++ b/src/com/android/camera/MosaicPreviewRenderer.java
@@ -34,6 +34,7 @@ public class MosaicPreviewRenderer {
private int mHeight; // height of the view in UI
private boolean mIsLandscape = true;
+ private int mOrientation = 0;
private final float[] mTransformMatrix = new float[16];
private ConditionVariable mEglThreadBlockVar = new ConditionVariable();
@@ -43,13 +44,15 @@ public class MosaicPreviewRenderer {
private SurfaceTexture mInputSurfaceTexture;
+ private boolean mEnableWarpedPanoPreview = false;
+
private class MyHandler extends Handler {
public static final int MSG_INIT_SYNC = 0;
public static final int MSG_SHOW_PREVIEW_FRAME_SYNC = 1;
public static final int MSG_SHOW_PREVIEW_FRAME = 2;
public static final int MSG_ALIGN_FRAME_SYNC = 3;
public static final int MSG_RELEASE = 4;
-
+ public static final int MSG_DO_PREVIEW_RESET = 5;
public MyHandler(Looper looper) {
super(looper);
}
@@ -65,6 +68,9 @@ public class MosaicPreviewRenderer {
doShowPreviewFrame();
mEglThreadBlockVar.open();
break;
+ case MSG_DO_PREVIEW_RESET:
+ doPreviewReset();
+ break;
case MSG_SHOW_PREVIEW_FRAME:
doShowPreviewFrame();
break;
@@ -83,10 +89,13 @@ public class MosaicPreviewRenderer {
mInputSurfaceTexture.updateTexImage();
mInputSurfaceTexture.getTransformMatrix(mTransformMatrix);
- MosaicRenderer.setWarping(true);
- // Call preprocess to render it to low-res and high-res RGB textures.
+ // Call setPreviewBackground to render high-res RGB textures to full screen.
+ MosaicRenderer.setPreviewBackground(true);
MosaicRenderer.preprocess(mTransformMatrix);
- // Now, transfer the textures from GPU to CPU memory for processing
+ MosaicRenderer.step();
+ MosaicRenderer.setPreviewBackground(false);
+
+ MosaicRenderer.setWarping(true);
MosaicRenderer.transferGPUtoCPU();
MosaicRenderer.updateMatrix();
MosaicRenderer.step();
@@ -104,8 +113,12 @@ public class MosaicPreviewRenderer {
}
private void doInit() {
- mInputSurfaceTexture = new SurfaceTexture(MosaicRenderer.init());
- MosaicRenderer.reset(mWidth, mHeight, mIsLandscape);
+ mInputSurfaceTexture = new SurfaceTexture(MosaicRenderer.init(mEnableWarpedPanoPreview));
+ MosaicRenderer.reset(mWidth, mHeight, mIsLandscape, mOrientation);
+ }
+
+ private void doPreviewReset() {
+ MosaicRenderer.reset(mWidth, mHeight, mIsLandscape, mOrientation);
}
private void doRelease() {
@@ -134,9 +147,11 @@ public class MosaicPreviewRenderer {
* @param isLandscape The UI orientation. {@code true} if in landscape,
* false if in portrait.
*/
- public MosaicPreviewRenderer(SurfaceTexture tex, int w, int h, boolean isLandscape) {
+ public MosaicPreviewRenderer(SurfaceTexture tex, int w, int h, boolean isLandscape,
+ int orientation, boolean enableWarpedPanoPreview) {
mIsLandscape = isLandscape;
-
+ mOrientation = orientation;
+ mEnableWarpedPanoPreview = enableWarpedPanoPreview;
mEglThread = new HandlerThread("PanoramaRealtimeRenderer");
mEglThread.start();
mHandler = new MyHandler(mEglThread.getLooper());
@@ -157,6 +172,15 @@ public class MosaicPreviewRenderer {
mHandler.sendMessageSync(MyHandler.MSG_INIT_SYNC);
}
+ public void previewReset(int w, int h, boolean isLandscape, int orientation) {
+ mWidth = w;
+ mHeight = h;
+ mIsLandscape = isLandscape;
+ mOrientation = orientation;
+ mHandler.sendEmptyMessage(MyHandler.MSG_DO_PREVIEW_RESET);
+ mSTRenderer.draw(false);
+ }
+
public void release() {
mSTRenderer.release();
mHandler.sendMessageSync(MyHandler.MSG_RELEASE);