【问题标题】:Mediacodec encoder with input surface on Snapdragon在 Snapdragon 上具有输入表面的 Mediacodec 编码器
【发布时间】:2014-09-04 14:42:03
【问题描述】:

我在this thread 中看到必须为某些编码器设置演示时间。 我在使用 mediacodec 编码时使用输入表面,但它不适用于 Snapdragon 设备。 我的问题是我们是否还需要在使用输入表面时设置此演示时间戳? 如果是这样,如何简单地为输入表面设置时间戳?

非常感谢您的帮助。

【问题讨论】:

    标签: android android-mediacodec


    【解决方案1】:

    假设您的输入表面是使用 GLES 渲染的,您将使用 eglPresentationTimeANDROID()

    有关示例(例如“记录 GL 应用”活动),请参阅 Grafika

    【讨论】:

    • 感谢您的回答。但是我没有 GLES 上下文...是否可以在没有 OpenGL 的情况下添加时间戳?
    • 你们如何为 Surface 提供框架?不支持画布 (code.google.com/p/android/issues/detail?id=61194)。
    • 我从 bufferProducer 获取数据。数据由另一个程序在别处生成。所以我知道我现在必须创建一个 EGL 上下文才能将演示时间添加到表面,对吗?但是我使用的是本机代码,并且出现以下错误(而任何其他 egl 函数都可以):错误:未定义对“eglPresentationTimeANDROID”的引用我将我的程序与 libEGL 和 libGLESv2 与标志 EGL_EGLEXT_PROTOTYPES 链接。知道可能缺少什么吗?谢谢
    • 如果您使用私有 API,您可以直接在 BufferQueue 中设置时间戳。如果您查看 EGL 实现(android.googlesource.com/platform/frameworks/native/+/… 中的第 1529 行),您可以看到它调用了native_window_set_buffers_timestamp()
    • 是的,这就是我刚刚发现的!非常感谢,我会这样尝试。
    猜你喜欢
    • 2013-12-26
    • 2014-04-19
    • 2016-06-07
    • 2013-02-22
    • 1970-01-01
    • 2014-04-30
    • 2021-04-12
    • 1970-01-01
    • 2016-03-27
    相关资源
    最近更新 更多