我對使用Android MediaCodec進行解碼並將YUV通過Surface輸入OpenGL紋理有了很好的理解。我想和Vulkan做類似的事情。但是我沒有找到任何文檔或示例代碼。如何將Android MediaCodec Surface連接到Vulkan
我的問題是:我將如何連接以下管道?
MediaCodec Video Decoder ⇨ Surface ⇨ texture ⇨ Vulkan
詳細
- 視頻解碼器是使用MediaCodec#configure
- 表面爲曲面的Android(link to API,link to arch.)
的OpenGL比較
0123配置爲了進行比較,在OpenGL的情況下,Android的表面構造和像這樣
textureId = glGenTextures(&textureId)
surface = new Surface(new SurfaceTexture(textureId))
mediaCodec.configure(surface)
感謝您的回答。你真的希望比用於大視頻的GL更快嗎?在我看來,額外的副本將壓倒你從使用Vulkan而不是GL獲得的開銷減少。 – griffin2000
@ griffin2000如果這就是您所說的「大視頻」,我不希望普通視頻在Vulkan播放時獲得原始性能提升。 – krOoze
但它會顯着更慢?我的懷疑是做這裏描述的會比GL的速度慢。因此,通過複製所有視頻幀(除非你有非常低的視頻分辨率,或大量的3D繪製調用),在應用程序的其他部分進行更快的3D調用的開銷將會被完全抵消。這看起來是否正確? – griffin2000