Pet*_*ran 6 android vulkan android-mediacodec
我对使用 Android MediaCodec 进行解码并将 YUV 通过 Surface 馈送到 OpenGL 纹理有很好的理解。我想用 Vulkan 做类似的事情。但是我没有成功找到任何文档或示例代码。
我的问题是:我将如何连接以下管道?
MediaCodec Video Decoder ? Surface ? texture ? Vulkan
Run Code Online (Sandbox Code Playgroud)
细节
OpenGL 比较
为了进行比较,在 OpenGL 的情况下,Android Surface 的构造和使用方式如下
textureId = glGenTextures( &textureId )
surface = new Surface( new SurfaceTexture( textureId ) )
mediaCodec.configure( surface )
Run Code Online (Sandbox Code Playgroud)
目前这是不可能的,因为无法从 Vulkan 外部导入内存对象,也无法从任何可以导出 Surface 的 SDK Vulkan 对象导入。查看VK_KHX_external_memory
相关扩展,了解其中的部分内容将来如何工作。
编辑 2018-05-23:现在可以使用VK_ANDROID_external_memory_android_hardware_buffer
扩展及其依赖的扩展。您可以使用它AImageReader_newWithUsage()
来创建AImageReader
与 GPU 兼容的采样。ANativeWindow
从中获取AImageReader
并将其用作 的AMediaCodec
输出表面。然后,对于您收到的每个图像,获取并使用扩展名将AHardwareBuffer
其导入到VkDeviceMemory
/对中。VkImage
归档时间: |
|
查看次数: |
1835 次 |
最近记录: |