hal: Add support for multiple instances of offload playback

Add support for multiple offload playback instances

Change-Id: I9d35b68fc8ca27c4eeb3976eb508b06c5ad3ca8f
hal: Support for FLAC 24 bit format in offload path

- Add flac in supported codecs list
- Set FLAC codec specific parameters
- Set fragment size based on bit width and sampling rate
  for flac.
- Configure backend to 24/16 bit based on the current
  usecases running

Change-Id: If013078e277fd3053fba6489345803f8f58bd86d
hal: Add multiple offload support for msm8974

 * msm8974 can also benefit from multiple tunnel support, but
   is limited to four devices. This allows for reliable gapless
   playback and other use cases.

Change-Id: Ie0698cc0d600a23df0799482a79181f248a001e7
hal: Featureize FLAC offload support

 * Not all devices will have this code in the DSP, let alone the kernel.
 * Featurize it, but leave the codec bit width and sample rate controls
   in place so that 24-bit PCM offload still works.

Change-Id: I6e156048906a2b638e9ec4a083755536a14e161f
hal: Offload bugfixes

 * Always reset the bit width and sample rate if any active offload
   stream is different. Failure to do this can crash the DSP, and
   certain limitations come into play when a high samplerate is used
   such as effects being unavailable.
 * Don't send errors to the framework when the timestamp query fails
   before the stream is up and running.

Change-Id: Ieeaafe8965e3cdc69b8dd64be85fbb3bf48c020b
hal: Extend MULTIPLE_OFFLOAD_ENABLED ifdef

* Fixes compilation for non-MSM8974 devices without
  MULTIPLE_OFFLOAD_ENABLED

Change-Id: I8a83d10e68618e141a128af5198ebf1bfb731a6a
hal: Fix the samplerate/bitwidth comparison

Change-Id: If507ee28d4b3333dd91af286f2653554590fd7c4
hal: Avoid unnecessary rerouting for sample rate changes

 * The backend codec supports just a few sample rates directly,
   so make sure that we base our decision to reroute on this
   value instead of the actual sample rate of the stream.

Change-Id: I2ed82354563f60d04febb0e200252d0f45644a5e
audio: Add support for offloading MPEG2 and WMA

Change-Id: I75afa455537cc8aaecd5d5a36ffda9e62785c723
hal: Limit MP2 and WMA offload to 8226/8974 devies only

* 8960 devices are not capable of these features.

Change-Id: I37ee867c4e8377d70344abec5d72a5de86c45ca5
mm-audio: aenc: make frame_count variable 64 bit

- After 71 minutes AAC encoding stops working
- The root cause is while calculating the timestamp
  of the frame a variable frame_count is 32 bit and
  it ovewrflows which leads incorrect timestamp
  calculation which leads to stopping of AAC encoding
- To solve this make frame_count 64 bitvariable.

Change-Id: Iddb7c6c8fab53314d58bdf8651d5ede0c6ca8b80
CRs-Fixed: 707449
hal: miscellaneous fixes

Fixes for the following issues reported by KW

21725, 21726, 21727, 21737, 21738, 21739, 21740, 21750,
21751, 21752, 25317, 30602, 32620, 36778, 41817, 41819,
50942, 54468, 54470, 54479, 55569, 54481, 55570, 55571,
58485, 85112, 85122, 85123

Change-Id: I9abef07db7ccdc19789a201eb268a97e1b360cad
hal: Fix all the ifdefs

 * PCM offload related ifdefs currently point to nowhere, correct this.

Change-Id: I1c7adfde6aff5379877ce01e260c3e9c6181d0cb