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.

[参考译文] PROCESSOR-SDK-DRA8X-TDA4X:由于"vx_object_array"应用挂起、作为节点的输入。

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/904632/processor-sdk-dra8x-tda4x-application-hanging-becaues-of-vx_object_array-as-input-to-a-node

器件型号:PROCESSOR-SDK-DRA8X-TDA4X

您好!

我有一个应用程序、其中有一些节点及其复制。

我附加了一个节点、该节点将最后一个节点的输出及其应用中的复制节点作为输入。

输出是一个"vx_object_array"、其中包含2个用于节点及其复制的"vx_user_data_object"。

我已将"vx_object_array"作为输入传递到我的新节点。

当我运行代码时、在生成第一个输出后、第二个周期一直运行、直至其输出用作我的新节点的输入。

说明:

node1 -> node2 ->。。。 node6 -> node7 -> newnode 是我的应用程序图。
第一个执行周期运行良好。 在下一个周期中、代码一直运行到 node6、并在该代码之后停止。

请您解释一下这种情况发生的原因吗?

此致、
Vinayak。

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

    请提供更多信息吗? Node7中输出的缓冲深度是多少?

    是否确定不将对象数组输出拆分为流水线中的任何位置?

    是否将 Node7的输出作为图形参数?

    此致、
    Shyam

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

    Shyam、您好!

    以下是您的问题的答案:  

    a) buffer_depth =1  f管线 深度=1

    TIvxSetNodeParameterNumBufByIndex (Node7、索引、缓冲区深度)

    b)否、我们不 会将目标数组输出拆分为流水线中的任何位置。

    C)我们不将节点7输出作为图形参数。

    谢谢、

    Vinayak

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Shyam、您好!
     
    我们有一个具有一组节点的应用、所有节点都被复制以用于2通道数据。
    我们必须插入一个节点、该节点从其中一个中间节点获取输入、对其进行处理、并且其输出不会提供给链中的任何节点。
    我们不会复制此新节点、因为它同时处理两个通道数据。
     
    由于复制了中间节点、输出是对象数组。  
    该输出进入2个节点。 一个是我们添加的新节点、另一个已经在流水线链中。
    为了向 exising 节点提供输入、我们对 zeroth 索引执行 getArrayItem 并将其作为输入。 节点的复制将处理第二个通道的访问。
    对于新节点、由于我们需要在节点的单个实例中同时使用两个通道数据、因此我们直接提供了对象数组作为输入。
     
    通过执行此操作、我们观察到新节点在执行后不会释放对象数组。
    我们这样说是因为对于下一个帧、中间节点没有执行、因为它没有获得其输出缓冲区(objectArray)。
     
    即使我们注释掉新节点中的所有处理、它仍然不会释放缓冲区。  
    可能的原因是什么?
     
    此致、
    Vinayak。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是 PSDKRA 6.2中的已知问题。 当 OpenVx 对象数组在两个节点(一个节点以复制模式运行、另一个节点消耗整个对象数组)之间共享时、应用程序将在 N 个缓冲区后锁定、其中 N 是两个节点之间的缓冲区深度。 这会被归档为错误、预计将由 SDK 7.0解决

    作为一种权变措施、用户可以将输出复制到不同的节点中、并将数据传递给整个对象数组占用的节点。

    此致、
    Shyam