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/AM5728:多个 H.264解码问题

Guru**** 2611705 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/581093/linux-am5728-multiple-h-264-decoding-issue

器件型号:AM5728

工具/软件:Linux

你(们)好

我 使用不带 gstreamer 的 ti-processor-sdk-linux-am57xx-evm-03.01.00.06开发两个显示器。

 我们的两个显示器的性能不好。

当我解码一个内容(全高清)时、它具有60 FPS。 好的。

但是、 当 我对两个不同的内容(全高清)进行解码时。 它具有58~60 FPS。

 我跟踪了 libdce、libmmrpc、rpmsg-rpc.ko (drivers\rpmsg\rpmsg_rpc.c)。

一旦一个线程将 H.264帧发送到 libdce (VIDDEC3_process)、然后 B 线程将 H.264帧发送到 libdce (VIDDEC3_process)。 B 线程等待 线程完成(M4 (IPU)完成)。

我希望  A/B 线程不 分块地将 H.264帧发送到 libdce (VIDDEC3_process)。

VIDDEC_PROCESS 需要7~10ms。 因此、有时 B 线程等待14~20ms。

我计划使用 VIDENC2_PROCESS (pthread_mutex_lock (&IPC_mutex))从摄像机编码到 H.264。

如果我有两个解码一个编码、我认为系统性能会更低。

如何获得60 fps 以解码多(两)个 HD 内容?

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    AM5728具有名为 IVA-HD 的硬件加速器、用于进行加速视频编码和解码。 AM57x8器件上只有一个 IVA-HD 内核。 它可以处理单通道1080p60编码或解码、或处理多通道较低分辨率/较低帧速率(例如、2个1080p30通道)。 由于 IVA-HD 只有一个内核、并且在帧级别进行处理、因此它一次只能处理一个帧、因此线程 B 在线程 A 获得处理之前被阻止的行为是有效的行为。  IVA-HD 的最大处理能力为1080p60、因此处理一个帧大约需要14至16ms、因此您对线程块时间的观察也是有效的。  

    如果您需要进行 多个1080p60编解码器处理通道、则需要在 A15上对一个通道进行解码、在 IVA-HD 上对另一个通道进行解码。 编码器的分辨率和帧速率要求是什么? 如果分辨率/帧速率较低、IVA-HD 可能有一些余量来容纳编码器、否则您将需要为此使用 A15和/或 DSP。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将使用 viddec3test (TI exmaple)测试解码两个1080p30。 现在 viddec3test 已死亡。 那么、我将跟踪并修改它。
    告诉您结果。

    非常感谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当 outArgs->outBufsInUseFlag 存在时,不执行 viddec3test。 然后、我测试特定内容(1080p30、TS)和 viddec3test 是否正常工作。

    case1 (single h264 (1080p30)解码/显示)./viddec3test -s 36:1920x1080 HD-underwater.mpg:ok (Good)
    ->VIDDEC3_Process 采用8809us ~ 10000us

    案例2 (单通道 h264 (1080p30)解码/显示)./viddec3test -s 40:1920x1080 HD-underwater.mpg:ok (Good)
    ->VIDDEC3_Process 采用8809us ~ 10000us

    case3 (两个 h264 (1080p30)解码/显示)./viddec3test -s 36:1920x1080 HD-underwater.mpg ---s 40:1920x1080 HD-underwater.mpg:不好(一个带有 connector_id (36)的显示器显示为色条。 我不理解。 另一个具有 connector_id (40)的显示器显示不平稳。

    您可以在下面进行注释。
    -它可以处理单通道1080p60编码或解码、或者处理多通道较低分辨率/较低帧速率(例如、2个1080p30通道)

    但在硬件方面、我认为 IVA-HD 的性能支持2个1080p30通道。 两个带有 viddec3test 应用程序的1080p30解码过程、libdce、RPC msg (OMAP 邮箱驱动程序)驱动程序等无法顺利运行。

    您能否支持两个1080p30解码平滑播放?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否共享测试流? 我最后尝试了一个、它运行良好。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好 我可以共享内容文件。
    我不知道共享它。 一个示例。 那么,您是否有 FTP 站点或任何方法?

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

    您可以将文件附加到 e2e 帖子。

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

    附加了1080p 分辨率 h264编码*。mov 文件、我在结尾处尝试对双通道进行解码 还随附了带有时间戳(使用 TeraTerm)的日志文件、该日志文件具有和不具有调试打印功能。 对于双通道、流中总共有258帧、需要解码516帧。 根据日志打印、解码516帧大约需要7分钟、即70fps 左右、因此单个流以35fps 播放。 由于显示屏以60fps 的速率运行、因此显示屏上可能会出现抖动。  

    [Tue Mar 21 12:58:32.755 2017] displayBufsMode:1 ->解码开始
    [2017年3月21日12:58:39.746 ] 0x33350:输入结束
    [2017年3月21日12:58:39.762 ] 0x2e008:输入结束

    在启用调试打印功能的第二次运行中、您可以看到解码器平均花费大约~13ms 对帧进行解码。  

    e2e.ti.com/.../dm368ipnc_5F00_mt5_5F00_1920_5F00_1080_5F00_h264_5F00_6mbit.mov

    e2e.ti.com/.../decode_5F00_log.log

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您回答我的问题。
    在您的帮助下、我完全了解 IVA HD 解码器的性能。
    1080p30解码意味着应用程序每33ms (30FPS、单位)将 H.264帧传输到 IVA HD。
    非常感谢。