-Hardware requirements for getting started
-=========================================
+Hardware requirements
+=====================
Nageru is designed to be as plug-and-play as possible, but by nature,
a software video mixer requires a certain amount of hardware with associated
(for future editing or re-streaming) or sent to an encoder on another machine
for final streaming.
-Currently, only VA-API is supported for H.264 encoding, although Nageru might
+Currently, only VA-API is supported for encoding the digital intermediate, although Nageru might
support NVIDIA's NVENC at some point in the future. In particular, this means that Intel Quick
Sync Video (QSV), the hardware H.264 encoder present on all modern Intel
GPUs, is supported. QSV is more than fast enough to keep up with 720p60 in
further editing or transcoding without strong generational loss.) Thus, the
QSV stream is not intended for streaming to end users of the Internet; it will
need to be reencoded by some external means, or you can use Nageru's x264
-support (see `:doc:Streaming`).
+support to produce a user-facing stream in addition to the digital intermediate
+(see :doc:`streaming`).
By default, Nageru uses zerocopy from the GPU to the VA-API buffers in order to
reduce memory transfer bandwidth, but this depends on EGL support (as opposed to
the older GLX standard), and also that the GPU you are rendering to also
supports VA-API. NVIDIA's proprietary drivers do not support either. Unfortunately,
-this is somewhat cumbersoe to automatically detect before it's too late to do anything
+this is somewhat cumbersome to automatically detect before it's too late to do anything
about it (Qt has already initialized using EGL), so on NVIDIA
systems, Nageru will exit with an error message asking you to set *--va-display*
to your Intel GPU manually. Simply follow the instructions printed to the terminal
Frame rates are automatically converted; one input is designated as the
**master clock** (right-click on an input to select it as such), and gets
to dictate the frame rate of the output. Inputs with differing frame rates
-will get frames duplicated or dropped as needed (with adaptive queueing to
+will get frames duplicated or dropped as needed (with adaptive queuing to
account for clock and jitter).
Nageru works in 16-bit floating-point RGBA internally. High-quality conversion to and
from subsampled Y'CbCr (typically 4:2:2 for inputs and 4:2:0 for outputs)
is done transparently on the GPU.
+
+
+Performance tips
+----------------
+
+It is strongly recommended to have the rights to run at real-time priority;
+it will make the USB3 threads do so, which will make them a lot more stable.
+(A reasonable hack for testing is probably just to run it as root using sudo,
+although you might not want to do that in production, but instead grant
+your regular user permissions in /etc/security/limits.conf.) Note also that if you
+are running a desktop compositor, it will steal significant amounts of GPU
+performance. The same goes for PulseAudio.
+
+Nageru tries to lock itself into RAM if it has the permissions to do
+so, for better realtime behavior. (Writing the stream to disk tends to
+fill the buffer cache, eventually paging less-used parts of Nageru out.)
+Again, this is something you can set in limits.conf.