August 21, 2019

Please run GeneralInstall.script as root. It will install (apt install) any 
standard system packages you may be missing.

The code has been developed using 'out-of-the-box' default desktop themes.

If you have switched to another gnome desktop theme than the default theme, 
some objects may not be correctly sized. In order to ensure that the layout 
will be viewed correctly, you may need to adjust your gnome desktop theme.

The code tests out correctly with the latest versions of:

Linux Mint Mate
Linux Mint Xfce 
Linux Mint Cinnamon 
Linux Mint LMDE

Tests correctly with some minor layout issues with the following:

Kubuntu 19.04
Ubuntu Mate 19.04
Lubuntu 19.04
Ubuntu 19.04
Raspberry Pi (switch system font size to 10)

Note: the Ubuntu window manager does not provide facilities for all required 
operations and rendering of Gnome widgets is not done well.

The code should work with other distros but the GUI appearance may be altered due 
to differences in themes and system fonts.

Audio Loopback

The encoder redirects the default Pulse desktop audio (the output of players, etc),
and the Pulse input (usually, the microphone) streams to an internal virtual channel
whose output becomes input to ffmpeg. 

While it is possible to use ffmpeg itself to merge these audio streams, the procedure 
often results in timing issues. Using the internal Pulse loopback virtual channel
is better.

If you have ONE audio card, when the encoder is running, you will not hear audio through
your speakers as normal unless you run 'route.script'. This script re-routes the virtual
channel in PulseAudio so that your audio will present itself on your card's speaker
output jack. 

If you have ONE audio card, you will see a button to run 'route.script'. It will disappear
once you run it. You will not see this button with two audio cards present.

If you have TWO audio cards, the local feedback of your cast's audio will appear on
the second card's output. Do not run 'route.script'

I have no idea what would happen with three or more audio cards.

Already running intances of players must be re-started after the encoder begins. This is
due to the creation of virtual audio channels and the need for the players to
become aware of them. By default, instances of Player-bin and VLC are terminated
by the encoder on startup. You are responsible to restart any other audio software.

Test Cast Option

The 'Test Cast' option causes the cast to be recorded to an MP4 file named 'test.mp4'
in the directory containing the executable version of the encoder (encoder-bin).

The 'Test Cast' option can be a good alternative to record your desktop. Any graphics
withing the casting ares will be recorded to 'test.mp4'.

RTMP Server

If you want to hardcode your RTMP server URL and password, modify the code and set the
string values of rtmpServer and rtmpKey accordingly. 
