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
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/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
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