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

How to decode h264 video using OpenMax in Linux? Is this code correct?

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

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

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

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

我想这个问题已经很久没有答案了,你可以在其他地方找到它,但无论如何我都会回答。

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

应该从那里开始工作。