gpt4 book ai didi

android - MediaCodec 的 presentationTimeUs 有什么用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:15:39 26 4
gpt4 key购买 nike

presentationTimeUs 的官方定义在queueInputBuffer (int index, int offset, int size, long presentationTimeUs, int flags)是以下内容:

The presentation timestamp in microseconds for this buffer. This isnormally the media time at which this buffer should be presented(rendered).

如果由应用程序决定何时呈现解码图像,为什么解码器需要这个?我为 presentationTimeUs 尝试了一些任意数字,它们似乎对解码没有任何影响。例如,如果我将 presentationTimeUs 的原始值加倍,则视频的解码方式和速度似乎与原始视频完全相同。

任何人都可以阐明这一点吗?

最佳答案

解码器 出于多种原因需要知道输入缓冲区的时间戳

首先,如果流有B-frames,那么缓冲区的重新排序和分配正确的时间戳给缓冲区是由解码器。因此,当输入缓冲区接收到 时间戳 时,它会排队等待重新排序。

其次,如果用例类似于 Android-TV 实际上具有隧道视频播放时间戳video decoder 使用,它隧道到底层 HW block 以进行同步和渲染。

最后,如果数据包或帧有任何丢失,解码器如果观察到时间戳<中的突然跳跃,则可能会执行某种隐藏操作 没有调用刷新。这不是规范,而是某些解码器的高级功能。

在传统情况下,正如您所指出的,同步由播放器引擎执行,其中 decoder 应将输入缓冲区时间戳反射(reflect)到输出缓冲区。

关于android - MediaCodec 的 presentationTimeUs 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30542144/

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