Problemy z ramkowaniem GLSurfaceView w Nexusie 5

Mam przykładową aplikację (pełne źródło), który koduje ramki kamery za pomocą MediaCodec podczas wyświetlania ich na GLSurfaceView.

Systrace potwierdza, że ​​w ciągu sekundy wykonywanych jest 30 połączeń rysunkowych:

Jednak nagrywanie nagrania ekranu (.mp4, Youtube) pokazuje, że liczba klatek na sekundę jest znacznie niższa.

W skrócie, moja pętla kodowania i wyświetlania wykonuje następujące czynności:

Tworzy MediaCodec Wejście powierzchniowe EGL Context currentRysuje ramkę kamery na powierzchnię MediaCodec EGLSprawia, że ​​GLSurfaceView EGL Context currentRysuje tę samą ramkę kamery do GLSurfaceView

W przypadku Galaxy Nexus LTE i Nexus 7 (oba z AOSP 4.4) aplikacja działa zgodnie z oczekiwaniami. Jak dotąd tylko Nexus 5 doświadcza tej rozbieżności między liczbą ramek narysowanych na ekranie a liczbą klatek widocznych ...

Modlę się, że nie jestem szalony.

questionAnswers(1)

yourAnswerToTheQuestion