)]}'
{
  "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": "04143e411f18557579651a41de8f20edc2f8856a",
      "tree": "c1a71ed74152ac43b10dda490fb1f0136a87c398",
      "parents": [
        "554a69a80db4a1f146f53d5ab525cc74c7b64330",
        "86eae0e5931103e040ac2cdd023ef5db252e09f6"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Dec 30 18:17:31 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 30 18:17:31 2013 +0000"
      },
      "message": "Merge \"Audio resampler update to add S16 filters\""
    },
    {
      "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": "f0b7026fca225581c7711e4d802117869b66e9dc",
      "tree": "840ed40fd066698482574d39b19eceb2e8232816",
      "parents": [
        "8b07579bc94d10a39eb86dccec7f31981a53283a"
      ],
      "author": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Thu Dec 26 10:38:46 2013 -0800"
      },
      "committer": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Thu Dec 26 10:38:46 2013 -0800"
      },
      "message": "Camera2 API: fix front facing camera flip issue\n\nCamera stream transform calculation should take camera facing into account.\nFor example, front facing camera preview stream should be horizontally or\nvertically flipped.\n\nBug: 12300670\nChange-Id: Ib497f0b8c3e65974de05d4f0aca3c51e99717c3d\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": "138851bd3cadfb60238f87567e24808925731837",
      "tree": "659917a491e31367ebea8b80a86d33ccd1931a82",
      "parents": [
        "87b009dec36f8dea6e804ae7dee9d6fc0c661af6"
      ],
      "author": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Tue Nov 26 15:11:05 2013 -0800"
      },
      "committer": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Tue Nov 26 19:02:05 2013 -0800"
      },
      "message": "camera2/3: Add protection for still capture path\n\nJpeg stream in JpegProcessor could be deleted while process new capture is\nongoing, which unsafe to access a dead consumer endpoint.\nBug: 9316454\nChange-Id: I2950f31ea28d0ba01f08502e2e3ba452bf8bb818\n"
    },
    {
      "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": "5b19084a5089e3f6527a82440a1c8227c3a366fa",
      "tree": "aec26dceecfc26df5375080ee4c3dd25f62332e7",
      "parents": [
        "23700debf767ef7fdfc30d96612771c3a03ad40d",
        "1b05dfc8df5e741086747d076fc39c79fb4acb33"
      ],
      "author": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Thu Nov 21 21:55:59 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 21 21:56:00 2013 +0000"
      },
      "message": "Merge \"Camera3: Remove request from InFlightMap for error case\""
    },
    {
      "commit": "1b05dfc8df5e741086747d076fc39c79fb4acb33",
      "tree": "173a6af9ae4f8def8af48efd9019857a15227bf6",
      "parents": [
        "213ce79e943a3b51d7859a184d8211c859c960a0"
      ],
      "author": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Thu Nov 21 12:57:51 2013 -0800"
      },
      "committer": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Thu Nov 21 12:57:51 2013 -0800"
      },
      "message": "Camera3: Remove request from InFlightMap for error case\n\nWe don\u0027t expect HAL send back valid result metadata if error occurs for a\nrequest, such as during flush call. The request needs to be removed from in\nflight request map accordingly.\n\nBug: 9758581\nChange-Id: I51fe327337325ce72f11ce592778a2af02e98479\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": "b50df220ae76c7bb6e78b096ece06b2609cf4ffe",
      "tree": "2ec559fbf7b10fad83e011b778536d1b7bb8d252",
      "parents": [
        "00345c5541bd59c7018534313e9a82623133b3ec",
        "213ce79e943a3b51d7859a184d8211c859c960a0"
      ],
      "author": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Tue Nov 19 18:45:45 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 19 18:45:46 2013 +0000"
      },
      "message": "Merge \"Camera3: add systraces for hal open/close\""
    },
    {
      "commit": "213ce79e943a3b51d7859a184d8211c859c960a0",
      "tree": "bf0dbb04265c9843e2d0dc1001d90d27d5ea78b0",
      "parents": [
        "377fce69297a0e5b7c3b266a7602b17146785635"
      ],
      "author": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Tue Nov 19 08:45:15 2013 -0800"
      },
      "committer": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Tue Nov 19 08:45:15 2013 -0800"
      },
      "message": "Camera3: add systraces for hal open/close\n\nBug: 10901465\nChange-Id: I32fb96aa0f9efd423bdb9a3d92c142a096a7a47f\n"
    },
    {
      "commit": "3bd2531ac7c87b85bc9f5abf558b5dc247caaa86",
      "tree": "466bede8d07edf66e2603d3b4dfb2a713ddcdce3",
      "parents": [
        "ca22dd5d69fdfa17e556839cff6c14e1287c0284",
        "054aab3479a094b0a04d48db9cb8f325ea5be162"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Nov 18 19:50:43 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 18 19:50:44 2013 +0000"
      },
      "message": "Merge \"camera3: Remove BufferQueue::MIN_UNDEQUEUED_BUFFERS references\""
    },
    {
      "commit": "054aab3479a094b0a04d48db9cb8f325ea5be162",
      "tree": "7293043e1ad928ae36e9a571950d52ec91472d85",
      "parents": [
        "2c165bad49eb3a04f901d2e6e87a80757fc97485"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Nov 18 11:39:27 2013 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Nov 18 11:39:27 2013 -0800"
      },
      "message": "camera3: Remove BufferQueue::MIN_UNDEQUEUED_BUFFERS references\n\nChange-Id: I4730ac7849e915e88d3b8fc8aa869f53a8242501\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": "27c70d391da6fde79d2e03fb767f9913555c1e9c",
      "tree": "8257d28714264a6ba78a8db7ea1ec469b517eeef",
      "parents": [
        "561879df42b65f44b83c391d78d351e9ad4cb162",
        "0f1ecc2e2ff84144d5293f7f79ba895538d27f9b"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Nov 14 15:49:21 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 14 15:49:21 2013 -0800"
      },
      "message": "am 0f1ecc2e: am d8a62e25: Camera2: Rework the FPS range vs. FPS single setting detection\n\n* commit \u00270f1ecc2e2ff84144d5293f7f79ba895538d27f9b\u0027:\n  Camera2: Rework the FPS range vs. FPS single setting detection\n"
    },
    {
      "commit": "d8a62e25ba6520c2531c7a3d32cc8066e1dab776",
      "tree": "dbf4856e2a0f6781f3287fed2534f7e358c6b053",
      "parents": [
        "4215e6166fca9f87a6e9e848b3dfd4ab0d25c954"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Nov 14 10:32:13 2013 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Nov 14 10:32:13 2013 -0800"
      },
      "message": "Camera2: Rework the FPS range vs. FPS single setting detection\n\nGive up on current approach of writing out consistent FPS values\ninto parameters that will be read back by the app.\n\n- Preserve app\u0027s latest set parameters exactly, and compare against\n  them when detecting if a new FPS range or single FPS value has been\n  selected.\n\n- Since get() returns exactly what was set(), it doesn\u0027t matter if the\n  app calls getParameters() before its next setParameters(), in terms\n  of retriggering FPS selection logic. Before, the behavior varied\n  depending on whether the app re-read the parameters.\n\n- As before, if app changes both range and single FPS in a single set\n  call, the range set wins. Otherwise, the value that has changed more\n  recently is used.\n\nBug: 11570973\nChange-Id: I72b5e60c3f60e88d55127dd1bda87e26eaf929c6\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": "48da8933f18e7ebd5bccb8de04aada099ed99e74",
      "tree": "e5275eea80fef969889ba961ce948e896962eb55",
      "parents": [
        "d725d23ae67045c22003d419d5c31ca1d551da89",
        "5c2379fdf93029c683c8bcf41b7b663b9940c921"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Nov 12 10:48:12 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 12 10:48:12 2013 -0800"
      },
      "message": "am 5c2379fd: am 184dfe4e: Camera API2: Add support for partial result quirk\n\n* commit \u00275c2379fdf93029c683c8bcf41b7b663b9940c921\u0027:\n  Camera API2: Add support for partial result quirk\n"
    },
    {
      "commit": "184dfe4ea5e2ba33951bed2b1366007aee0ce3da",
      "tree": "ada678fb9d95fed7b4b25aead2615eaa4f003495",
      "parents": [
        "caee8747b7df3b1119426594d4ba1c0e300ff6db"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Nov 07 15:13:16 2013 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Nov 12 10:24:42 2013 -0800"
      },
      "message": "Camera API2: Add support for partial result quirk\n\n- Camera3Device: Include requestId in partial 3A results\n- FrameProcessorBase: Add support for partial result listeners\n- CameraDeviceClient: Listen and forward partial results to client\n\nBug: 11115603\nChange-Id: If1cc6bbc32932742ac142c058688761ebf6a8024\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": "7bf17159f233111a21b293cde8e227231353cd75",
      "tree": "6c6288f61fe101a1299dbd355fd85ffb72144e37",
      "parents": [
        "09faf14b434bec0d184fecec947e3d750bcc64ff",
        "d9d8b7b63514ceea143968b3f114c52755dda9ef"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Nov 06 18:44:05 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 06 18:44:05 2013 -0800"
      },
      "message": "am d9d8b7b6: am fd6ecdd3: Camera HAL3/API1: Add support for the partial result quirk.\n\n* commit \u0027d9d8b7b63514ceea143968b3f114c52755dda9ef\u0027:\n  Camera HAL3/API1: Add support for the partial result quirk.\n"
    },
    {
      "commit": "fd6ecdd39bd83ea020f78b425e96310380d66c35",
      "tree": "74b1aaa8fdcbf75681f72fb93b96db4ab48fa34c",
      "parents": [
        "48b6cd98b23b2cf9dee88f075f7575ecb5aaf545"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Oct 11 09:51:09 2013 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Nov 06 18:22:22 2013 -0800"
      },
      "message": "Camera HAL3/API1: Add support for the partial result quirk.\n\n- Camera2Client:\n - Detect partial result quirk\n- Camera3Device:\n - Accumulate all partial results together\n - Fire off 3A-only result once all 3A states are available\n- FrameProcessorBase:\n - Filter out partials, don\u0027t send to listeners\n- FrameProcessor:\n - Skip face detect on partials\n - Make sure to only handle a 3A update for a given frame once\n - Trigger AF notifications when AF mode or trigger changes, to\n   properly detect all AF transitions.\n\nBug: 11115603\nChange-Id: Iea8aa73c568701562a46071f7ea100624251d10b\n"
    },
    {
      "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": "06b3aa2f8a431eba782aa8c8f5da19f945678983",
      "tree": "19377379c26f824694905457feb9b7a69bc80084",
      "parents": [
        "ed94a039088d2218cbc69e831f16f78db53d0c83",
        "34790c866cdc309e3779b811db43f63aa7eae7ef"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Oct 30 14:18:45 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 30 14:18:45 2013 -0700"
      },
      "message": "am 34790c86: am 3ff5792a: Merge \"camera: Collect stack traces when bad things happen, print with dumpsys\" into klp-dev\n\n* commit \u002734790c866cdc309e3779b811db43f63aa7eae7ef\u0027:\n  camera: Collect stack traces when bad things happen, print with dumpsys\n"
    },
    {
      "commit": "3ff5792adfdbf67662a5f8064315a55690d53944",
      "tree": "ed42f922d8280b2464a0b5bfdd1b167220f32f32",
      "parents": [
        "c76b9f52cf4e39f6943c53f5b3657dfee65857ac",
        "ff3e31d2b100d8efd969b358b18e4405c49dd10d"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Oct 30 21:09:49 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 30 21:09:49 2013 +0000"
      },
      "message": "Merge \"camera: Collect stack traces when bad things happen, print with dumpsys\" into klp-dev"
    },
    {
      "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": "ff3e31d2b100d8efd969b358b18e4405c49dd10d",
      "tree": "6d3bcd6772305f06fcf85c498365c8c198a7fbc9",
      "parents": [
        "95c03858e2ab4fb693a2bfe47b3caa806e43c044"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Oct 23 16:40:06 2013 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Oct 29 11:49:05 2013 -0700"
      },
      "message": "camera: Collect stack traces when bad things happen, print with dumpsys\n\nBug: 11324229\nChange-Id: Ic920e170a8f5a389fc139bbf5416c0e3186c7fb6\n"
    },
    {
      "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": "d6c628f6db7e1b5079cb9a60cf84208891001ec4",
      "tree": "63b0822af3070bf67bf4ab0e841c9d7165ab9750",
      "parents": [
        "771f1b6d196b7924707fc44177ac3a88fc31fa9e",
        "dddafa84dcbd85c11a732e7553d0b884e5a08c27"
      ],
      "author": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Wed Oct 16 18:02:14 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 16 18:02:14 2013 -0700"
      },
      "message": "am dddafa84: am 3defdab8: Merge \"Camera: don\\\u0027t do hw support check for ZSL\" into klp-dev\n\n* commit \u0027dddafa84dcbd85c11a732e7553d0b884e5a08c27\u0027:\n  Camera: don\u0027t do hw support check for ZSL\n"
    },
    {
      "commit": "afada1e56cf0f91be5e44678850fcead2a70cca2",
      "tree": "6d88090137f1b7129e0f953acecdb76760e4ef6e",
      "parents": [
        "014e7fa2e90827d911c37bb0ce4d2e10e14d0bb3"
      ],
      "author": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Wed Oct 16 15:09:17 2013 -0700"
      },
      "committer": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Wed Oct 16 15:09:17 2013 -0700"
      },
      "message": "Camera: don\u0027t do hw support check for ZSL\n\nOnly use camera.disable_zsl_mode to control disable/enable ZSL.\n\nBug: 11258054\nChange-Id: Ibf10b959d0913f7dedb59d89b571e9bf66fe978a\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": "987cd7c8b8697cd4f444135819c8608fe088260f",
      "tree": "f94a9be145823cad09c56d97a7acc1e7c3117206",
      "parents": [
        "6d2af34b7b2e3873de76f5834cd324c59a05e270",
        "1810a287ecc81c243983051f9b1e32ff92ef1365"
      ],
      "author": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Mon Oct 14 10:49:43 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 14 10:49:43 2013 -0700"
      },
      "message": "am 1810a287: am 15ad2470: Camera: Fix deadlock in Camera3OutputStream\n\n* commit \u00271810a287ecc81c243983051f9b1e32ff92ef1365\u0027:\n  Camera: Fix deadlock in Camera3OutputStream\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": "15ad2470b2f2ac34473eb568b606ad75e8e63ac6",
      "tree": "7b1785a6c1c284fc345e5e1d9722ea87432f8491",
      "parents": [
        "d5ed2263a485d6e633fe08f033d04fad75daec6f"
      ],
      "author": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Fri Oct 11 16:21:11 2013 -0700"
      },
      "committer": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Fri Oct 11 16:48:16 2013 -0700"
      },
      "message": "Camera: Fix deadlock in Camera3OutputStream\n\nprocess capture request thread, process capture result and setParameter\nbinder threads can run into circular locking situation when acquiring\nStreamingProcessor lock, Camera3Stream lock, and bufferQueue lock.\nReleasing the Camera3Stream lock briefly in process capture request\nthread getbuffer call can break this deadlock.\n\nBug: 11016037\nChange-Id: If08d4b134c26be26039b1d5363759e60f911bad6\n"
    },
    {
      "commit": "6d2af34b7b2e3873de76f5834cd324c59a05e270",
      "tree": "09237bb52c84ddc65356235e8e134d8d6e03040b",
      "parents": [
        "a0c9584b6841831f1c75c27d027c939b2b4e0762",
        "92d275536ce3a7f1055627ac087b0f3a9957ad68"
      ],
      "author": {
        "name": "Zhijun He",
        "email": "zhijunhe@google.com",
        "time": "Fri Oct 11 12:55:13 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 11 12:55:13 2013 -0700"
      },
      "message": "am 92d27553: am d5ed2263: Merge \"Camera: Skip AE precapture when possible\" into klp-dev\n\n* commit \u002792d275536ce3a7f1055627ac087b0f3a9957ad68\u0027:\n  Camera: Skip AE precapture when possible\n"
    }
  ],
  "next": "a0c9584b6841831f1c75c27d027c939b2b4e0762"
}
