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
(cherry picked from commit 51e6ed3343b9f5ad2d467b0dcfbdfaa10ef216c8)
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)
(cherry picked from commit 7469d8f3720dcbca3cc92cee19da920b6a73d16e)
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)
(cherry picked from commit 031b972e0c1959250a1bba8020ed32c900fd6549)
add Sony camera parameters

Change-Id: I4d8af24db1873776ad8deca75516f6e0840f1a62
(cherry picked from commit ecdf667812eeb0068c9d7bbe464710ba4b887156)
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
(cherry picked from commit 3579b9d307d4108f70d777153c8b009217f991bc)
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
(cherry picked from commit 3c43845c77eb0111187efa5e03125b28b1c78ae9)
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
(cherry picked from commit b3f9ff4e1579c3263687de33d532ab2dc3fbab0f)
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
(cherry picked from commit 6138dad0d5fb3ec07364e6d5bb835b972faf0716)
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
(cherry picked from commit 93d02bb7b28e1d184d29269850214b7bccdadd83)
[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
(cherry picked from commit 5543234b5fbde47359f15ccd62c61210d9ffbd21)
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
(cherry picked from commit e23f8b1a2b7333c1add221f24ffe60b93819f709)
libstagefright: Set is_streaming flag for all widevine content

- For widevine clips played from sdcard get the file type
  from extractor's meta data.
- By setting is_streaming flag 2k buffer size will be used
  for audio offload.

CRs-Fixed: 615323

Change-Id: Ic54a642aa70c3355583807eb4ca2034e4207dfd4
(cherry picked from commit 8de456c6b22218c72e183c615501e155be2330a9)
Revert "Audio: Add Pause/Resume in AMR-WB tunnel recording"

This reverts commit e51f3b1dd8b8b2668af3c467a330b18714d29966.

There's no mSource->stop() in MPEG4Writer::Track::pause(),
so no need to add this limitation here.

CRs-Fixed: 620437

Change-Id: I7b7134e2f58083b7dd9cfb3c0943d703ba228ecb
(cherry picked from commit cb542dbf394e147d85fc1f108912f74d1f0adc09)
AudioTrack: Handle track invalidate on wait for stream done

If a track invalidate is called while waiting for a stream done,
AudioCallback handler is notified with event EVENT_STREAM_END.
This might cause substantial data loss for offload playback. Try to
recreate the track if needed.

Change-Id: Ie663c85e92588ddfd8d633f4bf5024f9fa4f5c2e
(cherry picked from commit 5dcce8b1c758bcc3e56067f9fea832ad1ad41b53)
libstagefright: Add support for AC3/EC3 playback in tunnel mode

- Add support for AC3 and EC3 playback in tunnel mode

Change-Id: If5de26d3ff9e63737d6ed43b904c6094f93fbfc0
(cherry picked from commit eafa0534a47ad64c58e06b21371748ee63ca96cf)
libstagefright: Enable HFR feature for video recording

- Enable HFR related calls to set HFR mode in stagefright and
  libmediaplayerservice
- Perform HFR scaling with mp4 timescale parameter instead of
  recalculating timestamps

Change-Id: Ie30637093d91ed7f5a41c5137c3ff45e1370a906

libstagefright: HSR: Check if HSR enabled, use HFR value for HSR

- HSR is high speed recording hint from camera app, if this is set
  use frame rate set in HFR as normal encoder frame rate.
- HSR hint also indicates that this is not HFR feature and treat
  this encoding as normal encoding

Change-Id: Ifff59cd8ed88efca230fd34e46325a11728e8c86

libmedia: Adding HFR entry in MediaProfiles.cpp

-- Adding HFR entries for max HFR mode, max HFR width & max HFR height
   in MediaProfiles.cpp

CRs-Fixed: 589983
Change-Id: Iafcc1be4124879a029a2e4b8aded35150d0c120b

libstagefright: Use hw encoder for video recording

Use hw encoder for video recording based on the platform.

CRs-Fixed: 576174
Change-Id: I5d14d2fabb8d39fe940fa25c88b90252bfd07bc0

libstagefright: Fixed typo in target name

Target name was wrong which was causing this flag to be not set thereby
software codecs were also being used

Change-Id: I3f3a0de4eda0fef2f2f26579645a4a06a1ecddaf
CRs-Fixed: 582977

stagefright: Correct total duration of HFR clips

HFR leverages the mp4 track timescale parameter which is not
considered when calculating total clip duration. This makes tracks
report the correct duration so that total clip duration is computed
correctly.

Change-Id: I8ff556913317eea15030f9f6920cefa560133872

libstagefright: Cleanup HFR cruft

Change-Id: I67d43cd2e14f33e2915afd61b590c32d7c97a9c6
(cherry picked from commit 12fa017cbefb3daeb6a257589ed05a00779ec6b7)
stagefright: Enable GraphicBuffer usage to decoder before querying formats

This lets the decoder publish appropriate color format based on surface
OR non-surface mode.

Change-Id: I567ae53d4d0dfa2abbf29e8196637a1da3e89969
(cherry picked from commit 7c06b863de1166cb11ed1797474b79cf279e32df)
stagefright: Disable HSR for now

 * Depends on updated media repo, we're not quite ready.

Change-Id: I76e6577e771de09617a8831e7fe3d1d525ee8fd8
(cherry picked from commit 23373ed880fc124f20a6ee90e539576ffbfddba8)
media_profiles: the HFR parameters don't need to be mandatory

Change-Id: I5e2d32f3be31f2ef82c314088d032105e6c8a5f8
(cherry picked from commit 46e5918a2c39db02f97bc89cb7bda43352f74bca)
libstagefright: Add NULL check for mHFRRatio

Commit 12fa017cb "libstagefright: Enable HFR feature for video recording"
is not yet fully implemented. Camera recording will fail because timeScale
is not calculated properly. Add a simple NULL check to fix.

Change-Id: Ieea78efb43645f57615309a91508092433bc34b3
(cherry picked from commit 1b7ac643d2743d3e4463d950e0ed2e959802c4c4)