Background
I am working with Python APIs, Deepstream 6.0.1, Tesla T4, and Deepstream official develop container.
I use appsrc
to feed numpy arrays to my pipeline:
img = cv2.imread("/opt/nvidia/deepstream/deepstream-6.0/samples/streams/sample_720p.jpg")
img = cv2.resize(img, (1080, 1920))
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGBA)
buffer = Gst.Buffer.new_wrapped(img.tobytes())
self.source_bin_appsrc.emit("push-buffer", buffer)
The pipeline works fine, and I am able to retrieve the numpy image as well as the metadata from an object of type NvDsBatchMeta
.
I am using this pipeline to create REST API that feeds numpy arrays to Deepstream.
Problem
Consider that situation where I have 2 API calls. The API call A
generates a numpy_array_A
and sends it to the appsrc
element in the pipeline. The API call B
generates a numpy_array_B
and sends it to the appsrc
element in the pipeline.
My pipeline process correctly the numpy arrays.
The problem is that when I retrieve the metadata, I haven’t found a way to know to which one of the two arrays (numpy_array_A
or numpy_array_B
) the metadata refers to.
In other works, is there a way to associated an instance of type NvDsFrameMeta
to my original gstreamer buffer (created in the sample code above)? I am looking for something like an identifier that remains equal when deepstream converts the gstreamer buffer to a NvDsFrameMeta
in NvDsBatchMeta
. This is needed to return the correct metadata to each user of my REST API. If I had 20 concurrent calls, I need to know what metadata corresponds to every specific request.
Thank you