)]}'
{
  "log": [
    {
      "commit": "2f8d367336ab740dfbd57624b0c3c0f2ab835508",
      "tree": "77e5da52830121119bcb9b0796f8f50c1e48c0a3",
      "parents": [
        "0e69fea7806056e9e6bd5bdd9da95710d74f5672"
      ],
      "author": {
        "name": "madmack",
        "email": "alali48@gmail.com",
        "time": "Mon Jan 14 21:19:20 2013 -0500"
      },
      "committer": {
        "name": "Dorian Snyder",
        "email": "dastin1015@gmail.com",
        "time": "Sat Mar 02 22:28:07 2013 -0800"
      },
      "message": "Make an exception for MR0_AUDIO_BLOB in loadHwModule_l\n\nWithout this exception samsung JB stock audio HAL crashes\n\nChange-Id: I596e6e077f5bd4236359de48db754100e0a133e4\n"
    },
    {
      "commit": "f32d5707d4971ca7755712ad95a5b6155099560b",
      "tree": "e2b0e8082c7e4d99d11796b3c3ec9a4a44a19ce6",
      "parents": [
        "bca52a9e48563198e8425c0f0a6fd2b2d998c87e"
      ],
      "author": {
        "name": "Dorian Snyder",
        "email": "dastin1015@gmail.com",
        "time": "Fri Mar 01 14:25:46 2013 -0800"
      },
      "committer": {
        "name": "Dorian Snyder",
        "email": "dastin1015@gmail.com",
        "time": "Fri Mar 01 15:19:37 2013 -0800"
      },
      "message": "frameworks/av: squashed CM commits\n\nRevert \"av: unbreak mako build\"\n\nThis reverts commit bca52a9e48563198e8425c0f0a6fd2b2d998c87e.\n\nRevert \"Fix mako build.\"\n\nThis reverts commit 3e8a2aef873001f4e168d738f596899ba8673ab8.\n\nRevert \"stagefright: Fix tunnel mode ifdefs\"\n\nThis reverts commit d9e8f7a8e085b121e0bc6518c3cf3f9a0b3e6f48.\n\nRevert \"Revert \"libstagefright: Convert mono to stereo for LPA clips\"\"\n\nThis reverts commit 93319b90415114286ee96b01a65df35f30b78aa0.\n\nFix the build on non-QCOM\n\nChange-Id: Idb8d5c98fbdc01e6063ad0eb224baba66acc813d\n\naudioflinger: Allow mixed use of JB A2DP HALs and ICS policy\n\nOld policies don\u0027t address the modules by handle and expect them\nall to be scanned for supported devices; new modules stopped\nlisting supported devices. The combination of a new A2DP with\nan old policy left policy unable to find A2DP outputs, so the\nnew HALs couldn\u0027t be used.\n\nSo... if an old policy is in use, searching for an A2DP output,\nand finds a non-primary HAL that doesn\u0027t list any device, assume\nit\u0027s A2DP and use it.\n\nChange-Id: Ie946c065b5c325afd02ba3437077f634e079b386\n\nframeworks/av : Playing AAC and MP3 clips using LPA.\n\n-AAC and MP3 clips are not playing.\n-AAC and MP3 are not using LPA path.\n-Enable LPA decoder path and implement LPAPlayer class.\n\nChange-Id: I76438319fc72c4898fad5910f8de874f89287687\n\nRevert \"libstagefright: Convert mono to stereo for LPA clips\"\n\nChange-Id: Ib6cc3401c889a8ec52dc83e3bea367f94a582a40\n\nFix mako build.\n\nChange-Id: Ic73cb2f4152ac77a83fcda7e89b4a8202df440c6\n\nstagefright: Fix tunnel mode ifdefs\n\n * Was breaking on 8660 due to previous commit.\n\nChange-Id: Ia9f5c45552cc933db336a66b6d1214b65e810488\n\nlibstagefright: Adjustment for TunnelPlayer buffer size\n\n- Make necessary adjustments to align the buffer size\n  for TunnelPlayer to satisfy the following conditions\n- Buffer size is a multiple of LCM(1,2,4,6,8)\n- Buffer size is aligned to 4k.\nCRs-Fixed: 447274, 442365\n\nChange-Id: I1b7f9ac3cf8ff86f972a8b6798bfcff3a4ba7c64\n\naudio: apply volume on DirectOutput streams\n\n- Call stream-\u003eset_volume to apply volume on\n  particular stream of DirectOutputs\n\nChange-Id: I98e3b856ee508d407f893afad66caade5eda3e4a\nCRs-Fixed: 445953\n\nlibmediaplayerservice: Add new player for DASH\n\n- Add new player factory to support dash playback.\n- DASH urls end with .mpd. When media player receives\n  an url with .mpd, it will use new factory to instantiate the player\n  to be used for supporting DASH playback.\n\nChange-Id: I69e5a08fb2baf89d97b1e0711dbe52a8b1c39c29\n\nACodec: Support for dynamic port reconfig\n\n- On port settings changed first flush output port\n- Move ACodec to new state called FlushingOutputState\n- Flush all output buffers, wait till all decoded buffers\n  are rendered\n- Then disable output port, and allocate output buffers\n  with new resolution, and reset native window\n\nChange-Id: Iafa266371ed2a87b909fbcb4eeae6b64208df617\n\nlibstagefright: Add support for frame-by-frame mode\n\n- Set decoder in frame-by-frame mode always, except for interlaced\n  content, for which arbitary mode should be set\n\nChange-Id: I8195a40549898b43a0e03d65663c7148f458c448\n\naudioflinger: Fix to set correct volume in Tunnel playback\n\n- After a pause and resume, tunnel playback volume is always\n  set to maximum irrespective of the volume value before pause.\n- The cause for this is, the stream volume is not used to set\n  the volume in directaudiotrack.\n- Fix is to use the stream volume to set volume during tunnel\n  playback.\n\nChange-Id: I59cda146ed88bd5c4186aeb9ae5d165f4a27493f\nCRs-fixed: 452285\n\nlibstagefright: Check for duration \u003e 0 to avoid DivideByZero crash\n\n- duration \u003d 0 can cause divide by zero and for this clip duration\n  is indiacted as 0.\n- check for duration \u003e 0 rather than duration \u003e\u003d 0\n\nChange-Id: I58ccacbf7ede892dff9626715162ea7b1f2ddbc6\nCRs-Fixed: 451855\n\nlibstagefright: Squashed commit of LPA/tunnel updates from CAF\n\nlibstagefright: Exceptions in using Tunnel mode decode\n\n- Accumulate all known exceptions to a separate function\n\nChange-Id: I61bbc288c9a087559db210e76141b8c57e67fff0\nCRs-Fixed: 432080\n\nlibstagefright : Stability fixes for Tunnel Player (part 2)\n\n- Synchronize b/w reset() and onPauseTimeout\n- Synchronize b/w seekTo() and onPauseTimeout\n\nChange-Id: Ia5cfc6b4dcc326ead440fba35d809d4f3f1b5a81\nCRs-Fixed: 449122\n\nRevert \"Revert \"libstagefright: Convert mono to stereo for LPA clips\"\"\n\nThis reverts commit 0db8a19fb3216a8a83d5d6cbd5f1ccbf997a20d8.\n\nlibstagefright: Port Tunnel mode fixes to LPA\n\n- Miscellaneous fixes for seek, pause/resume, EOS handling\n- Miscellaneous fixes for synchronization between the decoder thread,\n  TimedEventQueue and the player thread.\n- This change is a port of a similar set of changes made for\n  TunnelPlayer\n\nChange-Id: I82c2904f7aedfb9c4f03200419fcba8b038e3d54\n\nlibstagefright: Avoid use of extra bytes to signal seek processed\n\n- A few bytes were reserved in the buffer sent by Tunnel/LPA\n  player to audio HAL to indicate a seek has been processed and\n  there is no need to skip it.\n- We won\u0027t need this method anymore as this can be fixed instead\n  by synchronizing seekTo() and the extractor/decoder threads.\n\nChange-Id: Ic02ae1699bb59e2f6b8d9fb599d0fa43fd3f19e3\n\nlibstagefright: LPAPlayer synchronization fixes\n\n- synchronize b/w seekTo() and onPauseTimeout()\n- synchronize b/w reset() and onPauseTimeout()\n\nChange-Id: I29a4ccf02e28fe7b7c00e35a679ff2b5271ffb6f\n\nlibstagefright: TunnelPlayer performance tweaks\n\nSome tweaks when TunnelPlayer is used for audio/video playback\n\n- Keep the extractor thread at ANDROID_PRIORITY_NORMAL\n- sched_yield() after reading a frame to give the video thread(s)\n  (CallbackDispatcher and/or TimedEventQueue) to be scheduled\n\nChange-Id: If0d86d629fd0e15aff917af8589472578cd28bf4\nCRs-Fixed: 444041\n\nlibstagefright: Fix incorrectness nPortIndex value for QueryCodec\n                The query index is wrong, it will make a death loop in\nmy ME722 when get resource thumbnail for MPEG4 video.\n\nChange-Id: I64532156e762b847a8eae59560fb828549c29519\n\nlibstagefright: Stop the logspam from LPAPlayer\n\nChange-Id: Id6319774806e152333d468b9ff62d148e476555a\n"
    },
    {
      "commit": "9b3dd17a2d2e3a36da135d39bbbb58c95be52227",
      "tree": "b33d91c5955046b90a6bb97bbc15947f1064ce51",
      "parents": [
        "8ea530c20e8593e1cb593eb2cf6ded4a61d75662"
      ],
      "author": {
        "name": "Mingming Yin",
        "email": "mingming@codeaurora.org",
        "time": "Thu Jan 10 18:42:38 2013 -0800"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Sat Feb 16 18:12:38 2013 -0700"
      },
      "message": "Squashed commit of updates from CodeAurora\n\nauido: Add amr-wb+ codec to ACodec.\n\n-Add an entry for amr-wb+ decoder in ACodec.\n-amr-wb+ non tunnel will be enabled by default.\n\nChange-Id: Ied8902eb83da29a3164eb99e88630570a43f681e\n\nlibstagefright: Create MP3 decoder libraries without OMX layer\n\n- With the current MP3 OMX SW decoders, the decoding time\nis increased w.r.t the libraries without OMX layer that are\npresent in GB. This increase in decoding time results reduction in\npower savings in LPA mode.\n- This commit is to remove OMX layer for MP3 to reduce the\npower consumption in LPA mode\n\nChange-Id: I835ab6d013a326f111e513586f884bacd5f7106a\n\naudioflinger: EffectModules are updated with device change\n\nIssue: Effects modules are not updated with the device change\ninformation\nFix: 1) Add setDevice information to mLPAEffectChain\n2) Remove the return after sending the device route information to\nDirect track so that mixer thread is also aware of the device\nchange for EffectsChain\n\nChange-Id: I82936cd47290946a5e4772e448669d81e0e4d6f5\n\nlibmedia : Add a NULL pointer check\n\n- Print frame count in AudioTrack::dump() only if the control\n  block is valid\n\nChange-Id: Icf594eb721b48795c43d7bd165f6086031ce6efd\nCRs-Fixed: 435050\n\nlibstagefright: Query AudioSystem for suggested record mute duration\n\n- AudioSource mutes a pre-defined duration (defined by kAutoRampStartUs)\n  at the beginning of a recording.\n- Instead, query the audio system for any ongoing playback streams\n  and use its output latency to calculate the duration to mute the incoming PCM stream.\n- This assumes all current playback threads will be paused once recording\n  is started.\n\nChange-Id: Ie9b1d62e7be803ef1d8a59127b95c73e03fa5ce6\nCRs-Fixed: 438149\n\nlibstagefright: Convert mono to stereo for LPA clips\n\n- Sound effects are not supported for mono clips\n- Repetative calling of effects_configure and effect_process for\n  mono clips is resulting in crash in the sound effects library.\n- So, Mono clips are now converted to stereo by copying the left\n  sample to right.\n- This is same as what Resampler does in Non-LPA Playback.\n\nThis commit is a port of fcc0647fab20ceaf1c07bc10bb243f14c48b114c\nCRs-Fixed: 421639\n\nChange-Id: Ie579c8d11afe3db8d42a35956e8bf23eeb88cfe6\n\naudioflinger: Fix to set volume from MediaPlayer in Tunnel mode\n\nIssue: MediaPlayer.setVolume does not have effect on Playback\nvolume in TunnelPlayer mode\nFix: the left and right volume parameters of setVolume are\nhardcoded and defaulted in DirectAudioTrack. Updating the\nparameters from the input arguments fixes the issue\n\nChange-Id: I8a107ce57284b225b17d95fed0f69e3adc5fb131\nCRs-Fixed: 441849\n\nlibstagefright: Enable Tunnel Decode for select formats\n\n- Enable tunnel mode decode only if the audio mime type\n  matches a supported list.\n\nChange-Id: I32afd83e5fda1e90cb671dd747f17cb83bb84fc1\nCRs-Fixed:437651\n\nframework/av:: Add support to decode mp3 data in mp4 container\n\n- Added support to decode mp3 data in mp4 container packed as mp4a\n  atom and .mp3 atom as well.\n\nPort of 8fa3774adf9259b33ee721cfaeff26da42c29928\n\nChange-Id: I1a04022f30a9f6516575440aba7652986ab7dc58\nCRs-Fixed: 439897\n\naudiomixer: Use High Quality resampler\n\nUse very high quality resampler to upsample to 48KHz sample\nrate.\n\nChange-Id: I1ba5b839f1e74ae71b405538d970e6a966bd1d47\nCRs-fixed: 416730\n\naudioflinger: Fix a deadlock\n\n- A deadlock will happen if the obit recipient\n  registered by the DirectAudioTrack is called.\n- Fix this by moving the lock acquisition in DirectAudioTrack::clearPowerManager()\n  to after DirectAudioTrack::releaseWakeLock() is called.\n- Also synchronize use of mPowerManager in the DirectAudioTrack\n  destructor with DirectAudioTrack::clearPowerManager()\n\nChange-Id: Ib127db1406c4a61a4054ca0cf30f4c7347a5c92a\nCRs-Fixed: 444093\n\nlibstagefright: TunnelPlayer: update condition to send SEEK_COMPLETE\n\n- If the client tries to seek to 0 (e.g as a result of LOOPING)\n  without ever calling getPosition(), we will always sent an immediate\n  seek notification without seeking.\n\nChange-Id: Id2b9d00c611278d0521cb6fd402710f0ec37bbdd\nCRs-Fixed: 441411\n\nlibstagefright: Remove unnecessary code from TunnelPlayer\n\n- TunnelPlayer tries to mimick AudioPlayer when trying\n  to delete the extractor source.\n- It is needed for AudioPlayer as the OMXCodec object\n  is referenced by the CallbackDispatcher as well as AudioPlayer.\n- This condition is not true for TunnelPlayer, so why do it.\n\nChange-Id: I79c4e17d01910e73ad01c5640ef374626313a18e\nCRs-Fixed: 442365\n\nAdd MediaDebug header from CAF\n\nChange-Id: I68dbe72f86a49685b82b64927d1aa80231647a7a\n"
    },
    {
      "commit": "8ea530c20e8593e1cb593eb2cf6ded4a61d75662",
      "tree": "fa19ee059814e695f4287866b88028825c5d2063",
      "parents": [
        "ccecb77519a58e57ede34a082dc10af13ea997bf"
      ],
      "author": {
        "name": "Alexy Joseph",
        "email": "alexyj@codeaurora.org",
        "time": "Sat Dec 22 00:58:48 2012 -0800"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Sat Feb 16 18:12:27 2013 -0700"
      },
      "message": "libstagefright: Collection of fixes for TunnelPlayer\n\n-Handling of EOS, and triggering EOS was wrong\nin TunnelPlayer. Seeking when EOS was posted\nto the HAL was wrong. EOS should\nnot be posted till seek is complete\n-Also, EOS should not be posted to\nthe app if we are seeking\n-Player should wake up when seeked,\neven after EOS was posted from player\nto HAL\n-Fixed this issue by cleaning up the code for EOS\n-Disable tunnel mode playback for streaming use cases\n to avoid jittery playback\n\nChange-Id: I21699d2d5874bde6cbfe549ce0251b252e9a4090\nCRs-Fixed: 433346\nCRs-Fixed: 432233\nCRs-Fixed: 429868\n\nlibstagefright: Add new mime for QC TS container\n\n- Add new mime type for TS container that is sniffed by extended\n  extractor. This is needed for media extractor to determine which\n  parser to create.\n\nChange-Id: I18dcebbbf3b31cea7db29a4dd65385638343bec1\n\nlibstagefright: Use software decoder for ADTS content.\n\nUse software decoder for widevine content which uses ADTS\nformat.\n\nCRs-fixed: 431096\n(cherry picked from commit 3edf2e703bcdc47f122864865056d5cb65b7ab43)\n\nChange-Id: I50eba673ddd6ec2bbb737577978e61902ff68d13\n\naudioflinger: Fix to release wakelock after closeoutput\n\n-In DirectTrack destructor, closeOutput is called after\nreleaseWakelock is done. This may sometimes result in\npower collapse happening even before actual close\nsequence of Audio path is completed and will result\nin high power consumption.\n-Release wakelock only after closeOutput is done\nin directtrack destructor.\n\nCRs-fixed: 438179\nChange-Id: Ibe103804daf2cb09bade998d6d34c3a34508dd09\n\nlibstagefright: Add support to change clip duration to enable LPA\n\nAdded support to change the clip duration threshold value for LPA\nplayback. A new system property \u0027lpa.min_duration\u0027 has been added\nwhich controls the minimum clip length for enabling LPA.\nThe default threshold value has been retained as 60sec.\n\nChange-Id: I6a8be6d6bf67495977d8c75e5be14723a31353b1\n\nframeworks/av: Skip tunnel mode for playback through AudioCache\n\nIn the use case of playback using SoundPool, decoded data is\ncached from player and further rendered through AudioCache.\nAvoid Tunnel mode for the use case AAC format through SoundPool\n\nChange-Id: I21005a5b39f9fb480ae0d525ecb560fec4382620\nCRs-Fixed: 437539\n\nframeworks/base: dumpsys rendering statistics for Stagefright\n\n- this adds extra fps statisticis\n- report via dumpsys\n\nChange-Id: I7b4d4582c4eb2ccf2d11557844dade92f9e587c0\nCRs-Fixed: 435013\n\nlibstagefright: Stop extractor source after start in TunnelPlayer\n\nIssue: In the use case of frequent suspend resume during Video\nPlayback with HDMI Connected, we encounter a scenario where tunnel\nplayer is created and destroyed without the extractor source\nstarted. In such use case, stopping the source in reset during the\ntunnel player destruction leads to failure during assertion check.\n\nFix: Check for mStarted flag to ensure that stop on source is\ncalled only after they are started.\n\nChange-Id: Ib18e7ee3d10b2cc706944e358046f163d156706c\nCRs-Fixed: 440239\n"
    },
    {
      "commit": "b96612ab52d686f90a3c173b24e47cf6ae11f222",
      "tree": "08dd3c184d1cbf4e9d1752b2a08a6f39f9af30ea",
      "parents": [
        "7d4490fbc48fb1989b0b8cbca45f96f031d62c35",
        "f0ff908da019a44115109f1b4d1b6864b35a8a29"
      ],
      "author": {
        "name": "Andrew Sutherland",
        "email": "dr3wsuth3rland@gmail.com",
        "time": "Wed Feb 13 02:04:06 2013 -0600"
      },
      "committer": {
        "name": "Andrew Sutherland",
        "email": "dr3wsuth3rland@gmail.com",
        "time": "Wed Feb 13 02:04:06 2013 -0600"
      },
      "message": "Merge tag \u0027android-4.2.2_r1\u0027 into jb422\n\nAndroid 4.2.2 release 1\n"
    },
    {
      "commit": "2192bc9d9f43ed639239641c186fdcd554d63113",
      "tree": "bde3a85a9d5aff18a8d38a0c4429fb737816b69d",
      "parents": [
        "c81084cb4c2f0ccf1ff996906595f7668a5decd0"
      ],
      "author": {
        "name": "vivek mehta",
        "email": "mvivek@codeaurora.org",
        "time": "Tue Dec 04 11:46:08 2012 -0800"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Mon Dec 24 21:00:15 2012 -0700"
      },
      "message": "Squashed commit of audio changes from CodeAurora\n\nlibstagefright: Add QC specific media format\n\n- Add QC specific media extensions\n- Add QC specific media definitions\n\nChange-Id: I7dca90be3b977701d9537f5e017117790a030f1f\n\naudio: Compile AudioParameter as shared library\n\n- AudioParameter as shared lib is needed by BT\n  support in WFD source.\n\nChange-Id: I464b428ace0cbb57ce6bf7bf3b57d51a7d56f032\n\nlibstagefright: Send flush on both i/p and o/p ports together\n\n- ANR occurs in music due to race condition in OMX component if\n  flush is issued separately for i/p and o/p ports as DSP only\n  handles simultaneous flush on i/p and o/p ports.\n\nChange-Id: I5b16cd5a9b57c857dc8bed489d2663b8f54769e3\n\nlibstagefright: Enable extended A\\V format\n\n- Add new files to support extended A\\V format\n\nChange-Id: I1e61d78d35b868d55fd8e99f95de8cab9c465db4\n\nlibstagefright: Framework to plug-in propritory parser\n\n- Extend the current framework to plug-in propritory\n  parser\n\nChange-Id: Ia586a3048420ddf1515261f20035589447263b7b\n\naudio: add support for QCOM audio formats\n\n- Add support for EVRC, QCELP, and WMA formats.\n\nChange-Id: Iaf80f982fc8b08617132dbd7d524a1748866745c\n\nframeworks/av: Support Tunnel Playback\n\n- Implement DirectTrack and DirectTrackClient\n- DirectTrack exposes API to client so it can create a direct\n  output.\n- DirectTrackClient allows notifications to be sent to the\n  client from DirectTrack\n- DirectTrack is being used for Tunnel Audio\n\nChange-Id: I2fbb18a781d8e44b8d65da9a357f6e39375f063a\n\nframeworks/av: Support LPA Playback\n\nAdd support to enable Playback in LPA mode\n\nChange-Id: I1b8ac4904f4735017d62f3757ede7bbb56e62fd3\n\naudio: Send correct channel mask in voice call recording.\n\n-Using popCount function to get channel count gives incorrect value on\nvoice call recording.\n-Only STEREO and MONO bits to be considered to count\nchannels on input\n\nChange-Id: I04c2c802422e868bdba0538ff8623dbf9eb659fe\n\nlibstagefright: Thumbnail mode initial commit\n\n- use sync frame decoding mode when kClientNeedsFrameBuffer\n  is set for hardware decoders\n- hardware decoder will only expect I frames, OMXCodec will\n  set EOS on first ETB to stop more frames from being pulled\n- skip EOS check on FTB so that the first frame will be\n  handled\n\nChange-Id: I0e8974e088fdcc468e27764861c128cfe291499f\n\naudio: Add support for QCOM\u0027s VOIP solution\n\nChange-Id: I1150f536fa204b535ca4019fdaa84f33f4695d93\n\naudio: define QCOM audio parameters\n\n- Define QCOM audio paramters for FM, VOIP,\n  fluence, SSR, and A2DP\n\nChange-Id: I29d02e37685846f6d4f00dee02e2726b015eaae7\n\nAdd ifdefs for QCOM enhanced features\n\nChange-Id: Ic8e5fe6ecc058466ced71030883b1af6c2bc055c\n"
    },
    {
      "commit": "146029d6815d77c370eb85601914d1f128164574",
      "tree": "ecfcef0985e488ae70bc046c0bbe9504e8b6b521",
      "parents": [
        "7ea2ebdc1fac2d57b248d365942dd75d401de8d2"
      ],
      "author": {
        "name": "Bumble-Bee",
        "email": "bigbeeshane@gmail.com",
        "time": "Thu Nov 29 16:26:40 2012 +0000"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Mon Dec 24 20:59:43 2012 -0700"
      },
      "message": "Allow JB_MR0 Audio prebuilts to load\n\nUsage :\n\tadd \"COMMON_GLOBAL_CFLAGS +\u003d -DMR0_AUDIO_BLOB\" to\n\tBoardConfig.mk\n"
    },
    {
      "commit": "59199b164e5ce9dd9f3540eb73e712f2f0e68f33",
      "tree": "094f0f62d3b52a6687acef4a4b5aeb9e9135cf4d",
      "parents": [
        "1336924a2c38a44c6f3bce2ab86f500e95a669d2"
      ],
      "author": {
        "name": "Ricardo Cerqueira",
        "email": "cyanogenmod@cerqueira.org",
        "time": "Wed Jul 11 23:39:44 2012 +0100"
      },
      "committer": {
        "name": "andrew.boren",
        "email": "andrew.boren@gmail.com",
        "time": "Mon Dec 24 20:58:23 2012 -0700"
      },
      "message": "Add support for ICS audio blobs\n\nEnable with the ICS_AUDIO_BLOB CFLAG\n\nChange-Id: Ie174d5997202b8931c1f11db62b6ec2e377f096a\n"
    },
    {
      "commit": "d983364b3655a547b55bb11dbe148103198c011d",
      "tree": "9e905341f1e393e05eb76b601a21f79467a39c71",
      "parents": [
        "f0937247b6d92b7d9457c64e36fe4c10927685ac"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 15 14:13:16 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 13:31:11 2012 -0800"
      },
      "message": "Static AudioTrack plays twice initially\n\nBug: 7528721\nChange-Id: I10bc16a26f33dba6572b730a170cb3bf00e68e30\n"
    },
    {
      "commit": "291f824e02ff517a34cfe50220b4e2b402ee998d",
      "tree": "2b84bead81e60d909ad77a0ce5254b012c90abd7",
      "parents": [
        "ccd08439c7914d86264c7ad81bfd03cf39aaa9f7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 18 15:51:31 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 18 16:54:00 2012 -0700"
      },
      "message": "Remove active track when thread goes to standby\n\nBug: 7369232\nChange-Id: I7ff9f525dad4be0aef562a53015b06ee7d3d50f1\n"
    },
    {
      "commit": "a045dcafd2b77036210f5b72e79d745ad4c1b848",
      "tree": "34dec57b2145f6fe954275233d556e674b65ddba",
      "parents": [
        "b4a55269a5b39c73de2cc1d4013d0631ef18c77d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Oct 16 10:29:01 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Oct 16 11:00:11 2012 -0700"
      },
      "message": "Fix track estimation for presentation complete\n\nAudio tracks were not using the right latency estimation for\n signalling the completion of their presetation. This caused\n the synchronization mechanism between playback and record to be\n off, and a synchronized recording would contain some of the audio\n that was meant to be over once recording would start.\nUse the playback thread\u0027s latency reporting which takes the audio\n pipe into account.\n\nBug 7237669\n\nChange-Id: I23a907a53ad0b0d68d246789ec595a77a79fced5\n"
    },
    {
      "commit": "087dd8e7232e4c009e9121ab7e8c37985522c9ad",
      "tree": "bc282d9d295339220829c2cdade7a3eca5fb898e",
      "parents": [
        "4769f0b873030bbaa6977fe18696961d1d1b26ba"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Sep 27 13:49:02 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Sep 30 13:13:11 2012 -0700"
      },
      "message": "Disable audio watchdog\n\nIt\u0027s not critical, and is wasting power\n\nBug: 7241714\nChange-Id: I6ad4375f0000c92529688723dbe0ff0caa809c5d\n"
    },
    {
      "commit": "2bfc6b42b3733c12485dd51ed95191956abc3e4e",
      "tree": "0b8c0eef5d695bd7428f9bd984a2038e3b3ec4b4",
      "parents": [
        "003d9f71937070791418bf7efc1f7fe1e4c6b821"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Sep 28 14:49:39 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sun Sep 30 11:11:26 2012 -0700"
      },
      "message": "bug 7253033 clean up before closing an output\n\nAn output can only be closed if there is no lock contention that\n prevents ThreadBase::exit() from being blocked. If an output\n device is waiting for an operation to complete (here a write\n in the remote_submix module, because the pipe is full), signal\n the module that it\u0027s entering the \"exiting\" state.\n\nChange-Id: I8248add60da543e90c25a4c809866cdb26255651\n"
    },
    {
      "commit": "842c5d9553f3f8e97d04ed1bd0d37e4851240654",
      "tree": "7147d39e042bd7b4f06867168178322b811e1d65",
      "parents": [
        "cc0f1cfb69ce8b8985fc2c0984847a06a13ad22d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Sep 26 08:34:10 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Sep 26 08:55:08 2012 -0700"
      },
      "message": "Revert \"Don\u0027t wait for presentation complete if terminated\"\n\nThis reverts commit 44cda3a4e7ca3de0db9cb49145def3803b03ebb4\n\nChange-Id: I7fd29b77690dab057ac966a42fb198b2772f092c\n"
    },
    {
      "commit": "cc0f1cfb69ce8b8985fc2c0984847a06a13ad22d",
      "tree": "f3522fd1ad371d1e592c8c8cfd8d0ce1d98f80c2",
      "parents": [
        "d9aa7b4db46bea5966401f9fcfbecb3269ec55c7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 24 11:27:18 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 25 17:13:18 2012 -0700"
      },
      "message": "Implement android.media.AudioManager.getProperty()\n\nBug: 6635041\nChange-Id: I3386a4a6c226bc4eceaf65556119e4fb15f73224\n"
    },
    {
      "commit": "b6ba2fd0d61a4844c153e17843fbe2c841c4bf57",
      "tree": "4cd873f829cccccd2a1c032f17ea54aabb0f3234",
      "parents": [
        "2a865ad8d45940bc824c02a8a8558cbcb97acc88"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 24 15:02:17 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 25 09:40:00 2012 -0700"
      },
      "message": "audioflinger: improve record start and thread exit\n\nUse broadcast() instead of signal() on the\nthread wake up condition when starting record or requesting thread\nexit to make sure that if another thread is waiting for the same\ncondition (e.g binder thread calling setParameters()) the mixer\nthread will be woken up.\n\nBug 7184317.\n\nChange-Id: I3154a4509ca7af6ffae5236e522b0fab8e75ed06\n"
    },
    {
      "commit": "1afc26db11b71c43f63a0f72a45a803f1a7910dd",
      "tree": "7237e91d3b5ed733ab530046b81a350e4b732113",
      "parents": [
        "94a68ecf2b56bd56994d0352cbaad56e58dcf0dc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Sep 23 15:20:50 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Sep 23 15:20:50 2012 -0700"
      },
      "message": "fix end of track presentation on suspended output\n\nThe code detecting the end of an audio track presentation before\nremoving it from the active track list is based on the\ncount of audio frames sent to audio HAL. When an output stream\nis suspended (e.g. A2DP when SCO is active), this count does not\nchange and a track in stopped state will never be removed from\nactive track list causing the mixer thread to never release\nthe wake lock.\n\nThe fix consists in incrementing the audio HAL frame count even\nif the output is suspended.\n\nAlso fix a problem in getRenderPosition() when the output is suspended.\n\nBug 7167534.\n\nChange-Id: I3be836cbbea29b65dc087199cac6a1cd84c0a41d\n"
    },
    {
      "commit": "896adcd3ae6a1c7010e526327eff54e16179987b",
      "tree": "8c999b21698b1b7b45ac1d290ef3c64c808f380d",
      "parents": [
        "4362f5300162ed55f56cf167eccf7f2e5b89d435"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 13 11:18:23 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 13 17:03:00 2012 -0700"
      },
      "message": "audioflinger: send priority request from a thread\n\nWhen creating a fast AudioTrack, a request is sent to SchedulingPolicyService\nto elevate the requesting thread priority. This generates a binder\ncall into system_server process and to a JAVA service via JNI.\nIf the thread from which the track was created is in the system_server\nprocess and does not have the \"can call java\" attribute, a crash occurs because\nthe binder optimization reuses the same thread to process the returning binder\ncall and no JNI env is present.\n\nThe fix consists in sending the priority change request from the AudioFlinger\nmixer thread, not from the binder thread.\n\nThis also reverts the workaround in commit 73431968\n\nBug 7126707.\n\nChange-Id: I3347adf71ffbb56ed8436506d4357eab693078a3\n"
    },
    {
      "commit": "4362f5300162ed55f56cf167eccf7f2e5b89d435",
      "tree": "5d7fe2df5bd8f2797e0dc2bf4dd66f658cf4d972",
      "parents": [
        "66466087f464b641c8c09b195891a9713a554900"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Sep 13 11:44:00 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Sep 13 12:02:15 2012 -0700"
      },
      "message": "Handle audio HAL returning 0 bytes in record thread\n\nEnter standby when HAL returns an error, but also consider 0 bytes\n  returned as NOT_ENOUGH_DATA.\n\nChange-Id: Ica83142310e9c176f936e0440571a6034cbc575f\n"
    },
    {
      "commit": "52762410dbc9189cd92a4094a1dbd4cfe8e71cb6",
      "tree": "8855f9e7af9e1e3aaec7e9f3c3550bf56425e8be",
      "parents": [
        "359cf1cac2a7851a59dfe4960a1a5992ac6fdb84"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Sep 12 18:48:33 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Sep 12 19:40:30 2012 -0700"
      },
      "message": "Don\u0027t deadlock on AudioRecord start when reads return 0\n\nWhen calling start() on an AudioRecord with a HAL that\n returns 0 on a read() operation, the start blocking\n condition was never unblocked.\nAdd a boolean to track the first read operation so the returned\n number of bytes (mBytesRead) is only evaluated after that\n first read.\n\nChange-Id: I8c735a00d48cd6a0da467ccdf75d3616b38f6afa\n"
    },
    {
      "commit": "fe3156ec6fd9fa57dde913fd8567530d095a6550",
      "tree": "2c4b8250d0089a7d9f396d40005f4fefd95f46f3",
      "parents": [
        "66765846726c02db16a0f024f2217990a90802c0"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Sep 10 18:58:27 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Sep 10 18:58:27 2012 -0700"
      },
      "message": "Communicate audio session ID to downmixer\n\nThe audio downmixer effect might need the audio session Id, pass it\n from the track creation in AudioFlinger to the downmix effect\n creation in AudioMixer.\n\nChange-Id: I5e29540542ae89cf4a0cdb537b3e67f04442a20a\n"
    },
    {
      "commit": "f1c04f952916cf70407051c9f824ab84fb2b6e09",
      "tree": "8dba2d679bf308d534c51ea5067ba6d8f4f81f25",
      "parents": [
        "261fd2119c70fda3af64453881a6346dd48eb956"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 28 14:26:53 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 07 10:32:00 2012 -0700"
      },
      "message": "audioflinger: changes for new audio devices enums\n\nThe ThreadBase class now has a separate member for input\nand output devices (mInDevice, mOutDevice).\n\nOnly query get_supported_devices() from audio HAL if the function\nis exposed and if the audio policy manager did not specify the\naudio module to open.\n\nAlso fixed bug in AEC preprocessing that would reset\nto default output device when an input device was given.\n\nChange-Id: I19d4d06aeb920b068e3ef31e6e6be6345ce5d67a\n"
    },
    {
      "commit": "57b2dd1e78af53115985f18d31ec5421c9da947e",
      "tree": "5126e9e885cbd74e57978b1d5ecfa9c29d61c510",
      "parents": [
        "092fe44abd787fcb4377d90c63f2aa7120a4d267"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 31 17:44:06 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 31 18:44:28 2012 -0700"
      },
      "message": "AudioFlinger: send audio source to audio effects\n\nAdded support for EFFECT_CMD_SET_AUDIO_SOURCE audio effect\ncommand to inform preprocessings of current audio source\nselection for capture.\n\nChange-Id: Ib2418a9aa8114e8457fe828ecd43b230ed86cdd6\n"
    },
    {
      "commit": "c3ae93f21280859086ae371428ffd32f39e76d50",
      "tree": "542d16fac64eb1f6e40c32517d60c2da5078e900",
      "parents": [
        "c9936c72c128a4a9288424fb082d7e7fe4b9b91f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 30 10:59:30 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 15:31:00 2012 -0700"
      },
      "message": "Update audio comments\n\nChange-Id: Ie7504d0ddb252f7e4d4f99ed0b44cfc7b1049816\n"
    },
    {
      "commit": "7aa25591769685ae0e8349b3ca3534c724484375",
      "tree": "366da12832fc0b0033ac79a456eac6ca8acdb9f0",
      "parents": [
        "b9cba9b731195d4387ee21b7e9ba1137a3cfda68"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 02 16:37:07 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 15:18:16 2012 -0700"
      },
      "message": "Remove dead code\n\nRecordThread::isValidSyncEvent() returns false, so most of\nRecordThread::setSyncEvent() is never executed.\n\nChange-Id: I0cf848beb46a367a45126d2df3073c5afa2ca59c\n"
    },
    {
      "commit": "2dd4bdd715f586d4d30cf90cc6fc2bbfbce60fe0",
      "tree": "d0f594b402b6d2a4de89386c30c3db4adab89894",
      "parents": [
        "0a24726a64ba1c50aa6ee1610de2d80602d49fe6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 29 11:10:32 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 10:53:37 2012 -0700"
      },
      "message": "Move libnbaio out of AudioFlinger\n\nlibnbaio is now a separate shared library from AudioFlinger, rather\nthan a static library used only by AudioFlinger.\n\nAudioBufferProvider interface is now also independent of AudioFlinger,\nmoved to include/media/\n\nChange-Id: I9bb62ffbc38d42a38b0af76e66da5e9ab1e0e21b\n"
    },
    {
      "commit": "106e8a42038f9e90d5ff97f8ab6f1a42258bde9e",
      "tree": "af631b5e756cf711d5d9d34db2dffe02cf64e7e3",
      "parents": [
        "0dbb356050d0db9e0043dd43045c1864a933332b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 02 13:37:12 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 13 11:38:18 2012 -0700"
      },
      "message": "const methods\n\nChange-Id: I92e32ee16274c032c9d0ce910676be2a7fa52471\n"
    },
    {
      "commit": "0dbb356050d0db9e0043dd43045c1864a933332b",
      "tree": "4fe3b2ab60f96691faaaf50f163c92946954e6de",
      "parents": [
        "d23eedca9b5a1812891c05d89850ab7ee707040d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 02 16:36:50 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 13 11:35:47 2012 -0700"
      },
      "message": "Simplify AudioFlinger::PlaybackThread::isValidSyncEvent()\n\nChange-Id: I3e4af69b929d4ca04afaac26c7e41c89fce25b9c\n"
    },
    {
      "commit": "d23eedca9b5a1812891c05d89850ab7ee707040d",
      "tree": "9f0c4309ded6a390c49bbe70590ea568a7167307",
      "parents": [
        "a959904968f1d300fe86334bf5099ae2dc39ee28"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 02 13:35:47 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 13 11:31:55 2012 -0700"
      },
      "message": "Discard setSyncEvent() return value\n\nsetSyncEvent() returns a status_t which is sometimes ignored.\nEmphasize this is intentional by casting to void.\n\nChange-Id: Ic614988347cba36bd2504d7ad321594a355b0d9d\n"
    },
    {
      "commit": "3ed292031dc50c56110cdadb1e3778117e3be76a",
      "tree": "7aee0b1a5f518733eebcca574807d4de62066c06",
      "parents": [
        "0d27c65ddb5c968baa6db0c26e80f5c451bc52bc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 07 15:24:44 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 09 15:34:46 2012 -0700"
      },
      "message": "Replace hard-coded \"2\" by a constant and comment\n\nBug: 6679403\nChange-Id: I6c2701f9afedc26540dfad0b4e23348bbc4cb01a\n"
    },
    {
      "commit": "2c3b2da3049627264b7c6b449a1622f002210f03",
      "tree": "f99fadbfef22ff3b7709a505623371c22e39566c",
      "parents": [
        "ee578c0330319f04a48bccbdb26b53fea0388d04"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Aug 02 17:08:54 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Aug 08 11:28:15 2012 -0700"
      },
      "message": "AudioFlinger: fix timed audio\n\n(cherry picked from commit e20ac92c564a2f4e8123885807abdf0a78de0dd7)\n\n\u003e AudioFlinger: fix timed audio\n\u003e\n\u003e Addresses Bug 6900517.\n\u003e\n\u003e Finish up support for timed audio in the new FastMixer world.  Pay special\n\u003e attention to remaining lock-less and voluntary yield free on the FastMixer\n\u003e thread.  This fixes audio playback for Q on JB.\n\u003e\n\u003e Change-Id: Iaf815e58a1b1d0a0190051794bec8dc5c9231785\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nChange-Id: I9bd687acc345a05867af48e71116690fdb0ce1b5\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "ee578c0330319f04a48bccbdb26b53fea0388d04",
      "tree": "883382e0eabdcdff6c04a7df4b50d9cebffaf1c7",
      "parents": [
        "d8f178d613821c3f61a5c5e391eb275339e526a9"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Jul 23 17:05:46 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Aug 08 11:28:15 2012 -0700"
      },
      "message": "AudioFlinger: Better handling for master volume/mute\n\n(cherry picked from commit 93d906837e0e89aa1d9c913ab2b531b809f9bb9e)\n\n\u003e AudioFlinger: Better handling for master volume/mute\n\u003e\n\u003e Changes to address bug 6842827.\n\u003e\n\u003e When a HAL is loaded, cache whether or not the HAL supports\n\u003e set_master_volume/mute in the AudioHwDevice structure.  Store an\n\u003e AudioHwDevice in AudioStream(In|Out) structures instead of just an\n\u003e audio_he_device_t.  This give threads (PlaybackThreads in\n\u003e particular) access to the cached capabilities.\n\u003e\n\u003e When setting master volume/mute, change the system to always set the\n\u003e setting on all HAL which support it and also to set the setting on all\n\u003e PlaybackThreads.  Change PlaybackThreads to apply the setting at the\n\u003e in SW mix stage of the pipeline if its assigned HAL does not support\n\u003e the setting, or to ignore the setting of the assigned HAL does support\n\u003e it.\n\u003e\n\u003e Change-Id: Ia14137a30b4c3ee6f2d7ddcc8cba87bf5eec87f4\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nChange-Id: Icb6bc13764e100a2003eb1dee2231132ab287d98\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "d8f178d613821c3f61a5c5e391eb275339e526a9",
      "tree": "93038d06c70535eeebc364e9f86cedbec074802c",
      "parents": [
        "3478eaa23c19dbbe473be70e8f3cc0c904d2465c"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Fri Jul 20 14:51:35 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Aug 08 11:28:15 2012 -0700"
      },
      "message": "Change audio flinger to user HAL master mute if available\n\n(cherry picked from commit 91de9b56282d126ffb36344266af5fee3cefcfdd)\n\n\u003e Change audio flinger to user HAL master mute if available\n\u003e\n\u003e Hand merge from ics-aah\n\u003e\n\u003e \u003e Change audio flinger to user HAL master mute if available: DO NOT MERGE\n\u003e \u003e\n\u003e \u003e Replicate the pattern used for HAL master volume support to make use\n\u003e \u003e of master mute support if the HAL supports it.  This is part of the\n\u003e \u003e change needed to address bug 6828363.  Because of the divergences\n\u003e \u003e between ICS and master, this change will need to be merged by hand.\n\u003e \u003e\n\u003e \u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\u003e \u003e Change-Id: I6d83be524021d273d093bcb117b8f2fe57c23685\n\u003e\n\u003e Change-Id: I32280582905c969aaec2bb166ec5c61df82d737a\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nChange-Id: I5cd709187221d307fe25c5117ccaadca5f6b197b\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "44cda3a4e7ca3de0db9cb49145def3803b03ebb4",
      "tree": "2ed0b1d13971820bd5dcd80ece0f7ab05150e2a8",
      "parents": [
        "3788a393bbcadebf38ac01ef9b2ecc46f07db011"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 01 09:40:18 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 01 10:46:10 2012 -0700"
      },
      "message": "Don\u0027t wait for presentation complete if terminated\n\nChange-Id: Ia04cf6c620693457dca87b4ffea5dd0fe71efdce\n"
    },
    {
      "commit": "510a3d6b8018a77683dac466127ffd0af34bef6e",
      "tree": "1f3410b20a4dcbe77dd9b40800bdd569ceaff384",
      "parents": [
        "25f0d7ba1987de61c75f8c68b19de48e0ad9736c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 14:24:34 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 01 09:11:11 2012 -0700"
      },
      "message": "Start adding support for multiple record tracks\n\nReplace single mTrack by vector mTracks.\nDestroy record tracks similarly to playback tracks.\nDump all record tracks, in addition to the active record track.\n\nChange-Id: I503f10b51928b6b92698fe1c51a9ddd3215df1f4\n"
    },
    {
      "commit": "0ec23ce0d1ff79566c402bc30df3074f6e25a22b",
      "tree": "8925eca2b9f4b9bccb7fa4d032ab80070179912d",
      "parents": [
        "e4e2a37dbe2a4d923232305549101f779a2e3638"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 12:56:08 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 27 14:54:48 2012 -0700"
      },
      "message": "Clean up start() parameters\n\nDocument where int is used instead of AudioSystem::sync_event_t\n  (probably because of a header file dependency).\nTrackBase::start() and RecordTrack::start() don\u0027t need default parameters.\n\nChange-Id: I82f4a4d078be900f3aa4bd926697e32f5ed68ec8\n"
    },
    {
      "commit": "e4e2a37dbe2a4d923232305549101f779a2e3638",
      "tree": "7038669149e9478745fbb5e05f320cee8fd5cb88",
      "parents": [
        "3dca4c7a5622fc6aa03397d749c4b4c1201cc4f3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 23 12:55:09 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 27 14:49:58 2012 -0700"
      },
      "message": "Extract methods to enter standby and standby mode\n\nAlso move initial standby from to threadLoop to avoid a race condition.\n\nChange-Id: I65afca83c36fb41b983b3b1d3dab35d4029560e3\n"
    },
    {
      "commit": "0a7af18d0308295405491f86603e3d119450aba0",
      "tree": "bed6e2fe6df1d948db29bc84ff5d0a3bee02d6a6",
      "parents": [
        "58e5aa34f01d663654d8bafad65db1dda42161ff"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 09 16:09:19 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 25 14:48:11 2012 -0700"
      },
      "message": "Use valueAt instead of editValueAt when possible\n\nChange-Id: I885b169f4b176a6b5c2ca9a534214b4ffff1700e\n"
    },
    {
      "commit": "1d491ff06f4b9c90ff24fe953b90d0843eaf1c04",
      "tree": "006faa29a2ad0ca2ea18c8e876c43749d72d138d",
      "parents": [
        "bf5bea96f236adb5eef78c2f414ef82b3602a0f7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 14:28:13 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 25 14:41:03 2012 -0700"
      },
      "message": "Fix races in AudioRecord stop()\n\nChange-Id: Id0ac1915f57fef4a938c7f90989c1162a8b6c51c\n"
    },
    {
      "commit": "69d799679c8c0308e42057e7b5ad63a7ae806480",
      "tree": "fd433daeb23326b7818031fcca0f8b87f77dbc3e",
      "parents": [
        "f1b3ee26cafc80900bae681bddf47446a6a3733f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 19 14:02:22 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 23 10:56:34 2012 -0700"
      },
      "message": "Use upmix/downmix utility routines\n\nChange-Id: I9ae2ec938fb695ec576ea008a42205325af7bbf1\n"
    },
    {
      "commit": "e65c89113232d070dd9153c54ca19301bca7a162",
      "tree": "09997cb32d82da8d2549044a95eb31c8c35cf39d",
      "parents": [
        "76da2635edbe0e6d023c665d5c344a3b7e070d73"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 20 15:57:23 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 20 15:57:23 2012 -0700"
      },
      "message": "fix audio effect not destroyed when needed.\n\ncommit a5f44eba contained an error which made that audio effect\nmodules where not destroyed but left in the destroyed state\nrendering them unuseable after being released.\n\nBug 6805168.\n\nChange-Id: Ia4e683b3c970ffd01846c482fde73d799ff219de\n"
    },
    {
      "commit": "33e6e35b03a726e35203e97550f32154c91d5f13",
      "tree": "2648568f97f1b3f13335a044d267caa15d1d4e78",
      "parents": [
        "cd2d61016527bf48bd2e9a920bb3fdbb875eb3e4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 15:56:57 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 20 12:33:33 2012 -0700"
      },
      "message": "Miscellaneous audio record fixes\n\nCall AudioSystem::stopInput() if exitPending() after wait() returns.\n\nAcquire lock before clearing mActiveThread.\n\nChange-Id: Ia55e4c4b3accc65ad5479cbdc094fd919152af9f\n"
    },
    {
      "commit": "cd2d61016527bf48bd2e9a920bb3fdbb875eb3e4",
      "tree": "17db61cdcaeda8479f9f523c7689727a5b979470",
      "parents": [
        "a08412711b3266d336134b16a45e98baa8d11b9d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 18 16:49:32 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 20 12:27:12 2012 -0700"
      },
      "message": "Use constructor to initialize instead of memcpy\n\nAlso don\u0027t check for thread parameter as it\u0027s always non-NULL\n\nChange-Id: Id23ded1370556ef3f76f81f5f0c6fa644bcba681\n"
    },
    {
      "commit": "be5f05e0fdfc4e3799653702187861a2afa072ee",
      "tree": "1cc15fea099c579aded967ec174f00307b2517eb",
      "parents": [
        "cf9465b83405a1ec26a164b079d9898c09d87fcd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 18 15:24:02 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 20 11:08:14 2012 -0700"
      },
      "message": "Internal dump methods return void not status_t\n\nOnly the IAudioFlinger::dump() needs to return a status_t.\n\nChange-Id: Iffeb2a7db4846df850b6b2ed960276f1fd75dba0\n"
    },
    {
      "commit": "5ad92f620fbbb6a8281f10169a23d38e3601e07a",
      "tree": "c7b3d9ada1999b57f72e02e1e63ad062260d18f1",
      "parents": [
        "bb4350d3b9e9485ae59e084de270f86aecef8066"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 19 10:02:15 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 19 10:02:15 2012 -0700"
      },
      "message": "Revert 94479fd5405642c67efd14cebe722feb9cbe6e77\n\nChange-Id: I5ca78d5462badf541868785b2ba2e3f6d0cf492a\n"
    },
    {
      "commit": "bb4350d3b9e9485ae59e084de270f86aecef8066",
      "tree": "2f38f108eb3dd420695cd07cd47a55ea030d51b5",
      "parents": [
        "cb4184c917f88a3c8d70c8bc6b99fc951b11cc37"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 15:56:38 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 19 09:05:12 2012 -0700"
      },
      "message": "Use audio_devices_t more places\n\nChange-Id: Id0ace02ca6f480a6c46e11880acf6cdc66d83184\n"
    },
    {
      "commit": "a189a6883ee55cf62da1d7bf5bf5a8ab501938a4",
      "tree": "7ab4133c0ce507e289baacf76d745de27f9e8136",
      "parents": [
        "28b76b334f92a15a2be3cc9e2f7d229a3275d1ac"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 20 12:16:30 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 17 11:35:16 2012 -0700"
      },
      "message": "Use struct assignment instead of explicit memcpy\n\nfor POD structs effect_descriptor_t and effect_config_t\n\nChange-Id: Ib2fc47f85fb65ed91b0abb1f87217c49b5eb571d\n"
    },
    {
      "commit": "fd4e20c226eca185fc789de761beae64855bfbbb",
      "tree": "7f752ff15fa1f70181281b5dad8c7c987c559b60",
      "parents": [
        "d96c5724818fb47917bb5e7abe37799735e1ec0e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 04 11:51:12 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 16:49:01 2012 -0700"
      },
      "message": "Run audio at priorities 2 and 3 above kernel 1\n\nAlso run the watchdog at same priority as the fast mixer.\nrequestPriority() originally used only the caller\u0027s pid to decide which\ncgroup to assign, but in the future it might look at the priority also.\nSo it\u0027s safer to use same priority as the fast mixer to be sure we\nrun in the same cgroup.\n\nBug: 6461925\nChange-Id: Ia59c93e4b22dacbb6746bfa6ad491be7b72f2b8d\n"
    },
    {
      "commit": "d96c5724818fb47917bb5e7abe37799735e1ec0e",
      "tree": "e7cc73da27068c8c770e53fe0ed00bf7276aea5f",
      "parents": [
        "dcda3b325f465aa6ec2be11db1c56c8a5e867f33"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 25 13:44:49 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 11:57:11 2012 -0700"
      },
      "message": "Don\u0027t call virtual methods in destructor\n\nThe result of calling virtual methods from a destructor is undefined.\n\nChange-Id: I0fd4a19626e5ae564a60b753315b5f6c4b8d1f2c\n"
    },
    {
      "commit": "1ea6d23396118a9cfe912b7b8a4e6f231e318ea2",
      "tree": "31327ae0fe7ad1e34a3766bf6246c26752704ce7",
      "parents": [
        "68337edf595a0c345ba4b8adcd4f1e541a1d7eb7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 09 14:31:33 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 13 16:35:52 2012 -0700"
      },
      "message": "Use atomic ops for thread suspend count\n\nThere was a theoretical but unlikely race if two binder threads\nexecuted suspend() or restore() concurrently.  Also added comments.\n\nChange-Id: I0908acc810b83bdd66455b27ca3429de1662a2cd\n"
    },
    {
      "commit": "1879fff068422852c1483dcf8365c2ff0e2fadfc",
      "tree": "f374fae563e2854ce20b4da16e9cae0d883aecd7",
      "parents": [
        "bf04a5d7f287fc712e0ed91849dc85c90c1e182d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 11 15:36:59 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 13:43:08 2012 -0700"
      },
      "message": "Add tid parameter to IAudioFlinger::openRecord\n\nNot yet implemented\n\nChange-Id: I35523fb15ad71727ecc9f4bb870f07e4b7397dc4\n"
    },
    {
      "commit": "bf04a5d7f287fc712e0ed91849dc85c90c1e182d",
      "tree": "f9fd2ffd8df5a02c9c9373f5362da76204e5a676",
      "parents": [
        "39c54f68804c1ce5c85ec588f3c2c63447a807b4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 09:07:11 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 12 09:36:34 2012 -0700"
      },
      "message": "Simplify AudioRecord::getInputFramesLost()\n\nThis also fixes a benign race in reading mActive without a lock.\n\nChange-Id: I19e953d4f275e5c266ca1ca3fece7b6c02ad1707\n"
    },
    {
      "commit": "39c54f68804c1ce5c85ec588f3c2c63447a807b4",
      "tree": "04b272355171e4dbfbc95652c477011264ad1518",
      "parents": [
        "4fe1ec4f40b58abff6cec147aa786cb65698161a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 09 09:12:23 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 11 09:02:23 2012 -0700"
      },
      "message": "Remove dead code\n\nChange-Id: If22a6c4e572b0734eba0c5a7ce29a2c61c581e5d\n"
    },
    {
      "commit": "4fe1ec4f40b58abff6cec147aa786cb65698161a",
      "tree": "6e289895d6a4daf62862422798a5b954c99ed5df",
      "parents": [
        "04270daf50f0c602d7c57a257a693e68246cbeb7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 27 16:33:15 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 11 09:00:45 2012 -0700"
      },
      "message": "Fix check for invalid channel count\n\nChange-Id: Id9e3dce0e3d5971786212d3f70e17a17e32ce92b\n"
    },
    {
      "commit": "04270daf50f0c602d7c57a257a693e68246cbeb7",
      "tree": "bebd6ac579df8b08aca04b61b2292c42c9b6aefc",
      "parents": [
        "254af180475346b6186b49c297f340c9c4817511"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 12:55:49 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 15:51:29 2012 -0700"
      },
      "message": "Record overflow cleanup\n\nAdd comments and rename one method for clarity\n\nChange-Id: I04a9147e46e88a072256c0211b112d52202419e2\n"
    },
    {
      "commit": "254af180475346b6186b49c297f340c9c4817511",
      "tree": "bee0e313aaa97645167e86f4678e513ab38d1c99",
      "parents": [
        "4d2132c866228eaef563e8141ebf06aa25ee9ff7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 14:59:05 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 10:05:31 2012 -0700"
      },
      "message": "Use audio_channel_mask_t more places\n\nUse it in AudioSystem::getOutput(), AudioSystem::getInput(),\nIAudioPolicyService::getOutput(), IAudioPolicyService::getInput(),\nand various other places in AudioFlinger.\n\nNot done: AudioTrack and OutputDescriptor.\n\nChange-Id: I70e83455820bd8f05dafd30c63d636c6a47cd172\n"
    },
    {
      "commit": "9f34a36d9cdb9595c288e50ffe00da038bc8abb9",
      "tree": "6b7e7720d4856de8d88b44f5eae3f62993761b2e",
      "parents": [
        "7d6c35bf132a46c0a8a9826491882495fc98bd8c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 20 16:46:41 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 08:28:31 2012 -0700"
      },
      "message": "Whitespace and indentation\n\nChange-Id: I424052b4ff9218147a5cfc8e6dcd67fe8105d229\n"
    },
    {
      "commit": "7d6c35bf132a46c0a8a9826491882495fc98bd8c",
      "tree": "75860c2ae1264af58a4ee7e849ce982a9d00f486",
      "parents": [
        "a51b4acf038ecd7728a98b85749eefc165aa358a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 02 12:45:10 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 08:25:35 2012 -0700"
      },
      "message": "Move constant initializations from onFirstRef() to constructor\n\nChange-Id: I57f55b0bd1edee105c58c3a055f95f1e4a2c9646\n"
    },
    {
      "commit": "6648821933dc06c0b09ab2c8b32135edddcd4291",
      "tree": "7f39b4c3e3fdb1376a6cb3d0f8007bc3eaaf2fda",
      "parents": [
        "94479fd5405642c67efd14cebe722feb9cbe6e77"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 12:57:20 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 09 17:06:27 2012 -0700"
      },
      "message": "AudioFlinger::getBuffer() always returns non-NULL\n\nChange-Id: I543d3db507597cacbfdad5d9ea71732137fe54fb\n"
    },
    {
      "commit": "94479fd5405642c67efd14cebe722feb9cbe6e77",
      "tree": "c316a649b478f44addc797a8d41cbcc370933397",
      "parents": [
        "01542f2704f39956da09ae2840e192dab760091f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 09 15:39:54 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 09 15:39:54 2012 -0700"
      },
      "message": "Fix build\n\nRevert after system/core audio_devices_t is submitted\n\nChange-Id: I5a8ee1a7b711e834501e927f41c62efa6a6600b6\n"
    },
    {
      "commit": "01542f2704f39956da09ae2840e192dab760091f",
      "tree": "596fdb0f5c6a2e9490db1bc87e4c65d028849ba3",
      "parents": [
        "c1dae24a08b67b98e18e4239d4f3a74d600d353c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 02 12:46:15 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 09 12:11:09 2012 -0700"
      },
      "message": "Only write to mDevice once\n\nThis fixes a bug where readers might see intermediate values.\nAlso add comments about how mStandby and mDevice are used.\n\nChange-Id: Idc84e56c21381a45137a2ca5ff9c57d437201869\n"
    },
    {
      "commit": "c1dae24a08b67b98e18e4239d4f3a74d600d353c",
      "tree": "d0923bff8eb16c7b060a37379dc2fc9a298e8554",
      "parents": [
        "2c75ef40330522fb50bbd7a0aa105573355b323c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 13:13:53 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 16:25:07 2012 -0700"
      },
      "message": "Remove debug code HAVE_REQUEST_PRIORITY and SOAKER\n\nChange-Id: I73a2afe72d8acb53e57e6b4e6fb5133e22b7875a\n"
    },
    {
      "commit": "a5f44ebaf58911805b4fb7fb479b19fd89d2e39b",
      "tree": "8221f3963c5be8d22bde7c3afdf98c1654333950",
      "parents": [
        "dd8104cc5367262f0e5f13df4e79f131e8d560bb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 25 11:38:29 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 03 11:35:41 2012 -0700"
      },
      "message": "audioflinger: fix effect disconnect deadlock\n\nFix possible deadlock when several EffectHandles on the same\nEffectModule are destroyed simultaneously:\n A wp on an EffectHandle should not be promoted to a local sp\nwith ThreadBase mutex held as the EffectHandle destructor can be\ncalled when the sp gets out of scope which will call\nThreadBase::disconnectEffect() and try to acquire the mutex.\n\nUse raw pointers instead of weak pointers for the list of handles\non an EffectModule.\n\nBug 6679606.\n\nChange-Id: Ice8b602fb03a7d363c44ce3dced8a53540d96270\n"
    },
    {
      "commit": "dd8104cc5367262f0e5f13df4e79f131e8d560bb",
      "tree": "46c95f24576ec352d7d5d363606db9a46a44e9c3",
      "parents": [
        "f1da96d8cf60842538e00a9c950cc451f7da2c10"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 02 12:42:44 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 10:24:45 2012 -0700"
      },
      "message": "Use audio_channel_mask_t more consistently\n\nIn IAudioFlinger::createTrack() and IAudioFlinger::openRecord(),\ndeclare input parameter to use correct type audio_channel_mask_t.\n\nIn IAudioFlinger::getInputBufferSize(), input parameter is now channel mask\ninstead of channel count.\n\nRemove unused IAudioFlinger::channelCount(audio_io_handle_t).\n\nIn AudioRecord::getMinFrameCount() and AudioSystem::getInputBufferSize(),\ninput parameter is channel mask instead of channel count.\n\nChange-Id: Ib2f1c29bea70f016b3cfce83942ba292190ac965\n"
    },
    {
      "commit": "f1da96d8cf60842538e00a9c950cc451f7da2c10",
      "tree": "b64f770259b25809f5fa1820a686f1cafb8de0e1",
      "parents": [
        "415fa7599f48494f99206b8d6e1974abb52c5923"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 02 16:10:16 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 10:22:13 2012 -0700"
      },
      "message": "Remove longStandbyExit\n\nIt was never set (the assignment was within an \"if\" that was never true).\n\nChange-Id: I01cc68e9df6b190eece621b2aa9858b4361880ce\n"
    },
    {
      "commit": "415fa7599f48494f99206b8d6e1974abb52c5923",
      "tree": "3cfdad6a05f9bece6cefc1bcaffc4f0a81f577c8",
      "parents": [
        "d5903ec1332630f2992a6f0d5ca69d13a185c665"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 02 16:11:18 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 10:18:11 2012 -0700"
      },
      "message": "Fix uninitialized field EffectModule::mPinned\n\nAlso mark EffectModule::mId and EffectModule::mSessionId const, and\ndocument the initialization of other fields in EffectModule.\n\nChange-Id: Ic1ca008e75e9b5924743ffc35bef80057f3a0669\n"
    },
    {
      "commit": "d5903ec1332630f2992a6f0d5ca69d13a185c665",
      "tree": "c84c6643dcfd0802321e051c6dc4fbb52bd12d94",
      "parents": [
        "524f4386465fe9911cc067c0c2a4fa3eadad211d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Mar 18 10:33:27 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 02 15:33:01 2012 -0700"
      },
      "message": "Compare sp\u003c\u003e to 0 and raw pointers to NULL\n\nChange-Id: I50ff8a010d349d1d7e3dffa04a6331814c2128b0\n"
    },
    {
      "commit": "a01992a0675a06df7d0bbe7b977207dd0c33fdc7",
      "tree": "2256e1ce66e1754bbbe6e295b7487e9f72a6481a",
      "parents": [
        "dbabf8a7dfe3aa8bf0ed169220d2009d5891fef2",
        "dbbd5b860a3a26bea3376410f75f27530d9cd10b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 02 12:45:53 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 02 12:45:53 2012 -0700"
      },
      "message": "am dbbd5b86: am 109347d4: audioflinger: fix regression in attachAuxEffect().\n\n* commit \u0027dbbd5b860a3a26bea3376410f75f27530d9cd10b\u0027:\n  audioflinger: fix regression in attachAuxEffect().\n"
    },
    {
      "commit": "109347d421413303eb1678dd9e2aa9d40acf89d2",
      "tree": "51837c9c8163816bb896cb067e4a4a555f507a8b",
      "parents": [
        "717e128691f083a9469a1d0e363ac6ecd5c65d58"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 02 12:31:03 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 02 12:31:03 2012 -0700"
      },
      "message": "audioflinger: fix regression in attachAuxEffect().\n\nCommit 717e1286 introduced a regression in PlaybackThread::Track::attachAuxEffect()\nwhen called with an effect ID of 0 to detach the auxiliary effect.\n\nIt is normal in this case that AudioFlinger::getEffectThread_l() returns 0.\n\nBug 6768757.\n\nChange-Id: I7430bd1aad2f68da38f7c3e4794e7ad657bfc6be\n"
    },
    {
      "commit": "dbabf8a7dfe3aa8bf0ed169220d2009d5891fef2",
      "tree": "f47fbc6fcbd7bbbf07c13c67496addb69720717b",
      "parents": [
        "a0108697f86d8625eb7ad3f13e422427fe7573ca",
        "651f9e7c972b58a49066081187161268bcf9237a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 01 09:36:38 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jul 01 09:36:38 2012 -0700"
      },
      "message": "am 651f9e7c: am 717e1286: audioflinger: fix auxiliary effect attachment\n\n* commit \u0027651f9e7c972b58a49066081187161268bcf9237a\u0027:\n  audioflinger: fix auxiliary effect attachment\n"
    },
    {
      "commit": "717e128691f083a9469a1d0e363ac6ecd5c65d58",
      "tree": "70761520a17703d543262ebe7778f51a360d7923",
      "parents": [
        "33e28dd3c033641f4db9d1b99c7c88d6d08c61f7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 29 16:36:52 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 29 17:03:53 2012 -0700"
      },
      "message": "audioflinger: fix auxiliary effect attachment\n\nAuxiliary effects (Reverb) are global effects and as such follow\nthe default rule which is to attach them to the output thread that\nhandles music streams by default. This causes a problem when several\nthreads are eligible to handle music streams as tracks can be attached\nto either thread based on criteria unknown when teh effect is created.\n\nThe fix consists in moving the auxiliary effect if necessary when an\nAudioTrack is attached to it and this track is not on the same\noutput thread.\n\nBug 6608561.\n\nChange-Id: Ib32c3cabc731b2046aba728be1771982999c6069\n"
    },
    {
      "commit": "22167855ff9af7b13fda669ca27c67a037a7d585",
      "tree": "173d9cb6b65734e259df2b311a4e3e18956fe49b",
      "parents": [
        "5f12136299918ea30555f3481668ec0dbb775e5f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 20 12:26:32 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 20 12:26:32 2012 -0700"
      },
      "message": "audioflinger: fix setStreamOutput()\n\nAudioFlinger::setStreamOutput() should also work for direct outputs.\nAlso ignore the destination output specified to match the expected\nbehavior which is to invalidate all tracks using the specified stream\ntype so that they can be re created on the correct ouput thread.\n\nDo not send STREAM_CONFIG_CHANGED event wich is ignored by AudioSystem\nanyway since the stream to output cache has been removed.\n\nChange-Id: I13d9d47922923b630dd755717875424c16be4637\n"
    },
    {
      "commit": "362ebcbf100f7fccd37551c77e67c4faa7241b63",
      "tree": "62291e1b6f9940cec2b8e6a67357744cd1ee134f",
      "parents": [
        "7b4de10199f3a1803350e9a65baa671874d9c2f1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 24 08:44:00 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 14 15:34:17 2012 -0700"
      },
      "message": "DO NOT MERGE Remove log spam for fast track denied\n\nBug: 6531054\nChange-Id: Iedf58e810a157aae88b5900da27c81054c437058\n"
    },
    {
      "commit": "1d6573032ecde54a466ca32951e101b41a05c797",
      "tree": "967756aaa55eca58bc2cec8ed8843a180a5b81b2",
      "parents": [
        "bfe00d2e46531ef546cd9422a4d533070cbed8af",
        "48a0bfa6f731386f2794ff36d6677d56e98fc6ea"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 14 10:34:35 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 14 10:34:35 2012 -0700"
      },
      "message": "am 48a0bfa6: am 49dd5cf3: Merge \"Log track name on obtain/releaseBuffer warnings\" into jb-dev\n\n* commit \u002748a0bfa6f731386f2794ff36d6677d56e98fc6ea\u0027:\n  Log track name on obtain/releaseBuffer warnings\n"
    },
    {
      "commit": "0c9d26d187017f7fb028ab52a0fbc6395142faa4",
      "tree": "35fd2f6babef082b85058fd27a69bda048687295",
      "parents": [
        "b4ea1ab821d652cb080910d4081f5f1318597a90"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 31 14:35:01 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 13 15:12:42 2012 -0700"
      },
      "message": "Log track name on obtain/releaseBuffer warnings\n\nThis should help diagnose problems by allowing us to correlate\nthe logs with the dumpsys media.audio_flinger output.\n\nChange-Id: I8c7c592b4f87d13b0f29c66ce7a2f301a0f063c9\n"
    },
    {
      "commit": "8cc3651c04e48b755dcc579bfa4f9a7e9391d6e7",
      "tree": "c9a3c38ba62d6b72979e976b4021a5d593e08524",
      "parents": [
        "a4419420b0598413314a79c7ce3954a2e27686aa",
        "57d9b72812d25dff1c33e37b8475a469accd0919"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jun 12 12:50:44 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 12 12:50:44 2012 -0700"
      },
      "message": "am 57d9b728: am c15d6657: Add audio watchdog thread\n\n* commit \u002757d9b72812d25dff1c33e37b8475a469accd0919\u0027:\n  Add audio watchdog thread\n"
    },
    {
      "commit": "c15d6657a17d7cef91f800f40d11760e2e7340af",
      "tree": "c4346cb0fcde7483e42900aecce64df96250889b",
      "parents": [
        "b7acdfb8068bf408ed859dfdd441b4a8722eb12a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 30 14:52:57 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 11 11:39:54 2012 -0700"
      },
      "message": "Add audio watchdog thread\n\nChange-Id: I4ed62087bd6554179abb8258d2da606050e762c0\n"
    },
    {
      "commit": "796078f96c8a15fefcea70e666b22ea67cc35301",
      "tree": "eb61745fbd99644b96ff751b2df1ebe06b177cad",
      "parents": [
        "a9300fd3d84cc07bbfa702e2fad3b32a5ebfd337",
        "ea5008d8abfdf1479b4efa266cdb7c842d168aa9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 08 10:30:31 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 08 10:30:31 2012 -0700"
      },
      "message": "am ea5008d8: am 28ed2f93: Reduce underruns in screen off, esp. with EQ\n\n* commit \u0027ea5008d8abfdf1479b4efa266cdb7c842d168aa9\u0027:\n  Reduce underruns in screen off, esp. with EQ\n"
    },
    {
      "commit": "28ed2f93324988767b5658eba7c1fa781a275183",
      "tree": "07ba39f61d41aa6ff2af76dc2c9122a102c92059",
      "parents": [
        "a4f7e0e9a0e92a063f1b3a08988cf46e2cf1fa94"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 07 10:17:54 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 08 10:09:22 2012 -0700"
      },
      "message": "Reduce underruns in screen off, esp. with EQ\n\nAdd MonoPipe APIs to specify setpoint.\nUse screen state to configure pipe setpoint.\nFix a long-standing bug where pipe sleep time was excessive,\n  which interacted poorly with governor and low clock frequencies.\n  Now it deducts the elapsed time since last write(),\n  which was significant when there was EQ and low clock frequency.\n\nBug: 6618373\nChange-Id: I6f3b0072c2244aeb033ef0795ad164491a164ff5\n"
    },
    {
      "commit": "bdbf0c6f1a11d6fd9b71aa765f7de39e248557ba",
      "tree": "194524008993958cc8d8eb2bf3163bc3a03a220d",
      "parents": [
        "349d79668ea4ca078400995c70d5d3201e8d9ea1",
        "98e2e030231ce99a4796d34d39a7517078d6735e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 07 17:45:55 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 07 17:45:55 2012 -0700"
      },
      "message": "am 98e2e030: am a4f7e0e9: audioflinger: fix duplicating thread standby\n\n* commit \u002798e2e030231ce99a4796d34d39a7517078d6735e\u0027:\n  audioflinger: fix duplicating thread standby\n"
    },
    {
      "commit": "a4f7e0e9a0e92a063f1b3a08988cf46e2cf1fa94",
      "tree": "007deb0f276a01d2276a953d2a493cf4f7d11d50",
      "parents": [
        "e35a55fbdff5a695ee35ff43f1466a62fb75662b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 07 17:16:09 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 07 17:16:09 2012 -0700"
      },
      "message": "audioflinger: fix duplicating thread standby\n\nThe code that waits for a track presentation to be complete\nbefore disabling it caused a regression for duplicating threads.\nBecause of the way output tracks activity is managed, the number\nof frames output by the duplicating thread would never\nreach the target set for a track to be considered presented.\nThe track would not be removed from active list and the thread would\nnot go to standby and keep its wakelock held.\n\nBug 6606922.\n\nChange-Id: I4b46b420ac4cbf79a86b6791ae6589d407b01c92\n"
    },
    {
      "commit": "349d79668ea4ca078400995c70d5d3201e8d9ea1",
      "tree": "2b69f653abc60aa4801d6a35a921ca01c8e73c6e",
      "parents": [
        "6685cf4fdfe4b9bdfd8e87c04165c08a436abcf7",
        "d89dea161ff3c3da515c02928cad4a9c73b23312"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jun 07 11:13:19 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 07 11:13:19 2012 -0700"
      },
      "message": "am d89dea16: am e35a55fb: Merge \"Take latency and current time into account for visualization\" into jb-dev\n\n* commit \u0027d89dea161ff3c3da515c02928cad4a9c73b23312\u0027:\n  Take latency and current time into account for visualization\n"
    },
    {
      "commit": "f06c2ed50e1db871ae9eb2bd15a196064f8c278c",
      "tree": "a6e809ffab6281359f5c22166113cb2039579f68",
      "parents": [
        "67c0a58e05f4c19d4a6f01fe6f06267d57b49305"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Jun 06 09:52:31 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jun 07 09:16:27 2012 -0700"
      },
      "message": "Take latency and current time into account for visualization\n\nBuffer more data, and return the data that is currently being\noutput from the audio output, to ensure that visualizations are\nsmooth and responsive even when the audio output has a large\nlatency and/or large buffers.\nb/6522728\n\nChange-Id: I401637f01be7600b3c594a55c869036c13b206c0\n"
    },
    {
      "commit": "a88ed026402d92d699c336aa11267616007e4a9d",
      "tree": "bf66a778ed05602d37965316eaa91b48a9064f52",
      "parents": [
        "b86f92d552c391f5d2471bd4f979135be2578578",
        "717f9b7392b0fc3ba15b018c923b85e64c0662b5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 05 13:35:45 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 13:35:45 2012 -0700"
      },
      "message": "am 717f9b73: am 67c0a58e: audioflinger: various fixes on direct output\n\n* commit \u0027717f9b7392b0fc3ba15b018c923b85e64c0662b5\u0027:\n  audioflinger: various fixes on direct output\n"
    },
    {
      "commit": "67c0a58e05f4c19d4a6f01fe6f06267d57b49305",
      "tree": "0bfb89de1a57ad53abbd6314e6352538ab1a6317",
      "parents": [
        "ab9071b8d1b375418eb797c9a790da71de644344"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 01 19:31:12 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 05 12:50:16 2012 -0700"
      },
      "message": "audioflinger: various fixes on direct output\n\nVarious fixes in direct output playback thread implementation:\n- threadLoop_write() was broken for playback threads that do not\nuse a pipe sink.\n- output buffer size calculation was hard coded for stereo.\n- removed software volume that was implemented for PCM stereo\nformat only: the audio HAL has to implement volume if needed\nfor direct outputs.\n\nChange-Id: If211b4489be9af395435707b8cf0388cce1347b2\n"
    },
    {
      "commit": "b86f92d552c391f5d2471bd4f979135be2578578",
      "tree": "a7148fd9374e0b4d450792a82c3eadc8cf2f346d",
      "parents": [
        "24a2fd0113da60785ce5af5dd905f8aaf9e0f0a1",
        "e506084e1c22f8f1797b9dc3eb789a699efd45c3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 05 09:21:55 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 05 09:21:55 2012 -0700"
      },
      "message": "am e506084e: am ab9071b8: audioflinger: fix active sleep time calculation.\n\n* commit \u0027e506084e1c22f8f1797b9dc3eb789a699efd45c3\u0027:\n  audioflinger: fix active sleep time calculation.\n"
    },
    {
      "commit": "ab9071b8d1b375418eb797c9a790da71de644344",
      "tree": "637a5322ed80b9de92433ed9851302e45d78b727",
      "parents": [
        "399930859a75d806ce0ef124ac22025ae4ef0549"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 04 13:45:29 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 04 14:27:56 2012 -0700"
      },
      "message": "audioflinger: fix active sleep time calculation.\n\nWhen an audioTrack underruns, the audioflinger mixer thread\nsleeps for a certain time to give the app a chance to recover.\nThis time is based on the reported audio HAL latency.\nSome audio HALs implementing deep buffering have a variable\nlatency and this creates a problem if the sleep time is cached\nwhen the output stream is opened and not updated afterwards.\n\nThis change derives the active sleep time from the mix buffer\nframecount instead of the latency. This is more conservative\nbut works for variable latency.\n\nBug 6588525.\n\nChange-Id: Ia892fc290fe06f836565c3ae15f7a2ce026c88c6\n"
    },
    {
      "commit": "24a2fd0113da60785ce5af5dd905f8aaf9e0f0a1",
      "tree": "17424c05e4cdf34e2a680a760cc7285f99b1051f",
      "parents": [
        "5385b7b0f5d922ee38f8a54f11ee4462ef4b5e29",
        "f335f182e4b50249ac34b41da3566ddb016cc816"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 04 12:54:15 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 04 12:54:15 2012 -0700"
      },
      "message": "am f335f182: am 39993085: State queue dump\n\n* commit \u0027f335f182e4b50249ac34b41da3566ddb016cc816\u0027:\n  State queue dump\n"
    },
    {
      "commit": "5385b7b0f5d922ee38f8a54f11ee4462ef4b5e29",
      "tree": "d0a64b6a13c62f31b842e3d03565fd2ca5a57904",
      "parents": [
        "510ba8b812d88f62968a2c9b0b638fff6d99ee84",
        "2c00676cd34d78460ad610a4a4fd7a68544a7b7d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 04 08:30:39 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 04 08:30:39 2012 -0700"
      },
      "message": "am 2c00676c: am 1295bb4d: Fast track dumpsys\n\n* commit \u00272c00676cd34d78460ad610a4a4fd7a68544a7b7d\u0027:\n  Fast track dumpsys\n"
    },
    {
      "commit": "399930859a75d806ce0ef124ac22025ae4ef0549",
      "tree": "2471b70dedc0bb33f7310de8ae0e5622344c6f82",
      "parents": [
        "1295bb4dcff7b29c75cd23746816df12a871d72c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 31 13:40:27 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 04 08:27:25 2012 -0700"
      },
      "message": "State queue dump\n\nBug: 6591648\nChange-Id: Iac75e5ea64e86640b3d890c46a636641b9733c6d\n"
    },
    {
      "commit": "510ba8b812d88f62968a2c9b0b638fff6d99ee84",
      "tree": "e708da6b87725f7ab21ff2d0ef9e40514d471204",
      "parents": [
        "ad2c249a660f8ff81597dab00aaba1118b4a4342",
        "f45dc2f1751d9ac19826b99fab0b226f5c84570a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jun 03 14:52:15 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jun 03 14:52:15 2012 -0700"
      },
      "message": "am f45dc2f1: am bf0d21fb: Count underruns for normal tracks also\n\n* commit \u0027f45dc2f1751d9ac19826b99fab0b226f5c84570a\u0027:\n  Count underruns for normal tracks also\n"
    },
    {
      "commit": "1295bb4dcff7b29c75cd23746816df12a871d72c",
      "tree": "81cf673d36c8aaf3d9d51a9f372a8425ee5fa49b",
      "parents": [
        "bf0d21fb1310e8677caa53b90e8c3aecebc7fc13"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 31 07:43:43 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jun 03 14:49:11 2012 -0700"
      },
      "message": "Fast track dumpsys\n\nBug: 6591648\nChange-Id: I696f51c682e7233ba690d97da26012084989b412\n"
    },
    {
      "commit": "bf0d21fb1310e8677caa53b90e8c3aecebc7fc13",
      "tree": "247c7705394820c7cb84899343bf7a9b834bbda6",
      "parents": [
        "81787e56f8f21407eade5accc50c6da39b8af9b2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 31 14:59:29 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jun 03 14:42:51 2012 -0700"
      },
      "message": "Count underruns for normal tracks also\n\nBug: 6591648\nChange-Id: Iff9cabe392bb2ce97062603adb9c9dc7aa4170d5\n"
    },
    {
      "commit": "35d7bfc359b3aa87ade92d1ab55c6992418cad48",
      "tree": "ba0172953505aa2b83b51ad6e7af0c19b7c1372c",
      "parents": [
        "68edcad7d1619a648e0988ac40cc23e61200c2a2",
        "92e5ee9548542513791a70c81e0cd3fd70397269"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 01 11:11:25 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 01 11:11:25 2012 -0700"
      },
      "message": "am 92e5ee95: am 7dc5b165: Merge \"Fix fast track leak if out of normal track names\" into jb-dev\n\n* commit \u002792e5ee9548542513791a70c81e0cd3fd70397269\u0027:\n  Fix fast track leak if out of normal track names\n"
    },
    {
      "commit": "893a05479c96f911d02beb0443da3ed6508143a7",
      "tree": "ba9fba13c28e13b555313231bfb4cbaba39d81b1",
      "parents": [
        "83410a85993ad6f5f0c122036ff0bda42bf1d4f7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 30 10:32:06 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 31 14:39:20 2012 -0700"
      },
      "message": "Fix fast track leak if out of normal track names\n\nBug: 6580402\nChange-Id: I3ac7f012062c35833147f47ba822eb4bf532a824\n"
    },
    {
      "commit": "529e888738a91ca70cbdeeabd982f8fb2947780c",
      "tree": "09558a3153e26e706ac69b46f1b1ed9e6db04253",
      "parents": [
        "c65abc64bff11b194a0b416ec66e44f5ed957dcf",
        "8c07f7599a757fe51dc54253c480067cf01f13d3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 30 14:13:01 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 30 14:13:01 2012 -0700"
      },
      "message": "am 8c07f759: am 3bdb4fbf: Merge \"audioflinger: fix effect problem during underrun\" into jb-dev\n\n* commit \u00278c07f7599a757fe51dc54253c480067cf01f13d3\u0027:\n  audioflinger: fix effect problem during underrun\n"
    },
    {
      "commit": "91b14c4c144d0cc957a427cffc02ba10d0615677",
      "tree": "dd7c1027319b6783cdc493bf4d37afb2537a2879",
      "parents": [
        "91b0d43a27b3a1cebd75270f953f3fb9fa4f2047"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 30 12:30:29 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 30 12:38:27 2012 -0700"
      },
      "message": "audioflinger: fix effect problem during underrun\n\nWhen an audio track underruns, the input buffer of the\ncorresponding effect chain (if any) must be cleared, otherwise\naudio from previous mixer run will be fed again to the effect process\nfunction.\n\nBug 6551652.\n\nChange-Id: I5cd02196745f756c85af82d6937e9dc54369b37f\n"
    },
    {
      "commit": "6d80297a55ab12759ee00b7f99fa97584b430da0",
      "tree": "a936d42443306cc034a709e77397873fd2a0d611",
      "parents": [
        "3545690e39ff7033c906d12d8bb77a06013d3f3c",
        "0cc6257030d3e6c649ea3ad807ecb9327ceb5b3e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 24 11:45:25 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 24 11:45:25 2012 -0700"
      },
      "message": "am 0cc62570: am f436fdcf: audioflinger: change session check in createTrack.\n\n* commit \u00270cc6257030d3e6c649ea3ad807ecb9327ceb5b3e\u0027:\n  audioflinger: change session check in createTrack.\n"
    },
    {
      "commit": "f436fdcf93bd417fd3c9d2a8b19fd221d894b5e3",
      "tree": "930951e6490510ef9eeab7210c8f729950783bd5",
      "parents": [
        "e737cda649acbfa43fc1b74612a83f2fac9aa449"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 24 11:07:14 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 24 11:07:14 2012 -0700"
      },
      "message": "audioflinger: change session check in createTrack.\n\nDo not refuse to create a track on an output thread if the same session\nis present on another thread. It is now possible that two tracks\nwith the same session ID are on different threads if one can use deep\nbuffering and the other can\u0027t.\n\nIn this case, move effects attached to this session to the output\nthread ion which the new track is created.\n\nBug 6530324.\n\nChange-Id: I9019b3ee382e374c89d2319033afcfa7f886e4c4\n"
    },
    {
      "commit": "852fca99e25db8d2180c2622ca55fca676490a08",
      "tree": "3f17c0f378e0d191d4ad961d3421ef6809a3f7e6",
      "parents": [
        "a6d7da4e897d5201423f7c205d48c1c1a4a07e17"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 24 08:44:00 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 24 08:44:48 2012 -0700"
      },
      "message": "Remove log spam for fast track denied\n\nBug: 6531054\nChange-Id: Iedf58e810a157aae88b5900da27c81054c437058\n"
    }
  ],
  "next": "e737cda649acbfa43fc1b74612a83f2fac9aa449"
}
