May be because showing the image in the screen is cpu intensive, or the background and UI processes keep interrupting the encoding process. Lowering the ui priority means that the ui will get less cpu time and can be interrupted by a higher priority task (like encoding). Timer granularity also matters. I use my desktop for analog video recording with an old bt848 pci card. At first I couldn't get the recordings right, because background and UI tasks kept causing stuttering. To get them right I had to 1: increase timer frequency from 100 to 1000Hz, 2: setup cgroups , 3: increase priority to -5 for the encoding process.
#!/bin/sh if [ "$1" == "1" ]; then run-standalone.sh dbus-send --print-reply --type=method_call --dest=org.freedesktop.Tracker.Indexer /org/freedesktop/Tracker/Indexer org.freedesktop.Tracker.Indexer.Pause run-standalone.sh dbus-send --print-reply --type=method_call --dest=org.freedesktop.Tracker /org/freedesktop/Tracker org.freedesktop.Tracker.SetBoolOption string:"Pause" boolean:true killall gst-video-thumbnailerd echo `pidof Xorg` > /syspart/tasks echo `pidof omap3camd` > /syspart/tasks echo `pidof camera-ui` > /syspart/tasks renice 20 `pidof camera-ui` renice 20 `pidof Xorg` renice 20 `pidof omap3camd` else run-standalone.sh dbus-send --print-reply --type=method_call --dest=org.freedesktop.Tracker.Indexer /org/freedesktop/Tracker/Indexer org.freedesktop.Tracker.Indexer.Continue run-standalone.sh dbus-send --print-reply --type=method_call --dest=org.freedesktop.Tracker /org/freedesktop/Tracker org.freedesktop.Tracker.SetBoolOption string:"Pause" boolean:false echo `pidof Xorg` > /syspart/tasks echo `pidof omap3camd` > /syspart/applications/standby/background/tasks echo `pidof camera-ui` > /syspart/applications/standby/background/tasks renice 0 `pidof camera-ui` renice -8 `pidof Xorg` renice 0 `pidof omap3camd` fi