我正在尝试使用 OpenMAX 解码器解码 h264 视频流:
https://gist.github.com/NicholasShatokhin/f6a86d03707decf53d684c4c82f909a6
看起来一切正常,但是当我将数据发送到解码器时,它不会填充输出缓冲区。应用程序运行期间不调用 FillBufferDone 回调。只有当 Flush 函数被调用时,我才得到这个带有空缓冲区的回调。
我在这里错过了什么?我的代码或解码器本身有问题吗?如何检查?
我想这个问题没有答案足够长的时间让你在其他地方找到它,但无论如何我都会回答。
在 PortSettingsChanged 事件的回调事件处理程序中,您只打印一条有关它的消息,但 OpenMAX 规范在第 3.4.5 节中描述的是动态端口重新配置。在隧道实现的情况下,它只需要禁用/重新启用发生此事件的端口(禁用端口将导致连接到该端口的缓冲区返回和释放,启用将分配配置有新端口设置的新缓冲区)。在非隧道实现的情况下,您必须: - 禁用端口, - 释放缓冲区, - 读取端口设置, - 启用端口, - 根据设置分配新缓冲区。
应该从那里工作。