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: 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
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
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
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
libstagefright: Add support for AC3/EC3 playback in tunnel mode

- Add support for AC3 and EC3 playback in tunnel mode

Change-Id: If5de26d3ff9e63737d6ed43b904c6094f93fbfc0
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
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
stagefright: Disable HSR for now

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

Change-Id: I76e6577e771de09617a8831e7fe3d1d525ee8fd8
media_profiles: the HFR parameters don't need to be mandatory

Change-Id: I5e2d32f3be31f2ef82c314088d032105e6c8a5f8
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
ifdef "stagefright: Enable GraphicBuffer usage to decoder before querying formats"

Breaks video playback on galaxysmtd

I/OMXCodec(  151): [OMX.SEC.AVC.Decoder] AVC profile = 66 (Baseline), level = 30
I/OMXCodec(  151): [OMX.SEC.AVC.Decoder] video dimensions are 640 x 352
W/GraphicBufferAllocator(  148): alloc(640, 352, 19, 00002930, ...) failed -22 (Invalid argument)
E/        (  148): GraphicBufferAlloc::createGraphicBuffer(w=640, h=352) failed (Invalid argument), handle=0x0
E/BufferQueue(  148): [SurfaceView] dequeueBuffer: SurfaceComposer::createGraphicBuffer failed
E/OMXCodec(  151): dequeueBuffer failed: Invalid argument (22)
E/OMXCodec(  151): [OMX.SEC.AVC.Decoder] Allocate Buffer failed - error = -22
E/AwesomePlayer(  151): failed to start video source
E/MediaPlayer( 2023): error (1, -22)
E/MediaPlayer( 2023): Error (1,-22)
D/VideoView( 2023): Error: 1,-22

Change-Id: I9977dcf9fc50936038808ed06bcd85b07efd7bd8