Jump to content

GStreamer In-Band Metadata for MPEG Transport Stream - Performance

From RidgeRun Developer Wiki


Previous: Examples/RTSP_stream_with_metadata Index Next: FAQ





TL;DR


Qualcomm Dragonwing 9075 EVK Platform

Benchmark environment

The following setup was used for all the benchmarks:

Instruments:


Replicate the Results

The following pipelines were used to measure the performance.

For each pipeline the following periods in milliseconds of injecting data were tested.

METADATA_PERIODS=(
    33
    20
    16
    10
)

Additionally the following frequencies were tested for each period.

FRAMERATES=(
    30
    60
    90
    120
)

H264 Metadata

gst-launch-1.0 metasrc metadata=%T period=$PERIOD ! meta/x-klv,parsed=true,stream_type=21 ! perf print-cpu-load=true ! queue ! mpegtsmux name=mux ! filesink location=meta.ts  videotestsrc is-live=true ! video/x-raw,format=NV12,width=1920,height=1080,framerate=$FRAMERATE ! queue ! v4l2h264enc ! h264parse ! mux.

Simple Metadata

gst-launch-1.0 metasrc metadata=The_current_time_is:%T period=$PERIOD ! 'meta/x-klv' ! perf print-cpu-load=true ! filesink sync=false async=true location=meta.txt

Framerate

The following table shows the maximum framerate and corresponding period for which the performance error remains below 5% of the expected framerate.

Framerate Minimum Period for Metadata
30 10 ms
60 10 ms
90 10 ms
120 10 ms

Metadata size

The following table shows the maximum recommended metadata size for which the performance error remains below 5% of the expected framerate.

Framerate Maximum recommended metadata size
30 126 KB
60 126 KB
90 126 KB
120 126 KB

NXP i.MX95 Platform

Benchmark environment

The following setup was used for all the benchmarks:

Instruments:

Replicate the Results

The following pipelines were used to measure the performance.

H264 Metadata

gst-launch-1.0 metasrc metadata=%T period=1000 ! meta/x-klv,parsed=true,stream_type=21 ! perf print-cpu-load=true ! queue ! mpegtsmux name=mux ! filesink location=meta.ts  v4l2src device=/dev/video6 ! video/x-raw,format=YUY2,width=1920,height=1080,framerate=30/1 ! queue ! v4l2h264enc ! h264parse ! mux.

H265 Metadata

gst-launch-1.0 metasrc metadata=%T period=1000 ! meta/x-klv,parsed=true,stream_type=21 ! perf print-cpu-load=true ! queue ! mpegtsmux name=mux ! filesink location=meta.ts  v4l2src device=/dev/video6 ! video/x-raw,format=YUY2,width=1920,height=1080,framerate=30/1 ! queue ! v4l2h265enc ! h265parse ! mux.

Simple Metadata

gst-launch-1.0 metasrc metadata=The_current_time_is:%T period=1000 ! 'meta/x-klv' ! perf print-cpu-load=true ! filesink sync=false async=true location=meta.txt

Results

The following images show the average values of usage, respectively.

CPU Usage

RAM Usage

Summary

The following table summarize the results.

Pipeline CPU (%) RAM (MB) RAM (%)
Simple 0.167 8.176 0.110
H264 16.853 13.511 0.177
H265 17.141 14.425 0.188




Previous: Examples/RTSP_stream_with_metadata Index Next: FAQ



Cookies help us deliver our services. By using our services, you agree to our use of cookies.