4 Stimmen

schnellere Kameravorschau mit OpenGL?

Schreiben einer Anwendung, die die Vorschaubilder von der Kamera aufnimmt, sie umwandelt und dann auf dem Bildschirm anzeigt.

in

public void onPreviewFrame(byte[] data, Camera camera) {}

Ich nehme die Daten tun yuv2rgb und einige Pixel Manipulation in JNI in einem anderen Thread. Dann erstelle ich eine Bitmap aus dem RGB int Array und zeichne sie mit

canvas.drawBitmap(bmp, 0, 0, null);

Ich erhalte etwa 15-20 FPS auf dem HTC Nexus One bei 640x480 und 30+ FPS auf dem Samsung Galaxy S II

Ich frage mich, ob ich die Dinge beschleunigen könnte, indem ich die Zeichnung mit Android OpenGL ES mache? Ich würde diesem Leitfaden folgen: http://obviam.net/index.php/texture-mapping-opengl-Android-displaying-images-using-opengl-and-squares/

4voto

vikky.rk Punkte 3789

Verwenden Sie SurfaceView für Ihre Kamera-App? Das Vorschaubild, das Sie erhalten, ist eine Kopie des tatsächlichen Bildes, das auf dem Bildschirm angezeigt wird. Ich nehme an, Sie fügen eine weitere Ansicht hinzu, um die Rückruf-Vorschaubilder anzuzeigen.

Ich bin kein Grafikexperte, aber versuchen Sie es doch mal OberflächenTextur . Sie können setpreviewtexture() anstelle von setpreviewwindow() verwenden. Auf diese Weise sendet der Camera Service die Puffer direkt an die App, anstatt eine Kopie zu erstellen und diese ebenfalls in die Warteschlange des AndroidNativeWindow zu stellen. Dies könnte Ihre Leistung verbessern.

So funktioniert die Android-Kamera-App Panorama. Sie können den Quellcode finden ici

2voto

tomi Punkte 525

OpenGL ES implementiert und es hilft bei der Leistung

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X