gpt4 book ai didi

android - 如何将 Android MediaCodec Surface 连接到 Vulkan

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:27 30 4
gpt4 key购买 nike

我对使用 Android MediaCodec 进行解码以及通过 Surface 将 YUV 馈送到 OpenGL 纹理有很好的理解。我想用 Vulkan 做一些类似的事情。但是,我没有成功找到任何文档或示例代码。

我的问题是:如何连接以下管道?

MediaCodec Video Decoder ⇨ Surface ⇨ texture ⇨ Vulkan

详情

OpenGL 比较

为了比较,在 OpenGL 的情况下,Android Surface 是这样构造和使用的

 textureId = glGenTextures( &textureId )
surface = new Surface( new SurfaceTexture( textureId ) )
mediaCodec.configure( surface )

最佳答案

目前这是不可能的,因为无法从 Vulkan 外部或任何可以导出 Surface 的 SDK Vulkan 对象导入内存对象。看看VK_KHX_external_memory以及相关的扩展,以了解其中的某些部分在未来可能如何运作。

EDIT 2018-05-23:现在可以使用 VK_ANDROID_external_memory_android_hardware_buffer扩展及其依赖的扩展。您可以使用 AImageReader_newWithUsage() 创建与 GPU 采样兼容的 AImageReader。从 AImageReader 获取 ANativeWindow 并将其用作 AMediaCodec 的输出表面。然后,对于您收到的每个图像,获取 AHardwareBuffer 并使用扩展将其导入到 VkDeviceMemory/VkImage 对中。

关于android - 如何将 Android MediaCodec Surface 连接到 Vulkan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43507536/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com