Core playlist: provide playlist_GetNodeDuration

Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
Qt: add playlist total duration

Ref #2744 #4252

Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
FLAC: keep signed 32-bits output format and simplify

The FLAC decoder aligns samples to the right. So shift the samples to
to the left.
aout: drop support for S24N
Add codecs for S24 in 4 bytes
Use VLC_CODEC_S24(B|L)32
PulseAudio: remove dummy dependency on <vlc_cpu.h>
araw: make float/double decoder/encoder conform to C type aliasing rules
aout: remove 24-bits support left-overs
aout: pass FOURCC instead of bits to aout_ChannelsReorder()

To fix type aliasing, we need to know whether the data is float or integer,
or use only char pointers.

Also add support for FL64 and arbitrary lengths.
vorbis: fix cast warnings
tremor: decode to S32N
opensles: the time since last buffering update is useless
opensles: move code from Start/Stop to Open/Close

These objects do not depend on the audio format
opensles: cosmetics
opensles: no need to count number of busy buffers

We can access it with GetState
opensles: use a ring buffer for latency measurement

Now audio codec frame size will not affect latency precision, at the
small cost of one memcpy per frame.
With the maximum number of OpenSLES buffers (255), we can have a precision
of 4ms with a buffer size of ~1 second.
wamfixed: output S32N rather than FI32
smem: use aout_BitsPerSample()
a52: decode to S32N in fixed point