MosaicRenderer.java revision eeb94d4de94bfd4e01f3a716803f77a530f5b92c
1eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal/* 2eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * Copyright (C) 2011 The Android Open Source Project 3eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * 4eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * Licensed under the Apache License, Version 2.0 (the "License"); 5eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * you may not use this file except in compliance with the License. 6eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * You may obtain a copy of the License at 7eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * 8eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * http://www.apache.org/licenses/LICENSE-2.0 9eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * 10eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * Unless required by applicable law or agreed to in writing, software 11eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * distributed under the License is distributed on an "AS IS" BASIS, 12eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * See the License for the specific language governing permissions and 14eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * limitations under the License. 15eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal */ 16eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 17eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansalpackage com.android.camera.panorama; 18eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 19eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal/** 20eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * The Java interface to JNI calls regarding mosaic preview rendering. 21eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * 22eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal */ 23eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansalpublic class MosaicRenderer 24eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal{ 25eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal static 26eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal { 27eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal System.loadLibrary("jni_mosaic"); 28eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal } 29eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 30eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal /** 31eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * Function to be called in onSurfaceCreated() to initialize 32eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * the GL context, load and link the shaders and create the 33eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * program. 34eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal */ 35eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal public static native void init(); 36eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 37eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal /** 38eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * Pass the drawing surface's width and height to initialize the 39eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * renderer viewports and FBO dimensions. 40eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * 41eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * @param width width of the drawing surface in pixels. 42eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * @param height height of the drawing surface in pixels. 43eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal */ 44eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal public static native void reset(int width, int height); 45eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 46eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal /** 47eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * Function to be called in onDrawFrame() to update the screen with 48eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * the new frame data. 49eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal */ 50eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal public static native void step(); 51eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 52eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal /** 53eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * Call this function when a new low-res frame has been processed by 54eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * the mosaicing library. This will tell the renderer library to 55eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * update its texture and warping transformation. Any calls to step() 56eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * after this call will use the new image frame and transformation data. 57eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal */ 58eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal public static native void ready(); 59eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal 60eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal /** 61eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * This function allows toggling between showing the input image data 62eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * (without applying any warp) and the warped image data. This is more 63eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * for debugging purposes to see if the image data is being updated 64eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal * correctly or not. 65eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal */ 66eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal public static native void togglewarping(); 67eeb94d4de94bfd4e01f3a716803f77a530f5b92cmbansal} 68