)]}'
{
  "log": [
    {
      "commit": "5b27ccd67c845aa20a12a1fb58339e7e81e3d536",
      "tree": "8ffb3c26081bcc880ed7e651e5927b7e51aeaf56",
      "parents": [
        "23a7545c4de71e989c2d8ebf1d5b9dcf463c36a9",
        "aea7ea06394bcb155972d82055d4ea59962e4051"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 15 01:36:47 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 15 01:36:48 2014 +0000"
      },
      "message": "Merge \"Use AUDIO_SESSION_ALLOCATE instead of 0\""
    },
    {
      "commit": "03f696e3eb89c0642f9a2b761ff2cfc6af003d16",
      "tree": "94a7d75134823a31a86d702e2e6443112b8e6a29",
      "parents": [
        "6340829ffb9ff7586ffb88a214f56340d4c70d60",
        "6582f2b14a21e630654c5522ef9ad64e80d5058d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 10 19:28:54 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 10 19:28:54 2014 +0000"
      },
      "message": "Merge \"Improve dynamic audio resampler filter generation\""
    },
    {
      "commit": "6340829ffb9ff7586ffb88a214f56340d4c70d60",
      "tree": "35198750202bc958947d8ad1950c05da8025d242",
      "parents": [
        "0e94bd33901715bee1200a3c69d1a36d4d008b79",
        "0ba9f9b07d47e9e6b374798f397fe961256a6029"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Fri Jan 10 17:34:37 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 10 17:34:37 2014 +0000"
      },
      "message": "am 0ba9f9b0: am d8d45edf: am 61540b5f: Merge \"Frameworks: AudioFlinger: Fix effects memory leak\"\n\n* commit \u00270ba9f9b07d47e9e6b374798f397fe961256a6029\u0027:\n  Frameworks: AudioFlinger: Fix effects memory leak\n"
    },
    {
      "commit": "61540b5fe82cad1c6baa018f02bd2554e62e4364",
      "tree": "bc1a94ff57fe9293c873fe412611e16b748da75e",
      "parents": [
        "5ca94d2f3c4662aed7b66a97b77eb2d1948464ad",
        "e6056ba0f2399fa3ebea9665e12a8237f99de250"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Fri Jan 10 17:22:39 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 10 17:22:40 2014 +0000"
      },
      "message": "Merge \"Frameworks: AudioFlinger: Fix effects memory leak\""
    },
    {
      "commit": "6582f2b14a21e630654c5522ef9ad64e80d5058d",
      "tree": "69dee04c065feec40569f144281f36e885b7d15b",
      "parents": [
        "0bcfa88149e2404b34d13c622e3921e1b846cdf8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Jan 03 12:30:41 2014 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 08 17:54:27 2014 -0800"
      },
      "message": "Improve dynamic audio resampler filter generation\n\nImprove dynamic audio resampler filter generation speed by 2x.\nThe resulting filters should be the same (excepting roundoff).\n\nAlso added check for upsampling sample rate changes to share\npreviously generated filters.\n\nModify the profiling to improve output format and sampling result\nreliability.\n\nChange-Id: I9aa6b914fd552a63f79dd4a95945df2f8275772a\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\n"
    },
    {
      "commit": "0bcfa88149e2404b34d13c622e3921e1b846cdf8",
      "tree": "67d09151548315f58bda189ed8a6cc0ab75daff1",
      "parents": [
        "3f65a84030c2ae95d72a9458ebfbb6d14e96daf5"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Fri Dec 27 16:09:28 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 08 13:54:53 2014 -0800"
      },
      "message": "audioflinger: update track ready condition\n\nSignal track ready if the track isStopping().\n\nBug: 12423190\nChange-Id: Ie279995d5f90fa8211a20dfbeacc1cf9b921d0bf\n"
    },
    {
      "commit": "67d15f9ab45e7c03b23c871f680b1fae577ac43a",
      "tree": "dc29ec79dbbb71429ac5d431b5b20d9aa927b380",
      "parents": [
        "cbfff7b3bb8166dd6a95d6974baa1fc8312ca17f",
        "13e4c960ea3db03a43e084fbd85d52aa77f7b871"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 07 02:06:07 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 07 02:06:07 2014 +0000"
      },
      "message": "Merge \"audioflinger: fix static track end detection\""
    },
    {
      "commit": "86eae0e5931103e040ac2cdd023ef5db252e09f6",
      "tree": "2764bafecfc0157792f880daa4fb535e74286bfe",
      "parents": [
        "e6144d7a558c74e508a5c103cdc462c3cd7cf508"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Dec 09 12:12:46 2013 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 27 14:34:36 2013 -0800"
      },
      "message": "Audio resampler update to add S16 filters\n\nThis does not affect the existing resamplers.\nNew resampler accessed through additional quality settings:\n\nDYN_LOW_QUALITY \u003d 5\nDYN_MED_QUALITY \u003d 6\nDYN_HIGH_QUALITY \u003d 7\n\nChange-Id: Iebbd31871e808a4a6dee3f3abfd7e9dcf77c48e1\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\n"
    },
    {
      "commit": "13e4c960ea3db03a43e084fbd85d52aa77f7b871",
      "tree": "e65e5e2050066bcb0dfd97c4d9c1097cab369d1c",
      "parents": [
        "a9fa836ddfcb0cc91d1ff9edeeba4c8b8047bd8a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 20 17:36:01 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 20 17:36:01 2013 -0800"
      },
      "message": "audioflinger: fix static track end detection\n\nIf a static track is not a fast track,\nprepareTracks_l() must rely on framesReady() to\ndetect end of buffer and remove the track from the active\ntrack list.\nFailing to do so results in the track staying active but\nnot processed by the mixer because in underrun. This leaves the\nmix buffer content uninitialized and causes the effect process\nfunction to accumulate its output onto undefined data.\n\nBug: 12013676.\nChange-Id: Iad72c921fa18d34811abf7d1073890c093a27725\n"
    },
    {
      "commit": "aea7ea06394bcb155972d82055d4ea59962e4051",
      "tree": "dd806ad4f77dc62e4fbd0b88022ee5b8b2403802",
      "parents": [
        "bd72d22097f78f5bd668b223bc8c94e351311e31"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 26 09:25:47 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 20 12:30:29 2013 -0800"
      },
      "message": "Use AUDIO_SESSION_ALLOCATE instead of 0\n\nAlso fix a couple of places where we were using AUDIO_SESSION_OUTPUT_MIX,\nwhich happens to also be equal to 0, but has a different meaning.\n\nChange-Id: I90e39be3b89f5021a96d9e3b8d10929013ca977f\n"
    },
    {
      "commit": "47f3f5a119194d4c06815453be9950ba112c8e3e",
      "tree": "60f1d74de1ab21c097002b76fbedf30a4fce2608",
      "parents": [
        "bd72d22097f78f5bd668b223bc8c94e351311e31"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 17 16:14:04 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 17 16:16:24 2013 -0800"
      },
      "message": "Fix bug in test-resample\u0027s AudioBufferProvider\n\nThe contract for AudioBufferProvider::releaseBuffer() was missing.\n\nBug: 12194314\nChange-Id: I2fcf75e7b8eaf6db34f360206d79457a04a73565\n"
    },
    {
      "commit": "bd72d22097f78f5bd668b223bc8c94e351311e31",
      "tree": "2d6acf288135eeb1149e1d631db3e8fd2ef4626e",
      "parents": [
        "f5293648b727fb3909cd2300a73377f032f8b050"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 17 15:22:08 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 17 16:04:29 2013 -0800"
      },
      "message": "Add ability to read .wav files to test-resample\n\nPreviously test-resample could only read .raw files, and the input\nsample rate had to be specified.  Now the input sample rate is derived\nfrom the input file.  This also allows us to read 8-bit PCM files,\nand other formats such as floating-point in the future.\n\nHowever, the ability to read raw files is lost.\nA workaround is to use sox or equivalent on the host.\n\nChange-Id: Icd06b4d02482b3ad07bf03979f46860e68d38ad9\n"
    },
    {
      "commit": "f5293648b727fb3909cd2300a73377f032f8b050",
      "tree": "7bc4568fdd695d312d9ae6447ec69320bdcf2c62",
      "parents": [
        "9a1c785c019bdb25fefa7d1c0e50862ddc0e4e21"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 17 14:49:17 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 17 16:00:51 2013 -0800"
      },
      "message": "Use libsndfile to write .wav files\n\nThis will reduce code duplication, and allow us take advantage of more\nadvanced capabilities of libsndfile in the future.\n\nChange-Id: I25fa2b6d0c21e325aeaf05bda62cf7aab0c5deb4\n"
    },
    {
      "commit": "9a1c785c019bdb25fefa7d1c0e50862ddc0e4e21",
      "tree": "e3244424800ebbe75d6ec8bdcf2173cf4203be14",
      "parents": [
        "98147613fd3b1dc2938e3f658641c9f2139eb9ec",
        "e00eefe64e3bad166c672db96c9c35992766e819"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 17 23:56:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 17 23:56:46 2013 +0000"
      },
      "message": "Merge \"Fix several test-resample BufferProvider bugs\""
    },
    {
      "commit": "e00eefe64e3bad166c672db96c9c35992766e819",
      "tree": "e2645cbcb92fc6b4ccdb2075323309f6f22196fc",
      "parents": [
        "e175e5ec1636fc638465187f3d5c6166d92388ed"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 17 13:54:29 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 17 14:13:54 2013 -0800"
      },
      "message": "Fix several test-resample BufferProvider bugs\n\nPreviously getNextBuffer always returned the same data address over\nand over.  Now it correctly returns the right portion of the input buffer.\n\nPreviously getNextBuffer always returned the total number of frames in\nthe input, which might be larger than the size requested by the caller,\nand/or larger than the number of remaining input frames.  It also always\nreturned successfully, even when there should be no frames available.\nThis violates the contract for getNextBuffer.  Now getNextBuffer will\nreturn the maximum of the number of frames requested, and the number of\nremaining frames available.  If that maximum is zero, getNextBuffer will\nreturn an error instead.\n\nPreviously releaseBuffer would silently allow releasing more frames than\nwere actually gotten, which violates the contract for releaseBuffer.\nNow releaseBuffer checks for this and logs a message if it happens.\n\nAdd \u0027v\u0027 (verbose) option to log buffer provider calls.\n\nBug: 12194314\nChange-Id: I9b915e954b3612a07ef271da8652486b8875e0fd\n"
    },
    {
      "commit": "c95616357a911e5c1c55873492b05ebfa3cf1894",
      "tree": "fa56f9fbc01da9bfca3814af80c63e7857bfa2fd",
      "parents": [
        "645e43977d3aabc5addab022d772accc32fd5bdc"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Tue Dec 03 21:26:02 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 17 22:05:51 2013 +0000"
      },
      "message": "audioflinger: check for condition before waiting\n\nAsyncCallbackThread must check for any condition that\nhas already been satisfied before waiting.\n\nBug: 11824817\nChange-Id: Ic8c2090d521ecd6a30b76ee75635258d35eb1eff\n"
    },
    {
      "commit": "688ca6330a5e7d072f67a1791e464fa7dec08b72",
      "tree": "876abb6ec32d531ae0f2dd62b5d4d04ed725f9f9",
      "parents": [
        "e175e5ec1636fc638465187f3d5c6166d92388ed",
        "5c474238bc579224ec8f7267d05651b0aa934100"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 17 16:35:48 2013 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 17 16:35:48 2013 +0000"
      },
      "message": "am 5c474238: am 5893736d: am a67c7653: Merge \"Increase kFastTrackMultiplier from 1 to 2\"\n\n* commit \u00275c474238bc579224ec8f7267d05651b0aa934100\u0027:\n  Increase kFastTrackMultiplier from 1 to 2\n"
    },
    {
      "commit": "a67c76538fff102cd44b2f38dd073df5f2a33605",
      "tree": "da803da6b3053b23ad6c5ebbd33fd7667e2697b3",
      "parents": [
        "a0e1c3918dd1356445df98e89dab6be2c8a78da3",
        "b5fed68bcdd6f44424c9e4d12bfe9a3ff51bd62e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 17 16:26:41 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 17 16:26:41 2013 +0000"
      },
      "message": "Merge \"Increase kFastTrackMultiplier from 1 to 2\""
    },
    {
      "commit": "24a325d6f8c4bbf9330e6ce0c769d46e04266ffc",
      "tree": "55f9c3d43824090cf34a5bf2b1d37ea561b68286",
      "parents": [
        "aef04853de0ce27222cf6250b2ba4fa9fc6a72a8"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Tue Dec 03 21:26:02 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 06 10:49:57 2013 -0800"
      },
      "message": "audioflinger: check for condition before waiting\n\nAsyncCallbackThread must check for any condition that\nwas already been satisfied before waiting.\n\nBug: 11824817\nChange-Id: Ic8c2090d521ecd6a30b76ee75635258d35eb1eff\n"
    },
    {
      "commit": "70aca464f7e39a3b208341f442b6fc2316e17147",
      "tree": "46b6a182d174deace26c5bc5f66ffb4a8b46fd44",
      "parents": [
        "0312b69e65e4c8bf6a0c0757d9100dee3651c16e",
        "481fb67a595f23c5b7f5be84b06db9b84a41a42f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 05 22:49:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 05 22:49:46 2013 +0000"
      },
      "message": "Merge \"Add RecordThread media.log and deferred deallocation\""
    },
    {
      "commit": "0312b69e65e4c8bf6a0c0757d9100dee3651c16e",
      "tree": "b318c691cd56a73b151d5c1f1a2f50ae5d50b41a",
      "parents": [
        "a2354479716db40d865c597dc572ea83573caac2",
        "2b806406ac1ec680b6fe3aaa84c54bdc4e43ad8d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 05 22:16:25 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 05 22:16:25 2013 +0000"
      },
      "message": "Merge \"Change mActiveTrack to mActiveTracks vector\""
    },
    {
      "commit": "481fb67a595f23c5b7f5be84b06db9b84a41a42f",
      "tree": "095712959d22a6fdfaa101c262ccad183576cb6d",
      "parents": [
        "84acd489b93e04bea7aab06d8abb024eef2576fd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 30 14:39:28 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 05 13:47:07 2013 -0800"
      },
      "message": "Add RecordThread media.log and deferred deallocation\n\nThis change allows a media.log buffer for RecordThread.\n\nUnlike playback threads which stick around forever, the RecordThread comes\nand goes for every capture session.  This means that the media.log buffer\nfor a RecordThread would disappear too, and so was useless.  Now when a\nthread exits, it\u0027s associated media.log buffer is just marked for deferred\ndeallocation.  It is only actually freed when the memory is needed.\n\nOther changes:\n - Fix bug in unregistering comparison, it was comparing the wrong pointers\n - Increased size of log area so we can log for RecordThread also\n\nChange-Id: If45d4c03a793b86390a0112ec3acc5d41b2e3635\n"
    },
    {
      "commit": "b5fed68bcdd6f44424c9e4d12bfe9a3ff51bd62e",
      "tree": "12cac79b78992586c8f8da4f618a020f40d92441",
      "parents": [
        "92630351d265a61faae2dfe006a8bb330283aa7b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 03 09:06:43 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Dec 04 17:12:42 2013 -0800"
      },
      "message": "Increase kFastTrackMultiplier from 1 to 2\n\nChange-Id: I158f147295eebcea96e4047d7618069bc48bdd7d\n"
    },
    {
      "commit": "866d90595a177f6027e97161781948baebf2aa68",
      "tree": "54df145364f194115ca0e20aef3278c413dc4b85",
      "parents": [
        "b31788687736666e58b852e744a93f772d3f7148",
        "f10ffec18f930d92e1abe9200d60e746831841a7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 02 18:37:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 02 18:37:46 2013 +0000"
      },
      "message": "Merge \"Code simplification and movement to prepare for mActiveTracks\""
    },
    {
      "commit": "480acec40aa2d96119530c7d451282af8cf07327",
      "tree": "0160412c560d234672958be9f46a09e422bd10a9",
      "parents": [
        "639512ce33fb19c876b1be68555d83ccda6e7ad7",
        "e75da4004b2c814987aa2adf8a76190f92d99c65"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 22 23:38:17 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 22 23:38:17 2013 +0000"
      },
      "message": "Merge \"Fix bug in creation of EffectHandle when out of memory\""
    },
    {
      "commit": "639512ce33fb19c876b1be68555d83ccda6e7ad7",
      "tree": "2f1c74d07c81b2b1514e9812b4e9b92cb4cf284d",
      "parents": [
        "04733dbdede313fc5e291070014c1a0641fe6166",
        "663c2247b71086e30bfd3192979d1dd7f15c539e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 22 23:28:07 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 22 23:28:08 2013 +0000"
      },
      "message": "Merge \"Consistent error checking for sp\u003cIMemory\u003e and pointer()\""
    },
    {
      "commit": "04733dbdede313fc5e291070014c1a0641fe6166",
      "tree": "f215383a4f483175e8d2d34939b337ae4558c1f4",
      "parents": [
        "fc2e519dee2ae0a6a309183f936d43beecce6007"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 22 09:29:56 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 22 10:15:42 2013 -0800"
      },
      "message": "audioflinger: fix offload write buffer offset\n\nFix current audio HAL write buffer offset calculation\nwhich assumes that the frame size is a multiple of 2.\n\nChange-Id: I0195ed5cfef225a6f114e7dd405a02680bb7254e\n"
    },
    {
      "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": "e75da4004b2c814987aa2adf8a76190f92d99c65",
      "tree": "35c6bc8914384e610eba3633a08e2f5e78b062b5",
      "parents": [
        "663c2247b71086e30bfd3192979d1dd7f15c539e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 20 13:54:52 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 20 14:51:07 2013 -0800"
      },
      "message": "Fix bug in creation of EffectHandle when out of memory\n\nIf there is insufficient client memory to create the EffectHandle,\nit was returning a handle which would be useless.  Now it correctly\nreports the out-of-memory error back to client.\n\nChange-Id: I894e65d5d17df39383032c1527be6ccd35f578bb\n"
    },
    {
      "commit": "663c2247b71086e30bfd3192979d1dd7f15c539e",
      "tree": "caedda5629d70de2fcab7506a81852e6c62ea473",
      "parents": [
        "30ff92cba19c5acd747631365db1e1084e45ab34"
      ],
      "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": "Wed Nov 20 14:17:01 2013 -0800"
      },
      "message": "Consistent error checking for sp\u003cIMemory\u003e and pointer()\n\nThere have been concerns that an sp\u003cIMemory\u003e could be non-0, but the\nassociated pointer() still be NULL.  There are rumors this may happen\nwhen a non-0 sp\u003cIMemory\u003e is passed in by client but the shared memory cannot\nbe re-mapped into mediaserver.\n\nThere\u0027s also evidence in the early (2009/03/03) pre-git code of checking\npointer() for NULL, after a local allocate() returned a non-0 sp\u003cIMemory\u003e.\nIt\u0027s not clear if this is \"cargo cult\" paranoia, or if there was a\ngenuine reason for the check.\n\nIn any case, we now consistently check pointer() for sp\u003cIMemory\u003e\ninput parameters in createTrack() and queueTimedBuffer().\n\nWe also check after successful allocate().  If allocate() returns a\nnon-0 sp\u003c\u003e but NULL pointer(), then treat it as if the allocate() had\nreturned 0.\n\nChange-Id: I3013ac5766b493d443ecef71711ec861076a623e\n"
    },
    {
      "commit": "30ff92cba19c5acd747631365db1e1084e45ab34",
      "tree": "529f382c59fc9f686e1ec49b279bdaf6303af1d1",
      "parents": [
        "7ae751960d8b31e6e301c18122d1146da8fe5983"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 20 11:57:08 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 20 14:02:40 2013 -0800"
      },
      "message": "Code simplification for timed allocate\n\nChange-Id: I5acccd7418c5b4a4dc0112147c750fef9f74bf33\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": "e6056ba0f2399fa3ebea9665e12a8237f99de250",
      "tree": "184e36a01bed4e9b529cc7d46ba820f498e41d4b",
      "parents": [
        "ab70649e2b0ea3d917242814417ec5711f4cb811"
      ],
      "author": {
        "name": "Yu Yezhong",
        "email": "yuyezhong@gmail.com",
        "time": "Tue Oct 15 14:32:34 2013 +0800"
      },
      "committer": {
        "name": "Yu Yezhong",
        "email": "yuyezhong@gmail.com",
        "time": "Tue Oct 15 14:32:34 2013 +0800"
      },
      "message": "Frameworks: AudioFlinger: Fix effects memory leak\n\nPatch by: csheng@marvell.com\nChange-Id: I4e3032fb34643902f98e8fd7c8e894b6452324c9\nSigned-off-by: Yu Yezhong \u003cyuyezhong@gmail.com\u003e\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"
    }
  ],
  "next": "0230a2a8a413076a138db4c4e1dea018104fd5e2"
}
