I’m currently using the following pipeline to decode 1080p video feed from my web camera.
/usr/bin/gst-launch-1.0 -vvv \
udpsrc address=192.168.0.94 port=5005 ! \
video/x-h264,width=1920,height=1080,framerate=30/1,stream-format=byte-stream ! \
queue ! \
h264parse ! \
omxh264dec ! \
nveglglessink
I’m using the above as a proxy to test the final pipeline in my application which is:
udpsrc address=192.168.0.94 port=5005 ! \
video/x-h264,width=1920,height=1080,framerate=30/1,stream-format=byte-stream ! \
queue ! \
h264parse ! \
omxh264dec ! \
nvvidconv ! \
appsink
The source comes from another pipeline which is as follows:
/usr/local/bin/gst-launch-1.0 -v \
uvch264src \
iframe-period=100 \
initial-bitrate=24000000 \
average-bitrate=24000000 \
device=/dev/video0 \
auto-start=true \
name=src src.vidsrc ! \
video/x-h264,width=1920,height=1080,framerate=30/1,profile=constrained-baseline ! \
h264parse ! \
rndbuffersize min=1500 max=1500 ! \
multiudpsink clients=192.168.0.162:5004,192.168.0.94:5005
On my desktop I can decode the source at full frame rate without any issues, but on the TK1 it only renders at approx 5 fps.
Any idea what I could do to improve the performance of decoding?
I use the following to max perf on my tk1:
echo -1 > /sys/module/usbcore/parameters/autosuspend
echo 1 > /sys/kernel/debug/clock/override.gbus/state
echo 852000000 > /sys/kernel/debug/clock/override.gbus/rate
echo "gpu set"
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo "scaling set to performance"
echo 0 > /sys/devices/system/cpu/cpuquiet/tegra_cpuquiet/enable
echo "disabled quiet mode"
echo 1 > /sys/devices/system/cpu/cpu0/online || true
echo "enabled cpu 0"
echo 1 > /sys/devices/system/cpu/cpu1/online || true
echo "enabled cpu 1"
echo 1 > /sys/devices/system/cpu/cpu2/online || true
echo "enabled cpu 2"
echo 1 > /sys/devices/system/cpu/cpu3/online || true
echo "enabled cpu 3"