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
StagefrightRecorder: Pause audio encoder on recorder pause

  When the recorder is paused, OMXCodec-based audio encoders will wait
  for output buffers, timing out after 3 seconds. Pause the audio encoder
  to avoid a timeout error.

CRs-Fixed: 634301
Change-Id: I99b95bf356f87e9c18c763c542cbfcc13bc54fb1
libstagefright: Copy the entire buffer from/to OMX component

Presence of OMX extradata in buffers isn't reflected as part of
nFilledLen.  To avoid omitting the extradata, copy the entire buffer.

Change-Id: Ib310dda3dc93693d4ab380912a9997d7ea120be1
stagefright: Handle acquireWakeLock failure case

When the power service is not running, acquireWakeLock fails, but
TimedEventQueue still keeps a reference count to a non-existent
wakelock. This causes an assertion failure when trying to free the
wakelock. Only increment the reference count and save the wakelock
reference on successful acquire.

CRs-Fixed: 640796
Change-Id: I441bf8d4c3520eb6ce8a378d2744913de0a44f55
disable camera sounds (3/3)

Change-Id: Iff4eb5ca7dd13038bf852a76d0c605814864497a
Signed-off-by: Jonathan Steadman <xxwhitehawk@gmail.com>
screenrecord: Add audio support

Adds audio recording to the screenrecord system. Note that
while recording, the audio is muted from the device output,
and that the audio volume is controlled separately (so make
sure to turn up your volume if you hear nothing).
Audio from the microphone can also be recorded by adding
--microphone to the command line.

Change-Id: I97dfcaf3d93b786c5466e1f4215549e3d015bcf0
screenrecord: Enable SUBMIX_IN as well and cleanup on exit

While on Nexus 5/Nexus 7 (AOSP QCOM audio), trying to turn on
SUBMIX_IN fails and is not needed, it is required on Find 5
and N1 (CAF QCOM audio), or otherwise SUBMIX_OUT won't turn
on.
We also now release the audio routing as it wouldn't revive
the audio speakers otherwise.

Change-Id: I0f80a232304733e0b0a834b188b8cfa5b88915f3