Don't use ffdshow to downmix the audio stream

send multichannel PCM over supported sound output (HDMI)
if no multichannel output is found the android mixer will downmix

Change-Id: Icea5a89e7669f90a0d7266eeec9eddb20723f6ca
fix release FFmpegExtractor

old: release FFmpegExtractor -> release AV Tracks
now: release AV Tracks -> release FFmpegExtractor

Change-Id: I1fb60a78deb1c2a1cc4f23dff1786337ea24c684
add support for unknown formats.

The FFmpegExtractor support all ffmpeg formats!!!
Unknown format is defined as MEDIA_MIMETYPE_CONTAINER_FFMPEG

Change-Id: I1645591a1c53f5f2d961a0212e351533630b9999
Fix crash when playing ALAC

 * Don't crash when seeing a weird EOS packet.

Change-Id: I29e979ab94daccb9e81264e09f258c10d96373f5
ffmpeg: Add support for high resolution audio

 * Output interleaved 24-bit (32-bit packed) PCM at up to 192KHz for
   use with PCM offload. Falls back to resampling if disabled.

Change-Id: Ie1bd3066c0459fb99a9d4ff9e28d6a65e234408a
stagefright-plugins: Handle 32-bit floating point sample formats

 * Convert these to 24-bit PCM if the system is capable of it.
 * This also fixes that pesky ADSP crash.

Change-Id: Ia464d62f2b6f17986428f3e45ed61784d4c9006f
stagefright-plugins: Audio output port reconfiguration support

 * Add support for reconfiguring the audio output port (PCM) on the
   fly. This enables us to easily control both high resolution
   output as well as downsampling.

Change-Id: Ic5ea3efc966b0da2d62041fa0de2e422c1f9f7fc
stagefright-plugins: Allow use of HW codecs for Windows Media

 * We will still fall back to FFMPEG if these fail.

Change-Id: I74287268f6782e69e0bee624368a85837d2c7969
ffmpeg_source: do not adjust offset on read error/eof

It has been observed that NuCachedSource2 can return a negative
value on attempts to read at EOS (end of stream). Also, the
url_feof from FFMPEG attempts an additional fill_buffer after
a eof_reached condition has been set. If the offset is adjusted
backwards at EOS, then url_feof will never detect the EOS and
will have an infinite stream of data. This is particularly bad
when memory is allocated on each line of data read (eg. when
an hls,applehttp media type is parsed via hls_read_header).

Change-Id: Ieb992e2e9e2a55adaabc28fb407f519e56b10011
ffmpeg_source: add url check to android_open

This check confirms that if a URL is attached to the
android-source in the url string passed to android_open,
that it match the actual URL pointed to by that datasource.

It has been observed that some hls,applehttp sources contain
playlists within the playlist. In these cases, the additional
playlists may be opened by rewriting the original URL. However,
since the "android-source:<%p>" prefix is unmodified, it "opens"
the original URL again. This continues until memory is depleted.

Change-Id: Ieb504393aaa204a641035c982fe4a123a3e61a98
stagefright-plugins: Return real bitwidth in getParameter call

 * ..and store the real parameters during setParameter.

Change-Id: I170b283da649303e6c016458a3bfebd3431b5c42
stagefright-plugins: Add a couple of sample format exceptions

 * DTS and AC3 need to output 24-bit samples if supported.

Change-Id: I84174994d568645e7c7c593901fff30b998bf92a