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/DRA746:如何释放视频解码而不是清除?

Guru**** 2551110 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/619579/linux-dra746-how-to-drain-video-decoding-instead-of-flush

器件型号:DRA746

工具/软件:Linux

我输入200个压缩帧数据(由 ffmpeg 解析)、然后发出 XDM_flush 命令;最后得到184个解码视频帧。

DPB 中的帧似乎被丢弃。

我还注意   到,发出 XDM_FLUSH 后,我调用 VIDDEC3_PROCESS(),但只得到一个输出帧,错误=IH264VDEC_ERR_STREE_END。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已通知汽车团队。 他们的反馈将在此处发布。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Halley、

    您使用哪款 SDK?

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     我 直接使用 git://git.omapzoom.org/repo/libdce.git。

    产品是阿里巴巴云台车、以前使用过 GStreamer。 但现在、我使用的是 YunOS 原始多媒体框架。  

    我的媒体框架与 GStreamer 类似、但通过 C++实现、并简化为消除一些繁琐的协商过程。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 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。

    这不是预期行为。