文档
注册

业务流数据对接接口介绍

SendData-GetResult数据流图

用户使用SendData接口将图片数据发送给appsrc元件,inPluginId指定appsrc元件的编号,appsrc元件发送数据给pipline中的其他元件处理,处理结果发送给appsink元件,用户使用GetResult接口获取appsink元件的数据,其中outPluginId指定appsink元件编号。

本套接口可以用于没有appsrc元件或appsink元件的场景(即不需要外部输入数据或调接口获取结果),例如将appsrc元件改成视频取流元件mxpi_rtspsrc时,不需要通过SendData接口发送数据,输出结果可以用GetResult或GetResultSP接口获取。样例代码请参考SendData-GetResult接口样例代码

  • 当多个线程同时调用SendData接口时,GetResult接口获取的结果顺序不确定。SendData接口支持多个appsrc输入元件,GetResult接口支持多个appsink输出元件。
  • GetResultSP接口返回数据为智能指针类型,用户无需管理这部分内存,具体请参见GetResultSP
图1 SendData-GetResult数据流图

SendDataWithUniqueId-GetResultWithUniqueId数据流图

用户使用SendDataWithUniqueId接口将图片数据发送给appsrc元件,inPluginId(当前固定为“0”)指定appsrc元件的编号,返回整数uniqueId给用户,appsrc发送数据给pipline处理,将处理结果以uniqueId为key保存在outputMap中,用户使用GetResultWithUniqueId或GetResultWithUniqueIdSP接口(使用发送时获得的uniqueId作为入参)取出与SendDataWithUniqueId对应的推理结果。样例代码请参考SendDataWithUniqueId-GetResultWithUniqueId样例代码

  • SendDataWithUniqueId和GetResultWithUniqueId只支持Stream仅包含单个appsrc和单个appsink元件的场景。
  • GetResultWithUniqueIdSP接口返回数据为智能指针类型,用户无需管理这部分内存,具体请参见GetResultWithUniqueIdSP
图2 SendDataWithUniqueId-GetResultWithUniqueId数据流图

SendMultiDataWithUniqueId-GetMultiResultWithUniqueId数据流图

用户使用SendMultiDataWithUniqueId接口将图片数据发送给appsrc元件,inPluginId(当前固定为“0”)指定appsrc元件的编号,返回整数uniqueId给用户,appsrc发送数据给pipline处理,将处理结果以uniqueId为key保存在outputMap中,用户使用GetMultiResultWithUniqueId或GetMultiResultWithUniqueIdSP接口(使用发送时获得的uniqueId作为入参)取出与SendMultiDataWithUniqueId对应的推理结果。样例代码请参考SendMultiDataWithUniqueId-GetMultiResultWithUniqueId样例代码

  • SendMultiDataWithUniqueId和GetMultiResultWithUniqueId只支持Stream仅包含单个appsrc和单个appsink元件的场景。
  • GetMultiResultWithUniqueIdSP接口返回数据为智能指针类型,用户不需管理这部分内存。具体请参见14.4.2.1.18-GetMultiResultWithUniqueIdSP
  • 暂仅支持C++接口。
图3 SendMultiDataWithUniqueId-GetMultiResultWithUniqueId数据流图

SendProtobuf-GetProtobuf数据流图

用户使用接口SendProtobuf将protobuf数据和key(用于将protobuf数据挂载至元数据中,使用该数据的元件可以通过这个key获取数据)批量或单个发送给appsrc元件,inPluginId指定appsrc的编号,appsrc发送数据给其他元件处理。元件处理完数据后,以元件名为key将处理结果保存至元数据中,最后通过GetProtobuf接口从元数据中取出想要获取的元件结果,输入一组key,便能获取key对应的protobuf数据。

本套接口可以用于没有appsrc或appsink元件的场景(即不需要外部输入数据或调接口获取结果),例如将appsrc改成视频取流元件mxpi_rtspsrc时,不需要通过SendProtobuf发送数据,输出结果可以用GetProtobuf获取。样例代码请参考SendProtobuf-GetProtobuf样例代码

当多个线程同时调用SendProtobuf接口时,GetProtobuf获取的结果顺序不确定。SendProtobuf接口支持多个appsrc输入插件,GetProtobuf支持多个appsink输出元件。

图4 SendProtobuf-GetProtobuf数据流图

接口对比表

接口名称

输入数据类型

输出数据类型

输入和输出是否有序

是否支持多输入多输出

是否必须配对使用

使用场景

SendData-GetResult

图片

序列化输出结果、protobuf

支持单线程有序或多线程输出结果乱序。

SendDataWithUniqueId-GetDataWithUniqueId

图片

序列化输出结果

支持输入输出有序的单线程或多线程。例如,创建推理服务,不同客户端并发向其发送请求。

SendMultiDataWithUniqueId-GetMultiResultWithUniqueId

多张图片

序列化输出结果

支持一次性输入多张图片并输入输出有序的单线程或多线程。例如,创建推理服务,不同客户端并发向其发送请求。

SendProtobuf-GetProtobuf

protobuf

protobuf

支持单线程有序或多线程输出结果乱序。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词