Compile errors

Do we have to add QCOMXCodec?
added include/media/stagefright/ExtendedWriter.h

Change-Id: I41378c25635c314b05ebd66b433f5e3768b49e0b
Squashed commit of audio changes from CodeAurora

libstagefright: Add QC specific media format

- Add QC specific media extensions
- Add QC specific media definitions

Change-Id: I7dca90be3b977701d9537f5e017117790a030f1f

audio: Compile AudioParameter as shared library

- AudioParameter as shared lib is needed by BT
  support in WFD source.

Change-Id: I464b428ace0cbb57ce6bf7bf3b57d51a7d56f032

libstagefright: Send flush on both i/p and o/p ports together

- ANR occurs in music due to race condition in OMX component if
  flush is issued separately for i/p and o/p ports as DSP only
  handles simultaneous flush on i/p and o/p ports.

Change-Id: I5b16cd5a9b57c857dc8bed489d2663b8f54769e3

libstagefright: Enable extended A\V format

- Add new files to support extended A\V format

Change-Id: I1e61d78d35b868d55fd8e99f95de8cab9c465db4

libstagefright: Framework to plug-in propritory parser

- Extend the current framework to plug-in propritory
  parser

Change-Id: Ia586a3048420ddf1515261f20035589447263b7b

audio: add support for QCOM audio formats

- Add support for EVRC, QCELP, and WMA formats.

Change-Id: Iaf80f982fc8b08617132dbd7d524a1748866745c

frameworks/av: Support Tunnel Playback

- Implement DirectTrack and DirectTrackClient
- DirectTrack exposes API to client so it can create a direct
  output.
- DirectTrackClient allows notifications to be sent to the
  client from DirectTrack
- DirectTrack is being used for Tunnel Audio

Change-Id: I2fbb18a781d8e44b8d65da9a357f6e39375f063a

frameworks/av: Support LPA Playback

Add support to enable Playback in LPA mode

Change-Id: I1b8ac4904f4735017d62f3757ede7bbb56e62fd3

audio: Send correct channel mask in voice call recording.

-Using popCount function to get channel count gives incorrect value on
voice call recording.
-Only STEREO and MONO bits to be considered to count
channels on input

Change-Id: I04c2c802422e868bdba0538ff8623dbf9eb659fe

libstagefright: Thumbnail mode initial commit

- use sync frame decoding mode when kClientNeedsFrameBuffer
  is set for hardware decoders
- hardware decoder will only expect I frames, OMXCodec will
  set EOS on first ETB to stop more frames from being pulled
- skip EOS check on FTB so that the first frame will be
  handled

Change-Id: I0e8974e088fdcc468e27764861c128cfe291499f

audio: Add support for QCOM's VOIP solution

Change-Id: I1150f536fa204b535ca4019fdaa84f33f4695d93

audio: define QCOM audio parameters

- Define QCOM audio paramters for FM, VOIP,
  fluence, SSR, and A2DP

Change-Id: I29d02e37685846f6d4f00dee02e2726b015eaae7

Add ifdefs for QCOM enhanced features

Change-Id: Ic8e5fe6ecc058466ced71030883b1af6c2bc055c

Conflicts:
	include/media/stagefright/OMXCodec.h
	media/libmediaplayerservice/StagefrightRecorder.cpp
	media/libstagefright/Android.mk
	media/libstagefright/DataSource.cpp
	media/libstagefright/ExtendedExtractor.cpp
	media/libstagefright/OMXCodec.cpp
	media/libstagefright/QCMediaDefs.cpp
	media/libstagefright/include/ExtendedExtractor.h
Squashed commit of updates from CodeAurora

libstagefright: Add support for VC1 clips

- configure decoder in frame-by-frame or arbitrary mode
  based on the codec type.

Change-Id: I6404e5b7ee217045e6456f51f914dbd8a651d98a
CRs-Fixed: 432847

stagefright: Miscellaneous fixes for LPA and Tunnel playback

1. Fix for AV sync issue with Tunnel playback
APIs for returning correct timestamps were implemented
2. Crash while exiting TunnelPlayer
Check whether sink is open before flushing or closing it.
Check for mIsAudioRouted is good to know if we are closing it
3. Seekbar freezes after seek and pause
Check pause status before writing

Change-Id: Id8ab7b258e9c05b20e121bdf3c4dc30d519f6c15

frameworks/av: Add support for surround sound recording

- Add 5.1 channel as supported input channel

Change-Id: I50fcd87245c5c855ede8f09ea1a7c5be2e684640

stagefright: Add tunnel decode for amr-wb/wb+

When tunnel.decode is true, playback of AMR-WB
and AMR-WB+ uses tunnel decode.

Change-Id: Ic06cb3faaac18f605402c98a27cb4dfa4b7faee2

stagefright: Skip LPA if #channels > 2

Skip LPA for Multi channel playback

Change-Id: I5b97471ef55aea260d1c02db672eb4bd64c3edef
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
Squashed commit of A/V changes from CodeAurora

 * Brings us current with AU_LINUX_ANDROID_JB_2.5.04.02.02.040.367

Camera: Fix deadlock due to mLock in pcb and takepicture

In non-zsl case of takepicture, we do streamoff for preview
stream which is waiting on preview callback thread to exit.
By that time the lock has already been acquired by takePicture.
So preivew callback will not exit until it acquires lock and
takePicture cannot continue until PCB call back is returned.

Fix: Avoid the mLock at services when both Preview cb &
Compressed cb are enabled.

Change-Id: I6c264928bf1540c7b51f1add65f9c3e968506e15
CRs-fixed: 479419

audioflinger: Fix the LPA-AudioEffects crash issue
- Issue:crash is observed during LPA playback on enabling
  effects followed by plug-out->plug-in of wired headset
- Rootcause: while deleteing the effectchain in deleteEffect
  EffctChain is being unlocked after clearing the chain
  which leads to accessing the lock which might already deleted.
- Fix: first unlock the effectChain and then call clear

CRs-Fixed: 491774
Change-Id: I518ff086c5ad71486cd29142563145137ebc15b6

libstagefright: Fix for crash in sound recorder during device switch
-Crash seen in sound recorder during frequent insertion and removal
 of wired headset

-During device switch some time Codec's input buffers are too small to
 accomodate buffer read from source. Omx codec doesn't read the fix size
 buffer from source, during device switch scenario sometime buffer read
 from source exceeds input buffer size so it goes in error state which
 leads to crash.

-Increasing the input buffer size fix this issue

Change-Id: Id15378670880d0c3c0bd4408841b28be963549a0
CRs-Fixed: 488449

libstagefright: Fix for FPS drop issue during A-V playback.

Issues:
-The AAC decoder was not updating the timestamp when EOS is reached.
-Logic to smoothen the real time update in AudioPlayer uses system
 time. This introduces corrupt timestamp during EOS.

Fix:
-Update the timestamp in AAC decoder when EOS is reached.
-Extrapolate realtime using system time in AudioPlayer when EOS is
 reached. Cap the value to realtime if  extrapolated time becomes greater
 than realtime.

CRs-Fixed: 384183
Change-Id: Ice54501436431d2527fcd3d710d65d9732fcffdd

libstagefright: Reset buffer size value with SurfaceTexture

- OMXCodec explicitly sets the decoder output buffer size using the
  native window perform API. (to accomodate extra-data)
- This size is reset only when the SurfaceTexture is destroyed.
- Unless reset, this size will be assumed for all output buffers
  if the SurfaceTexture is re-used.
CRs-Fixed: 337660, 432309

Change-Id: I28aed12ad02adeac61caffbb00e3082640a5f6d4

audio: Add support for tunnel mode recording

- Add support for tunnel mode recording.

Change-Id: I95cdfff729affd784141487521c9f2f714221d11

audio: Add support for non-pcm VOIP vocoders

- Add support for non-pcm VOIP vocoders
- non-pcm vocoders use AUDIO_SOURCE_VOICE_COMMUNICATION
  as inputSource. Add check to verify inputSource and
  then configure framecount accordingly

Change-Id: Ia38da4f6ba0ee40c794d3c97325327cdb7dcb32a
CRs-Fixed: 467850

frameworks/av: Add metadata mode changes to LPAPlayer

-Seek to EOS was causing playback to hang for 3 seconds before
 switching to the next clip.
-This is because the lpa driver works on period size. Partial
 buffers are not handled.
-Add support for metadata mode changes to LPAPlayer to support
 partial frames.

CRs-Fixed: 458904
Change-Id: I8673756b54ae7bca18855d326c85ae1064652514

libstagefright: Add support for WMA in ACodec

- WMA support is not there in ACodec
- In the case of wma format, since not getting the complete information of
wma version so instead of allocating the component in onAllocateComponent
function it will create in onConfigureCompoenent function.
bitspersample is find as "bsps" from AMessage while configuring the
WMA10PRO and WMALOSSLESS format

CRs-Fixed: 453951
Change-Id: I98baa701dbf8a5c012f4be5e83831c0be2111dcc

libstagefright: Flush the pending buffers when EOS is received

For the use case where the first frame in the buffer is EOS, decode
the aac config frame buffer to update the sample rate and channel
mode and flush out the buffer.

Change-Id: I0354802cdbf61ac1ba0fecbbdf616705806b0f4a
CRs-Fixed: 459334

audio: Fix The Linux Foundation copyright

- Fix copyright format based on The Linux
  Foundation copyright template

Change-Id: I100a5c86302d1a1a3d79543d95e242734daae746

media, audioflinger: check for divide by zero possibilities and err

When output stream is not available to audioflinger due to any reason
, sampleRate and frameCount have zero values when trying to create
new Audiotrack. This might result in divide by 0 situation.

Change-Id: Ic13cb51facb8497e68ab596abb027b44f496b907
CRs-Fixed: 478480

framewroks/av:Fix ANR at the end of video recording

- While doing video recording, when the recording
  ends ANR observed while doing stress test for
  many hours
- When the recording is stopped, audio HAL receives error
  from driver and  audio HAL propagates this error to
  AudioFlinger.  But AudioFlinger  is not sending error
  status to audio source to stop recording.  Because of
  this audiorecord thread keeps on waiting for buffers
  which is resulting in ANR.
- To avoid indefinite wait, a timeout of 1 sec is set for buffer
  in audioSource and after timeout, -ETIMEDOUT is returned
  to recorder thread.

CRs-Fixed: 479968

Change-Id: I91aba6922086e711992d9d991dea9c35d33eaee9

audioflinger: Integrate SRS TruMedia

Change-Id: If61ae91556120ddd5f5ebcc6dbbfe6583c7df67d

audioflinger: Fix apply SRS effects if tones diabled in tunnel mode

For the use case of SRS post processing in Tunnel mode, the API's
of SRS are called only from write. With the huge buffering for
tunnel mode, once EOS is received there would not be further write.
With system tone enabled, the SRS API's are called during the
check for Parameters change through normal mixer thread.
With system tones disabled, SRS will not be applied after EOS as
no write and mixer thread would not be active.

Fix the issue by adding the Effects Thread for SRS in Tunnel mode.
Fix the compilation issue with ALOGV messages enabled

Change-Id: Ic7e62894840f786119dfe8ae471c5d24812917d7

audioflinger: Enhance LPA-effect logic to handle rapid config.

-Issue:Rapid Config events cause pops/glitches, raw data
 playback.
-Rootcause1:Raw data leakage to DSP: applyEffectsOn() applies
 effects chunk by chunk in a loop, if effects change during
 this time the loop exits and this results in creation of
 a buffer in which part of it is effects processed and rest
 raw, this causes raw data to leak to DSP.
-RootCause2:Effectsthread directly works on the DSP buffers,
 while DSP is rendering from there, so that effect application
 is instantaneous and for this it gives the DSP buffers as
 output to effects chain, this means that all the effects in
 the chain update the DSP buffers one after the other, this
 can create unpredictable rendering patterns.
 RootCause1 and 2 combined seem to fragment memory with
 parts of it with effects and parts with raw data etc.
-Fix1:Dont update DSP mem unless the effects are applied
 completely on a buffer.
-Fix2:Effectschain will work on a temp scrath buffer
 instead of DSP mem and when effects are applied
 completely on this scrath buffer, memcpy this to DSP mem
 with this DSP mem is updated in one shot.
-Remove repetetive logs which clutter the logcat if
 msgs are enabled in audioflinger.

Change-Id: I9051e7b8531aa5c8cb3dcfafe0be3136a2cf0f9d
CRs-Fixed: 463880

frameworks/av: Update framecount and buffersize values

-framecount should be calculated based on mMaxBufferSize
 returned from HAL
-update the buffersize with the value returned from HAL

CRs-Fixed: 482744
Change-Id: I90dd9c3ebbbc8a9f1f2f92c5347ae9cb01719e13

audioflinger: Fix the LPA-AudioEffects dead lock issue.

- Issue:Deadlock occurs when the LPA clips are subjected to
  rapid next from BT device and simultaneously on/off the
  audio effects.
- Rootcause:some times flinger thread processing
  LPAPlayer/directtrack next deadlocks with the thread
  working on effect configuration as both of them
  contend for the audioflinger::mlock and effectmodule::mlock.
- Fix1:AudioFlinger::deleteEffectSession() not to acquire
  audioflinger:mLock  instead take the mLPAEffectChain.mlock.
- Fix2:ThreadBase::effectConfigChanged() not to acquire
  audioflinger::mlock.

Change-Id: I056c8297802f81644fa1371836db42bdbd3825fd
CRs-Fixed: 477511

libstagefright: Add support for High Frame Rate Encoding

- Based on kkeyhfr key value from meta data, add support in OMXCodec and
  MPEG4Writer for HFR mode
- Assume normal mode recording if kKeyHfr is absent
- Increase bit rate for high frame rate (HFR) recording feature to reflect
  the corresponding increase in frame rate

Change-Id: I0a69f8d9322a768677781d08dd910dc5772c5292

libstagefright: Support some userdefine properties

- support property to disable audio
- support property to change recorder profile mode
- support b frame encoding

Change-Id: I175decec83f6027cbd7988caf680f7fec2836f83
CRs-Fixed: 443327

libstagefright: Add support for H/W AAC decoder

- Currently, only software AAC decoding is supported.
- Add support for H/W AAC decoding by including it in the
  list of available decoders and use it for decoding only
  if the property 'media.aaccodectype' is set to 0.

Change-Id: I4bb9df1bd10bd8ee91e63dadd6c473fc4e29813a
CRs-Fixed: 449145

libstagefright: Move checks for creating new extractor to ExtendedExtractor

- Move all the checks and creation of the extended extractor
  into ExtendedExtractor.
- Restrict creation of new extractor to the following conditions
	o default extractor is NULL
	o default extractor says the content is video only
	  or has an unrecognized audio stream
	o the audio stream is a amr-wb (plus).
- This change is being added to avoid unnecessary creation of
  two extractors thereby improving the startup latency.

CRs-Fixed: 462087
Change-Id: Ia87eca73c4f81d37697fa85fd4f7c8cc8d406104

[StageFright] Enable 4 channel support

This patches enables 4 channel WAV audio support and fixes invalid
data size in WAV header field if it exceeds the actual source size.

This patch is needed to support WebAudio in WebKit as some of the
chrome demos use 4 channel WAV audio and bogus header information.

Change-Id: I307026107ab4e4342b1c0d7bb64761a416fb2c65

audioflinger: Fix crash on LPA shutdown

 * Decrement the refcount after unlocking the mutex

Change-Id: Ic3210700e0aaf5e8df78f85f501621a455058e24

libstagefright: Accept vendor specific NV12 colorformat from component

- Accept OMX_QCOM_COLOR_FormatYUV420PackedSemiPlanar32m color format
  which is NV12 + 32 aligned stride and slice.
- This is different from vanilla NV12 which is 16 aligned.

Change-Id: I6de2ec3a78215dbcc28a6006b746e3e0afe69c3c

libstagefright: various fixes for avc_utils

 - skip seq_scaling_matrix_present_flag assertion if checking for
   interlaced property.
 - correct interlace check to outside of if-block

Change-Id: Ia5854110feb1c56ddc86b312d2ba2dbb73d37804
CRs-Fixed: 445527, 445692

libstagefright: print stats at end of playback

 - prints statistics before reset at the end of playback onto
   logcat
 - print statistics after each pause and seek
Change-Id: I68edcc3153a04209e7382e4d3fba0bf734f3e33f
CRs-Fixed: 457926, 447109

frameworks/base : Fix to play a specific Mp4 clip due to SYNCH_LOST_ERROR.

-Unable to play a Specific Mp4 clip.
-Mp3 playback is stopped if the Decoder errors out with SYNCH_LOST_ERROR.
-Ignore the frame with SYNCH_LOST_ERROR and play silence instead.

Change-Id: I6b94a83cf89e8bc6792d8ee3804042d629aa505b

Add checks before removing an active buffer in OMXNodeInstance

With this change, OMXNodeInstance will remove a buffer from it's
active list only if OMX_FreeBuffer returns successfully.

Change-Id: I685b39ac7ba762a2fc1b64d7f6c1efd391513598

libstagefright: Add interlaced video support

- Adds call to set output buffer size on the native window

Change-Id: If4a67b3f877bef557c46bb67b29d1e7051553335

audio: fix for AMRWB param overwritten issue

- Overwrite AMRWB params with default value only
  when setParameters is not invoked

CRs-Fixed: 456459
Change-Id: I3fa6b56101ca408ed5b5b82707c6dc75a9d9f17b

audio: fix encoder parameters for AMRWB format

- AMRWB encoder only accepts SampleRate 16k and channel count 1.
  Always overwrite AMRWB SampleRate and channel count to default values.
- AMRWB encoder accepts BitRate from 6.6k to 23.85k, only overwrite
  AMRWB BitRate to default(23.85k)if setParameters() is not invoked

Change-Id: I75a96b54ef04bc59dab9074ec112071e62fd51aa
CRs-Fixed: 460931

stagefright: Add QCOM_BSP ifdefs for interlaced video handling

Change-Id: I856ae4a97f1bf13ab18d386b3486e742a4804b2a

Camera : Changes to support camcorder profiles.

Change-Id: I9c4bf14f273839fd36d5f52db0f215873e8291a0

av: Ifdef all the things!

Change-Id: If9dd6c6442e9d2ac9e55e48369f2da85f5f951f7

Camera: Add profiles for camcorder.

Change-Id: Icdaf1fae0018de1fb04f41125cfbe34a91b5eda7

libvideoeditor: use vWidth and vHeight for buffer allocation

 - video editor detects crop information from decoder, crop
   width and height will override metadata width and height.
 - decoder is capable of sending crop information where
   crop width and height are smaller than actual resolution.
 - use actual metadata width and height for calculating
   buffer size.

Change-Id: Id1d77c316e3892e6d51a00418052f256629f495f
CRs-Fixed: 452511

Add ifdefs around enhanced media types

Change-Id: I64b8853660ac4fe90ddb218b237f63b635cdb47b

Conflicts:
	include/media/MediaPlayerInterface.h
	include/media/MediaProfiles.h
	media/libmediaplayerservice/MediaPlayerService.h
	media/libmediaplayerservice/StagefrightRecorder.cpp
	media/libstagefright/AudioSource.cpp
	media/libstagefright/AwesomePlayer.cpp
	media/libstagefright/CameraSource.cpp
	media/libstagefright/LPAPlayerALSA.cpp
	media/libstagefright/MediaExtractor.cpp
	media/libstagefright/OMXCodec.cpp
	media/libstagefright/include/AwesomePlayer.h
	media/mediaserver/Android.mk
	services/audioflinger/AudioFlinger.cpp