libstagefright: Adjustment for TunnelPlayer buffer size

- Make necessary adjustments to align the buffer size
  for TunnelPlayer to satisfy the following conditions
- Buffer size is a multiple of LCM(1,2,4,6,8)
- Buffer size is aligned to 4k.
CRs-Fixed: 447274, 442365

Change-Id: I1b7f9ac3cf8ff86f972a8b6798bfcff3a4ba7c64
audio: apply volume on DirectOutput streams

- Call stream->set_volume to apply volume on
  particular stream of DirectOutputs

Change-Id: I98e3b856ee508d407f893afad66caade5eda3e4a
CRs-Fixed: 445953
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
Latency optimization in bufferCount / MW (Audio android framework).

BufferCount for AudioSink/AudioTrack is changed to 2 from 4. This
is done to improve the latency for the audio buffer.

Change-Id: I25efc9ee6e9ed19daa727f78df2a1dfa1aeddb38
Author: Gurudatta Bhakte <gurudattax.bhakte@intel.com>
Signed-off-by: Gurudatta Bhakte <gurudattax.bhakte@intel.com>
Signed-off-by: Shuo Gao <shuo.gao@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-tracking-BZ: 26849
fix crash issue while playing certain streaming media

In the play response of certain streaming media, the url just contains part of the full url.
Change the url matching method to enable this case rather than crash as before.

Change-Id: Iacf46286ad5b9a1ef8e6fc4919d9fb0ee57ed31f
Author: Yi Wang <yi.a.wang@intel.com>
Signed-off-by: Yi Wang <yi.a.wang@intel.com>
Signed-off-by: Dan Liang <dan.liang@intel.com>
Signed-off-by: Shuo Gao <shuo.gao@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-tracking-BZ: 49305 7540 18533
libstagefright: fix the duration "00:00" for some httplive link

fix google bug,if the playlist does not end by '\n', player can not show
the correction duration

Change-Id: I3188cb7078d3276ebe40252be7dae4922ab884d4
Author: Yi Wang <yi.a.wang@intel.com>
Signed-off-by: Yi Wang <yi.a.wang@intel.com>
Signed-off-by: Dan Liang <dan.liang@intel.com>
Signed-off-by: Shuo Gao <shuo.gao@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-tracking-BZ: 48555
libstagefright: Optimize h263/mpeg4 assambler to reduce frame dropping in the assambler layer.

If current rtp packet lost, when submitting the last access unit to construct a
video frame it will set the last access unit to be damaged and will drop it. It
is the google orignal design. But if the last access unit is a whole frame it will
cause an additional frame dropping. So use "M" marker to detect the frame boundary,
if the last accecc unit "M" is set, we don't drop it, this can improve streaming
video quality when rtp packet dropping too much.

Change-Id: I79fe3764edce5a0acb8fae146905d20e77946823
Author: Feng Xiao <fengx.xiao@intel.com>
Signed-off-by: Feng Xiao <fengx.xiao@intel.com>
Signed-off-by: Dan Liang <dan.liang@intel.com>
Signed-off-by: Shuo Gao <shuo.gao@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-tracking-BZ: 49120 23827 26068
Fixing aliasing violations, C++ 11, and gcc 4.7 changes from linaro.

av: Fix duplicate definition of size_t n

Needed to make it build with gcc 4.7+

Change-Id: I78db38b094d9ffc7ee9d410d8d3f642e619eb008
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>

stagefright: Fix triple redefinition of i

Needed to fix build with gcc 4.7+

Change-Id: I0767a5a4634f808f779b577cffd74e81dd5439fb
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>

frameworks/media: Fix aliasing violations

Change-Id: I0c3ad4d935abe6cf6df222f7d70381d868f15fe8
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>

av: Fix aliasing violations in AudioFlinger

Change-Id: Iec37ad0c2e30f34d72f8bf63c6c1aeceba0e3d50
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>

libmediaplayerservice: Fix aliasing violation

Change-Id: I70c674e7f563cf76abd078b662bb18598081f29d
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>

downmix: Fix aliasing violation

Change-Id: I1907da54e9ec40c9afe56c488a974d5286b787e4
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>

EffectVisualizer: Fix aliasing violations

Change-Id: I35532464df41a64ed920c34ad4bc1054cf6324b2
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>

frameworks/av: Fix build in ISO C++ 11 mode

Fix build in ISO C++ 11 mode: constructs that are being interpreted as
new string literals and const vs. constexpr

Change-Id: Ibdf4867da37b819b1a499180edcf7ad480b6b9de
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>

av: More ISO C++ 11 fixes

Change-Id: I84bfab66d561cb0ded6e312b8cfe02e5fe2a182f
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>

av: Fix build in ISO C++11 mode

Change-Id: I461d8ce5b24afedee245a6441b600df286c76b63
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>

Conflicts:

	media/libmediaplayerservice/MediaPlayerService.cpp

Signed-off-by: Stevespear426 <stephen.k.spear@gmail.com>
av: Fix compile errors

Don't use memcpy() on areas that may overlap
Fix aliasing violation

Change-Id: Icd54cf12c2485a3d2789d1fb75c3a8a964c4163f
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>