A TextureView empfängt Frames auf einem SurfaceTexture, die Rahmen gesendet nimmt seine Oberfläche und wandelt sie in eine GLES-Textur um. Um die Pixeldaten zu erhalten, muss die Textur in einen Framebuffer gerendert und dann mit glReadPixels()
ausgelesen werden. Die Pixeldaten können dann mit einem Bitmap-Objekt umhüllt werden (was das Kopieren der Pixeldaten beinhalten kann oder nicht).
Die Verwendung des NDK wird Ihnen nicht viel nützen, da der gesamte Code, der schnell ausgeführt werden muss, bereits nativ implementiert ist.
Möglicherweise sehen Sie eine Verbesserung, indem Sie die Daten direkt an ein SurfaceTexture senden und die GLES-Arbeit selbst erledigen. Aber vermutlich möchten Sie die eingehenden Frames in der TextureView anzeigen, sodass Sie nur den Bitmap-Overhead speichern können kann oder kann nicht signifikant sein).
Es könnte hilfreich sein, wenn Sie in Ihrer Frage erklärt haben, woher die Frames kommen und was Sie damit machen wollen.
Haben Sie es tatsächlich geschafft, Bitmap von TextureView schneller zu erhalten? –