小编Pet*_*ran的帖子

如何将 Android MediaCodec Surface 连接到 Vulkan

我对使用 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)

android vulkan android-mediacodec

6
推荐指数
1
解决办法
1835
查看次数

如何减少MediaCodec视频/ avc解码的延迟

我在Nexus 5上运行的Grafika MediaCodec示例代码中执行了一些简单的MoviePlayer.java计时.我在这些位置放了一个日志语句:

在前一行的203行

decoder.queueInputBuffer
Run Code Online (Sandbox Code Playgroud)

在第244行之后

decoder.dequeueOutputBuffer
Run Code Online (Sandbox Code Playgroud)

我使用了日志语句presentationTimeUs.

以下是logcat的摘录:

01-29 10:56:43.295: I/Grafika(21286): queueInputBuffer index/pts, 2,0
01-29 10:56:43.305: I/Grafika(21286): queueInputBuffer index/pts, 0,33100
01-29 10:56:43.315: I/Grafika(21286): queueInputBuffer index/pts, 3,66466
01-29 10:56:43.325: I/Grafika(21286): queueInputBuffer index/pts, 1,99833
01-29 10:56:43.325: I/Grafika(21286): queueInputBuffer index/pts, 2,133200
01-29 10:56:43.335: I/Grafika(21286): queueInputBuffer index/pts, 0,166566
01-29 10:56:43.345: I/ATSParser(21286): discontinuity on stream pid 0x1011
01-29 10:56:43.345: I/ATSParser(21286): discontinuity on stream pid 0x1100
01-29 10:56:43.345: I/Grafika(21286): queueInputBuffer index/pts, 3,199933
01-29 10:56:43.345: I/Grafika(21286): dequeueOutputBuffer index/pts, 7,0
01-29 10:56:43.345: …
Run Code Online (Sandbox Code Playgroud)

android h.264 textureview mediacodec mediaextractor

4
推荐指数
1
解决办法
5757
查看次数