gpt4 book ai didi

android - mediadecodec 到 SurfaceTexture : how onDrawFrame know outputBufferId

转载 作者:行者123 更新时间:2023-11-29 19:45:19 33 4
gpt4 key购买 nike

我正在使用表面纹理作为 mediacodec 的输出,请参阅下面的一些日志,2 个问题:

  1. mediacodec多次发布,为什么onFrameAvailable和onDrawFrame只调用一次?
  2. 通过在 onDrawFrame 中调用 mSTexture.updateTexImage()mSTexture 将由多个 mediacodec 之一更新之前释放的输出缓冲区,但我想知道更新后的mSTexture对应的outputBufferId,我可以得到吗?

SurfaceTexture 有函数 getTimestamp 和 getTransformMatrix,不确定这是否有帮助,为什么 getTimestamp 总是返回 0?

public void onDrawFrame(GL10 glUnused) {
Log.e(TAG, "onDrawFrame");
同步(这){
如果(mUpdateST){
mUpdateST = 假;
mSTexture.updateTexImage();//这里,我想获取更新后的mSTexture对应的outputBufferId
}
}

public void onFrameAvailable(SurfaceTexture surfaceTexture) {
Log.e(TAG, "onFrameAvailable");
同步(这){
mUpdateST = 真;
}
}

public void onOutputBufferAvailable(MediaCodec mc, int outputBufferId, BufferInfo bufInfo) {
Log.e(TAG, "OutputBufferAvailable "+ outputBufferId);
decoder.releaseOutputBuffer(outputBufferId, true);
}

E/--- MainActivity -(19589): OutputBufferAvailable 15

E/--- MainActivity -(19589): OutputBufferAvailable 14

E/--- MainActivity -(19589): OutputBufferAvailable 13

E/--- MainActivity -(19589): OutputBufferAvailable 12

E/--- MainActivity -(19589): OutputBufferAvailable 11

E/--- MyGLSurfaceView -(19589): onFrameAvailable

E/--- MainActivity -(19589): OutputBufferAvailable 10

E/--- MainActivity -(19589): OutputBufferAvailable 9

E/--- MainActivity -(19589): OutputBufferAvailable 8

E/--- MyGLSurfaceView -(19589): onDrawFrame

最佳答案

SurfaceTexture 在“异步”模式下运行。因为生产者和消费者端可以在同一个进程中,这有助于避免死锁。这样做的实际效果是,如果喂得太快,SurfaceTexture 会掉帧。

如果您查看 ExtractMpegFramesTest 中的 awaitNewImage() ,您可以看到解码器和 SurfaceTexture 处理程序如何协调以串行处理帧。

理想情况下,源 Material 的呈现时间戳将传播到 SurfaceTexture 的时间戳。您从 decoder.dequeueOutputBuffer() 获得的 BufferInfo 是否具有非零时间戳?

关于android - mediadecodec 到 SurfaceTexture : how onDrawFrame know outputBufferId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37872501/

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