工具与软件:
您好!
我在 AM62A 平台上的 Edge AI SDK 9.2中使用了 TIOVX 框架。 我将基于 gsttiovxsso.c 开发 Gstreamer 插件、并通过为 MSC 节点实现就地处理来尝试优化我的流水线。
当前设置:
-硬件: AM62A EVM
- SDK 版本: Edge AI SDK 9.2.
-操作系统: Linux 5.10.168.
- Gstreamer 版本: 1.16.3.
我要实现的目标:
我想就地执行 MSC 操作(使用相同的缓冲器进行输入和输出)、以减少存储器使用并提高性能、因为我的输入和输出图像格式和尺寸是相同的:
-图像格式:TIVX_DF_IMAGE_NV12
-分辨率: 1920x1080
-颜色格式: NV12.
当前实施的方案:
我将扩展 GstTIOVXSiso 基类并实现自定义元素。 相关代码如下:
static gboolean
gst_ti_msc_init_module (GstTIOVXSiso self, vx_context context,
GstCaps in_caps, GstCaps out_caps, guint num_channels)
{
GstTiMsc msc = GST_TI_MSC (self);
vx_status status = VX_FAILURE;
// Create MSC node
msc->node = tivxMscNode(context,
msc->input_image, // vx_image input
msc->output_image, // vx_image output
&msc->msc_create_params); // tivx_msc_create_params_t
if (VX_SUCCESS != status) {
GST_ERROR_OBJECT (self, "Failed to create MSC node");
goto exit;
}
return TRUE;
exit:
return FALSE;
}
我想对其进行修改、以便使用 transform_ip、而不使用 transform、类似于:
static GstFlowReturn
gst_ti_msc_transform_ip(GstBaseTransform trans, GstBuffer buf)
{
GstTiMsc self = GST_TI_MSC(trans);
// ... setup code ...
// Use same buffer for input and output
vx_image image = get_image_from_buffer(buf);
status = tivxMscNode(context, image, image, &msc_params);
// ... cleanup code ...
return ret;
}
问题:
1. TIOVX MSC 节点是否支持在 AM62A 平台上进行就地操作?
2.如果是、就地处理有哪些要求或限制?
3.是否有示例代码显示如何配置节点以进行就地操作?
4.在 AM62A 平台上、该就地操作的性能如何? 是否存在任何需要注意的限制?
5.如果支持就地,我是否需要在图形或节点参数中进行特殊配置?
如果不支持就地操作、是否还有其他建议的方法来优化存储器使用、同时考虑 AM62A 平台的特性?
感谢您的帮助!
此致