Please provide complete information as applicable to your setup.
• Hardware Platform (Jetson / GPU) / Jetson
• DeepStream Version / 6.0
• JetPack Version (valid for Jetson only) / 4.6.0
• TensorRT Version / 10.2
• NVIDIA GPU Driver Version (valid for GPU only)
• Issue Type( questions, new requirements, bugs) / questions
Hi, I’m made a two pipelines which is for decoding and disply.
decoding pipeline is
appsrc ! h264parse ! nvv4l2decoder ! nvvideoconvert ! videoconvert ! capsfilter(video/x-raw,format=RGBA) ! appsink // (manually push h264 encoded buffer to appsrc)
display pipeline is
appsrc ! queue ! tee name=t ! fakesink
t. ! videoconvert ! capsfilter(video/x-raw,format=RGBA) ! nvvideoconvert ! capsfilter(video/x-raw(memory:NVMM),format=RGBA) ! nvdsosd ! nvegltransform ! nveglglessink
I send GstBuffer from decoding pipeline’s appsink to display pipeline’s appsrc using function which connected to new-sample signal in appsink (copied from on_new_sample function in deepstream_ipc_test_app.c)
static GstFlowReturn onNewSampleFromSink(_GstAppSink *sink, gpointer *userData)
{
GstSample *sample = nullptr;
GstBuffer *srcBuffer = nullptr;
GstMapInfo srcMap;
GstElement *appsrc = (GstElement *)userData;
GstFlowReturn ret;
static GMutex sinkLock;
if (gst_app_sink_is_eos(sink)) {
g_printerr("analyze pipeline received EOS\n");
return GST_FLOW_EOS;
}
if(!(sample = gst_app_sink_pull_sample(GST_APP_SINK(sink)))) {
g_printerr("analyze pipeline can not receive sample\n");
return GST_FLOW_OK;
}
if (!(srcBuffer = gst_sample_get_buffer(sample))) {
g_printerr("No more buffers available from app sink element\n");
return GST_FLOW_ERROR;
}
if (!gst_buffer_map(srcBuffer, &srcMap, GST_MAP_READ)) {
g_printerr("Map the gst buffer failed\n");
return GST_FLOW_ERROR;
}
g_mutex_lock(&sinkLock);
GstBuffer *dstBuffer = gst_buffer_new_allocate(nullptr, srcMap.size, nullptr);
GstMapInfo dstMap;
gst_buffer_map(dstBuffer, &dstMap, GST_MAP_WRITE);
int copyFlags = (GST_BUFFER_COPY_META | GST_BUFFER_COPY_FLAGS | GST_BUFFER_COPY_TIMESTAMPS);
gst_buffer_copy_into(dstBuffer, srcBuffer, (GstBufferCopyFlags)copyFlags, 0, -1);
memcpy(dstMap.data, srcMap.data, srcMap.size);
dstMap.size = srcMap.size;
gst_buffer_unmap(dstBuffer, &dstMap);
GstMemory *mem = gst_buffer_peek_memory(dstBuffer, 0);
gst_mini_object_weak_ref(GST_MINI_OBJECT(mem), (GstMiniObjectNotify)gst_mem_free_cb, sample);
gst_sample_ref(sample);
gst_app_src_push_buffer((GstAppSrc *)appsrc, dstBuffer);
g_mutex_unlock(&sinkLock);
gst_sample_unref(sample);
return GST_FLOW_OK;
}
I didn’t get any errors in this code but renderer does not display anything. Can somebody point out what’s wrong with my pipeline?
Thanks in advance.