libstagefright: Polish MPEG4Writer for MediaMuxer.

     1. Fixed bug in Utils, which ignore 'ESDS' data for MPEG4 video.

    2. Add format limitation for MPEG4Writer.
       only support H.263/AVC/MPEG4 video and AAC/AMR-NB/AMR-WB audio.

Change-Id: I6daa9fa7c487d6cd95983d8b8da6f7fa53a2c44d
Signed-off-by: Anjun Wen <ajwen@marvell.com>
Support MPEG4 codec in Matroska files

For MPEG4 the matroska parser must handle files with and without
configinfo in the codec private data.

Change-Id: I7025772c87ee24bc074bd3837f6877552245e389
Support AAC audio (WaveFormat = 0xFF) in AVI container.

Present AVIExtractor doesn't support AAC audio. So some AVI clip with AAC,
AAC-HEv1, AAC-HEv2 audio, can't be played from gallery.
With this fix, added support for AAC audio (WaveFormat = 0xFF) in AVI container.
Also added a condition to check the sampling rates which are supported and return
error if unsupported sampling rate is encountered, to avoid tombstone crash.

Change-Id: Ic8f081ed254ce8c0b3c0cbd1c3811b89b18c6e8e
Signed-off-by: gbhakteX <gurudattax.bhakte@intel.com>
Signed-off-by: Mazhar <mazharx.sameullah@intel.com>
Support MP2 contents in AVI container.

In present code only "Wave Format = 0x55 (MPEG Layer 3)" is supported in AVI container.
With this fix, adding support for "Wave Format = 0x50 (MPEG)".
As per "RFC 2361 - WAVE and AVI Codec Registries":
A.45 MPEG
WAVE form Registration Number (hex): 0x0050
Codec ID in the IANA Namespace:      audio/vnd.wave;codec=50
WAVE form wFormatTag ID:             WAVE_FORMAT_MPEG

Change-Id: I7cc9d3c8bd8da7a079ac8d50a6d61ccbdedb6f82
Signed-off-by: gbhakteX <gurudattax.bhakte@intel.com>
AwesomePlayer: improve scheduling of video event to hit PTS

Change-Id: I7b19911acbde9b592b757b952d4ad63cd8efebed

AwesomePlayer: use PTS for queueBuffer

Change-Id: I1c14ad4784c799c46cf06a14b0f00c5e4d01f718
Fix decoder EOS handling

Conceptually it should be the same whether EOS is signalled on the last
buffer holding data, or an empty buffer that follows. Make it so that
this actually behaves the same for mp3, AAC and Vorbis.

b/8747869

Change-Id: Idece8ef45689a3ffaf70fb45d19862d7b93b2f92
AACExtractor: Added support for APE tag

To support aac audio with APE tag we need parse
this tag. Otherwise AACExtractor stops reading of
audio file.

DR: OMAPS00267689

Change-Id: Ic697b90dbc9f2b93aeb227411359c36c113cb71e
Signed-off-by: Daniel Levin <dendy@ti.com>
AC3 support ATS (MPEG2TS) Parser

Added support for AC3 in TS parser.

Change-Id: Iaa7d29a7f791e1ca68156fa43a69d835dc4596ae
audioflinger: Cleanups

Change-Id: I23279f0602544320a191464ecde006bbfca6ab55
AudioTrack: When paused, return cached playback position

An offload output can be re-used between two audio tracks having
the same configuration. A timestamp query for a paused track
while the other is running would return an incorrect time.
To fix this, cache the playback position on a pause() and return
this time when requested until the track is resumed.

Change-Id: I98e969abf49f8d3a9793ed1c065e21664d7553f7
CRs-Fixed: 612943
Do partial reads in MemoryLeakTrackUtil

Do partial read in MemoryLeakTrackUtil dumpMemoryAddresses
to avoid using more memory than what is allocated.

Change-Id: I94feb4e00647407f938571167b981c7371f39e3d
libmedia: ensure mCaptureThread exit within Visualizer destructor

If mCaptureThread doesn't exit when Visualizer instance gets destroyed,
recycled member variables with random value such as danger pointer will
be accessed again and causes crash.

Thread which is created within Visualizer instance lifecycle should be
terminated before or within destructor.

CRs-Fixed: 688546
Change-Id: Ie0b12ae8a3b9735b6ecbac0353781b8358cad644
stagefright: Fix pause logic

 * This code can race during CTS. Only wait for HW decoders.

Change-Id: I4cfa049f06d27ca7ca9107ae31772f38392a8bc2
audio: compress offload to pcm fallback on SSR

- Add support for error propagation on
  time stamp query for playback session

- Add support for compress to pcm fallback
  during SSR

Change-Id: I4fa793de95bfe58cde7a05735d8f70a672ea19fc
stagefright: 24-bit audio support via offloading

 * PCM offload feature can handle 24 bit streams padded to 32 bits,
   bypassing resampling and truncation.
 * Add support for 32-bit padding in FLAC and WAV decoders
 * Refactor the FLACExtractor a little
 * Set flags where appropriate
 * Tested with 96KHz/192KHz 24-bit FLAC files on msm8974pro
 * Audiophiles, rejoice!

Change-Id: I87bfabd991da34fbb6115e69ee5a935d941c29da
stagefright: Fix compile for non-QCOM_HARDWARE

* AUDIO_FORMAT_FLAC is only defined for QCOM_HARDWARE, move it inside
  the AV_ENHANCEMENTS ifdef so only AV_ENHANCEMENTS enabled devices can
  possibly offload it.

Change-Id: I83c1d527527c2545c5cea599fb01632604c73c23
libaudioflinger: add stock resampler in pcm offload path

- when samplerate changes in b\w playback, resampler should be plugged-in
  so that the o\p sample rate remains the same to h\w
- this resampler is only enabled on 16 bit PCM path, when channel count is
  <= 2 and channel count doesn't change mid-stream
- once the sample rate resets to original\initial sample rate, resampling
  should not be done
- by default this feature is disabled

Change-Id: Ic27bbf9174d0a83297ebc4418eebdc8850272a6b
frameworks/av: Add output close in AudioTrack destructor for offload case

Close audio output handle inside AudioTrack destructor for
offload case to make output handle close/open independent of
each other and support multiple concurrent offload plyabck
session.
This is controlled runtime based on system property:
audio.offload.multiple.enabled

Change-Id: I98b3a6fe03bfddca2ed01a2adc5a33e4ad540e67
stagefright: Handle offload fallback for 24-bit tracks

 * We need to carefully handle fallback in the 24-bit lossless
   sources for outputs such as A2DP, which cannot use PCM
   offload.
 * Clean up the code while in here as well.

Change-Id: I398d964a3c5b18f58fcc79376bc29222e796badc
appop: protect mediaserver with OP_RECORD_AUDIO op check.

Some apps could use a binder to direct link to the mediaserver, bypassing
the android media framework security. Add an internal check to createTrack and openRecord
mediaserver's methods to protect them from undesired access.

Thanks to Blackphone for discovery and contribute this patch.

Change-Id: I12601d19ee093cf4c76ebf3a96aa63f6562dafac
Signed-off-by: Jorge Ruesga <jorge@ruesga.com>