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.

[参考译文] TDA3XEVM:VISION SDK3.2:如何动态更改 AEWB 的基准通道?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/663782/tda3xevm-vision-sdk3-2-how-can-i-change-the-reference-channel-of-the-aewb-on-the-fly

器件型号:TDA3XEVM

您好!

我正在尝试切换四摄像头系统的 AEWB 参考摄像头通道。 当我在 创建时仅找到如何设置此信道时、我尝试通过执行如下调用来实现新的控制命令来设置 Chid:

issAewb1Link_algPlugin.h 中、我添加了:

typedef 结构

 AlgorithmLink_ControlParams baseClassControl;
 /**<基类控制参数*/
 uint32 chid;
 /**<自动曝光通道*/
} AlgorithmLink_IssAewbChId


在我的显示功能中、我添加了:


静态空 switchAewbChannel (chains_xxx_DisplayAppObj *pObj、uint32 chNum)

 Int32状态;
 静态算法 Link_IssAewbChId gActAewbChannel={.Chid=0};
 gActAewbChannel.chId =chNum;
 gActAewbChannel.baseClassControl.size=sizeof (gActAewbChannel);
 状态= System_linkControl (pObj->ucObj.Alg_IssAewbLinkID、
  算法_AEWB_LINK_CMD_SET_AEWB_CAMEID
  gActAewbChannel (&G)、
  sizeof (gActAewbChannel)、
  true);
 utils_assert (system_link_status_sok = status);

issAewb1Link_algPlugin.c 中、我添加了函数

Int32 AlgorithmLink_issAewb1Control (void *pObj、void *pControlParams):


switch (pAlgLinkControlPrm->controlCmd)


 案例算法_AEWB_LINK_CMD_SET_AEWB_CAMEID:
 {
  AlgorithmLink_IssAewbChId * CP=(AlgorithmLink_IssAewbChId *) pControlParams;
  if (<ISS_AEWB1_LINK_MAX_CH))
  {
   pAlgObj->algLinkCreateParams.chId=cp->chId;

   status = system_link_status_sok;
  }
  其他
  {
   状态= system_link_status_EINVALID_PARAMS;
  }
  中断;

(...)

由于我没有成功地传输简单参数(我会做什么错???),所以当参数传递问题得到解决时,我尝试设置一个固定值以查看它是否起作用。 但这也不起作用。 是否无法即时切换 AEWB 参考通道?

此致、

Guenter

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

    我已将您的问题转交给 ISS 专家。

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

    当 AESWB 被配置为在创建时仅针对一个通道运行时、它将仅针对该通道运行。 这样做的原因是、在创建时、输出缓冲区仅分配并排队到此通道的队列(putEmptyBuffer)。 在处理时、当链接尝试获取空闲输出缓冲区(getEmptyBuffer)时。 由于新通道没有帧排队、因此会返回错误。

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

    您好、Brijesh、

    感谢您的回答、即使我的问题无法通过软件限制我计划的方式得到解决。 但是、也许您可以给我一个答案来回答这个问题、为什么在我上面显示的代码中参数没有被传递到 AESWB 算法中。

    现在的问题是、环绕系统仅使用一个摄像头(例如前凸轮)来制作螺旋桨光电信号。 但是、如果我想快速切换到仅后视(使用门)、我不能接受、将使用前置摄像头的数据来控制后视的曝光。 侧视图等也会出现同样的问题

    由于当前系统将不符合我们客户的要求、如果我无法切换摄像头的参考 AEWB 信道、我计划以这种方式修改 AEWB、以便获取每个摄像头的统计数据(这意味着我将设置"UcObj-"Alg_IssAewbPrm.runAewbOnlyForOneCh = false;")。

    我将切换哪组统计数据将用于算法本身、并将其作为广播发送回每个传感器、或者-根据所选的视图-我将分别为每个摄像头建立 AEWB。

    现在、我将 runAewbOnlyForOneCh 设置为 false、结果是系统根本不工作。 可能是目前不支持此模式?

    此致、

    Guenter

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

    您好、Guenter、

    问题是代码中使用了错误的控制命令。 我正在粘贴下面的示例代码、以将控制命令发送到算法链接。 本质上、我们需要在 baseClass 和 linkControl 中设置实际控制命令、我们需要使用 Algorithm_link_cmd_config 命令。

    dccCtrlPrms.baseClassControl.controlCmd = algorithm_AEWB_LINK_CMD_GET_DCC_BUF_Params;

    dccCtrlPrms.baseClassControl.size = sizeof (dccCtrlPrms);

    dccCtrlPrms.dccBuf =空;

    状态= System_linkControl (LinkID、 algorith_link_CMD_config、 &dccCtrlPrms、 sizeof (dccCtrlPrms)、 true);

    是的、将此标志设置为 false 将使 AEWB 针对所有通道运行、它将为所有通道分配缓冲区并为所有通道运行 AEWB 算法。 现在、您可以更改插件代码、以便为所选通道运行该插件代码、并且可以使用此控制命令更改所选通道。  

    此致、

    Brijesh

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

    您好、Brijesh、

    感谢您的回答。 这解决了与算法链接参数问题相关的部分问题。

    此致、

    Guenter

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

    您好、Guenter、

    我没有明白、您是否还面临其他问题?

    Rgds、

    Brijesh