Рендеринг выходных данных Android MediaCodec в двух представлениях для совместимости с гарнитурой виртуальной реальности.

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

Но как программно получить SurfaceTexture для использования в MediaCodec? Насколько я знаю, новая SurfaceTexture создается для каждого TextureView, поэтому, если у меня есть два TextureView в моей деятельности, я получу два TextureView!? Это слишком много... ;)

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


person TheCutter    schedule 23.06.2015    source источник
comment
Вы видели образец github.com/google/grafika?   -  person Preethi Rao    schedule 23.06.2015
comment
да. Но как получить только один TextureView?   -  person TheCutter    schedule 23.06.2015


Ответы (1)


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

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

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

В любом случае вы должны создать свою собственную SurfaceTexture для получения видео, а не использовать ту, которая исходит от TextureView - см., например. эта часть кода.

person fadden    schedule 23.06.2015
comment
Нет, мне не нужны два TextureView. Единственное, что мне нужно, это выход MediaCodec с обеих сторон экрана. Я думал, что это будет самый простой способ добиться этого с помощью двух TextureView. - person TheCutter; 24.06.2015
comment
Извините, у меня не запускается. Можете ли вы предоставить исходный код для рендеринга левой и правой стороны с помощью GLES!? - person TheCutter; 11.07.2015