[rbp/omxplayer] Support frame advance (single step) with right arrow when paused
[rbp/omxplayer] Do we need discontinuity handling?

So far I've not seen what this is needed for and it does cause problems for some files.
[rbp/omxplayer] Fix build error in types for max

It seems there is a compile error when STDINT_H_AVAILABLE is not defined.
See: http://raspbmc.apt-get.eu/downloads/bin/xbmc/nightlies/xbmc-rbp-20130710.log
Avoid flushing fifos when audio/video fifos out of sync
[confluence] Use animated gif as a cheaper working spinner
[rbp] Add screenshot implementation that includes video layer
[rbp] Switch from libshairport to libshairplay for airplay
[rbp/omxplayer] Support both analogue and hdmi audio

Thanks to stupid-boy for original implementation.
Add missing h264dsp initialisation call

Each AVStream struct for an H.264 elementary stream actually has two copies
of the H264DSPContext struct (and in fact all the other members of
H264Context as well):

((H264Context *) ((AVStream *)st)->codec->priv_data)->h264dsp
((H264Context *) ((AVStream *)st)->parser->priv_data)->h264dsp

but only the first of these was actually being initialised. This prevented
the addition of platform-specific implementations of parser-related functions.
New h264dsp method, h264_find_start_code_candidate

This performs the start code search which was previously part of
h264_find_frame_end() - the most CPU intensive part of the function.
arm: Add assembly version of h264_find_start_code_candidate

               Before          After
               Mean   StdDev   Mean   StdDev  Change
This function   479.8  16.7     181.0  11.1   +165.1%
Overall        2898.0  24.4    2738.2  26.3     +5.8%
Remove one 64-bit integer modulus operation per MPEGTS packet

The common case of the pointer having increased by one packet (which results
in no change to the modulus) can be detected with a 64-bit subtraction,
which is far cheaper than a division on many platforms.

           Before          After
           Mean   StdDev   Mean   StdDev  Change
Divisions   248.3  8.8      51.5   7.4    +381.7%
Overall    2773.2 25.6     2372.5 43.1     +16.9%
Remove one memcpy per MPEGTS packet

This was being performed to ensure that a complete packet was held in
contiguous memory, prior to parsing the packet. However, the source buffer
is typically large enough that the packet was already contiguous, so it is
beneficial to return the packet by reference in most cases.

         Before          After
         Mean   StdDev   Mean   StdDev  Change
memcpy    720.7  32.7     649.8  25.1   +10.9%
Overall  2372.7  46.1    2291.7  21.8    +3.5%
Made discard_pid() faster for single-program MPEGTS streams

When a stream contains a single program, there's no point in doing a
PID -> program lookup. Normally the one and only program isn't disabled,
so no packets should be discarded.

              Before          After
              Mean   StdDev   Mean   StdDev  Change
discard_pid()   73.8  9.4       20.2  1.5    +264.8%
Overall       2300.8 28.0     2253.1 20.6      +2.1%
[rbp/omxplayer] Fixes for trickplay

In #2955 we lied in GetTime when in trickplay modes to avoid jittery updates in elapsed time.
This was wrong when GetClock() didn't match the media time (e.g. when playback was started from a bookmark).

The jitter is caused by the DISPLAYTIME messages that don't really work on omxplayer.
Instead bypass the DISPLAYTIME messages and set the time explicity in OMXPlayer (using media time where appropriate).

Also in trickplay, do the seek/flush step more to fix an issue when going from normal to rewind after EOS

Also don't honour the "accurate" seek flag, as it results in corrupt frames being displayed
[rbp/omxplayer] Fix audio sync with visualisation

As GPU can buffer a few seconds of audio, and the visualisation is updated immediately, they are badly out of sync.
The solution is to push the visualisation data through a queue, and retrieve it from queue when the media time is reached.