android gpuimage

Puerto de GPUimage para Android



(2)

GPUImage para Android Idea desde: iOS GPUImage framework

El objetivo es tener algo tan similar a GPUImage como sea posible. Los sombreadores de vértices y fragmentos son exactamente iguales. De esa manera, es más fácil portar filtros de GPUImage iOS a Android.

El enlace está abajo:

Este lib se implementa utilizando Android OpenGL ES 2.0.

¿Alguien ha portado esto a android todavía? Más el marco que los shaders. Cosas como llevar los datos de la cámara a openGL . He trabajado con él en iOS y es muy rápido. Cualquier ayuda es muy apreciada.


puedes usar Gpuimage para la vista previa de video y también tomar una foto, solo compila el archivo jni en la biblioteca gpuimage con ndk y coloca el método para la conversión de YuvtoRgb en GPUImageNativeLibrary.java en GPUImageLibrary para Android.

public static void YUVtoRBGA(byte[] yuv, int width, int height, int[] rgb) { final int frameSize = width * height; int r, g, b, y1192, y, i, uvp, u, v; for (int j = 0, yp = 0; j < height; j++) { uvp = frameSize + (j >> 1) * width; u = 0; v = 0; for (i = 0; i < width; i++, yp++) { y = (0xff & ((int) yuv[yp])) - 16; if (y < 0) y = 0; if ((i & 1) == 0) { v = (0xff & yuv[uvp++]) - 128; u = (0xff & yuv[uvp++]) - 128; } y1192 = 1192 * y; r = (y1192 + 1634 * v); g = (y1192 - 833 * v - 400 * u); b = (y1192 + 2066 * u); // Java''s functions are faster then ''IFs'' r = Math.max(0, Math.min(r, 262143)); g = Math.max(0, Math.min(g, 262143)); b = Math.max(0, Math.min(b, 262143)); rgb[yp] = 0xff000000 | ((r << 6) & 0xff0000) | ((g >> 2) & 0xff00) | ((b >> 10) & 0xff); // rgba, divide 2^10 ( >> 10) /* * rgb[yp] = 0xff000000 |((r << 14) & 0xff000000) | ((g << 6) & * 0xff0000) | ((b >> 2) | 0xff00); */ } } }

Reemplace el método en el YUVtoRBGA nativo estático público de la clase GPUImageNativeLibrary.java con esto, y lo habrá hecho.