This adds screencast support on Linux. This is based on
ffmpeg for the encoding & muxing (default format is MP4 with AAC audio
and H264 video).
The microphone sound is grabbed using QAudioInput. The encoder should
be able to handle virtually any input format (it has been tested with
a stereo input at different sampling rates with one format (16-bit
signed) but it should work fine with any number of channels, sample
format etc.).
The only problems I have run into so far are that desktop recording is
very slow (compared to OS X) and that the last few video frames are
usually not included in the video. This may be due to GOPs not being
complete, but that's just a wild guess.
- Added a curveToPolygon function that creates a curved polygon,
eliminating the need to generate lots of small ones to make a curve look
smooth.
- Cleaned up the rest of the code a bit
- UBGraphicsScene calls UBGraphicsStroke::addPoint, which returns a list
of points that can be drawn. It may be none (e.g we discard very small
segments), one (if we do no interpolation) or several.
- Added a UBInterpolator base, abstract class. Various interpolation
methods can be added easily.
- Current methods: Basic spline (custom), Catmull-Rom spline (based on
alglib), and Bézier
- Added a setting to toggle interpolation. Added this to the UI as well
Caused problems e.g with podcast mode, where if the control and display
views were swapped in the preferences, the wrong screen would be recorded
when switching to desktop mode during recording of the podcast.
This happened even if only one screen was plugged in, so a black screen
was recorded in that case (at least on OS X 10.10)
- Qt plugins and libraries (and associated files) bundled only if necessary
- Dependencies corrected (for Ubuntu 14.04 and 16.04, at least),
mostly manually for now
- run.sh sets Qt plugin path environment variable (=> qt.conf
no longer needed; removed)