Evaluate conditional actions in a block, then execute them
Silence compiler warning "conversion from 'double' to 'float', possible loss of data"
[WIN32] fixed: dxspectrum and waveform had no exports.
Merge pull request #2810 from jmarshallnz/eval_conditions_before_actions

Eval conditions before actions
[pvr] sync add-ons
[rbp/omxplayer] Move start flags out of clock component

It is harmless to send a start flag on a clock port that is not the master, so keep flags more local
[rbp/omxplayer] Move buffering decision out of OMXPlayerAudio

This gets the m_stalled behaviour closer to dvdplayer which may help live tv issues.
The buffering will be re-added at a higher level from omxplayer
[rbp/omxplayer] Move buffering to omxplayer level

We wait to pause the clock when the queue of audio data to GPU is dangerourly low to avoid stuttering audio.
Better to pause for a few seconds and then play some intelligible audio, than to continuously underrun.
[rbp/omxplayer] Support frame advance (single step) with right arrow when paused
[rbp/omxplayer] Move the buffer of the decoded audio to output port

The buffers between host and gpu components are duplicated, so 2 seconds of 8 channel 48kHz audio requires 3MB.
That memory is required on both host and gpu. We want this buffering to provide protection from underrun when the arm is busy.

By moving the majority of the buffering from omx_decoder's input to output port, we save that memory on the arm.
Also the output port is 16-bit integer, rather than float, so we halve the size in addition.