工具/软件:Linux
我输入200个压缩帧数据(由 ffmpeg 解析)、然后发出 XDM_flush 命令;最后得到184个解码视频帧。
DPB 中的帧似乎被丢弃。
我还注意 到,发出 XDM_FLUSH 后,我调用 VIDDEC3_PROCESS(),但只得到一个输出帧,错误=IH264VDEC_ERR_STREE_END。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Linux
我输入200个压缩帧数据(由 ffmpeg 解析)、然后发出 XDM_flush 命令;最后得到184个解码视频帧。
DPB 中的帧似乎被丢弃。
我还注意 到,发出 XDM_FLUSH 后,我调用 VIDDEC3_PROCESS(),但只得到一个输出帧,错误=IH264VDEC_ERR_STREE_END。
您好 Halley、
位流结束时、应用程序需要执行 XDM_FLUSH 控制命令。 调用 Flush 后、应用程序需要在 Do-while 循环中调用 Process 函数、直到您看到错误 IH264VDEC_ERR_STREAM _END。
因此、如果我们以您的示例为例、在位流结束后、应用程序必须执行 XDM_FLUSH、然后在 do-while 循环中执行处理调用16次。 对于第16个进程调用、您应该会看到此错误、并且您将获得编解码器保留的所有缓冲区。
XDM_FLUSH 之后的这些处理调用用于释放/释放所有被编解码器锁定/保持的缓冲器。 当最后一个缓冲区被释放时、编解码器将返回 IHERR 264VDEC_ERR_STREAME_END。
请参阅 viddec3test.c、了解如何完成 XDM_flush。 (git.ti.com/.../viddec3test.c)
[引用 user="Halley Zhao"]我还注意到,在发出 XDM_FLUSH 后,我调用 了 VIDDEC3_PROCESS(),但只得到一个输出帧,错误=IH264VDEC_ERR_STREAM _END。
这不是预期行为。