Я написал приложение, которое преобразует видео в текстуру, в основном используя код, который можно найти во многих публикациях здесь. Я предполагаю, что оригинал взят из некоторых образцов nVidia (VideoSurfaceView), найденных здесь: Использование SurfaceTexture в Android < / а>
Этот пример отлично работает на мобильном устройстве и на планшете - оба основаны на Tegra. Затем я попробовал тот же код в системе Android на базе MALI 400 (Minix Neo5), и я вижу, что видео воспроизводится, но у меня в основном черный экран с каким-то мусором (всего 3 или 4 строки)
Я попытался использовать трассировщик OpenGL ES, чтобы проверить, что копируется из SurfaceTexture обратно в саму текстуру, но похоже, что Tracer не может показать это правильно (ни в системах tegra, ни на устройствах tegra. Обратите внимание, что я не делаю этого) Я не получаю ни одной ошибки OpenGL, ни каких-либо предупреждений. Похоже, все работает нормально.
Есть ли какой-нибудь другой инструмент, который может показать мне, что, если что-то копируется в TEXTURE_EXTERNAL? Все TEXTURE_2D доступны на трассировщике.
Одна странная вещь, которую я заметил в системе MALI, - это то, что она вообще не может воспроизводить видео высокой четкости. И мои видео с разрешением 1280x720 сообщают об отладчике, что они используют SoftwareRenderer. Возможно, поэтому кадры некорректно копируются в OGL_IMAGE, который будет использоваться в качестве текстуры.
Думаю, мне нужно лучше понять, что происходит под капотом, но я ожидал, что система не может этого сделать или она должна просто работать, даже если производительность низкая. Возможно это доработанная версия андроида и код медиаплеера просто сломан ...