audioflinger: OffloadThread state fix

When switching from one offload session to another that
reuses the same offload output, audio HAL is paused & flushed in
preparation for the new track.

OffloadThread must reset mHwPaused to allow proper state transitions
for the second track.

CRs-Fixed: 578165
Change-Id: I8173845e1782b5a8b372a82c7d337299a61e0efe
libstagefright: Disable multi slice mode

- Disable multi slice mode video encoding for all
  targets

CRs-Fixed: 573731

Change-Id: I5087cbd2b2932b08e2c663be25104d82fc766ad4
libstagefright: Handle error on allocate buffer failure

Set state to error on allocate buffer failure at start(init)
of decoding.

Change-Id: Ice54f2d3f9cb087dd1f8f14913aacb632c4a8f9a
CRs-Fixed: 332373
libstagefright - Fix timestamp overflow

 - change time related variables to 64 bit to avoid overflow
 - composition time calculations were having overflow in
   SampleIterator and it propagates to the rest of the time
   related information for the frames

Change-Id: I7cd84be134e2e5d17abb28208b5c0a00e6cf6602
nuplayer: Fixes in nuplayer Renderer

- Fix in AV sync calculation for video only stream's pause
  scenario

Change-Id: Ie4fae760ca485ee21121cf4018a62d5d86eacb57
libstagefright: Add HEVC as a recognized MIME in ExtendedExtractor

For HEVC playback through ACodec, ExtendedExtractor needs to recognize
the HEVC mime type and set the appropriate role to the component.

Change-Id: I60e05f4f1e480e137401112431c5c8093e637d56
libstagefright: Use 64 bit offsets only when needed.

For enabling >2GB recording, 64 bit offsets are
needed for file writing. So, this feature was turned
on by default. This in turn increased the file size.
With this change, by default this feature will be
off and turned on only when required.

- Use 64 bit offsets for resolutions >= 720p.
- Limit maximum file size for recording to 4GB.
- Set max file size only if no value is set from the client
CRs-Fixed: 273144, 285785, 288319, 328461, 587477

Change-Id: Ica37cb0414642c68ada18e0b7ba184b55692c6f2
libstagefright: Smooth Streaming in OMXCodec

This change is to address startup latency during playback.

Set smooth-streaming mode from OMXCodec by default
if mm.enable.smoothstreaming property is enabled

When crop change is detected, save the target crop/stride and apply
them just before the buffer is (potentially) rendered.
Applying the updates right away may cause artifacts as buffers with
previous resolution are not rendered yet.

This approach assumes that there will not be a crop change within
the detection and application of current crop

CRs-Fixed: 584629

Change-Id: Ia164309edf1c51ed28b929deabecc53fc56cbf33
audioflinger: Fix for a deadlock

AudioFlinger enters a deadlock (with itself) on trying to free a
RecordTrack object that failed initialization. Clear this
bad object from the caller instead.

CRs-Fixed: 589020
Change-Id: I926f2beb922a70f6924e593e2bbf1a5b5df85b16
audio: init rc to avoid effect's fault state

Effect command doesn't necessarily fill cmd return code into &cmdStatus,
so we should initialize cmdStatus to avoid uninitialized value propagates
to upper stack caller.

Change-Id: I5694616c9d3d66071241958f54a03b8d3b9d881e
Merge "audioflinger: Fix for a deadlock"
libstagefright: Set the maximums AAC framesize

The maximum AAC frame size is made equal to 8k*4
to handle multiple AAC frames in single buffer.

CRs-Fixed: 505248

Change-Id: I7c7e07620e2da8e1efe3914ebf73832f2f885ec9
Merge "libstagefright: Add HEVC as a recognized MIME in ExtendedExtractor"
Merge "libstagefright: Use 64 bit offsets only when needed."
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
Merge "libstagefright: Smooth Streaming in OMXCodec"
stagefright: Fix deadlock during FM device switch

- Start FM playback on A2DP and disable BT from settings. Observed
  that audio is not routed from A2DP to Wired headset.
- During device switch, there is a deadlock for AudioTrack lock
  between createTrack_l() and AudioTrack destructor. The writer
  thread is creating the AudioTrack without any weak/strong reference.
  So when the track is invalidated and tried to re-create the track,
  mDeathNotifier.clear() results in calling destructor.
- Fix the issue by ensuring that AudioTrack is instantiated and
  stored with strong refernce.

Change-Id: I0c96648045506f7decaaec0adb70e7aec0077140
CRs-Fixed: 581487
libstagefright: Update handling of SBR explict siganlling

In case of SBR explict signalling in the bitstream, the core
AAC sample rate is overwritten by extension sample rate.
HW AAC decoder relies on core sample rate to parse the
bitstream when supplied in raw format.
Do not overwrite core sample rate but store it as separate
field in the meta data.

CRs-fixed: 572242

Change-Id: I5c70cfcc40a44bff9f9da4082c6b4dccd7c6788e
Merge "libstagefright: Update handling of SBR explict siganlling"
CameraClient: Enables meta data notifications

Adds the needed functionality for enabling/disabling
metadata messages depending on the camera client
commands.

Change-Id: I39d632b4742e83df5db5f86b12742aefc2480dfc
Cherrypicked from 25bd97f5ec30e7942c3b1fdc96115da6028736f0