mxpi_datatransfer

功能描述

在Device(内存)和Host(CPU内存)之间转移内存数据。

同步/异步(status)

异步

约束限制

仅支持MxpiVisionList和MxpiTensorPackageList两种数据格式。

插件基类(factory)

mxpi_datatransfer

输入和输出

  • 静态输入:metadata(数据类型“MxpiVisionList”和“MxpiTensorPackageList”)。
  • 静态输出:metadata(数据类型“MxpiVisionList”和“MxpiTensorPackageList”)。

属性

请参见表1

表1 mxpi_datatransfer插件的属性

属性名

描述

是否为必填项

是否可修改

dataSource

输入数据对应索引(通常情况下为上游元件名称),可以配置多个,以逗号隔开。默认值为上游插件对应输出端口的元数据key。

transferMode

设置数据转移模式:
  • auto:默认值,自动模式,自动将内存搬移到另外一种内存中。
  • d2h:device2host,将Device内存搬移到Host。
  • h2d:host2device,将Host内存搬移到Device。

removeSourceData

是否清除输入数据的内存:
  • yes:默认值,删除数据。
  • no:保留数据。

默认情况下,该插件只能用于单分支Stream的业务,否则可能导致其他分支数据处理异常。如需在多分支Stream场景,请将“removeSourceData”设置为“no”

示例

通常情况下,外部数据发送到Stream中或者Stream的数据往外发送时需要用该插件。

如上图所示,以缩放图像数据为例。用户可以将解码后的数据(Host内存)发送给Stream,通过该插件就可以将数据转移到Device侧,缩放插件正常运行,输出结果经过该插件转移后缩放后图像数据被转移至Host,用户获取到该数据就可以在Host侧正常访问。如图所示的案例中,发送数据和接收结果需要用“SendProtobuf()”和“GetProtobuf()”接口实现,具体请参见业务集成”章节的“SendProtobuf/GetProtobuf数据流图”内容。