Thanks a lot for your prompt response. I’ve tried the pipeline that you’ve recommended. Now it’s even better. Last time you recommended “fakesink” instead of “appsink”. But I’m not sure how to grab samples using fakesink. I can grab samples using “gst_appsink_pull_sample” and “gst_appsink_pull_preroll”. But, how can I get the same kind of samples using “fakesink”? As still, I couldn’t figure out way of using fakesink, trying to manage with appsink even though with a high amount of memory usage.
Ran a couple of test on the pipeline. Found out that udp stream plays almost flawlessly on the target computer. But there is a massive amount of latency in the other branch which goes out via “appsink”. I’m using appsink samples in a tracking software. I’ve used GST-SHARK(https://github.com/RidgeRun/gst-shark) to measure latency. Found out slight irregularity in appsink stream. I’m not sure if this is the right place to ask this but yet I find here very much effective. Is there any better way to measure latency between two consecutive elements and pads? Excuse me as I’m being a bit greedy. I’m not yet satisfied with the stream I receive on the other end which is my tracking software.
My Pipeline:
GST_DEBUG="GST_TRACER:7" GST_TRACERS="interlatency" gst-launch-1.0 v4l2src device=/dev/video0 ! nvvidconv ! tee name = te ! queue ! 'video/x-raw(memory:NVMM), format=(string)I420, width=1920, height=1080' ! nvvidconv flip-method=2 ! 'video/x-raw, format=(string)NV12' ! appsink te. ! queue ! 'video/x-raw(memory:NVMM), format=(string)I420' ! omxh264enc bitrate=3000000 preset-level=0 control-rate=2 insert-sps-pps=true ! video/x-h264, width=1920, height=1080, stream-format=byte-stream, bitrate=5000 ! rtph264pay ! udpsink host=192.168.1.10 port=8002
Latency Data Found Using gst-shark:
0:00:00.066932864 7312 0x587300 DEBUG GST_TRACER gsttracer.c:163:gst_tracer_register:<registry0> update existing feature 0x42b4b0 (cpuusage)
0:00:00.067052480 7312 0x587300 DEBUG GST_TRACER gsttracer.c:163:gst_tracer_register:<registry0> update existing feature 0x42b570 (graphic)
0:00:00.067095936 7312 0x587300 DEBUG GST_TRACER gsttracer.c:163:gst_tracer_register:<registry0> update existing feature 0x42b630 (proctime)
0:00:00.067133376 7312 0x587300 DEBUG GST_TRACER gsttracer.c:163:gst_tracer_register:<registry0> update existing feature 0x42b6f0 (interlatency)
0:00:00.067172672 7312 0x587300 DEBUG GST_TRACER gsttracer.c:163:gst_tracer_register:<registry0> update existing feature 0x589010 (scheduletime)
0:00:00.067208096 7312 0x587300 DEBUG GST_TRACER gsttracer.c:163:gst_tracer_register:<registry0> update existing feature 0x5890d0 (framerate)
0:00:00.067343136 7312 0x587300 DEBUG GST_TRACER gsttracer.c:163:gst_tracer_register:<registry0> update existing feature 0x589190 (queuelevel)
0:00:00.067387680 7312 0x587300 DEBUG GST_TRACER gsttracer.c:163:gst_tracer_register:<registry0> update existing feature 0x589250 (bitrate)
0:00:00.067446560 7312 0x587300 DEBUG GST_TRACER gsttracer.c:163:gst_tracer_register:<registry0> update existing feature 0x589310 (buffer)
0:00:00.067941248 7312 0x587300 TRACE GST_TRACER gsttracerrecord.c:110:gst_tracer_record_build_format: interlatency.class, from_pad=(structure)"scope\,\ type\=\(GType\)NULL\,\ related-to\=\(GstTracerValueScope\)GST_TRACER_VALUE_SCOPE_PAD\;", to_pad=(structure)"scope\,\ type\=\(GType\)NULL\,\ related-to\=\(GstTracerValueScope\)GST_TRACER_VALUE_SCOPE_PAD\;", time=(structure)"scope\,\ type\=\(GType\)NULL\,\ related-to\=\(GstTracerValueScope\)GST_TRACER_VALUE_SCOPE_PROCESS\;";
0:00:00.068086720 7312 0x587300 DEBUG GST_TRACER gsttracerrecord.c:124:gst_tracer_record_build_format: new format string: interlatency, from_pad=(string)%s, to_pad=(string)%s, time=(string)%s;
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Framerate set to : 60 at NvxVideoEncoderSetParameterNvMMLiteOpen : Block : BlockType = 4
===== MSENC =====
NvMMLiteBlockCreate : Block : BlockType = 4
0:00:00.303831136 7312 0x615050 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)nvvconv0_src, time=(string)0:00:00.020850016;
0:00:00.303974656 7312 0x615050 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)te_src_0, time=(string)0:00:00.021033568;
0:00:00.304070752 7312 0x615050 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)te_src_1, time=(string)0:00:00.021131296;
0:00:00.304106624 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)queue0_src, time=(string)0:00:00.021156224;
0:00:00.304169152 7312 0x6152d0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)queue1_src, time=(string)0:00:00.021220384;
0:00:00.304212736 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)capsfilter0_src, time=(string)0:00:00.021272416;
0:00:00.304248256 7312 0x6152d0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)capsfilter2_src, time=(string)0:00:00.021308032;
===== MSENC blits (mode: 1) into tiled surfaces =====
0:00:00.316723712 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)omxh264enc-omxh264enc0_src, time=(string)0:00:00.033766400;
0:00:00.316837824 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)capsfilter3_src, time=(string)0:00:00.033899328;
0:00:00.317548864 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)rtph264pay0_src, time=(string)0:00:00.034606944;
0:00:00.317624736 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)udpsink0_sink, time=(string)0:00:00.034606944;
0:00:00.322925760 7312 0x615050 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)nvvconv0_src, time=(string)0:00:00.018679520;
0:00:00.323037856 7312 0x615050 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)te_src_0, time=(string)0:00:00.018822240;
0:00:00.323104160 7312 0x615050 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)te_src_1, time=(string)0:00:00.018892224;
0:00:00.323203488 7312 0x6152d0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)queue1_src, time=(string)0:00:00.018977024;
0:00:00.323283648 7312 0x6152d0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)capsfilter2_src, time=(string)0:00:00.019068576;
0:00:00.333010848 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)nvvconv1_src, time=(string)0:00:00.050055008;
0:00:00.333111744 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)capsfilter1_src, time=(string)0:00:00.050174944;
0:00:00.333151968 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)appsink0_sink, time=(string)0:00:00.050174944;
0:00:00.336747072 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)rtph264pay0_src, time=(string)0:00:00.053785888;
0:00:00.336835968 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)udpsink0_sink, time=(string)0:00:00.053785888;
0:00:00.337098912 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)queue0_src, time=(string)0:00:00.032875424;
0:00:00.337184256 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)capsfilter0_src, time=(string)0:00:00.032973632;
0:00:00.337194496 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)rtph264pay0_src, time=(string)0:00:00.054259136;
0:00:00.337232960 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)udpsink0_sink, time=(string)0:00:00.054259136;
0:00:00.337726464 7312 0x615050 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)nvvconv0_src, time=(string)0:00:00.014478528;
0:00:00.337792448 7312 0x615050 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)te_src_0, time=(string)0:00:00.014560064;
0:00:00.337847840 7312 0x615050 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)te_src_1, time=(string)0:00:00.014615552;
0:00:00.337912160 7312 0x6152d0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)queue1_src, time=(string)0:00:00.014675296;
0:00:00.337969536 7312 0x6152d0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)capsfilter2_src, time=(string)0:00:00.014737536;
0:00:00.344455680 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)omxh264enc-omxh264enc0_src, time=(string)0:00:00.040223296;
0:00:00.344610176 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)capsfilter3_src, time=(string)0:00:00.040395552;
0:00:00.344760544 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)rtph264pay0_src, time=(string)0:00:00.040544064;
0:00:00.344812352 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)udpsink0_sink, time=(string)0:00:00.040544064;
0:00:00.347629504 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)omxh264enc-omxh264enc0_src, time=(string)0:00:00.024389088;
0:00:00.347691872 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)capsfilter3_src, time=(string)0:00:00.024461984;
0:00:00.347800704 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)rtph264pay0_src, time=(string)0:00:00.024569760;
0:00:00.347832224 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)udpsink0_sink, time=(string)0:00:00.024569760;
0:00:00.354766720 7312 0x615050 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)nvvconv0_src, time=(string)0:00:00.011946368;
0:00:00.354835296 7312 0x615050 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)te_src_0, time=(string)0:00:00.012036128;
0:00:00.354916608 7312 0x615050 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)te_src_1, time=(string)0:00:00.012117824;
0:00:00.355004864 7312 0x6152d0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)queue1_src, time=(string)0:00:00.012201216;
0:00:00.355045696 7312 0x6152d0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)capsfilter2_src, time=(string)0:00:00.012247648;
0:00:00.356760128 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)nvvconv1_src, time=(string)0:00:00.052535424;
0:00:00.356819968 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)capsfilter1_src, time=(string)0:00:00.052611392;
0:00:00.356844352 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)appsink0_sink, time=(string)0:00:00.052611392;
0:00:00.356926304 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)queue0_src, time=(string)0:00:00.033698144;
0:00:00.356959232 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)capsfilter0_src, time=(string)0:00:00.033732576;
0:00:00.358536576 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)omxh264enc-omxh264enc0_src, time=(string)0:00:00.015730432;
0:00:00.358580256 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)capsfilter3_src, time=(string)0:00:00.015782752;
0:00:00.358636448 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)rtph264pay0_src, time=(string)0:00:00.015839552;
0:00:00.358655808 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)udpsink0_sink, time=(string)0:00:00.015839552;
0:00:00.370633056 7312 0x615050 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)nvvconv0_src, time=(string)0:00:00.007932224;
0:00:00.370691040 7312 0x615050 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)te_src_0, time=(string)0:00:00.008007776;
0:00:00.370723648 7312 0x615050 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)te_src_1, time=(string)0:00:00.008041600;
0:00:00.370777472 7312 0x6152d0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)queue1_src, time=(string)0:00:00.008091968;
0:00:00.370812896 7312 0x6152d0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)capsfilter2_src, time=(string)0:00:00.008129728;
0:00:00.371763648 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)nvvconv1_src, time=(string)0:00:00.048524736;
0:00:00.371816736 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)capsfilter1_src, time=(string)0:00:00.048588256;
0:00:00.371840896 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)appsink0_sink, time=(string)0:00:00.048588256;
0:00:00.371926624 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)queue0_src, time=(string)0:00:00.029126464;
0:00:00.371967424 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)capsfilter0_src, time=(string)0:00:00.029169376;
0:00:00.374407744 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)omxh264enc-omxh264enc0_src, time=(string)0:00:00.011713184;
0:00:00.374463968 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)capsfilter3_src, time=(string)0:00:00.011780288;
0:00:00.374522720 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)rtph264pay0_src, time=(string)0:00:00.011839840;
0:00:00.374546720 7312 0x7f880030a0 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)udpsink0_sink, time=(string)0:00:00.011839840;
0:00:00.386538976 7312 0x615190 TRACE GST_TRACER :0:: interlatency, from_pad=(string)v4l2src0_src, to_pad=(string)nvvconv1_src, time=(string)0:00:00.043723040;