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.

[参考译文] TMS320DM368:H264编码器与 DEI 同时出现问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/566930/tms320dm368-h264-encoder-simultaneous-with-dei-problem

器件型号:TMS320DM368

大家好、

我使用的是 DVSDK 4_02_00_01、并且遇到了与同时使用 DEI 和 h264编码器相关的问题

我的应用程序陷入死锁或收到 SIGSEV。


我正在附加调试日志、希望能够解决这个问题

e2e.ti.com/.../CrashDebug.txt

谢谢、此致

Apurv Padole

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

    是否有人面临相同的问题? 是否有人可以解决此问题?

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

    您好 Apurv、

    是否可以尝试将以下参数设置为1。

    enableDDRbuff = 1.

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

    h264Params.videncParams.size = sizeof (IH264VENC_Params);
    h264Params.profileIdc = 100;/*!<配置文件 IDC */
    h264Params.levelIdc = 50;/*!<级别 IDC *
    h264Params.entropyMode = 1;/*!<熵模式标志0-CAVLC、1-CABAC */
    h264Params.transform8x8FlagIntraFrame = 1;/*!<帧间8x8转换的标志*/
    h264Params.transform8x8FlagInterFrame = 1;/*!<内部帧中8x8变换的标志*/
    h264Params.seqScalingFlag = 1;
    h264Params.videncParams.maxFrameRate = 25000;
    h264Params.videncParams.reconchromaFormat = 9;
    h264Params.videncParams.rateControlPreset = 2;
    h264Params.videncParams.maxBitRate = 1500000;
    h264Params.videncParams.encodingPreset = 2;
    h264Params.videncParams.maxWidth = 576;
    h264Params.videncParams.maxHeight = 720;
    h264Params.videncParams.inputChromaFormat = 9;
    h264Params.enableDDRbuff = 1;

    其他 h264 prameters 设置为默认值。

    DEI 和 H264编码器进程都以不同的线程运行。
    将来自 deinterlacer 的输出缓冲器提供给调整器、调整器将其转换为预期分辨率 viz 736x576、然后将来自电阻器的输出缓冲器提供给 H264编码器。
    我在调用处理函数之前正在为 DEI 创建输出缓冲器。

    DEI 2.0版和 H264 2.20版

    Uboot 中的操作模式被设定为单次触发模式

    两种算法都处于不同的暂存组 ID 中、如果它们处于相同暂存组 ID 中、则会发生帧丢失。

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

    您好!

    [引用 user="Apurv Padole">H264版本2.20 [/quot]这是一个相当旧的版本。 最新的 GAED 版本为02.30.00.06可下载@  

    我已附加最新版本的调试库及其接口文件。 请对接口文件进行必要的更改。 您能否尝试使用此调试库、将其重命名为.a. 您的所有参数设置看起来都很好。  

    e2e.ti.com/.../h264venc_5F00_ti_5F00_arm926_5F00_debug.a.txt

    e2e.ti.com/.../ih264venc.h

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

    您好 Prashanth、

    感谢您的支持。

    我已根据您的建议更改了编解码器和调试库。 现在我没有遇到分割故障、但 H264流程中存在致命的不可恢复错误。

    我正在附加当前调试日志:e2e.ti.com/.../13Feb_5F00_CrashingDebug2.txt


    谢谢、此致、

    Apurv Padole

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

    您好 Apurv、
    感谢您的日志。 和更新。

    您是否为此日志使用了调试库? 如果没有、您可以重命名我共享给"h264venc_ti_arm926.a"的调试库。 现在不启用 CE_DEBUG 日志。 调试库日志现在应该已经足够了。 您还可以共享您现在使用的所有参数。

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

    您好 Praveen、

    真的很抱歉,不能再回到过去了

    H264参数与之前相同。

    Deinterlacer 参数

       deiAttrs.height = 576;
       deiAttrs.width = 720;
       deiAttrs.inFormat =彩色空间_UYVY;
       deiAttrs.outFormat =彩色空间_UYVY;
       deiAttrs.threshold[0]= 1;
       deiAttrs.threshold[1]= 33;
       deiAttrs.sysBaseAddr = sysBaseAddr;

       deiOutBufferAttrs.dim.height = 576;
       deiOutBufferAttrs.dim.width = 720;
       deiOutBufferAttrs.dim.lineLength = DMI_Roundup (BufferGfx_calcLineLength (deiOutBufferAttrs.dim.width、
                       Colorspace_UYVY)、32);
       deiOutBufferAttrs.dim.x = 0;
       deiOutBufferAttrs.dim.y = 0;
       deiOutBufferAttrs.colorspace =彩色空间_UYVY;


    我已更改 H264调试库、并附加了调试日志 e2e.ti.com/.../14Jan_5F00_DebugCrashing.txt


    谢谢、此致
    Apurv Padole

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

    您好!

    您能否设置 maxWidth = 1920和 maxHeight = 1080。 并根据需要设置 InputWidth 和 inputHeight。

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

    仍然无法正常工作。

    调试日志:e2e.ti.com/.../16Jan2017.txt

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

    仅为了记录、我在 H264编码器资源分配(Venc1_create ("h264")之前调用 Deinterlacer 的资源分配函数(Venc1_create)。 这样做是否有问题?

    当我在 Deinterlacer 之前调用 H264编码器的资源分配时、没有收到 SIGSEGV、但没有发生隔行。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们能否获得适用于 Deinterlacer 2.0和 JPEG 的调试库来查看共享哪些资源、我们如何优化资源共享。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    [引用 user="Apurv Padole">在 H264编码器资源分配(Venc1_create ("h264")之前、我正在为 Deinterlacer 调用资源分配函数(Venc1_create)作为记录。 这样做是否有问题?[/报价]这不应导致任何问题。

    您能否尝试在使用 h264软件包的示例 testapplication 中设置默认参数? 您可以在 DVSDK_insatlldir/DM365_codecs_xx_xx_xx/packages/ti/sdo/codec/h264enc/apps/client/test/testvecs/config/testparams.cfg 上找到它

    让 enableDDRbuff = 1;同时确保 将 XDM_YUV_420SP 馈送至 h264编码器。 不支持其他格式。

    对于 DEI 的调试库、您需要联系您当地的 TI FAE。  

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

    您好!

    在为 Deinterlacer 分配资源之前、我尝试为 h264编码器分配资源、我可以看到调试日志中存在一些差异。

    代码正常工作、但此方法使视频质量下降。 我正在附加调试日志:e2e.ti.com/.../17Jan2017.txt

    maxWidth 和 maxHeight 被设定为720 x 576

    谢谢、此致

    Apurv Padole

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Apurv、
    很高兴看到它运行良好。 我建议您将 maxWidth 和 maxHeight 保持为1920x1080或1280x720 (对于您的用例足够)。 设置 inputWidth = 720和 inputHeight = 576。

    为了获得更好的质量、您可以选择"高质量"
    设置编码预设= 1或您可以设置
    编码预设= 3 (用户定义)且编码基数= 2

    注意:编码预设将覆盖编码量。 任一设置都会将编码器设置为高质量。 有关更多信息,请参见《用户指南》。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好普拉什特、

    很抱歉再次打扰您、但由于帧丢失、质量似乎是一个问题。

    Deinterlacer 使用当前帧和前一帧来生成隔行输出、假设25帧中每秒有3帧丢失、质量将下降。

    请帮助我找到分配资源的最佳方式、并在同步处理过程中将延迟降至最低。

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

    您好!

    您面临哪些质量问题?

    为什么有帧丢失? DEI 和 H264编码器是否以30fps 运行?

    此致、

    Anand

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

    帧丢失是由于防止了算法的抢占。 我在调用 DEI 进程之前锁定了互斥量、并在 DEI 进程完成后将其解锁。 在调用 h264编码过程之前、相同的互斥锁被锁定、在 h264编码过程完成后解锁。

    我们将返回到出现的方形一分割故障
    但并非定期。 它会在一段时间内发生一次。 我无法获取回溯日志。

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

    您好!

    为 H264编码器设置'enableDDRBuff=1 '后、就不需要互斥量。

    H264和 DEI 可以并行运行。

    此致、

    Anand

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

    我认为互斥是导致帧丢失的问题。 我移除了它、但没有发生帧丢失。

    但是、现在我要尝试调试并非总是发生的分段故障。
    我是否有一种方法可以返回跟踪日志。
    我尝试插入 SIGSEV 的信号处理程序并使用 backtrace()调用打印回路跟踪日志。 但没有可打印的照片。
    我甚至尝试了 gdb,但运气不好。

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

    您好!

    如果提供 DEI 和 JPEG 的调试库、调试 Segmentation 故障会更容易。

    谢谢、此致
    Apurv

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Apurv、
    您能解释一下您的用例吗? 它以前是 DEI + H264编码器。 您是否同时使用 DEI+H264Encod器+JPEG 编码器? 如何设置组 ID?

    当您设置 enableDDRBuff=1 (正如之前和 Anand 所建议的那样)时、DEI+H264编码器应该能够解决任何问题。
    当您看到分割故障时、您能否共享更多日志、这将有助于进一步分析。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Prashanth、

    答案如下:-

    >>您能解释一下您的用例吗? 它以前是 DEI + H264编码器。 您是否同时使用 DEI+H264Encod器+JPEG 编码器? 如何设置组 ID?

    我们以前的用例就像同时录制和捕获。 我们初始化了 JPEG 编码器。 我们将在记录期间创建 H264和 DEI 的实例。

    但现在、我们只尝试进行视频录制。 在这种情况下、我们将在录制过程中创建 H264和 DEI 编码器、但不会创建 JPEG 编码器。 在这种情况下、我们还会遇到段错误、有时还会重启内核。

    我们将为 H264和 JPEG 设置灌浆 ID "1"、为 DEI 设置"2"。

    >>当您设置 enableDDRBuff=1 (正如之前和 Anand 建议的那样)时、DEI+H264编码器应该能够解决任何问题。
        当您看到分割故障时、您能否共享更多日志、这将有助于进一步分析。

    我们设置 enableDDRBuff=1、但会出现分段故障。

    内核重新引导的日志文件随附此文件。     e2e.ti.com/.../Kernel-_5F00_Rebooting_5F00_logs.txt

    谢谢、此致

    UMA Shanker

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

    尊敬的 Uma Shanker:
    感谢您的详细回复和内核重启日志(我是编解码器工程师、在系统方面的知识有限。 它看起来像是系统问题)。 您也可以共享分割故障日志吗?

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

    您好 Prashanth、

    感谢您的回答。

    现在、我们没有遇到分段故障。 我们现在将重新启动内核。

    当我们同时使用 h264和 dei 时、您能确认它是否与 h264参数有任何相关性吗?

    测量参数如下所示:-

    modprobe cmemk phys_start=0x87800000 phys_end=0x90000000 allowOverlap=1 phys_start_1_0x00001000 phys_end_1_0x00008000 Pools;1=1x28672 useHeapIfPoolUnavailable = 1

    我要附加我们的配置文件。

    e2e.ti.com/.../2134.encodedecode_5F00_new.txt

    谢谢、此致

    UMA Shanker

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

    尊敬的 Uma Shanker:

    只要 H264编码器的"enableDDRBuff = 1"、H264编码器与 DEI 之间就没有相关性。

    我认为内核重新启动是因为 WDT 开始启动、因为您的系统已挂起。

    PL 确保 H264编码器在系统中正常工作。

    此致、

    Anand

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

    Anand、您好!


    如果系统挂起、内核是否会向应用程序发送 SIGSEV 信号?

    此致、
    Apurv

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

    您好 Apurv、

    如果您已启用看门狗计时器(WDT)、则它将在不活动时过期并重新引导系统。

    此致、

    Anand

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

    禁用看门狗计时器(WDT)后也会出现此问题。

    此致
    UMA Shanker