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
Audio: Fix for sound card status overwrite issue

 - Sound card status is getting over written to OFFLINE
   by HAL internally on continuous SSR
 - Fix by returning different error code for snd card offline
   update in HAL internally instead of ENETRESET

Change-Id: I98a34d8b667dff045a1e99d18307376579ac4ebc
hal: add support for pcm_ioctl() api

- Tinyalsa doesn't expose an api to call
  ioctls exposed by the audio drivers.
- Add pcm_ioctl() api to support pcm ioctl.

Change-Id: I448252e8d3347257a73c56bc8ed341abc2dd2dab
policy: Add support for multiple instances of offload playback

Add support for multiple offload playback instances

Change-Id: Icab3c7d6e89121a7aa23744729a634d8e402fabf
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: PCM offload shouldn't enable all types of offloading

 * Some older versions of the DSP cannot offload audio streams
   for A/V content. Remove the extra check so each feature must
   be explicitly enabled on the device.

Change-Id: I23aac6be5bd160b61e54eab8761e97bbbd5ae045
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
Limit codec offload to devices with QCOM_AV_ENHANCEMENTS enabled

Don't even try to build this, nothing will invoke it and it may require
non-existing definitions for compression on the device

Change-Id: I1bf8055259e1dc937048269132a7e717d5fc6a01
audio/msm7630: Introduce LowPowerAudio.

Change-Id: I77cadf3c028bc9dead0b0887c308f7394d4b14f2
audio/msm7630: Add support for audio effects for LPA clips

Add support for audio effects for LPA clips on msm7630

(cherry picked from commit 176dd4c4f0a926fd463cf2d4cf1051327a75598b)

Conflicts:

	msm7630/AudioHardware.cpp

Change-Id: Ibfa9376dae14bc772fa0cb90e2bae3309a684fc8
7x30 : Port heap mask change to ion

-mp3 clips fails to play intermittently.
-ION fails to register with the driver.
-Heap mask field passes as argument at allocation
time to specify ion heap.

CRs-Fixed: 444197

Change-Id: I35b7f162c906b856b7b4f5ee2270cd10256144bf
msm7x30: Add missing get_supported_devices in HW HAL

Change-Id: Idb90528899ae3d5a6d037f1af0544225faa02cc6
msm7x30: Fix routing for all AudioSessionOut types

 * Pass the new output device around so that we're not always just using
   the one in the base class. This was preventing proper routing for
   all output streams.

Change-Id: I07a6bf4cf15c7b6bea310c2cd593ca494a89ca5f
audio/msm7630: Add latency support for LPA

-Audio loss for few seconds on headset connection.
-Stream is unmute in checkDeviceMuteStrategies before device switch
occurs.
-Increase delay in tempMute to ensure unmuting happens after device
switch happens. Also change latency for LPA to correct value similar
to that of hpcm.

Change-Id: I539a4726f6b9d53bbfdc5f92a8801d5f14c360eb
CRs-Fixed: 448355
audio/msm7630 : Stability issue with LPA play back.

- ANR is observed during LPA playback when there is song switch for
  every few seconds
- The song switch does not happen when the song is played till the end
- Native crashes are observed during rapid seek, next and previous
  song switch operations. There is some race condition between write and
  flush which results in adding a buffer multiple times to empty queue.
  This tries to free the buffer multiple times during reset and results
  in native crash. Fix this issue by adding proper mutex in write and
  flush calls which synchronizes these operations and avoids crashes.
  After Pausetimeout, reset is called due to which EOS is posted
  to observer. This results in start or reset operation on a closed
  sink leading to crashes. Avoid posting EOS if reset is already
  called.

Change-Id: Ie171d86f39fc4484710002c4940496dc90fbb05a
CRs-Fixed: 463272
msm7x30: Update device API

Change-Id: I15bd511c3b753dc4ce076a482095e675f601c1ec