代码之家  ›  专栏  ›  技术社区  ›  Robotex

如何在Linux中使用OpenMax解码h264视频?此代码正确吗?

  •  0
  • Robotex  · 技术社区  · 8 年前

    我正在尝试使用OpenMAX解码器解码h264视频流:

    https://gist.github.com/NicholasShatokhin/f6a86d03707decf53d684c4c82f909a6

    看起来一切正常,但当我将数据发送到解码器时,它并没有填满输出缓冲区。应用程序运行期间未调用FillBufferDone回调。只有在调用Flush函数时,我才能得到这个带有空缓冲区的回调。

    我错过了什么?我的代码或解码器本身有问题吗?如何检查?

    1 回复  |  直到 8 年前
        1
  •  0
  •   user10585056    7 年前

    我猜这个问题没有答案的时间足够长,你可以在其他地方找到它,但无论如何我都会回答。

    在PortSettingsChanged事件上的回调事件处理程序中,您只打印一条关于它的消息,但OpenMAX规范在第3.4.5节中描述的是动态端口重新配置。 在隧道实现的情况下,只需要禁用/重新启用发生此事件的端口(禁用端口将导致返回和释放连接到此端口的缓冲区,启用将分配配置了新端口设置的新缓冲区)。 如果是非隧道式实施,您必须: -禁用端口, -可用缓冲区, -读取端口设置, -启用端口, -根据设置分配新缓冲区。

    应该在那里工作。