2016-12-05 2 views
0

Попытка изменить пиксели перед отображением в SurfaceTexture.Предварительная обработка и запись фонов в Android Camera2 API в SurfaceTexture

SurfaceTexture подписан OnFrameAvailableListener:

@Override 
public void onFrameAvailable(SurfaceTexture surfaceTexture) 
{ 
    ... 
} 

, как я понимаю, что в этом методе и хочу изменить пиксели, но как? Спасибо за ответы и комментарии!

ответ

1

Как вы черпаете результат из SurfaceTexture для начала? Вы просто используете класс TextureView, или у вас есть фактический GLSurfaceView или аналогичный, а также набор графических вызовов OpenGL ES для рисования предварительного просмотра?

Если вы используете TextureView, то вы ничего не можете сделать - он заботится о чертеже, и вы не можете вводить себя посередине.

С помощью GLSurfaceView вы в основном пишете свою собственную программу OpenGL, которая может выполнять все виды обработки изображений с помощью флеш-шейдеров и тому подобного. Но вам нужно будет изучить основы программирования OpenGL для этого или, по крайней мере, найти образец, который настроит весь шаблон.

Если вы используете camera2, вы также можете рассмотреть возможность использования RenderScript для вашей обработки. Официальное приложение Google sample, HdrViewfinder, использует RS для обработки в режиме реального времени при предварительном просмотре.