Probleme mit der GLSurfaceView-Framerate unter Nexus 5

Ich habe eine Beispielanwendung (vollständige Quelle), die Kamerabilder mit MediaCodec codieren, während sie auf einem GLSurfaceView angezeigt werden.

Systrace bestätigt, dass 30 Zeichenaufrufe pro Sekunde getätigt werden:

Eine Bildschirmaufnahme (.mp4, Youtube) zeigt, dass die scheinbare Framerate erheblich niedriger ist.

Kurz gesagt, meine Codierungs- und Anzeigeschleife bewirkt Folgendes:

Macht einen MediaCodec-Oberflächeneingang zum aktuellen EGL-KontextZeichnet einen Kamerarahmen auf die MediaCodec EGL-OberflächeMacht den GLSurfaceView EGL-Kontext aktuellZeichnet den gleichen Kamerarahmen in die GLSurfaceView

Auf einem Galaxy Nexus LTE und Nexus 7 (beide mit AOSP 4.4) funktioniert die Anwendung wie erwartet. Bisher zeigt nur das Nexus 5 diese Diskrepanz zwischen der Anzahl der auf dem Bildschirm gezeichneten Bilder und der Anzahl der sichtbaren Bilder ...

Ich bete, ich bin nicht verrückt.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage