Framework: Fixing media server crash.

Fixing media server crash when dump() is called
from camera framework after camera HAL instance
has been released.

CRs-fixed: 634328

Change-Id: Ia837f5c0e722db4e6a7187062adc5d8bcfc93dca

Conflicts:
	media/libmedia/AudioTrack.cpp
libstagefright: Handle offload fallback for WAV content

- For WAV content there is no OMX Source, use the AudioTrack
  as OMX Source for fallback.

Change-Id: Ifeaeb2cf8dd777d167b74eebd11803b7f130e857
libmediaplayerservice: Fix bug due to operator precedence

Condition check for offload flag returns false always as bitwise
operator has lesser precedence to relational operator.

CRs-Fixed: 629912
Change-Id: I1843c977bd98cf9a807adaa51a073f9fb744d326
libstagefright: mkv parser: check for divx format

bailout if divx is disabled and if video format of the clip is DivX

Change-Id: I600a3f8ccd5e3dc464c8c26477731e6a72589b6d
AudioFlinger: Introduce CBLK_STREAM_FATAL_ERROR flag

On a fatal error, PlaybackThread (or its derived classes)
can opt to signal an error back to the AudioTrack using
this flag.

Change-Id: Id323df8693c720432a459fe4d844d39033b24598
audioflinger: OffloadThread fix for resume underrun

AudioFlinger can miss resuming h/w on a pause->resume transition
if sufficient data isn't available.

Change-Id: I3632b44571201bb47155f2ed3ad425fe68e04492
CRs-Fixed: 616599
libmedia: Set the correct audio latency in offload mode

- In offload mode latency is decided by Audio HAL.

Change-Id: I0f46ce9cb43e59907c07e77ec57fda47e841b094
CRs-Fixed: 609259
stagefright: Correct the updation of extension sample rate

For SBR content, the extension sample rate is being overwritten
with incorrect value when sample rate index is 0xf.
Fix the issue by correcting the logic to update the same.

Change-Id: I126e83665319b143fcfa52d1fb434ebbe453e6e1
CRs-Fixed: 636580
audioflinger: forward device change to effects in direct thread

Device change during offload playback is not informed to effect chain
which causes effects still work on unexpected output devices. Add device
change notification in direct output thread.

CRs-Fixed: 630408

Change-Id: I094a99bdf540479cee2fca6614ec35c2fa7d6046
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.

CRs-Fixed: 612943

Change-Id: I54b5a851ee3fa2ceadc37e3f5c6af4f37b8f404a
audio: mute duration at the beginning of recording

-AudioSource mutes for predefined duration (kAutoRampStartUs)
 at the beginning of a recording. Current kAutoRampStartUs
 is not sufficient to mute the shutter sound click on
 B-Family devices. Sometime shutter sound is getting recorded
 with the current kAutoRampStartUs.

-Issue with calculating muteDuration from getOutputLatency is,
 more delay is getting added for Bt(~1 sec) which is really not
 required.

-Fix is to use constant mute delay which is appropriate

Change-Id: Ied20dc44c56cc74c74fb001383d3c533cb54b632
CRs-Fixed: 636491
stagefright: Handle missing text track language

Only set timed text language if kKeyMediaLanguage is found.

Crs-Fixed: 641896

Change-Id: Ie471bc458e42f5728064e447ac5c33b07311d3fd
Fix kAutoRampDurationUs overflow issue

When kAutoRampDurationUs multiplies with mSampleRate, it overflows to int64.
Type cast it to int64 to make sure RampDurationUs properly.

BUg: 11162491
Change-Id: I4f93bc9acc8456e25623a9255ca7a5b206425009
audio: calculate mute duration using getOutputLatency

-AudioSource mutes for predefined duration
 (kAutoRampStartUs)  at the beginning of a recording.
 Since kAutoRampStartUs is zero, video recording tone
 is also getting recorded in the beggining.

-Fix is to get the output latency of current playback
 stream from audio system to calculate mute duration.

Change-Id: Ib9f4d38fcc8478d148719b70358644c581ba2f25
CRs-fixed: 615511
stagefright: Remove dead code

Change-Id: Ic543dfc5f1278dda1073e607fa9bdb381555256b
stagefright: enable traces for performance debugging

Trace number of video output buffers with OMXCodec, EBD,
FBD messages. Trace calculated sleep-delay in AwesomePlayer
and trace AudioPlayer::fillBuffer call.

Change-Id: Ib63fa4da48e690c79d57e134a6ad4519e396d198
libstagefright: Drain input buffer on resume

- Buffers returned from codec in paused state are not drained. When
codec is resumed these buffers are not drained until the next flush,
and may cause timed out issue.
- Added change to drain input buffers for sw decoders when resuming.

Change-Id: Ida2ab1d5dc3a1910accdd6fb89548262a912d8e7
CRs-Fixed: 569585, 574967
stagefright: ExtendedCodec: enable arbitrary/frame-by-frame mode

Based on the parser's hint, explicitly enable arbitrary or frame-
by-frame mode rather than assume component's default mode.

Change-Id: I0931b84f3757625d1e62311c2171ff48defcbe04
CRs-Fixed: 642025
stagefright: yield callbackDispatcher to writer safely

Dispatcher acquires the OMXCodec instance (add ref) and
removes ref each time it dispatches a message. If removing
of ref is not guarded by the lock, based on timing,
dispatcher thread might be the last one to own OMXCodec and
ends up deleting OMXCodec instance from its own context.
Destruction of OMXCodec from dispatcher's context will also
freeNode, remove dispatcher, forcing dispatch-thread to join
itself.
On Android, this will not block itself, but may lead
to a race condition where [b] comes before [a].
[a] wait for the thread to finish (join)
[b] return from destructor (delete object memory)

CRs-Fixed: 647460
Change-Id: I651f55a74dc0444d6d8d87a55cc6d27556fbb9f5
libstagefright/omx: Fix logic to handle dead observers.

  OMXNodeInstance freeNode tries to tear down OMX component
  if not in OMX_StateLoaded. It handles all other states except
  OMX_StatePause. This change adds OMX_StatePause handling.

Change-Id: I3bae2015c57b932186069756490c9bdf1f93eea4