audio: Add support for tunnel mode recording and compress voip

- Use modulo operator for common block buffer handling. Common block
  size is rounded to power of two. This limitation is avoided with
  modulo operator.
- Add support for tunnel mode recording
- Add support for compress voip

Change-Id: I95cdfff729affd784141487521c9f2f714221d11

audio: check audio mode to enable voice path for VoIP apps

- Add check for MODE_IN_COMMUNICATION to enable voice path
for VoIP applications

Change-Id: Ib603c6321c935d3b1313c2841b09eea932aa13f3

audio: Restrict opening of voip direct output to one instance

Avoid opening of voip direct output track if it is already in use
by another voip application.

Change-Id: I740bbb9e7153c8871c296f1ec5d8d68997391779

audio: check voip input sample rate to allow voip direct output

It is possible that some voip applications request different sample
rates for input and output streams. Avoid opening of voip direct
output if the voip input is already opened with a different sample
rate.

Change-Id: I5669e2a0880ffed0c10cde21da8994c2b47e1878
CRs-fixed: 601785
AudioFlinger: Remove unwanted update of track generation

PlaybackThread::threadLoop unncessarily updates the track generation
before waiting for a pending aync write. This is unncessary and
leads to excess calls to the power manager service for updating
uids.

Change-Id: I1284d79da3be6495acb19a97c81b3ab8db6dbb12
(cherry picked from commit f10fdf3ac4aced7d64bd0d1f05cc886271436685)
(cherry picked from commit 48568df4edf4d9b98c4d05bcfae3770c91f3be7f)
AudioTrack: Fix for race condition

This fixes a race condition between releaseBuffer and flush.

An AudioTrack::releaseBuffer() can be delayed (pre-empted) by
AudioTrack::pause/flush() and ServerProxy::obtainBuffer() calls leading
to a situation where an incorrect position is copied to the cblk

<<Change to be tested>>

Change-Id: I70074d4824ba8c7fa86c9f9ef8cc182de9172ab9
(cherry picked from commit ec237ff01ca194bf0e29933f916a30b8f83c8ace)
(cherry picked from commit 6984cd7b9e99ffa48872cf9316c68d5ae51ad3c5)
add Sony camera parameters

Change-Id: I4d8af24db1873776ad8deca75516f6e0840f1a62
libstagefright: Add custom IOCTL for prefetching CMA data for wv playback

trigger allocation of cma pool at start of drm playback

Change-Id: I6c15b31ff3147739f9d837a2a2b6e135cc918e99

libstagefright: Prefetch CMA data for secure playback via MediaCodec

Trigger allocation of cma pool at start of drm playback in mediacodec mode.

Change-Id: I1ce09f3c9013cb815f1ab0e729a099c7aae79ec5
libstagefright : Allow seek in RTSP VOD streaming using Helix Server

- In the current design,when the server sends npt=0- in Play response,
we treat it as live stream, without cross verifying in SDP.
- Helix server specifically sends npt=0- for the Play Response
- This change cross verifies the npt in SDP and if it is a VOD
clip, the duration returned is greater than Zero, and we allow seek.

Change-Id: Ic76510fa4d80ef9051a5d6d923bd5d757c279f19
CRs-Fixed: 498057
libstagefright: Add support for PCM in offload path

- If compress offload fails try to offload PCM
- Set PCM offload format if the audio mime is RAW/PCM

Change-Id: Ibab5cb2d73edd6e2e38cd32c05ef27612cbe1425
libstagefright: Enhance compress offload logging

Add/Enable msg logging
-Statemachine transitions
-Salient funtion calls to Audio HAL
-Salient funtion calls to awesomeplayer
-Events received from HAL
-Miscellaneous other important events.

Change-Id: Ib54954590f913afe473f20ccb56c46fed0aa000f
libstagefright: fix mute issue for h.264 and MPEG4

- use kKeyRawCodecSpecificData to find metaData for both MPEG4 and h.264
- For h.264 encoding, there should be two csd (SPS and PPS), csd-0 and
  csd-1
- For MPEG4 encoding, MetaKey name should be csd-0
CRs-Fixed: 600462

Change-Id: Ifd5a1c578bbbebda498aca502db18e21c3d12fd4
[frameworks/av] : added .mov extension

- while scanning the a/v files in sdcard it takes the container
  format extension and checks for whether it supports or not.
  So added support for mov extension in StagefrightMediaScanner.

CRs-Fixed: 515036

Change-Id: I140a96cd535178b64b5d7c8bafe20eece2243953
libmediaplayerservice: Avoid writing silence for offload tracks

-Audio Sink writes silence to the track if size returned from AudioPlayer
 is zero and when there is no subsequent output.
-Avoid writing silence for offload tracks as decoders do not expected
 any raw data.

CRs-Fixed: 615468
Change-Id: I5044d514126c413f56971e80815f232298f9685c
Revert "libstagefright: Do not offload HEVC AV decoding"

This reverts commit 1eec4467fb12ee1ae88aa9c1374c79fbf4d03e68.
Revert "AwesomePlayer: Enable audio offload for widevine"

This reverts commit 2364610daa8e076648f533f265a595474e5d5834.
Revert "libstagefright: Add support for PCM in offload path"

This reverts commit b3f9ff4e1579c3263687de33d532ab2dc3fbab0f.
audio: Added lock during closing of direct output

- Lock is missing when direct output is closed in
  closeOutput_nonvirtual. As mDirectAudioTracks is
  being modified in this function, we need a lock
  here to avoid synchronization issues when it is
  accessed from other methods in AudioFlinger
- Fix is protect direct audio track specific block
  with mLock

Change-Id: I88f489c3bbe21ecb198bd836c05b0bfa5826d3c6
CRs-fixed: 611654
Merge remote-tracking branch 'brood/kk-4.4' into msoctos