2015-06-23 12 views
0

Я знаю, что мне нужно использовать SurfaceTexture, который можно визуализировать на двух текстурных экранах одновременно. Так будет: MediaCodec -> SurfaceTexture -> 2x TextureViewsRender Android MediaCodec выводит на два вида совместимости с VR-гарнитурой

Но как я получаю SurfaceTexture programmaticly, который будет использоваться в MediaCodec? Насколько я знаю, для каждого TextureView создается новая SurfaceTexture, поэтому, если у меня есть два TextureViews в моей деятельности, я получу два TextureViews !? Thats one to much ...;)

Или есть ли другой способ визуализации вывода MediaCodec на экран дважды?

+0

Вы видели https://github.com/google/grafika образец? –

+0

да. Но как получить только один TextureView? – TheCutter

ответ

3

Вам действительно нужно два TextureViews, или это просто для удобства?

У вас может быть, например, один SurfaceView или TextureView, который охватывает весь экран, а затем просто визуализирует слева и справа стороны с помощью GLES. С выходом видео в SurfaceTexture вы можете отображать его, как вам нравится. Активность «текстура с камеры» в Grafika демонстрирует различные способы манипулирования изображением с видеоисточника.

Если вы действительно хотите два TextureViews, вы можете их получить. Используйте один контекст EGL для SurfaceTexture и как TextureViews, так и просто переключайтесь между поверхностями EGL с eglMakeCurrent(), когда пришло время рендеринга.

В любом случае вы должны создать свою собственную SurfaceTexture для получения видео, а не для использования в TextureView - см., Например, this bit of code.

+0

Нет Мне не нужны два текстурных изображения. Единственное, что мне нужно, это выход MediaCodec с обеих сторон экрана. Я думал, что это будет самый простой способ добиться этого с помощью двух TextureView. – TheCutter

+0

Извините, я не понимаю. Можете ли вы предоставить исходный код для отображения левой и правой сторон с помощью GLES !? – TheCutter