Welcome to Firefly
Switch language
Firefly Docsss
Last Updated: 2026-08-27 07:36:09

Common Issues

Rockchip Platform Support

7.14 Common Issues

7.14.1 4K30 Plays Normally but 4K60 Stutters

  1. Confirm that mppvideodec, rather than a software decoder, is actually being used.
  2. Test the frame rate from the decoder to fakesink and from the decoder to the display sink separately.
  3. Use --flags=3 to disable subtitles.
  4. Check the CPU, GPU, and VPU frequencies, system load, and DDR bandwidth.
  5. Compare performance with AFBC when the entire path supports it.
  6. Test sync=false only when measuring throughput; clock synchronization should normally remain enabled during playback.

7.14.2 High CPU Usage

Common causes include not using MPP hardware decoding, software format conversion, or high processing overhead from subtitles and scaling. Use GST_DEBUG and a DOT graph to confirm which decoder was actually created and whether videoconvert was inserted.

7.14.3 Playback Stalls or Progress Remains at 0

First try Playbin3:

gst-play-1.0 --flags=3 --use-playbin3 test.mp4

Also use gst-discoverer-1.0 to check the container, tracks, and missing plugins.

7.14.4 Video Is Displayed but There Is No Audio

First use aplay to verify the sound card, and then specify the ALSA device explicitly:

gst-play-1.0 --flags=3 test.mp4 \
  --audiosink='alsasink device=hw:0,0'

7.14.5 Subtitles Cause Stuttering

Subtitle composition may involve image extraction, RGB conversion, blending, and conversion back to the display format. Use --flags=3 to disable subtitles during performance tests. For high-resolution products, consider drawing subtitles on a separate layer with a UI framework such as Qt.

7.14.6 v4l2src Cannot Capture at the Full Frame Rate

First bypass GStreamer to verify the V4L2 driver capability:

v4l2-ctl -d /dev/video0 \
  --set-fmt-video=width=1920,height=1080,pixelformat=NV12 \
  --stream-mmap=3 --stream-skip=1 --stream-poll

If v4l2-ctl reaches the full frame rate but GStreamer does not, increase the number of buffers:

gst-launch-1.0 v4l2src device=/dev/video0 min-buffers=64 \
  ! 'video/x-raw,width=1920,height=1080,format=NV12' \
  ! waylandsink

Also confirm that the downstream path is not blocked, and add a queue before branches such as encoding and display.

7.14.7 v4l2src Format Negotiation Fails

v4l2-ctl -d /dev/video0 --list-formats-ext
gst-inspect-1.0 v4l2src
  • When the device outputs a raw format such as NV12, NV16, BGRA, or BGRx, connect it to a display or encoding plugin that supports the same Caps.
  • When the device outputs JPEG/MJPEG, add jpegparse ! mppjpegdec.
  • When the upstream and downstream formats do not match, add videoconvert, while accounting for the CPU or RGA overhead.

7.14.8 Resolutions Above 4K Cannot Be Captured

Check the limit in /etc/profile.d/gst.sh:

export GST_V4L2SRC_MAX_RESOLUTION=3840x2160

If the hardware, driver, and bandwidth all support the required resolution, increase this value as needed and reload the environment.

On this page