audio: fix output flag test in open_output_stream

If flag AUDIO_OUTPUT_FLAG_DIRECT is set, we should only
try to open a multi channel HDMI PCM output if flag
AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD is not set.

Bug: 8174410.
Change-Id: I63fe6cabca590e70c077dea13c86c6948700e606
merge in klp-release (no-op)
hal: Fix for Audio Route issue when sound path changes

- if you make an outgoing call as mp3 playback is runnign with headset,
  Right side of headset is not functional when keep changing sound path
  from headset to speaker
- Fix the issue by separating loop related of disable/enable_snd_device

Bug: 11232052
Change-Id: Id02a6d7221c77cf4003d97749d75a062d8575d02
Merge "audio: fix output flag test in open_output_stream" into klp-dev
hal: Fix the audio loss issue on codec back end

- Start music playback, plug in and plug out headset and press
  'Next' button in the Music app immediately. Repeating these steps
  result complete loss of audio on HW codec.
- When headset is pluged out and Next is pressed immediately, the
  audio HAL triggers audio routing change from Headset to Speaker,
  and closure of compress playback driver. The later is not lock
  protected which result un protected access of back end information
  in the ALSA framework. This leads to incorrect routing and hence
  loss of audio. It is also observed that sometimes it could lead
  to crash in kernel and phone reboots.
- Fix by ensuring that the kernel driver close is also lock protected
  along with other routing events.

Bug: 11088400
Change-Id: I785effb09e5cef7ba20ee43e0ef91dc296d4e58a
Merge tag 'android-4.4.1_r1' into HEAD

Android 4.4.1 Release 1
hal: Fix issues with USB audio after disconnect

 * Stop the USB audio thread when the refcnt goes to zero.
 * Fix tracking of multiple soundcards.

Change-Id: Ia24dbcfcbcc855cde32c57dbbeb6d07af8f4cce8
hal: Correct the multi-channel output usecase selection

Both Multi-channel output on HDMI and Compress offload playback on
HDMI use cases request for a stream with AUDIO_OUTPUT_FLAG_DIRECT.
The current logic would then result selection MULTI_CH usecase.
Fix this by checking for complete match of flags to select the
use case.

Change-Id: I66df94af6c3b837a6c8054282364e1acf78e6e0f
hal: fix channel mask for m-ch offload playback

- Update channel mask with compress parameters for
  compress offload playback on HDMI device

Change-Id: I89263f56923588fcb906facfd4ae9ebf95203743