GstShark - Queue Level tracer

From RidgeRun Developer Wiki
Revision as of 04:14, 18 August 2017 by Jrivera (talk | contribs)

Bitrate tracer

Home

Buffer tracer

The Queue Level tracer measures the amount of data queued in every queue element in the pipeline. A new trace will be printed every time a buffer enters a queue.

This data is specially useful when debugging latency and performance bottlenecks. The queue level will provide the developer with additional data to debug queue underruns and other related problems.

Pipeline

The following pipeline demonstrates how to use the queuelevel tracer and the results obtained with it. Queue elements with specific maximum sizes are used to simulate constrained queue elements. This forced maximum should be reflected on the measurements for every element on the output log of the tracer.

$ GST_DEBUG="GST_TRACER:7" GST_TRACERS="queuelevel" gst-launch-1.0 videotestsrc ! 'video/x-raw, format=(string)YUY2, width=(int)640, height=(int)480, framerate=(fraction)30/1' ! videorate max-rate=30 ! videoconvert ! queue max-size-buffers=20 ! avenc_h263p ! queue max-size-time=400000000 ! avimux ! fakesink sync=true

Sample diagram

Output

0:00:03.326893588 6168 0x18322d0 TRACE GST_TRACER :0:: queuelevel, queue=(string)queue0, size_bytes=(uint)9216000, size_buffers=(uint)20, size_time=(string)0:00:00.666666667;
0:00:03.360292341 6168 0x18324a0 TRACE GST_TRACER :0:: queuelevel, queue=(string)queue1, size_bytes=(uint)72732, size_buffers=(uint)12, size_time=(string)0:00:00.400000000;

Each line of the log includes a queue field identifying the element being measured, and three fields with the measurement of the queue level in bytes, buffers and time. The results show the queue levels at the maximum established by the limits set on the pipeline. On practical applications, the queue level may be constrained by bottlenecks that do not provide the queue with enough data.


Bitrate tracer

Home

Buffer tracer