首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Android MediaCodec Surface连接到Vulkan

如何将Android MediaCodec Surface连接到Vulkan
EN

Stack Overflow用户
提问于 2017-04-19 23:08:58
回答 1查看 2.7K关注 0票数 7

我对使用Android MediaCodec解码并通过Surface将YUV输入到OpenGL纹理中有很好的理解。我想和Vulkan做些类似的事情。然而,我没有成功地找到任何文档或示例代码。

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

代码语言:javascript
复制
MediaCodec Video Decoder ⇨ Surface ⇨ texture ⇨ Vulkan

详细信息

OpenGL比较

作为比较,在OpenGL的情况下,一个Android被构造并使用如下所示

代码语言:javascript
复制
 textureId = glGenTextures( &textureId )
 surface = new Surface( new SurfaceTexture( textureId ) )
 mediaCodec.configure( surface )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-21 19:43:05

目前这是不可能的,因为无法从Vulkan外部导入内存对象,也无法导入任何可以导出Surface的SDK对象。看看VK_KHX_external_memory和相关的扩展,了解这些部分将来是如何工作的。

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43507536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档