diff options
author | Angus Kong <shkong@google.com> | 2013-08-19 15:06:12 -0700 |
---|---|---|
committer | Angus Kong <shkong@google.com> | 2013-09-04 13:10:29 -0700 |
commit | ed15d1a140986473bbe7fffd72ec9618c41c5979 (patch) | |
tree | ad5a3fdff05b54fef1ec076d5fa4c80e1a419888 /src/com/android/camera/MosaicRenderer.java | |
parent | 269c824d720b2e902c4ad6c3bb23422644da1f41 (diff) | |
download | android_packages_apps_Snap-ed15d1a140986473bbe7fffd72ec9618c41c5979.tar.gz android_packages_apps_Snap-ed15d1a140986473bbe7fffd72ec9618c41c5979.tar.bz2 android_packages_apps_Snap-ed15d1a140986473bbe7fffd72ec9618c41c5979.zip |
Bring back wide angle panorama.
bug:10293937
Change-Id: I23a977e87b7416f07ecac20025b6c142ae61be05
Diffstat (limited to 'src/com/android/camera/MosaicRenderer.java')
-rw-r--r-- | src/com/android/camera/MosaicRenderer.java | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/com/android/camera/MosaicRenderer.java b/src/com/android/camera/MosaicRenderer.java new file mode 100644 index 000000000..c50ca0d52 --- /dev/null +++ b/src/com/android/camera/MosaicRenderer.java @@ -0,0 +1,89 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.camera; + +/** + * The Java interface to JNI calls regarding mosaic preview rendering. + * + */ +public class MosaicRenderer +{ + static + { + System.loadLibrary("jni_mosaic"); + } + + /** + * Function to be called in onSurfaceCreated() to initialize + * the GL context, load and link the shaders and create the + * program. Returns a texture ID to be used for SurfaceTexture. + * + * @return textureID the texture ID of the newly generated texture to + * be assigned to the SurfaceTexture object. + */ + public static native int init(); + + /** + * Pass the drawing surface's width and height to initialize the + * renderer viewports and FBO dimensions. + * + * @param width width of the drawing surface in pixels. + * @param height height of the drawing surface in pixels. + * @param isLandscapeOrientation is the orientation of the activity layout in landscape. + */ + public static native void reset(int width, int height, boolean isLandscapeOrientation); + + /** + * Calling this function will render the SurfaceTexture to a new 2D texture + * using the provided STMatrix. + * + * @param stMatrix texture coordinate transform matrix obtained from the + * Surface texture + */ + public static native void preprocess(float[] stMatrix); + + /** + * This function calls glReadPixels to transfer both the low-res and high-res + * data from the GPU memory to the CPU memory for further processing by the + * mosaicing library. + */ + public static native void transferGPUtoCPU(); + + /** + * Function to be called in onDrawFrame() to update the screen with + * the new frame data. + */ + public static native void step(); + + /** + * Call this function when a new low-res frame has been processed by + * the mosaicing library. This will tell the renderer library to + * update its texture and warping transformation. Any calls to step() + * after this call will use the new image frame and transformation data. + */ + public static native void updateMatrix(); + + /** + * This function allows toggling between showing the input image data + * (without applying any warp) and the warped image data. For running + * the renderer as a viewfinder, we set the flag to false. To see the + * preview mosaic, we set the flag to true. + * + * @param flag boolean flag to set the warping to true or false. + */ + public static native void setWarping(boolean flag); +} |