)]}'
{
  "log": [
    {
      "commit": "2b806406ac1ec680b6fe3aaa84c54bdc4e43ad8d",
      "tree": "b442aec39d3318a85e4eda692ced7fbc877df128",
      "parents": [
        "f10ffec18f930d92e1abe9200d60e746831841a7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 20 16:37:38 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 20 17:52:28 2013 -0800"
      },
      "message": "Change mActiveTrack to mActiveTracks vector\n\nThe size of mActiveTracks is still limited to 1 for now.\n\nChange-Id: Ia6b06b25d8c4709f087110ae29c589999407a2a2\n"
    },
    {
      "commit": "f10ffec18f930d92e1abe9200d60e746831841a7",
      "tree": "b4d4bb444323e32eff524a9858ac7147bd1b22eb",
      "parents": [
        "7ae751960d8b31e6e301c18122d1146da8fe5983"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 20 16:40:08 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 20 17:52:16 2013 -0800"
      },
      "message": "Code simplification and movement to prepare for mActiveTracks\n\nShare code to acquire wake lock at entry to loop\n\nChange-Id: I01fb645de9417055c0adfc6a4c4011bf22ea4f94\n"
    },
    {
      "commit": "731076cc7857fe322eed018569a2a67f6eac0e54",
      "tree": "1aa3b6cdcd6fde4ac68d632eb0d94b2f3e3a4307",
      "parents": [
        "b4213a1252c23115f3fac77101adb33a9c6b9423",
        "06d6254823b8f7a46690369e57b5f149c94c9f65"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 15 13:13:41 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 15 13:13:41 2013 -0800"
      },
      "message": "am 06d62548: am d7e59228: audioflinger: do not use raw pointer for tracks\n\n* commit \u002706d6254823b8f7a46690369e57b5f149c94c9f65\u0027:\n  audioflinger: do not use raw pointer for tracks\n"
    },
    {
      "commit": "d7e59228caad3867794d847f6bf163c6495e9506",
      "tree": "f09784ce425a6928c56a932101752b63b21d8f44",
      "parents": [
        "7dae71d606ded1dbc2aa9733c3d98ffac57988f2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 15 12:02:28 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 15 12:11:39 2013 -0800"
      },
      "message": "audioflinger: do not use raw pointer for tracks\n\nCommit 9da3d95 surfaced a problem caused by the use of a raw\npointer to a track in offload thread implementation.\n\nPointers to tracks should always be weak or strong pointers.\n\nBug: 11708529.\nChange-Id: Ic48632532d186c9be8261f73cefdf824b9fbbd2b\n"
    },
    {
      "commit": "561879df42b65f44b83c391d78d351e9ad4cb162",
      "tree": "919a28cf4f5c38963f82f8c1ac8c901cdcdc57e5",
      "parents": [
        "b04b25321dd323142eec7c5136c81dea3629cf14",
        "307aa87038017dff8ae1dd0262c0ff87723894d7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 14 08:49:40 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 14 08:49:40 2013 -0800"
      },
      "message": "am 307aa870: am 4215e616: Merge \"audioflinger: fix offload track transition\" into klp-dev\n\n* commit \u0027307aa87038017dff8ae1dd0262c0ff87723894d7\u0027:\n  audioflinger: fix offload track transition\n"
    },
    {
      "commit": "b04b25321dd323142eec7c5136c81dea3629cf14",
      "tree": "99596e465d2fd7d2083613360762c3baac1b25e5",
      "parents": [
        "4f3f5e01208a547e8ea6ff6442a5a33e10748162",
        "b50fa77b2cc7dadae1b8ebb591d42976879ac43c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 14 08:49:39 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 14 08:49:39 2013 -0800"
      },
      "message": "am b50fa77b: am 9f357f31: Merge \"audioflinger: fix offload resume after drain\" into klp-dev\n\n* commit \u0027b50fa77b2cc7dadae1b8ebb591d42976879ac43c\u0027:\n  audioflinger: fix offload resume after drain\n"
    },
    {
      "commit": "9da3d9573a18ffe08365557c706cf52f09118d1c",
      "tree": "c30511f753f1b49d5519ba5249316b12f33bb29a",
      "parents": [
        "1b9f9b134e732a48198e51f16424f330cbf03143"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 12 19:25:43 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 12 19:32:36 2013 -0800"
      },
      "message": "audioflinger: fix offload track transition\n\nMake sure that when transitioning from one active\noffloaded track to the next we flush DSP content\nif both tracks are not on the same audio session.\nThis happens when switching between two applications\nplaying the same type of content (e.g MP3, stereo, 44.1).\nIn this case, we reuse the same output thread because the track\nformats are compatible.\n\nBug: 11247103.\nChange-Id: I2b9031591149adeb70766da5e0d21ff2933a37e8\n"
    },
    {
      "commit": "1b9f9b134e732a48198e51f16424f330cbf03143",
      "tree": "b51c0fd76cd949c420404ce221eae0ce9fad597e",
      "parents": [
        "22990fe1ee3531e84dbadb7ff9ffd68d5bbe9060"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 12 19:10:17 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 12 19:10:17 2013 -0800"
      },
      "message": "audioflinger: fix offload resume after drain\n\nWhen pausing and resuming during the drain,\nthe drain sequence number shuold not be modified\notherwise the drain callback will be ignored.\nThis causes failure to notify end of stream to audio\nplayer and transition to next song.\n\nBug: 11247103.\nChange-Id: I2a35c5cc3fd6aa667cdd257f9e9cc8715cef5159\n"
    },
    {
      "commit": "579dd27d96497022e534e859c6ebbec675ee07aa",
      "tree": "eaf88af8813d48a52e6ff7094990a04010da228c",
      "parents": [
        "80e4b050774695b63ca82d009c7262c936fcc28f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 08 14:26:14 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 08 14:26:14 2013 -0800"
      },
      "message": "Fix build\n\nChange-Id: I1ecccada22047d9c828152a53ad68b5599ff8827\n"
    },
    {
      "commit": "8594843c15b4722ced39436fe9e64f3e57e7ace4",
      "tree": "9d8e4dcf8cf31ee119abe0872223a416e6418ec0",
      "parents": [
        "d8a1de6204829b0379bbd13042f1450bdb203f2b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 19 12:09:05 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 08 11:55:36 2013 -0800"
      },
      "message": "Pull HAL reads out of RecordThread resample\n\nPreviously, the resample was indirectly calling HAL read\nfrom within the BufferProvider\u0027s getNextBuffer.  Now the HAL\nread is done ahead of time into a circular buffer,\nand the getNextBuffer just reads out of that memory.\n\nThis change will permit some future planned features.\n\nAlso removed the mono to mono resampling optimization,\nas that optimization will no longer be valid in the future.\n\nChange-Id: I59f5016a2df91078d697c37a7dec2d9d9f44542e\n"
    },
    {
      "commit": "d8a1de6204829b0379bbd13042f1450bdb203f2b",
      "tree": "b7b513a563f76060ec82a73aa9ee9543a391b8db",
      "parents": [
        "2e70b42e2af66f4abb22a95c5d642175c007e256",
        "f551e9961a6f66d63bb57f288c4be01b00725289"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 08 19:19:00 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 08 19:19:00 2013 +0000"
      },
      "message": "Merge \"Channel counts are uint32_t\""
    },
    {
      "commit": "f551e9961a6f66d63bb57f288c4be01b00725289",
      "tree": "1253e7bc4034a35606881fe75e6c22b3a8c602cc",
      "parents": [
        "d21952fe5bc94f7bb6ee729f806c0e641fdb1a0d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 19 18:45:42 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 06 15:49:00 2013 -0800"
      },
      "message": "Channel counts are uint32_t\n\nChange-Id: I5676b6a291b72d7db6326f7eaf6d17588de51b05\n"
    },
    {
      "commit": "09faf14b434bec0d184fecec947e3d750bcc64ff",
      "tree": "a598a00077e6ed9ca33ff3bb71f3b4faae8fa315",
      "parents": [
        "d6fadf0479b489b09b764070974d8a59855ede64",
        "93e471f620454f7de73d190521568b1e25879767"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 06 23:34:09 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 06 23:34:09 2013 +0000"
      },
      "message": "Merge \"Rename standby methods\""
    },
    {
      "commit": "d6fadf0479b489b09b764070974d8a59855ede64",
      "tree": "239aa64bd7cdc0e69b1ad8e1ef85be7e09176a56",
      "parents": [
        "8f32537d028231abed103c68705bc5d07cedf919"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 30 14:37:29 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 06 14:49:46 2013 -0800"
      },
      "message": "Simplify track \u0027needs\u0027 bits\n\nUse more standard coding convention for bit masks,\nand add a FIXME about max channel count.\n\nChange-Id: I856784016703417ee480b92ae73757c472f9cf95\n"
    },
    {
      "commit": "8f32537d028231abed103c68705bc5d07cedf919",
      "tree": "17eb75d6fc15e8494cb0049df39f2e971cbb8c77",
      "parents": [
        "e25b778b11183fda65418ab2142873a030521870"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 30 14:36:47 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 06 14:47:41 2013 -0800"
      },
      "message": "Remove redundant this-\u003e\n\nChange-Id: Id783201e802b6ce294fa92f4bbe492adfb446686\n"
    },
    {
      "commit": "e25b778b11183fda65418ab2142873a030521870",
      "tree": "f7e2a2751de63187e29d0597eb0324e23a062d98",
      "parents": [
        "5c6ba3ad8eed1d59e5e2ffe6b70ced2d582a9def"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 30 14:37:10 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 06 14:43:25 2013 -0800"
      },
      "message": "Remove dead code\n\nChange-Id: Ide9196aa348cd3846b5c71d51fe6538f38ea8dc2\n"
    },
    {
      "commit": "5c6ba3ad8eed1d59e5e2ffe6b70ced2d582a9def",
      "tree": "aef0e90aea00a9891fbb8c47d153098581142258",
      "parents": [
        "5307612c3f1164bea523f5e90300d3a8b8afd093",
        "49c34acbef91800930b0fe561e0787145a10cfcc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 06 22:06:58 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 06 22:06:58 2013 +0000"
      },
      "message": "Merge \"Fix race condition in initializing downmix\""
    },
    {
      "commit": "49c34acbef91800930b0fe561e0787145a10cfcc",
      "tree": "53e636df1a5868bbea112ec3bd36e19862208adf",
      "parents": [
        "d21952fe5bc94f7bb6ee729f806c0e641fdb1a0d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 30 14:37:01 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Nov 06 18:05:09 2013 +0000"
      },
      "message": "Fix race condition in initializing downmix\n\nThe code that initializes downmix GUID searches for an effect of\nthe right type.  If two or more AudioMixers are created, there is a\npossibility that the GUID will temporarily have the wrong value.\n\nNow the initialization is only done once, regardless of how many\nAudioMixers there are.\n\nOther minor changes:\n - use naming convention of leading \u0027s\u0027 for static member variables\n - log message for no downmix effect is now a warning instead of an error,\n   since it is not an error until there is actual content to downmix\n   without a downmix effect\n\nChange-Id: I33ab0e51cf9d24ecaf8ae868883736b0772178c4\n"
    },
    {
      "commit": "0699ed950b307663e0f7e01aecdfb505e62df7d6",
      "tree": "2d6ac287cdd321afe7f2fdd8d4fc9f8c55101f12",
      "parents": [
        "44f412a81dcca8f7149d483eeeee9057ad0101cf",
        "b91aa63779ad1ce1846fbc604f9ec935e0c67852"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 06 17:51:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 06 17:51:46 2013 +0000"
      },
      "message": "Merge \"Move local declarations to point of first use\""
    },
    {
      "commit": "44f412a81dcca8f7149d483eeeee9057ad0101cf",
      "tree": "029f381c2185dc354032859e9f3b03cdcda57a9f",
      "parents": [
        "7bb88779cdc1a1fe1445d6d1691fb7daac932e74",
        "44dc91554521eaab478674a7f812cb8a4fa4f809"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 06 09:46:53 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 06 09:46:53 2013 -0800"
      },
      "message": "am 44dc9155: am 48b6cd98: Merge \"audioflinger: fix direct output underrun\" into klp-dev\n\n* commit \u002744dc91554521eaab478674a7f812cb8a4fa4f809\u0027:\n  audioflinger: fix direct output underrun\n"
    },
    {
      "commit": "7bb88779cdc1a1fe1445d6d1691fb7daac932e74",
      "tree": "310ce2ff066a39fcb1d0ac72d480d8b48aef3275",
      "parents": [
        "1b3ec0f33cbdcac5e148c23abc5bc4f68d780ed4",
        "e6f35b13567d920af19f0b8dc35f9120b7cf1dc9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 06 17:38:02 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 06 17:38:02 2013 +0000"
      },
      "message": "Merge \"Rename TrackPaused to trackPaused\""
    },
    {
      "commit": "1b3ec0f33cbdcac5e148c23abc5bc4f68d780ed4",
      "tree": "de7124828b0dbd622cf58756508b0d2eb8163316",
      "parents": [
        "65f498e9f5de65135ae1954eca53de81817c8d6c",
        "b2737d0b33c17e408d96d6f9eeaa3381479c94c7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 06 17:13:15 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 06 17:13:16 2013 +0000"
      },
      "message": "Merge \"Use const more places\""
    },
    {
      "commit": "a23f17ac334ff20a11ee63dd177cb1080e44c483",
      "tree": "e15dc095de74afc97fc509aa855cedf010df6c1e",
      "parents": [
        "5c7ffaed6f04b844c2e4e2024bfb0203ac2233dd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 05 18:22:08 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 05 18:22:08 2013 -0800"
      },
      "message": "audioflinger: fix direct output underrun\n\nUnderruns on tracks handled by a direct or offloaded\nthreads were not properly reported to the applications\ncausing a failure to automatically recover.\n\nBug: 11535001.\nChange-Id: I7a8696b4d646f78b16710addfe7c108d0dd0038d\n"
    },
    {
      "commit": "93e471f620454f7de73d190521568b1e25879767",
      "tree": "42b6c50f27f85233ba0967619ce8a6eeebe11f3f",
      "parents": [
        "d21952fe5bc94f7bb6ee729f806c0e641fdb1a0d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 19 08:40:07 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 04 15:48:55 2013 -0800"
      },
      "message": "Rename standby methods\n\nThreadBase::standby() returns the value of mStandby.\n\nRecordThread::standby() \"overrode\" ThreadBase::standby(), but with a\ndifferent meaning and no return value.  This meant you couldn\u0027t\naccess the parent\u0027s class definition within RecordThread.\n\nThis could be confusing, so this CL renames RecordThread::standby()\nto standbyIfNotAlreadyInStandby().\n\nChange-Id: I9196ee12701dd2dccdfaed922af2d7b8e8774676\n"
    },
    {
      "commit": "b91aa63779ad1ce1846fbc604f9ec935e0c67852",
      "tree": "fbb8b1e0094a2399446ce36b686ff4531595bb06",
      "parents": [
        "d21952fe5bc94f7bb6ee729f806c0e641fdb1a0d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 19 08:40:21 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 04 15:34:23 2013 -0800"
      },
      "message": "Move local declarations to point of first use\n\nChange-Id: I8a078386e371caab5174fc07b47f48fb9f21609a\n"
    },
    {
      "commit": "e6f35b13567d920af19f0b8dc35f9120b7cf1dc9",
      "tree": "f70cbfa9c6334248416bae35886cb2cd7fdc2671",
      "parents": [
        "d21952fe5bc94f7bb6ee729f806c0e641fdb1a0d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 19 09:58:50 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 04 15:33:10 2013 -0800"
      },
      "message": "Rename TrackPaused to trackPaused\n\nChange-Id: I3b38e0c9a6bbb6e18cb5b1f72670139a3071cb8f\n"
    },
    {
      "commit": "b2737d0b33c17e408d96d6f9eeaa3381479c94c7",
      "tree": "212bbe5b52e7c83fad26315c5451e32c0043eecb",
      "parents": [
        "d21952fe5bc94f7bb6ee729f806c0e641fdb1a0d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 19 12:03:11 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 04 15:27:12 2013 -0800"
      },
      "message": "Use const more places\n\nChange-Id: Ibc068d319d6fff26f2d11248e17481d8f7f027e0\n"
    },
    {
      "commit": "1c7258b3c34b5656de92d845f6366a0f3ac1e0c6",
      "tree": "901ca137c788d55098e9bed21772ad4f225e0636",
      "parents": [
        "774eb18c40c3a7da0bc1636a9779f02315ddbad8",
        "4cf799fbbb74de102d34ccb014ba7fbd9bfa5e14"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 31 15:39:14 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 31 15:39:14 2013 -0700"
      },
      "message": "am 4cf799fb: am 5c7ffaed: Merge \"AudioFlinger: fix duplicating thread standby.\" into klp-dev\n\n* commit \u00274cf799fbbb74de102d34ccb014ba7fbd9bfa5e14\u0027:\n  AudioFlinger: fix duplicating thread standby.\n"
    },
    {
      "commit": "5c7ffaed6f04b844c2e4e2024bfb0203ac2233dd",
      "tree": "71dac4a8045e2c0eca9dfbd341936f731ffa0a9b",
      "parents": [
        "3ff5792adfdbf67662a5f8064315a55690d53944",
        "2c3740f01acca69c3e0bcc5e01bb0edc51b6777f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 31 22:29:50 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 31 22:29:50 2013 +0000"
      },
      "message": "Merge \"AudioFlinger: fix duplicating thread standby.\" into klp-dev"
    },
    {
      "commit": "2c3740f01acca69c3e0bcc5e01bb0edc51b6777f",
      "tree": "fafcc00b076ae05c67b4cd0d3cd7de406b418c09",
      "parents": [
        "fd4779740ec3e9e865d5514464df26d015354388"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 30 16:57:06 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 30 16:57:06 2013 -0700"
      },
      "message": "AudioFlinger: fix duplicating thread standby.\n\nCommit fd47797 fixing issue 11247103 introduced a regression\nwhere the duplicating thread does not exit standby state as\nexpected. This in turn prevents the tracks sending audio to\nother threads to complete their activity cycle normally.\n\nThe fix conists in clearing mStandby state also in the specialized\nthreadLoop_write() method of DuplicatingThread subclass.\n\nBug: 11451415.\nChange-Id: Ie8a92c819a56a2834ea25fa70a8b7b2125721775\n"
    },
    {
      "commit": "1fc6cb5be26734938b3999e6bf4ce0e625e7d284",
      "tree": "ceca20e265134ebd5158b56d9341301ffd4242cc",
      "parents": [
        "d21952fe5bc94f7bb6ee729f806c0e641fdb1a0d",
        "ce275b7dd20e3d4781a46126c753e6eb998e6c0f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Oct 29 18:20:38 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 29 18:20:38 2013 -0700"
      },
      "message": "am ce275b7d: am 1c594b63: Merge \"audioflinger: enable effects after registration if needed\" into klp-dev\n\n* commit \u0027ce275b7dd20e3d4781a46126c753e6eb998e6c0f\u0027:\n  audioflinger: enable effects after registration if needed\n"
    },
    {
      "commit": "1c594b637df26499ce1dae2db34f2b3290efd838",
      "tree": "0d231e939a18d3f28f1e19658a7b7ed2e61ed1fb",
      "parents": [
        "fd4779740ec3e9e865d5514464df26d015354388",
        "d72b7c0180ee83fc3754629ed68fc5887a125c4c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 30 01:13:52 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 30 01:13:52 2013 +0000"
      },
      "message": "Merge \"audioflinger: enable effects after registration if needed\" into klp-dev"
    },
    {
      "commit": "d21952fe5bc94f7bb6ee729f806c0e641fdb1a0d",
      "tree": "cc3ae62392a01c054b61af9ef606245854090394",
      "parents": [
        "1dfca7775f0b8352a0fd6cfed1e70075e5fa4e75",
        "7f8f758506a95d6fe5c0e52aa7b5ef82fb18861a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Oct 28 17:18:53 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 28 17:18:53 2013 -0700"
      },
      "message": "am 7f8f7585: am fd477974: AudioFlinger: more fixes for offload audio lost\n\n* commit \u00277f8f758506a95d6fe5c0e52aa7b5ef82fb18861a\u0027:\n  AudioFlinger: more fixes for offload audio lost\n"
    },
    {
      "commit": "fd4779740ec3e9e865d5514464df26d015354388",
      "tree": "11e6523dd9d2d04b6e0d3ea742968c6988646e2c",
      "parents": [
        "9cae217050aa1347d4ac5053c305754879e3f97f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 25 18:10:40 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Oct 28 14:17:22 2013 -0700"
      },
      "message": "AudioFlinger: more fixes for offload audio lost\n\nmStandby being false was not a reliable indication that\nsomething had been written to audio HAL.\n\nConsidering the last track in mActiveTracks vector as the\nlatest activated track was wrong as this is a SortedVector.\n\nBug: 11247103.\nChange-Id: I397d011c5afcdd779def3fe25aaae7669a472cfc\n"
    },
    {
      "commit": "9cae217050aa1347d4ac5053c305754879e3f97f",
      "tree": "dff82f277cba8f34af39eaeeb00adec01bbda26c",
      "parents": [
        "be567be3f92026f5964c1c9ecce00e30bb7df412"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jan 14 14:12:05 2013 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Oct 25 14:06:03 2013 -0700"
      },
      "message": "Assign blame for playback wakelocks.\n\nSet a work source for the playback wakelock, so that playback is\ncounted against the requesting app instead of the media server.\n\nCherrypicked from master.\n\nb/9464621\n\nChange-Id: I7329f88a288a95a582a78005a1c3d16a5a611e31\n"
    },
    {
      "commit": "462fd2fa9eef642b0574aa7409de0bde3fec8d43",
      "tree": "65446a138d197f062bf199480b96cca4df560fcf",
      "parents": [
        "f7d89bd79d170be3b299717ac11aff62909314c5"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jan 14 14:12:05 2013 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Oct 25 11:13:17 2013 -0700"
      },
      "message": "Assign blame for playback wakelocks.\n\nSet a work source for the playback wakelock, so that playback is\ncounted against the requesting app instead of the media server.\n\nChange-Id: I7329f88a288a95a582a78005a1c3d16a5a611e31\n"
    },
    {
      "commit": "a153b68f2260a8ed7fbb236fa659b13264ac5ac0",
      "tree": "fde0bd5a83da59bde7dc9b146a8a8af48d911adc",
      "parents": [
        "6a7327f110b86613e6e8c7de105c49803acacc1d",
        "77177fa20773d02b4f9c4147ecb98107f019fa7d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 18 15:09:03 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 18 15:09:03 2013 -0700"
      },
      "message": "am 77177fa2: am 95c03858: Merge \"Allow releaseBuffer after flush\" into klp-dev\n\n* commit \u002777177fa20773d02b4f9c4147ecb98107f019fa7d\u0027:\n  Allow releaseBuffer after flush\n"
    },
    {
      "commit": "95c03858e2ab4fb693a2bfe47b3caa806e43c044",
      "tree": "f872e4b7570cf2f431cca474e47d9d10c6cbed66",
      "parents": [
        "6a51d7ed7062536ccc892c8850a34ed55cbc8d5c",
        "2e422c472c91aa7912befd0fc038d1e11f354bc1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 18 22:02:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 18 22:02:47 2013 +0000"
      },
      "message": "Merge \"Allow releaseBuffer after flush\" into klp-dev"
    },
    {
      "commit": "2e422c472c91aa7912befd0fc038d1e11f354bc1",
      "tree": "7583e04f353f9cadf5081fafdcb8042450e3c85c",
      "parents": [
        "dedc7b0fa23c21b525dc8abb572bb8161ad66a9b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 18 13:00:29 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 18 13:53:41 2013 -0700"
      },
      "message": "Allow releaseBuffer after flush\n\nAfter AudioTrack start checks for pending flush,\nallow releaseBuffer on any previously obtained buffer.\nFor example, this can happen if the resampler has obtained\na buffer but not released the whole buffer yet.\nNote that the resampler will be reading obsolete data.\n\nBug: 11285590\nChange-Id: I0614fbb62e43604aac3089cce4b7797c87a306b5\n"
    },
    {
      "commit": "6a7327f110b86613e6e8c7de105c49803acacc1d",
      "tree": "d1d175d63235d698e88ab4b3e24881b5654b70cf",
      "parents": [
        "9138d32050411c04cc45c25094352cf8b6e01df9",
        "6edd8ca5b7e3d169db4314d2b994bc9d48e9e082"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 18 13:03:34 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 18 13:03:34 2013 -0700"
      },
      "message": "am 6edd8ca5: am 6a51d7ed: audioflinger: fix track terminated before playing\n\n* commit \u00276edd8ca5b7e3d169db4314d2b994bc9d48e9e082\u0027:\n  audioflinger: fix track terminated before playing\n"
    },
    {
      "commit": "6a51d7ed7062536ccc892c8850a34ed55cbc8d5c",
      "tree": "95746546a67c27a04a0e5bd82f9760d80ad5f0d9",
      "parents": [
        "dedc7b0fa23c21b525dc8abb572bb8161ad66a9b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 17 18:59:26 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 17 18:59:26 2013 -0700"
      },
      "message": "audioflinger: fix track terminated before playing\n\nWhen a track is terminated before any audio was written,\nwe should not send a drain request to the HAL. The drain\nwill be ignored and we will wait the async callback for ever.\n\nAlso fix a potential deadlock by not deleting a track with the\nthread mutex held: mPreviousTrack changed from a sp to a raw pointer.\n\nBug: 11247103.\nChange-Id: I0a4b47b099204c7c326d45d700234ab8f72d8eae\n"
    },
    {
      "commit": "9138d32050411c04cc45c25094352cf8b6e01df9",
      "tree": "47baaae0e9ea8f737c8ce1af5a52e3872432df70",
      "parents": [
        "653edc77815c76769b6ac1871add6f47a95d1dc5",
        "e45796dee9c072cdb13a00b407e68be2cd55e2f2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 17 16:23:39 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 17 16:23:39 2013 -0700"
      },
      "message": "am e45796de: am dedc7b0f: Merge \"Fix flush() followed by start()\" into klp-dev\n\n* commit \u0027e45796dee9c072cdb13a00b407e68be2cd55e2f2\u0027:\n  Fix flush() followed by start()\n"
    },
    {
      "commit": "12022ff8d223ccf4dfae019c81e4a93a3f44985c",
      "tree": "ba799e32b0699249e7fb8e6f5d6fa4120b978d67",
      "parents": [
        "f8f15b05fe051009945c9042a1a9260280e0feb2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 17 11:32:39 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 17 11:33:31 2013 -0700"
      },
      "message": "Fix flush() followed by start()\n\nBug: 11259166\nChange-Id: I72526cdfd4e3ff4b06e6a317e577f57cc285205d\n"
    },
    {
      "commit": "3278eed31fcf82045ac00dcd549dda5270c88971",
      "tree": "b5a5423ca7a4464afb8f4182dc22b72dcb7c1917",
      "parents": [
        "d5ce2091c7e11c4d869f11f22d8a38a1aedcf3ad",
        "8580679e1780617d978d28a43e932314b86608ce"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Oct 15 05:05:01 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 15 05:05:01 2013 -0700"
      },
      "message": "am 8580679e: am 014e7fa2: Make Audio wakelock names less unique.\n\n* commit \u00278580679e1780617d978d28a43e932314b86608ce\u0027:\n  Make Audio wakelock names less unique.\n"
    },
    {
      "commit": "014e7fa2e90827d911c37bb0ce4d2e10e14d0bb3",
      "tree": "1eebc29942794f1688fde67b9056803b8194355a",
      "parents": [
        "b3cb72a17d9a472883e9e2faa18b42eac533fe99"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Oct 14 15:03:38 2013 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Oct 14 17:29:57 2013 +0100"
      },
      "message": "Make Audio wakelock names less unique.\n\nThese wakelocks now show up in the client process, where they\nmight cause wakelock overflows if AudioFlinger threads die often.\n\nThe client process should be agnostic of audio flinger threading,\nso don\u0027t make the wakelock names rely on audioflinger thread names.\n\nWakelock names now depend only on the audio flinger thread type, and\nnot the ID itself.\n\nbug: 11200551\n\nChange-Id: Ia1f71b569cb7502d617b77596abc245f461a6ec0\n"
    },
    {
      "commit": "d72b7c0180ee83fc3754629ed68fc5887a125c4c",
      "tree": "9c6bef31eaca96d7420a65fcdd2438666c5668dd",
      "parents": [
        "15ad2470b2f2ac34473eb568b606ad75e8e63ac6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Oct 12 16:17:46 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Oct 12 16:37:00 2013 -0700"
      },
      "message": "audioflinger: enable effects after registration if needed\n\nThis fixes a bug where effects were not properly reenabled after\nbeing moved from one playback thread to another. The effect\nis enabled but the audio policy manager sees it as disabled.\n\nBug: 11181933.\nChange-Id: I19cac7acbaf61c546e667fd85ed7d4eda1c716d8\n"
    },
    {
      "commit": "35295078ab59c8c5d143a54d5a55557c3ca62c51",
      "tree": "ebe936c19f0de4024fa1982fcd286a803bc3b951",
      "parents": [
        "61f58c0c8d02970ea6d94ff816c54bf606f755b7",
        "9a7d11f07dc19327892915f0bfecce758d2f4098"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Oct 07 09:27:06 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Oct 07 09:31:15 2013 -0700"
      },
      "message": "resolved conflicts for merge of 9a7d11f0 to master\n\nChange-Id: Ie4d101185a93d37ec280f608813ad62a077a584e\n"
    },
    {
      "commit": "fee4ce338d78eeb58af1f66831ead53322d3859e",
      "tree": "f90931a7c5c4628b0e8e47976d68a9d586802b53",
      "parents": [
        "ea0fadeb5d81ef3cb7f9db458c9033d628bdb86a",
        "e93cf2ca27ae6f4a81d4ef548bbf10a34db6d98f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Oct 07 16:16:06 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 07 16:16:06 2013 +0000"
      },
      "message": "Merge \"Cleanup openRecord error handling\" into klp-dev"
    },
    {
      "commit": "61f58c0c8d02970ea6d94ff816c54bf606f755b7",
      "tree": "d18ab1a7d9ca3261b715c3b57b47dea2609f8ccf",
      "parents": [
        "1c7feca9cc3e408dfeb632e7060cf31e5015227e",
        "c22a1a495c26b8a36fa15233cc136cb6ce6d6bea"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 04 18:01:25 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 04 18:01:25 2013 -0700"
      },
      "message": "am c22a1a49: am ea0fadeb: audioflinger: offload: fix pause/flush/resume\n\n* commit \u0027c22a1a495c26b8a36fa15233cc136cb6ce6d6bea\u0027:\n  audioflinger: offload: fix pause/flush/resume\n"
    },
    {
      "commit": "ea0fadeb5d81ef3cb7f9db458c9033d628bdb86a",
      "tree": "1650f71cf339cd9d561377e239e2a12f7b08cffc",
      "parents": [
        "026c5b07fefd36e0e2dd7035c2898d0e28596d0f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 04 16:23:48 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 04 16:37:07 2013 -0700"
      },
      "message": "audioflinger: offload: fix pause/flush/resume\n\nIf a pause/flush/resume sequence is fast enough, resume is received while\nwe are still in PAUSING state in which case it is a NOP. If this happens,\nflush is still forwarded to the audio HAL but is not preceeded by a pause\nwhich can cause problems to the audio DSP.\nIt is necessary to preserve the flush as this sequence is typical to a seek.\n\nThe fix consists in forcing a pause/resume when a flush request must be\nexecuted and the audio HAL has not been paused previously.\n\nBug: 11081559.\nChange-Id: Ib84ed26d503a61c05933b923ec556b10cedfe140\n"
    },
    {
      "commit": "1c7feca9cc3e408dfeb632e7060cf31e5015227e",
      "tree": "be699837f659d5736a37190b28c7658e65959bf8",
      "parents": [
        "140f08fea6a4ad97fa8446498c713412ac734b79",
        "6c48a01188746202164f8e10d63ff3775dfcf727"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 04 13:40:30 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 04 13:40:30 2013 -0700"
      },
      "message": "am 6c48a011: am 026c5b07: Merge \"audioflinger: fix wake lock acquisition check\" into klp-dev\n\n* commit \u00276c48a01188746202164f8e10d63ff3775dfcf727\u0027:\n  audioflinger: fix wake lock acquisition check\n"
    },
    {
      "commit": "547789d25dc6bd6561553bcf6b384fb0d4fee834",
      "tree": "767ae4b24b4fc71cc547cfa16898f5299d26a6cc",
      "parents": [
        "7bab024867996bec6dc4e3e31ed4570da9afbc25"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 04 11:46:55 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 04 11:46:55 2013 -0700"
      },
      "message": "audioflinger: fix wake lock acquisition check\n\nCommit e14a5d6 introduced a bug in ThreadBase::acquireWakeLock() where\nthe wake lock acquisition return code is not initialized before\nbeing checked causing the wake lock token to be sometines not set\nand potential failure to release the wake lock later.\n\nBug: 10985160.\nChange-Id: Iffd40e773ae3bcfec3c148a844d5dbebbf474eaf\n"
    },
    {
      "commit": "5918e0cb64200f64632595f7aea6062c65d43353",
      "tree": "510acab52ad88f9772fd072235993a01f8332023",
      "parents": [
        "02627597fc4951e16b9002601e4cf3b1cc234c4b",
        "b5677882cf9a34bd3f2daf76d10951282ea9b083"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Oct 04 11:08:26 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 04 11:08:26 2013 -0700"
      },
      "message": "am b5677882: am 8097068d: Merge \"Better recording wake lock accounting\" into klp-dev\n\n* commit \u0027b5677882cf9a34bd3f2daf76d10951282ea9b083\u0027:\n  Better recording wake lock accounting\n"
    },
    {
      "commit": "8097068de97c0cdab8150931f290edbd5b3721e5",
      "tree": "953f68c84ab80ca4f899e88081768d81dd31c93e",
      "parents": [
        "580ed263a6ea6c766f9f715e101340c7fe26ab75",
        "e14a5d6d2cc91dd2fc09ffdf7aa670b37da0795d"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Oct 03 21:15:05 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 03 21:15:05 2013 +0000"
      },
      "message": "Merge \"Better recording wake lock accounting\" into klp-dev"
    },
    {
      "commit": "e14a5d6d2cc91dd2fc09ffdf7aa670b37da0795d",
      "tree": "ab8d3ea087c653c632068af36e443c5c3609cfe4",
      "parents": [
        "3d97e23fcd78f752443cb6c30a1ee39f49f1f987"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Oct 03 08:51:24 2013 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Oct 03 13:54:53 2013 -0700"
      },
      "message": "Better recording wake lock accounting\n\nCount wake lock use against the app that initiated the recording,\nnot against the media server.\n\nb/10985160\n\nChange-Id: Iae6e6c030b7f1c6081d9c79725d6990f60dadaaa\n"
    },
    {
      "commit": "34717c83733def81287e2b4ba2f62b416325c7ae",
      "tree": "bdc06557b16690a491298f6a73653bae249a6c84",
      "parents": [
        "cff0d41463dfa0bcb33805794f1341d029e86f04",
        "3424d6e17637e0743ddf3bf4688af8ee36e69264"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Oct 01 20:58:58 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 01 20:58:58 2013 -0700"
      },
      "message": "am 3424d6e1: am 1adf20ce: Merge \"fix volume and effect enable delay on offloaded tracks\" into klp-dev\n\n* commit \u00273424d6e17637e0743ddf3bf4688af8ee36e69264\u0027:\n  fix volume and effect enable delay on offloaded tracks\n"
    },
    {
      "commit": "98232ab7c20bfbdfe176d2c25bb810dbb5e7b4f1",
      "tree": "1c7a424cd5c6592a4253cb8b9f9779e193d61262",
      "parents": [
        "a6c7d98033c161592a062c61eaa6b7fd635e3006",
        "a2340b3059b9d6e4286d0db7069df477c164df0c"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Sep 30 14:13:39 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 30 14:13:39 2013 -0700"
      },
      "message": "am a2340b30: Merge \"Don\\\u0027t call audio effect process on offloaded playback threads\" into klp-dev\n\n* commit \u0027a2340b3059b9d6e4286d0db7069df477c164df0c\u0027:\n  Don\u0027t call audio effect process on offloaded playback threads\n"
    },
    {
      "commit": "a6c7d98033c161592a062c61eaa6b7fd635e3006",
      "tree": "ac0e06b5c5da9daad30aef9de4ff25dac7478c79",
      "parents": [
        "aceceea5e0d5772353e6049f51cc29084b76ead1",
        "0adc67dfc5cedb211c36f06849681a60a32f5805"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 30 14:12:28 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 30 14:12:28 2013 -0700"
      },
      "message": "am 0adc67df: Merge \"audioflinger: fix crash when starting offload thread\" into klp-dev\n\n* commit \u00270adc67dfc5cedb211c36f06849681a60a32f5805\u0027:\n  audioflinger: fix crash when starting offload thread\n"
    },
    {
      "commit": "59fe010bcc072597852454a2ec53d7b0a2002a3b",
      "tree": "b6b42e04a89ead77c9ecd9635a328686a8bb9863",
      "parents": [
        "5d6d86a4d102704f49b9235eaf282c428d7100b6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 18:48:26 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 30 12:05:38 2013 -0700"
      },
      "message": "fix volume and effect enable delay on offloaded tracks\n\nVolume: add a method to wake up the mediaserver playback\nthread when a volume command is received on an offloaded track.\n\nEffects: call effect chain process on offloaded playback threads\nasynchronously from writes to allow effect state updates while\nwaiting for async write callback.\n\nBug: 10796540.\n\nChange-Id: Id2747ae88783575d1d7ffd6fc86fbd054ab2c739\n"
    },
    {
      "commit": "a2340b3059b9d6e4286d0db7069df477c164df0c",
      "tree": "4e14bcf9309bda5e444479b0e45a0c24c3e98a54",
      "parents": [
        "0adc67dfc5cedb211c36f06849681a60a32f5805",
        "fed6292af65a0b97b583ecbd3c232b3811a3f37b"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Sep 27 00:50:59 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 27 00:50:59 2013 +0000"
      },
      "message": "Merge \"Don\u0027t call audio effect process on offloaded playback threads\" into klp-dev"
    },
    {
      "commit": "4de95592980dba88a35b3dc8f3fd045588387a4f",
      "tree": "e871e1ad9318cdd21fe82eb6f44f687f366d1c60",
      "parents": [
        "1802399c7c4d8557922688f246df292703f417f1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 26 15:28:21 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 26 15:56:43 2013 -0700"
      },
      "message": "audioflinger: fix crash when starting offload thread\n\nPassing a sp to parent thread to AsyncCallbackThread() constructor\ncauses a strong reference to be acquired on the OffloadThread inside\nits constructor which causes an early launch of the thread loop\nwith unpredictable consequences.\n\nPass a wp to parent thread instead.\n\nAlso move the creation of the AsyncCallbackThread to\nreadOutputParameters() where mUseAsyncWrite is initialized which\nmakes more sense.\n\nAlso change the type of AsyncCallbackThread parent thread to PlaybackThread\ninstead of OffloadThread to allow a broder use of non blocking write which\nin theory is not limited to audio offload use case.\n\nBug: 8174034.\nChange-Id: I4b093b022030cd4f5eb8b8e477333e91098a6549\n"
    },
    {
      "commit": "fed6292af65a0b97b583ecbd3c232b3811a3f37b",
      "tree": "24d1dc7750659a108dd48ec46ba89a9a49bd019d",
      "parents": [
        "d2ac3144e201398340cc5b9bb36e5efe39edd9eb"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Sep 25 18:50:33 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Sep 26 11:43:58 2013 -0700"
      },
      "message": "Don\u0027t call audio effect process on offloaded playback threads\n\nAn audio effect process command is not meant to be called for\n playback threads belonging to offloaded playback.\n\nBug 10933817\n\nChange-Id: Idc7b6a0224791bbf8d61648474d3c288617c498f\n"
    },
    {
      "commit": "62dbe93f7743061e97fc3299386a2f887ca748cf",
      "tree": "178fc59b511fbcb940276a0b1470adffbf6012b8",
      "parents": [
        "34a8e85cbf5fc713af3bed9eb08212b477f4b03e",
        "4e141a4f1303767f70ea983925ec01b034fe667b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 25 13:10:30 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 25 13:10:30 2013 -0700"
      },
      "message": "am 4e141a4f: am 1802399c: Merge \"fix deadlock in audioflinger::createEffect()\" into klp-dev\n\n* commit \u00274e141a4f1303767f70ea983925ec01b034fe667b\u0027:\n  fix deadlock in audioflinger::createEffect()\n"
    },
    {
      "commit": "eb3c337a3d6c74ec857dfc8be7eeafe634614bcd",
      "tree": "7ade01c31e70ffeadf88fc60b2144faa47f9c49f",
      "parents": [
        "d2ac3144e201398340cc5b9bb36e5efe39edd9eb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 25 12:25:29 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 25 12:44:00 2013 -0700"
      },
      "message": "fix deadlock in audioflinger::createEffect()\n\ncommit 5baf2af5 introduced a regression by calling\ngetOutputForEffect() with AudioFLinger main mutex locked.\nThe locking order must always be AudioPolicyService mutex then\nAudioFlinger then ThreadBase mutex.\n\nBug: 10916796.\nChange-Id: Ide34a2d84dbb06dbb35abd0640d91b01b0ac4d40\n"
    },
    {
      "commit": "e93cf2ca27ae6f4a81d4ef548bbf10a34db6d98f",
      "tree": "4de6f04ad4abc14bb0e777bcb02863196c59e34b",
      "parents": [
        "402dfba6dcd68f5fd8d8921f9751f3e47eb1449d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 24 11:52:37 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 24 12:12:47 2013 -0700"
      },
      "message": "Cleanup openRecord error handling\n\nBug: 10888816\nChange-Id: I84897dd7d30b370640b54e928f230604b873cb68\n"
    },
    {
      "commit": "c0dab528e8c63abce2022a391dface95c3ef67e5",
      "tree": "8cadce591f163293d82528c26185e5b250abb8d9",
      "parents": [
        "20fb283150ddbcf362c764d7b822f54e5bcdd457",
        "a57e2ab58a17d3da35593a6c85f65e19249e9ebc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 24 10:57:16 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 24 10:57:16 2013 -0700"
      },
      "message": "am a57e2ab5: am 664539d2: audioflinger: fix ro.audio.silent in offload again\n\n* commit \u0027a57e2ab58a17d3da35593a6c85f65e19249e9ebc\u0027:\n  audioflinger: fix ro.audio.silent in offload again\n"
    },
    {
      "commit": "79360ad49d6f84d9e99a08d225a642d65079d740",
      "tree": "e2ba4f856cc301a208a9edc728647a0911d12be7",
      "parents": [
        "a7868f92ec1a8ae2f7d68d435d971761a9b93150",
        "3f1d3b97f723cf39fe6bde9efd0a3fc9e78028a5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 24 10:25:34 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 24 10:25:34 2013 -0700"
      },
      "message": "am 3f1d3b97: am 21e54568: fix incoming call audio start time.\n\n* commit \u00273f1d3b97f723cf39fe6bde9efd0a3fc9e78028a5\u0027:\n  fix incoming call audio start time.\n"
    },
    {
      "commit": "664539d25180ab8f77e0521533ea2821cf28985f",
      "tree": "19b1c2a62d44ac7199249825aec131c70f6801ca",
      "parents": [
        "402dfba6dcd68f5fd8d8921f9751f3e47eb1449d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 23 18:24:31 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 23 18:33:25 2013 -0700"
      },
      "message": "audioflinger: fix ro.audio.silent in offload again\n\nCommit 1abbdb4 was not working 100% of the times because\nit is possible that the offload thread loop never sleeps\nafter being created in which case the property is never read.\n\nThe loop now reads the property once when starting.\n\nBug: 10899309.\nChange-Id: I2e2ca332f2d7086e59d65f6010378c4d9618ba9e\n"
    },
    {
      "commit": "21e5456821e3c107d09b0629adbf23c9e06e7c0b",
      "tree": "c2eef1ee9d591a96e88922b5061a861d8596c802",
      "parents": [
        "4b701cc041d635e5ec56e382043a4c5d01aedd80"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 23 12:08:05 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 23 12:38:11 2013 -0700"
      },
      "message": "fix incoming call audio start time.\n\ncommit cec4abb fixing issue 6720482 had a flaw that\nwould insert commmands at the wrong position in the\naudio policy service command thread queue causing other\ncommands to be delayed more than expected.\n\nA change in track stop timing introduced by commit bfb1b83\nmade this issue visible when answering a call.\n\nBug: 10860012.\nChange-Id: Iec769112f14e13d13b64628b808e43663e33771c\n"
    },
    {
      "commit": "0230a2a8a413076a138db4c4e1dea018104fd5e2",
      "tree": "1d78509ed7b005fe0bc3a998c8eda13a93f65876",
      "parents": [
        "d2b80a1fb90cb4dc3f569e716af0279c1e1ea72d",
        "c6bed216e3a759a855ac4b9b743fbaed2d5929c1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 20 11:22:17 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 20 11:22:17 2013 -0700"
      },
      "message": "am c6bed216: am a3b97ad2: Merge \"audioflinger: implement getTimestamp() for offloaded tracks\" into klp-dev\n\n* commit \u0027c6bed216e3a759a855ac4b9b743fbaed2d5929c1\u0027:\n  audioflinger: implement getTimestamp() for offloaded tracks\n"
    },
    {
      "commit": "d2b80a1fb90cb4dc3f569e716af0279c1e1ea72d",
      "tree": "9094262e799f5ff66acd45a0bae59a7de863349c",
      "parents": [
        "bd1be321f7d3626305c1c6d0b006768b5130fedd",
        "ce3e7cb0bd09e7861d417b7d45c1e5921f10a93f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 20 11:20:56 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 20 11:20:56 2013 -0700"
      },
      "message": "am ce3e7cb0: am fbb2609f: Merge \"audioflinger: fix lost offload thread resume event\" into klp-dev\n\n* commit \u0027ce3e7cb0bd09e7861d417b7d45c1e5921f10a93f\u0027:\n  audioflinger: fix lost offload thread resume event\n"
    },
    {
      "commit": "a3b97ad288e6808c54c6275eaac1bd53108d8f11",
      "tree": "eb4ee28ecd01cf4a4548004e8a2d9154ce0f2c73",
      "parents": [
        "fbb2609f132f23a983d376dec9ae6bfebfcacc4c",
        "accc147666bfd37fc8b4ef745f18a8c751555ec2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 20 16:56:33 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 20 16:56:34 2013 +0000"
      },
      "message": "Merge \"audioflinger: implement getTimestamp() for offloaded tracks\" into klp-dev"
    },
    {
      "commit": "accc147666bfd37fc8b4ef745f18a8c751555ec2",
      "tree": "a091aa566ed09e8efe881a16e3806ee4169de3f0",
      "parents": [
        "5baf2af52cd186633b7173196c1e4a4cd3435f22"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 20 09:36:34 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 20 09:36:34 2013 -0700"
      },
      "message": "audioflinger: implement getTimestamp() for offloaded tracks\n\nBug: 9587132.\nChange-Id: Ie9d5f4cca96306d08bc9a2dbd6edd8953096702d\n"
    },
    {
      "commit": "fbb2609f132f23a983d376dec9ae6bfebfcacc4c",
      "tree": "df445957b7af9020660a3e4ee927807578dac685",
      "parents": [
        "cfca686ae8e64bda44a370232f3ba367e6e520d1",
        "ede6c3b8b1147bc425f7b923882f559a513fe23b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 20 00:48:39 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 20 00:48:39 2013 +0000"
      },
      "message": "Merge \"audioflinger: fix lost offload thread resume event\" into klp-dev"
    },
    {
      "commit": "ede6c3b8b1147bc425f7b923882f559a513fe23b",
      "tree": "ac3986f0521aa4a5af705299ab423ec9d5e98bfa",
      "parents": [
        "5baf2af52cd186633b7173196c1e4a4cd3435f22"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 19 14:37:46 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 19 15:53:20 2013 -0700"
      },
      "message": "audioflinger: fix lost offload thread resume event\n\nIt was possible that a resume request signaled by addTrack_l()\nwhile waiting for an async write callback is lost. This is because\nmSignalPending was not set and waitingAsyncCallback_l() would pause the\nthread loop before executing prepareTracks_l().\n\nThe fix consists in using signal_l() method to wake the thread\nloop o that mSignalPending is set.\n\nAlso make sure that sleepTime is reset to 0 when resuming to make sure\nthat we write any remaining bytes to the HAL.\n\nBug: 10810347.\n\nChange-Id: If9a3b22cc3b9e6eb384a56c48c40e6258d0896ad\n"
    },
    {
      "commit": "d7e076589dc5298d7a78cb683159723b7eb08d7f",
      "tree": "0cfcb461203a0ba4261dbf21b8ef1343ded37836",
      "parents": [
        "dc8cae8c118e4aef4ef1f7b2c6f79becc1df4a05",
        "87fb4f30077e7bcf78e65cf25fe95bd58238bad1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 19 08:34:52 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 19 08:34:52 2013 -0700"
      },
      "message": "am 87fb4f30: am d1b28d41: audioflniger: fix leaked audiosession references\n\n* commit \u002787fb4f30077e7bcf78e65cf25fe95bd58238bad1\u0027:\n  audioflniger: fix leaked audiosession references\n"
    },
    {
      "commit": "d1b28d41dbda203ffb420ba2e36cbe736b163ff8",
      "tree": "8515326721a76081b458cce1329e13b7252d2fbe",
      "parents": [
        "5baf2af52cd186633b7173196c1e4a4cd3435f22"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 18 18:47:13 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 18 19:00:22 2013 -0700"
      },
      "message": "audioflniger: fix leaked audiosession references\n\nacquireAudioSessionId() should not create session references\nif the caller is not listed in the known notification clients.\nIt happens when the MediaPlayer or AudioTrack is created by the\nmediaserver on behalf of a client (e.g CameraService). In this case\nreleaseAudioSessionId() can be called from a different pid and\nthe session reference will not be removed.\nAlso we will not be able to remove the reference if the client\nprocess dies.\n\nBug: 10606426.\nChange-Id: Ibb5e27518daeb484a2e66302e4c6221cbaca5b70\n"
    },
    {
      "commit": "dc8cae8c118e4aef4ef1f7b2c6f79becc1df4a05",
      "tree": "ea0f76bad13db737ca85146367304b3397a111a3",
      "parents": [
        "b81332964f2f3fb83f056b539a4eeea245bb7999",
        "bf5e23979a03da96ce1d63126c480103232f174b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 18 14:26:49 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 18 14:26:49 2013 -0700"
      },
      "message": "am bf5e2397: am 5baf2af5: more support for audio effect offload\n\n* commit \u0027bf5e23979a03da96ce1d63126c480103232f174b\u0027:\n  more support for audio effect offload\n"
    },
    {
      "commit": "5baf2af52cd186633b7173196c1e4a4cd3435f22",
      "tree": "9c6752456812c4a927574a71e1d2ec2495ff6ce3",
      "parents": [
        "9a98b6de791aeb130192df10744f5b35f8b6ef1a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 12 17:37:00 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 18 11:52:40 2013 -0700"
      },
      "message": "more support for audio effect offload\n\nOffloading of audio effects is now enabled for offloaded\noutput threads. If an effect not supporting offload is enabled,\nthe AudioTrack is invalidated so that it can be recreated in PCM\nmode.\n\nFix some issues in effect proxy related to handling of effect\ncommands to offloaded and non offloaded effects.\n\nAlso fixed a bug on capture index in software Visualizer effect.\n\nBug: 8174034.\n\nChange-Id: Ib23d3c2d5a652361b0aaec7faee09102f2b18fce\n"
    },
    {
      "commit": "6d07d9bd2e0549ca2682ad9e94118feee1f733f6",
      "tree": "5ffde1294dcf7bf6af224f1828ffaa214496004c",
      "parents": [
        "bd091600eabdac6bd62987fb5ac91255ea2706d1",
        "029838a98c9377299ef3341e21e9378fd5562ab6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 13 17:31:49 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 13 17:31:49 2013 -0700"
      },
      "message": "am 029838a9: am 7f91e5e0: Merge \"audioflinger: fix ro.audio.silent in offload mode\" into klp-dev\n\n* commit \u0027029838a98c9377299ef3341e21e9378fd5562ab6\u0027:\n  audioflinger: fix ro.audio.silent in offload mode\n"
    },
    {
      "commit": "d455cdfad40ca0558b8f4f800ec192027e272c14",
      "tree": "611c503995f513534951637d07c82ac9c4053236",
      "parents": [
        "fb61216af1971be53222eaf818ab272798c05359",
        "c91eb6059a6af8b84c48e0ce727b01829f9cd789"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 13 17:31:47 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 13 17:31:47 2013 -0700"
      },
      "message": "am c91eb605: am 972a173d: audioflinger: longer offload thread standby delay\n\n* commit \u0027c91eb6059a6af8b84c48e0ce727b01829f9cd789\u0027:\n  audioflinger: longer offload thread standby delay\n"
    },
    {
      "commit": "7f91e5e09cf3bd8068894b2e54cbdaac70bf53a0",
      "tree": "d780b615c9e2ea42c5449ebfeb870b3c7bee7eb9",
      "parents": [
        "d4dadf23dd2dd8acd514d60d84475954070340b8",
        "1abbdb4429479975718421c4fef3f79ce7c820e3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Sep 14 00:07:28 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Sep 14 00:07:29 2013 +0000"
      },
      "message": "Merge \"audioflinger: fix ro.audio.silent in offload mode\" into klp-dev"
    },
    {
      "commit": "1abbdb4429479975718421c4fef3f79ce7c820e3",
      "tree": "ac73fe0a2f36b66d9c33f22dd09ac76730beefce",
      "parents": [
        "99bf6267f0a4e2c3153be49ced59ae164d55ea6d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 13 17:00:08 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 13 17:00:08 2013 -0700"
      },
      "message": "audioflinger: fix ro.audio.silent in offload mode\n\nChange-Id: I5a1a79000d53146689b0a198cc5419c36509703f\n"
    },
    {
      "commit": "972a173d7d1de1a3b5a617aae3e2abb6e05ae02d",
      "tree": "f506c9ef80a8a31bfd58a254617fdecb26dbbcf5",
      "parents": [
        "99bf6267f0a4e2c3153be49ced59ae164d55ea6d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 04 09:42:59 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 13 12:14:07 2013 -0700"
      },
      "message": "audioflinger: longer offload thread standby delay\n\n- Increase offloaded output thread standby delay to 1 second\nto allow transition between tracks with going to stanby\nif reusing the same audio track (gapless)\n\n- Make sure pause/flush/resume sequence is sent to the HAL\nin the right order\n\n- Fix format display in track dump\n\nBug: 8174034.\nChange-Id: I43ef6f8fdbf7427e4eff6cc2d0665d7d1463ea8a\n"
    },
    {
      "commit": "f523897787b64cf2217d0ab4946b564420c675fe",
      "tree": "bf4361fd297eabb324294ce8e30e95b50176a85e",
      "parents": [
        "d5577f26de1ae3a0dc6fbea9c60a07d585f894bf",
        "8a220740cd77eb844123d3914190a94513797b40"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Sep 12 09:21:43 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 12 09:21:43 2013 -0700"
      },
      "message": "am 8a220740: am dc33c542: Merge \"Fix AudioTrack shared memory leak\" into klp-dev\n\n* commit \u00278a220740cd77eb844123d3914190a94513797b40\u0027:\n  Fix AudioTrack shared memory leak\n"
    },
    {
      "commit": "dc33c542351449ceee95cc50a9009f495e7c72ba",
      "tree": "0f44c9770a45605876de1e051801bee5781a56ad",
      "parents": [
        "efc4d4899e03fb8464017dd48539106cec2163de",
        "0c72b24f91c68442eb374bd1b338c394105b8262"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Sep 12 15:13:44 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 12 15:13:45 2013 +0000"
      },
      "message": "Merge \"Fix AudioTrack shared memory leak\" into klp-dev"
    },
    {
      "commit": "d5577f26de1ae3a0dc6fbea9c60a07d585f894bf",
      "tree": "9f39de6f98f3955cbd94ac2f9a66f36165847234",
      "parents": [
        "0fc610ade6ecd2cec75df4b9d91ed3298601400a",
        "4823964d198228289ff21530bf8b01bb2ef196bb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 11 17:25:02 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 11 17:25:02 2013 -0700"
      },
      "message": "am 4823964d: am efc4d489: Merge \"audioflinger: add HOTWORD audio source.\" into klp-dev\n\n* commit \u00274823964d198228289ff21530bf8b01bb2ef196bb\u0027:\n  audioflinger: add HOTWORD audio source.\n"
    },
    {
      "commit": "efc4d4899e03fb8464017dd48539106cec2163de",
      "tree": "40e6503137bc0720b515c05b2d39771d1d25c7c7",
      "parents": [
        "a911f51c21430ac92f1d796b2338878fd98382e9",
        "9a54bc27876acd5d8be5b1fc3dc46701fe76fbb3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 12 00:15:15 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 12 00:15:15 2013 +0000"
      },
      "message": "Merge \"audioflinger: add HOTWORD audio source.\" into klp-dev"
    },
    {
      "commit": "0c72b24f91c68442eb374bd1b338c394105b8262",
      "tree": "d5b7396b593f2157fead8f0c5c41d45c1c236009",
      "parents": [
        "6220f993541b0317e6ace3c410dd35a8d76e30bc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Sep 11 09:14:16 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Sep 11 12:47:29 2013 -0700"
      },
      "message": "Fix AudioTrack shared memory leak\n\nBug: 2801375\nChange-Id: I50e15164fe310f69ea019dca5b49171a02bc6992\n"
    },
    {
      "commit": "9a54bc27876acd5d8be5b1fc3dc46701fe76fbb3",
      "tree": "15f25097fc7fc2548d41a29c94c22710472f01ca",
      "parents": [
        "84b7fb0c88ddd05ed7c148c82fe1691040a9404d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 09 09:08:44 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 10 14:39:28 2013 -0700"
      },
      "message": "audioflinger: add HOTWORD audio source.\n\nHOTWORD is a special capture audio source that uses\nthe same audio tuning as VOICE_RECOGNITION but allows an\nactive capture to be preempted.\n\nBug: 10640877.\n\nChange-Id: Iea09a11cbcdbacc8d434e5230e7559dcd1b44ac0\n"
    },
    {
      "commit": "8136cfae9c22ae8ff42eec9ed751833dda605444",
      "tree": "b6e71058c48bcdd37046ddfa60e3da80b5cc1015",
      "parents": [
        "a041f2fce87fa7a0926365d8e8fbc66019ac0661",
        "8a910716892d17a2ac62c7e9884af0e9d75b26bc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 09 14:29:08 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 09 14:29:08 2013 -0700"
      },
      "message": "am 8a910716: am 6ca83fad: Merge \"audioflinger: no effects on offloaded tracks\" into klp-dev\n\n* commit \u00278a910716892d17a2ac62c7e9884af0e9d75b26bc\u0027:\n  audioflinger: no effects on offloaded tracks\n"
    },
    {
      "commit": "813e2a74853bde19e37d878c596a044b3f299efc",
      "tree": "b95aa8b59f49b4348b2112047ee80e572637d706",
      "parents": [
        "84b7fb0c88ddd05ed7c148c82fe1691040a9404d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Aug 31 12:59:48 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 09 09:09:21 2013 -0700"
      },
      "message": "audioflinger: no effects on offloaded tracks\n\nInvalidate offloaded tracks when an effect is enabled\nso that the track is recreated in PCM mode and the effect\ncan be applied.\nThis is temporary until effect offloading is implemented.\n\nBug: 8174034.\n\nChange-Id: I77b8b54a10db6cb8334be76d863ea7e720eaad09\n"
    },
    {
      "commit": "bfc4214079875f0dc8c349e8c475d1813c234e67",
      "tree": "7f8695357953e7d7c143c262f14645406f724e2d",
      "parents": [
        "0f096cfb8b478e2035bbdc0efb0322103b1f392e",
        "99b84e8b013a6e0b926693067b00e82cfbe2ca4f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 06 13:33:01 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 06 13:33:01 2013 -0700"
      },
      "message": "am 99b84e8b: am 3b4529e0: audioflinger: remove async write race conditions\n\n* commit \u002799b84e8b013a6e0b926693067b00e82cfbe2ca4f\u0027:\n  audioflinger: remove async write race conditions\n"
    },
    {
      "commit": "3b4529e03c5fc7a44c22f9091ad15a269bfca3a8",
      "tree": "552d810348dc2ffd6018e58970a4cbbb39eceb5e",
      "parents": [
        "60c60df7db278d2fa5c90b0fa14f99a61d50272b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 05 18:09:19 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 06 18:09:03 2013 +0000"
      },
      "message": "audioflinger: remove async write race conditions\n\nRemove possible race conditions between async callback\nthread and offload thread when clearing and setting the\ndraining and write blocked flags.\n\nBug: 8174034.\nChange-Id: I7af10491f39dc0e7d7414862a9d8e763daa2e2b7\n"
    },
    {
      "commit": "344202e13a91c9d3d109fd8f4a67f5b23efa7800",
      "tree": "53b9fd4dd46d79e97367486f8368f55f99bf4275",
      "parents": [
        "9a3418485c9581d2b294e3aafdecdac015b08329",
        "55817ab9c1868f1e6a59155f55c768f01509cda5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 16:11:26 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 03 16:11:26 2013 -0700"
      },
      "message": "am 55817ab9: am fe346c70: Fix miscellanous AudioTrack::getTimestamp() bugs\n\n* commit \u002755817ab9c1868f1e6a59155f55c768f01509cda5\u0027:\n  Fix miscellanous AudioTrack::getTimestamp() bugs\n"
    },
    {
      "commit": "b9258d930d67fc314373f94ab4423974e5f87e1a",
      "tree": "b1ff07dab920a778fe73ecc6b6e8d2ac9c198e47",
      "parents": [
        "1462a2b84a578b5541683c824e0f77ebf2aa82ae",
        "97992cc71fd0bbd4aa22e5195ee7e5cde09ac254"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 16:11:24 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 03 16:11:24 2013 -0700"
      },
      "message": "am 97992cc7: am 732845c7: FastMixer computes presentation timestamps for fast tracks\n\n* commit \u002797992cc71fd0bbd4aa22e5195ee7e5cde09ac254\u0027:\n  FastMixer computes presentation timestamps for fast tracks\n"
    },
    {
      "commit": "1462a2b84a578b5541683c824e0f77ebf2aa82ae",
      "tree": "a8d522f1f7fe438432bacb0b3f6eacaae2257e20",
      "parents": [
        "f701ddad1a4f58c368e3b642530849dcb57bb22c",
        "a4a82c5f8f3eccfa10ce30a52cbb4b1c5c983282"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 16:11:24 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 03 16:11:24 2013 -0700"
      },
      "message": "am a4a82c5f: am 6466c9e6: Add ExtendedAudioBufferProvider::framesReleased and onTimestamp\n\n* commit \u0027a4a82c5f8f3eccfa10ce30a52cbb4b1c5c983282\u0027:\n  Add ExtendedAudioBufferProvider::framesReleased and onTimestamp\n"
    },
    {
      "commit": "fe346c707f59d763ded93bc3d27b51f0c0408258",
      "tree": "3e6f12ac7b37bc8ef10845c4c7ccdcfef4b51cd5",
      "parents": [
        "4d0815d694e5a2edb3ce48427de50f55d0f84c0b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 30 13:28:22 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 15:19:03 2013 -0700"
      },
      "message": "Fix miscellanous AudioTrack::getTimestamp() bugs\n\nCheck that get_presentation_position is non-NULL before calling.\n\nAudioTrack::getTimestamp not implemented for fast tracks.\n\nFix typo in Track::getTimestamp().\n\nFix bugs in AudioTrack::getTimestamp after stop:\n - getTimestamp while stopped is not allowed.\n - stop, start, getTimestamp now returns the correct value.\n\nChange-Id: Ie8d9dc1f28d8927634e04175a68b147ffc2ea8eb\n"
    },
    {
      "commit": "a7fef85e7d419a4f5d6a3144f9ba70ceff2f122a",
      "tree": "348d7a274670b5c32a40e34d7dfa93dbc0f84a2f",
      "parents": [
        "859a0f197e0c565d62d233c97ef8088c8eb4d0ac",
        "f81d5fc1d67a5252d0da1a45274460c4dd33b87b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 15:16:03 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 03 15:16:03 2013 -0700"
      },
      "message": "am f81d5fc1: am 943ba3cc: Merge \"Add NBAIO_Sink::getTimestamp()\" into klp-dev\n\n* commit \u0027f81d5fc1d67a5252d0da1a45274460c4dd33b87b\u0027:\n  Add NBAIO_Sink::getTimestamp()\n"
    },
    {
      "commit": "732845c7e8d294bb1aaa4cd9687da62b51f1f6e6",
      "tree": "775ccbda50c8bb2403af5cb52b8891a6130ded5d",
      "parents": [
        "6466c9e6e6278c740aed77f695f679be9f5db478"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 23 09:26:31 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 15:12:20 2013 -0700"
      },
      "message": "FastMixer computes presentation timestamps for fast tracks\n\nand forwards them to each track\u0027s ExtendedAudioBufferProvider::onTimestamp().\n\nChange-Id: I06fb9586bb7e20d5c0289abdc8cac6cd3fd2f6e8\n"
    }
  ],
  "next": "6466c9e6e6278c740aed77f695f679be9f5db478"
}
