libmediaplayerservice: Add new player for DASH

- Add new player factory to support dash playback.
- DASH urls end with .mpd. When media player receives
  an url with .mpd, it will use new factory to instantiate the player
  to be used for supporting DASH playback.

Change-Id: I69e5a08fb2baf89d97b1e0711dbe52a8b1c39c29
ACodec: Support for dynamic port reconfig

- On port settings changed first flush output port
- Move ACodec to new state called FlushingOutputState
- Flush all output buffers, wait till all decoded buffers
  are rendered
- Then disable output port, and allocate output buffers
  with new resolution, and reset native window

Change-Id: Iafa266371ed2a87b909fbcb4eeae6b64208df617
libstagefright: Add support for frame-by-frame mode

- Set decoder in frame-by-frame mode always, except for interlaced
  content, for which arbitary mode should be set

Change-Id: I8195a40549898b43a0e03d65663c7148f458c448
audioflinger: Fix to set correct volume in Tunnel playback

- After a pause and resume, tunnel playback volume is always
  set to maximum irrespective of the volume value before pause.
- The cause for this is, the stream volume is not used to set
  the volume in directaudiotrack.
- Fix is to use the stream volume to set volume during tunnel
  playback.

Change-Id: I59cda146ed88bd5c4186aeb9ae5d165f4a27493f
CRs-fixed: 452285
libstagefright: Check for duration > 0 to avoid DivideByZero crash

- duration = 0 can cause divide by zero and for this clip duration
  is indiacted as 0.
- check for duration > 0 rather than duration >= 0

Change-Id: I58ccacbf7ede892dff9626715162ea7b1f2ddbc6
CRs-Fixed: 451855
libstagefright: Squashed commit of LPA/tunnel updates from CAF

libstagefright: Exceptions in using Tunnel mode decode

- Accumulate all known exceptions to a separate function

Change-Id: I61bbc288c9a087559db210e76141b8c57e67fff0
CRs-Fixed: 432080

libstagefright : Stability fixes for Tunnel Player (part 2)

- Synchronize b/w reset() and onPauseTimeout
- Synchronize b/w seekTo() and onPauseTimeout

Change-Id: Ia5cfc6b4dcc326ead440fba35d809d4f3f1b5a81
CRs-Fixed: 449122

Revert "Revert "libstagefright: Convert mono to stereo for LPA clips""

This reverts commit 0db8a19fb3216a8a83d5d6cbd5f1ccbf997a20d8.

libstagefright: Port Tunnel mode fixes to LPA

- Miscellaneous fixes for seek, pause/resume, EOS handling
- Miscellaneous fixes for synchronization between the decoder thread,
  TimedEventQueue and the player thread.
- This change is a port of a similar set of changes made for
  TunnelPlayer

Change-Id: I82c2904f7aedfb9c4f03200419fcba8b038e3d54

libstagefright: Avoid use of extra bytes to signal seek processed

- A few bytes were reserved in the buffer sent by Tunnel/LPA
  player to audio HAL to indicate a seek has been processed and
  there is no need to skip it.
- We won't need this method anymore as this can be fixed instead
  by synchronizing seekTo() and the extractor/decoder threads.

Change-Id: Ic02ae1699bb59e2f6b8d9fb599d0fa43fd3f19e3

libstagefright: LPAPlayer synchronization fixes

- synchronize b/w seekTo() and onPauseTimeout()
- synchronize b/w reset() and onPauseTimeout()

Change-Id: I29a4ccf02e28fe7b7c00e35a679ff2b5271ffb6f

libstagefright: TunnelPlayer performance tweaks

Some tweaks when TunnelPlayer is used for audio/video playback

- Keep the extractor thread at ANDROID_PRIORITY_NORMAL
- sched_yield() after reading a frame to give the video thread(s)
  (CallbackDispatcher and/or TimedEventQueue) to be scheduled

Change-Id: If0d86d629fd0e15aff917af8589472578cd28bf4
CRs-Fixed: 444041
libstagefright: Fix incorrectness nPortIndex value for QueryCodec
                The query index is wrong, it will make a death loop in
my ME722 when get resource thumbnail for MPEG4 video.

Change-Id: I64532156e762b847a8eae59560fb828549c29519
Avoid invalid memory access when using extractMetadata()

BpMediaMetadataRetriever::extractMetadata() returns a string
which is returned by readCString() function of the reply parcel object.
However, the parcel object is destroyed at the end of the
extractMetadata() function, and so the returned pointer is invalid.
This patch fixes this problem by storing the metadata string value.

Change-Id: I2a2ccba78246175b2845a237679d6cebe881e83b
Signed-off-by: Sangkyu Lee <sk82.lee@lge.com>
audio: Subsystem Restart changes

 - Handle new ADSP status parameter
   - media/libmedia: Add new ADSP status audio parameter
   - framework/av: Add handling of new key-pair value in
     Audio Flinger

 - Handle Tunnel mode SubSys Restart
   - framework/av: Post SSR event to Audio Flinger
   - media/libmedia: Post SSR event to AudioTrack
   - media/libmediaplayerservice: Post SSR event to
     MediaPlayerService
   - media/libstagefright: Post SSR event to TunnelPlayer

Change-Id: I8c8385af45be91caf7d7160ab2e0236d6591b159
FM Radio: Add support for FM Radio in Android

Creating interface and framework for using FM Radio
RX and TX from different vendors.

Change-Id: I1a71aed01bfffdddfabf1cdfbfa3707cb1ed016b
Signed-off-by: Benn Porscke <benn.porscke@stericsson.com>
fmradio: use caf naming

Change-Id: I9e0fefa3f2dabe991c6be63ab13a18ca38c37f71
MediaScanner: Ignore dirs with .noscanandnomtp

Completely ignore directories with .noscanandnomtp files
in them. Placing a .nomedia file will still scan a
directory but exclude it from the media database. This
is so the file may still be presented for MTP purposes.

Placing .noscanandnomtp completely prevents the scan,
which saves considerable processing power and battery
life on systems with numerous media files, but prevents
them from being seen over MTP.

Change-Id: Ibff2a9f2525255a2ac34132eeee36734962fbdd7
Merge "FM Radio: Add support for FM Radio in Android" into jb-mr1
Merge "fmradio: use caf naming" into jb-mr1
libstagefright: Stop the logspam from LPAPlayer

Change-Id: Id6319774806e152333d468b9ff62d148e476555a
qcom-fm: audio: add support for FM feature

Change-Id: Idd5c7a0364710d54809ef5d4c7b2404b22dc4cf6

Conflicts:

	include/media/IAudioFlinger.h
	media/libmediaplayerservice/StagefrightRecorder.cpp
	media/libstagefright/Android.mk
disable camera sounds (3/3)

Change-Id: Iff4eb5ca7dd13038bf852a76d0c605814864497a
Signed-off-by: Jonathan Steadman <xxwhitehawk@gmail.com>
libstagefright: Squashed audio fixes from CodeAurora

libstagefright: Return seek position until seek has been processed

If it so happens that the client to TunnelPlayer (e.g. AwesomePlayer)
queries for the current time before data from the new seek position
is given to the compressed driver, we need to return the seek position

Change-Id: If709e61f67cc8e81d34c14d19145dc61ecd82c2b
CRs-Fixed: 454825

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.
- Fix MPEG4Extractor to use 64 bit offsets

CRs-Fixed: 273144, 285785, 288319
(cherry picked from commit 04476a3fb89dfbb025f7852dd4d62cae72385f1a)

Change-Id: I00af2c7cddbbf86c566fe4bb989fe728ca06dd19

libstagefright: TunnelPlayer sync fix

- Allow close on the AudioSink to be called from
  the extractor thread and the application thread.
- This fixes a race condition where an onPauseTimeout
  event scheduled from the main thread closes the
  audio sink while the extractor thread was about
  to issue write() on audio HAL. (note: on HAL, not audio sink)

Change-Id: I22a5c655dfcb40f3cbda3765dc23ad8e6f99c9bb
CRs-Fixed: 443205

Frameworks/av: Fix to prevent deadlock in AudioEffects

-Write is blocked waiting for effect chain lock and this causes
decoder thread to wait indefintely.
-Sometimes it is observed that effectschain is locked before
mLPAEffectChain is initialized and but unlocking is skipped if
mLPAEffectChain is initialized in between.Due to this LPA
silence and framework reboot issues are observed as
applyEffectsOn() cannot acquire lock to progress further.
-Use flag to check if all effects have been locked and unlock
accordingly to prevent the deadlock scenario.

(cherry picked from commit 011db22abf565dfbe7f9d0a5c7af7564587b3b48)

Change-Id: I82cfdab045ecf077f0ba0185fc693fc623fa10db
CRs-Fixed: 435661, 435664, 435680, 430309

audio: Use tunnel player only for music stream

- Check stream type before creating tunnel player to
  use tunnel player only for STREAM_MUSIC

Change-Id: I6e4b58524e61441ad2e09499bd9187c6dd56cd3d

framework/av: Fix for audio recording test through CTS

- Issue: Failure in stop is observed with the audio recording test
through CTS.
TestScenario: When the audio record test is initiated in the CTS
console, the recording session is force closed with a notification
File Size limit exceeded. Further, the stop fails with the same
message(notification of the File size exceeded error).

- Cause: The calculation of nTotalBytesEstimate for the recording
session exceeds the limit 95 percent of mMaxFileSizeLimitBytes.
As a result of size deficit, the recording is stopped at the
beginning of the recording session notifying
MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED.

- Fix: The factor size used in the calculation of nTotalBytesEstimate
has been updated properly for 64bit file offset setting. The
setParam64BitFileOffset in StagefrightRecorder::prepare() is executed
based on two additional validations so that the factor size is updated
appropriately.

Change-Id: I4749ce8f9735ccc9e1d9e49718c36470837ab27f
CRs-Fixed: 396057

audioflinger: apply volume on direct track when track is active

During back to back tunnel playback, we encounter a race condition
where setVolume can be called when the track is not updated to
active state. Fix to apply the volume on direct track only when the
track is in active state.

Change-Id: I70c289fbf8a9266bae0bd01b04be9f43ad32c70d
CRs-Fixed: 464148

LPAPlayer: Update condition to ignore seek

- Reject seek if the new seek time is greater than the current
  position and within an empirical limit (default 60ms).
- This limit must be measured for each target.

Change-Id: I86b44679fb5fe442bb5adb510c62514f6be3d304
CRs-Fixed: 453067

audioflinger: for DirectAudioTrak, call startOutput before stream is active

For LPA and Tunnel playback, when resume is done in paused state, before
starting actual playback, volume should be set through AudioPolicy command
thread.

Change-Id: I7ee1098058c01a35a3e7181d3b291304abf3cac1
CRs-Fixed: 464348
Camera: QCOM legacy definitions,HTC cam switch,NO_UPDATE_PREVIEW

Updating Camera parameters, and service with several
compatibility patches:

1., QCOM legacy CameraParameters and functions:
Adding these will make ICS qcomm camera blobs work on JB 4.2.
Use BOARD_USES_QCOM_LEGACY_CAM_PARAMS := true in BoardConfig
to use this.

Also fixes the problem of legacy qcom
camera blobs with recent libcameraservice QCOM_HARDWARE changes,
where the orientation is messed up on first
preview: the fix is leaving out setPreviewWindow(window) for
legacy qcomm cam blobs.

2., Also adding NO_UPDATE_PREVIEW flag for legacy purposes.

3., Adding adding the set orientation patch:
Always set buffers orientation when setting the qcom camera preview window
Fixes the rotated preview on TouchPad
https://github.com/CyanogenMod/android_frameworks_base/commit/1a8e41a3c7434737db89b604352575f8b3109e7a

4., camera: Full support for HTC camera switch

5., Adding more parameters for HTC Explorer

Change-Id: I2bfc72b8ef027665356788f1db7f96b31d037dbe
Camera parameters for Samsung's qcom based legacy devices

Change-Id: I8f84e06771338d992521e69704d21cd113201b4b