OMXCodec: Support older QCOM video decoders

Pre-JB qcom decoders calculated buffer dimensions based on stride
and slice instead of the video frame dimensions. If for some reason
a device uses older (ICS, possibly HC) OMX libraries, enable this
behavior with QCOM_ICS_DECODERS

Change-Id: Id7f48bf79e3bfd5bcf692eb8165edde2b426a351
Merge "OMXCodec: Support older QCOM video decoders" into jellybean
frameworks/av: Implement DirectTrack and DirectTrackClient

- DirectTrack exposes API to client so it can create a direct
  output.
- DirectTrackClient allows notifications to be sent to the
  client from DirectTrack
- DirectTrack is being used for LPA and Tunnel Audio

Change-Id: I1ae121bbcdf8d84000214c10116757915c826fa4

libStagefright:: Provide interface to query current offset position

- Currently the streamport is querying same getSize for get current
  offset. Since this info is needed by parser to decide if sufficient
  data is there before requesting for the same. But in case of data
  length and size coming zero the same is passed to the parser which
  assumes that there is no data with the data source and it errors out.
- To resolve this issue new interface is created to pass the current
  offset length which indicated how much data is read till now.

Change-Id: Id508329cd9ba6c34f882821135cced1d37ba0346

frameworks/av: Update framecount and buffersize values

-framecount should be calculated based on mMaxBufferSize
 returned from HAL
-update the buffersize with the value returned from HAL
Change-Id: I90dd9c3ebbbc8a9f1f2f92c5347ae9cb01719e13

media: Include the MPQPlayer for MPQ8064

JB upgrade for the MPQ8064.
Initail contribution taken from the ICS mainline code.
Including the MPQAudioPlayer for the tunnel mode.

Change-Id: Iaf827ac2c63a4f749ecfe5494ebeb0cd2e14d4a2

Stagefright: Implement LPAPlayer and TunnelPlayer for DirectTrack

Change-Id: If025b129a3e102642552c16522d8668c657ab5b3

libmediaplayerservice - enable prepare for source other than DASH

  - enable media_repared for non dash source
  - allow prepare async for non dash source

Change-Id: I24218644114c4a8965a12056ecfc841841515576
CRs-Fixed: 382348

frameworks/av: Add Misc fixes for LPA

- Add support from closing recycled track while going from non-LPA
  clip to a LPA clip.
- Set EOS to true when there is asynchronous reset. This prevents
  decoder/extractor from fetching additional buffers.
- Disable Audio Effects changes for now.

Change-Id: Iea150885c1517b1eee7df7f1ad5231e5bcad23d4

libstagefright: Bookkeeping for Tunnel instance in AwesomePlayer

-Add additional Bookkeeping for Tunnel instance in AwesomePlayer due
 to gapless playback changes in stagefright.

Change-Id: I54376ccc43450cf90a44b149e8ee911f29dcbe65

libaudioflinger: Setparameter  call  for direct track.

-Add set parameter call for direct track. This is required for
 device switch of lpa  / tunnel clips.

Change-Id: Ib57feff2adbbcce75d540a41e3ab4e3bb9dcd02d

audioflinger: VOIP bringup and support for vocoders

Change-Id: I681e8e4ddade15a7d3aef4d25e6bbc7dced03767
(cherry picked from commit 5aac550bcab3ff19984d05b8c7904ee6d63d197b)

Conflicts:

	media/libmedia/AudioRecord.cpp
	services/audioflinger/AudioFlinger.cpp
	services/audioflinger/AudioFlinger.h
audioflinger: fix bad parentheses placement

Change-Id: I682b72cedca96b3bab68ccb4953bafceac24ac82
audio: Fix another ifdef fail.

 * Yeah, I should test more.

Change-Id: I82f532518e8367d09550347520f3604f907f90da
stagefright: Build QCOM players for all QCOM targets

 * They are disabled, but need to be built.

Change-Id: I38e75c078011402b36a2ca8e4a4e9fa76b2edd89
audio: Unbreak ALL the things

 * Seriously, WTF Steve.

Change-Id: I7c304104d9d7e84121ef1a8cf77d5977e1258616
camera: Set the min undequeued buffer count to 2 for camera

 * Too many buffers causes ION allocation failures on many devices.
 * We don't need these extra buffers for performance in the camera, so
   set it back to 2.

Change-Id: If610824f30ee8e6a2c1acb90dd7af78269e81086
Merge "camera: Set the min undequeued buffer count to 2 for camera" into jellybean
libstagefright: Adding a work around for SurfaceMediaSource

- Do not stop on first call to onBuffersReleased, which presumably
  will be called when producer calls setBufferCount on BufferQueue.
- Do not flush the buffers when stop is issued via onBuffersReleased
  (producer calls disconnect on BufferQueue), instead flush when reset
  is called.

Change-Id: I91448bc87563f2245ad9c9c7150b82c358bfe9e2
CRs-Fixed: 387181
libstagefright: Fix to free buffers in error scenarios

    o MediaBuffer objects are not freed if component transition from IDLE->EXECUTING
      or EXECUTING->LOADED fails (or if the OMX_CmdComplete messages are dropped
      due to an earlier error)
    o Additionally with native buffers, the corresponding ANativeWindowBuffers are not
      cancelled back in the above scenarios.

Change-Id: Icdee687dab4883639f49ba0b38d6c80d7013873b
libstagefright: Accept vendor specific NV12 colorformat from component

Accept OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar32m color format which
is NV12 + 32 aligned stride and slice.  This different from vanilla NV12
which is 16 aligned.

Change-Id: Id6cd4295c7710b3f33ef082e3b644732fd85e3fb
Signed-off-by: Deva Ramasubramanian <dramasub@codeaurora.org>
libstagefright: Add flag to use MM heap for SurfaceMediaSource

 * Older QCOM camera drivers need to use the MM heap for effects
   recording. Add a a flag to enable this.

Change-Id: I4f78c3b370ba1ef7b6a0c567de0a211e85e8a2d0
frameworks/av: Use software decoders for LPA clips

Use software decoders for aac and mp3 LPA clips

Change-Id: I0310e128505ff383138c6a7dcb934ae64e86d6bd
audioflinger:  Avoid deadlock for sound recording - LPA concurrency.

-Rapid button press will cause next clip playback. If next clip is lpa
 clip, opening lpa clip triggers set parameter. The set parameter would
 acquire flinger lock and wait for completion. The wait can only be
 signalled from checkForNewParameters_l() in threadloop but the record
 thread loop will be blocked on processConfigEvents() on audio flinger
 lock resulting in deadlock and record failure.
-Release the lock before setParameter on threadbase is called to avoid
 the deadlock scenario.

Change-Id: Ib165210d16bcf661b6aa56aac1529375087e4e4e
CRs-Fixed: 390918
libstagefright: Fix crash during next clip playback

-Decoder/Extractor thread and reset was not synchronized and this
 resulting in write being called during destruction of session out.
-This causes crash during continuous next clip playback.

Change-Id: Id0c953541f2ba74b2321b16636852cbe59c4cdcb
CRs-Fixed: 392250
libstagefright: Pass aligned width to color convert routine

- NV12Tile requires aligned buffer sizes.
  The size passed was un-aligned.

Change-Id: I0d6c618aab7588998ef0e9cfa3fb8a51d9bce93a
Merge "libstagefright: Pass aligned width to color convert routine" into jellybean
AudioFlinger: mOutput->stream->get_latency must be inside mLock scope

Otherwise lock-ups during simultaneous playback of multiple
audio streams can happen.

Change-Id: Idd392761e50c1754f9740b7151fc90396542b909
camera: remove redundant QCOM_HARDWARE ifdefs

Change-Id: I9bccd7cb2fd3a7a7b3bda8002cf57ad21ce6b37e