Подтвердить что ты не робот

Использование SurfaceTexture в сочетании с RenderScript

Я хочу обработать изображение на графическом процессоре на 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 мне нужно передать OpenGl Texture ID конструктору. К сожалению, идентификатор текстуры недоступен (RenderScript использует класс Allocation для загрузки текстур, который не отображает идентификатор текстуры). Поэтому я не могу создать SurfaceTexture при использовании RenderScript.

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

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

4b9b3361

Ответ 1

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

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

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

  • Еще одно решение - реализовать собственный RenderScriptGL (все еще наследуемый от SurfaceTexture.OnFrameAvailableListener) и вызвать setSurfaceTexture, когда вызывается обратный вызов.

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