Использование SurfaceTexture в сочетании с RenderScript - PullRequest
20 голосов
/ 28 марта 2012

Я хочу сделать обработку изображений с камеры на графическом процессоре на Android.

В моей текущей установке я использую SurfaceTexture для захвата кадров из потока изображений с камеры в качестве текстуры OpenGL ES. Это эффективный способ получить доступ к камере в моих шейдерах. (http://developer.android.com/reference/android/graphics/SurfaceTexture.html)

Теперь я хотел бы начать использовать новый API RenderScript вместо прямого использования OenGL ES. (http://developer.android.com/guide/topics/renderscript/index.html)

Но чтобы создать SurfaceTexture, мне нужно передать ID текстуры openGl в конструктор. К сожалению, идентификатор текстуры недоступен (RenderScript использует класс Allocation для загрузки текстур, который не предоставляет идентификатор текстуры). Поэтому я не могу создать SurfaceTexture при использовании RenderScript.

Я прочитал всю документацию по Renderscript (которая все еще довольно скудна) и посмотрел примеры, но у них нет информации по этому вопросу.

Итак, мой вопрос: Можно ли использовать SurfaceTexture в сочетании с RenderScript, или есть какой-то другой эффективный способ использования потока живой камеры в графическом скрипте RenderScript?

1 Ответ

1 голос
/ 25 июня 2012

Если я правильно понимаю, вы уже используете SurfaceTexture. Затем вы можете зарегистрировать обратный вызов с помощью setOnFrameAvailableListener .

Я вижу два решения:

  1. Реализует вашу собственную RSTextureView, которая наследуется от SurfaceTexture.OnFrameAvailableListener . Зарегистрируйте свой вид в качестве обратного вызова SurfaceTexture. Каждый раз, когда ваш вид поверхности обновляется потоком с камеры, ваш RSTextureView будет уведомлен, и вы сможете обрабатывать его так, как вам нужно.

  2. Другим решением было бы реализовать ваш собственный RenderScriptGL (все еще наследующий от SurfaceTexture.OnFrameAvailableListener) и вызывать setSurfaceTexture при вызове обратного вызова.

Вы должны быть в состоянии объединить RenderScript с SurfaceTexture хотя бы с одним из этих двух решений.

...