)]}'
{
  "log": [
    {
      "commit": "b6333aa8317ce5162ab006c4baed6b0890936dc7",
      "tree": "d4fb7b888a6b12f4d3c35c0a84d49490dc33bc8e",
      "parents": [
        "3a144d08b713e3c0f6b7b8e95bc42cef5886f4fa",
        "b28686f95daee16edeb5f39af2cd5274ac3dc99f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 10 15:32:16 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 10 15:32:16 2012 -0800"
      },
      "message": "Merge \"Simplify ThreadBase::exit() aka requestExitAndWait\""
    },
    {
      "commit": "3a144d08b713e3c0f6b7b8e95bc42cef5886f4fa",
      "tree": "b3c0d783ff3b8ef62804701409b038447d3f2cbb",
      "parents": [
        "0d9302d7830b46542821b3e5f3e4f96942bd3cb3",
        "cdf2158f3b9498d6cd0eb228d8bee16e32399e16"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 10 15:31:54 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 10 15:31:54 2012 -0800"
      },
      "message": "Merge \"Disable HQ resamplers for now until qualified\""
    },
    {
      "commit": "0d9302d7830b46542821b3e5f3e4f96942bd3cb3",
      "tree": "f14d8a8e3a243dc6fa7d63d48017132814ff3b86",
      "parents": [
        "858df80948ee64f478782a6a6c06533ba1651ef1",
        "2f732eb768004c6362fae8a02c60b69c9400b032"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 10 15:31:07 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 10 15:31:07 2012 -0800"
      },
      "message": "Merge \"Move header declarations around for clarity\""
    },
    {
      "commit": "858df80948ee64f478782a6a6c06533ba1651ef1",
      "tree": "d5b854a26e507ab8ce03037371146e5a34937151",
      "parents": [
        "95a87908ddf240760e8e8b35a6cafcc149c7f33f",
        "58123c3a8b5f34f9d1f70264a3c568ed90288501"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 10 15:30:15 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 10 15:30:15 2012 -0800"
      },
      "message": "Merge \"Camel case readability \u0026 private disconnect(bool)\""
    },
    {
      "commit": "95a87908ddf240760e8e8b35a6cafcc149c7f33f",
      "tree": "10f8fe22a6b34ae2d82eedc01c3f43cf1039b292",
      "parents": [
        "c8ad36bbb30e99e49026cba78e5e0f83db5cb0f6",
        "d198b61603d5fa9298edea4ddb5852ea45159906"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 10 15:29:35 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 10 15:29:35 2012 -0800"
      },
      "message": "Merge \"Remove aliasing\""
    },
    {
      "commit": "c8ad36bbb30e99e49026cba78e5e0f83db5cb0f6",
      "tree": "b11dc2fa925f100ccad66a2f5aa2cf2d01331117",
      "parents": [
        "31f0acff69efd46897221d847becca79ab15105f",
        "5b9ff43995f6a6b819d9ad37dd8cdc5ad4a088d7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 10 15:28:57 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 10 15:28:57 2012 -0800"
      },
      "message": "Merge \"Use mul from audioutils\""
    },
    {
      "commit": "31f0acff69efd46897221d847becca79ab15105f",
      "tree": "bf04e79a2935e9426bcd4cdf1815dbfb0c1e6397",
      "parents": [
        "9f1d4448050a4df7118c90c0c0d3e6f9c4b82f3b",
        "004f719467c498942c40de9f260be601ee45e630"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 10 15:28:45 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 10 15:28:45 2012 -0800"
      },
      "message": "Merge \"Mark fields const if only set in constructor\""
    },
    {
      "commit": "b28686f95daee16edeb5f39af2cd5274ac3dc99f",
      "tree": "84d9f579f42b724ca4c1dce405f3c8a5901e9d9d",
      "parents": [
        "7ae4a2c130ec2cb5dec69d095b810698acc543b3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 08:39:38 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 10 15:02:44 2012 -0800"
      },
      "message": "Simplify ThreadBase::exit() aka requestExitAndWait\n\nWe can remove mExiting and use Thread::exitPending() instead.\n\nThe local sp\u003c\u003e on \"this\" in exit() is not needed, since the caller must\nalso hold an sp\u003c\u003e in order to be calling us. (Unless it was using a raw\npointer, but that would be dangerous for other reasons.)\n\nAdd comment explaining the mLock in exit().\n\nChange-Id: I319e5107533a1a7cdbd13c292685f3e2be60f6c4\n"
    },
    {
      "commit": "9d1f02d74fd395ec4de6861147da289423f0ab6f",
      "tree": "127f5a23da9e17614da1c5f7d84002f3c80c9016",
      "parents": [
        "0ba18ec1b343a8de70924f87630dd1f329b00fe6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 17:47:58 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 10 13:48:44 2012 -0800"
      },
      "message": "Follow raw pointer and sp\u003c\u003e conventions\n\nUnconditional delete for raw pointers.\nUse \"if (sp !\u003d 0)\" not \"if (sp.get() !\u003d 0)\" or \"if (sp !\u003d NULL)\".\nUse \"if (raw !\u003d NULL)\" not \"if (raw)\".\n\nChange-Id: I531a8da7c37149261ed2f34b862ec4896a4b785b\n"
    },
    {
      "commit": "0ba18ec1b343a8de70924f87630dd1f329b00fe6",
      "tree": "13000f3913f814761effcd771b93a66a5f46341a",
      "parents": [
        "12018d80add66f5558675614d73fa6549150806e",
        "90bebef5669a9385c706b042d146a31dca2e5d9b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 10 13:36:24 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 10 13:36:24 2012 -0800"
      },
      "message": "Merge \"No newline or space at end of ALOG format string\""
    },
    {
      "commit": "12018d80add66f5558675614d73fa6549150806e",
      "tree": "8fbeaafce1f62e72edcef8d43a6a435fb3fe301c",
      "parents": [
        "8b5980798ca06e57b1284e6e23fa220e1207bf41",
        "b7bf796b758e144f94f6ed4d16c21bf22a118fb3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 10 13:33:31 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 10 13:33:31 2012 -0800"
      },
      "message": "Merge \"Move declaration of stream_type_t up earlier\""
    },
    {
      "commit": "8b5980798ca06e57b1284e6e23fa220e1207bf41",
      "tree": "253051dc7a47b0338667ef777c2a0ada373eb4df",
      "parents": [
        "5a4b1aaee6109252e268b1e5d0c15b59e21ce993",
        "23d82a9bc9a43b49ba684ba40875b91db310d3b9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 10 13:33:02 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 10 13:33:02 2012 -0800"
      },
      "message": "Merge \"Fix typos in ALOG for pid vs tid\""
    },
    {
      "commit": "cdf2158f3b9498d6cd0eb228d8bee16e32399e16",
      "tree": "21af355df3a1f1d8d559b419fe8daf37c46dadbc",
      "parents": [
        "7ae4a2c130ec2cb5dec69d095b810698acc543b3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 02 14:01:58 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 09 18:14:44 2012 -0800"
      },
      "message": "Disable HQ resamplers for now until qualified\n\nThis saves about 6500 bytes.\n\nChange-Id: I87102fe561c95c19c9e615dea3de914f96639257\n"
    },
    {
      "commit": "2f732eb768004c6362fae8a02c60b69c9400b032",
      "tree": "e47161097aae718d7496059fd53b0238f3627a53",
      "parents": [
        "7ae4a2c130ec2cb5dec69d095b810698acc543b3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 09:48:03 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 09 17:29:26 2012 -0800"
      },
      "message": "Move header declarations around for clarity\n\nPut IAudioFlinger methods in binder opcode order.\nMove hardware call state closer to where it is used.\ngetMode() and btNrecIsOff() are private.\n\nChange-Id: Ie50340b396c39c763f2b155cbc08da8a0d0f2424\n"
    },
    {
      "commit": "004f719467c498942c40de9f260be601ee45e630",
      "tree": "92763f0176b88c463d756e04a6109deb42ec441d",
      "parents": [
        "7ae4a2c130ec2cb5dec69d095b810698acc543b3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 30 09:26:17 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 09 17:00:15 2012 -0800"
      },
      "message": "Mark fields const if only set in constructor\n\nChange-Id: Iacd06bb9efaf708cf965033be1f2297b58f7f75c\n"
    },
    {
      "commit": "d198b61603d5fa9298edea4ddb5852ea45159906",
      "tree": "3c03752e50c74f4bcdcf185d8e84e00788ffea04",
      "parents": [
        "7ae4a2c130ec2cb5dec69d095b810698acc543b3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 02 14:09:43 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 09 16:58:07 2012 -0800"
      },
      "message": "Remove aliasing\n\nCode was aliasing mBuffer as buffer, but continuing to use both buffer\nand mBuffer after that point.  This was at best misleading, and at worst\ncould confuse the compiler into generating bad code.  There was no\nperformance advantage to the alias, in fact removing it saves 16 bytes.\n\nChange-Id: I55023ddba465d9be82f66745b088d18af658ac60\n"
    },
    {
      "commit": "58123c3a8b5f34f9d1f70264a3c568ed90288501",
      "tree": "19111bc4d31bd66596fc47272fe778f1ea1af9d9",
      "parents": [
        "98ec94c5854daccc3474758524e7f4adfe535ce0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 10:32:24 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 09 16:43:39 2012 -0800"
      },
      "message": "Camel case readability \u0026 private disconnect(bool)\n\nChange-Id: If66516ed2703e048c5e6ccc6cd431446a024f4a1\n"
    },
    {
      "commit": "5b9ff43995f6a6b819d9ad37dd8cdc5ad4a088d7",
      "tree": "bfa47df10004a01c070003633ac7096a8496e3d5",
      "parents": [
        "7ae4a2c130ec2cb5dec69d095b810698acc543b3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 09 08:22:46 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 09 16:34:23 2012 -0800"
      },
      "message": "Use mul from audioutils\n\nI verified that the disassembled output is identical.\n\nChange-Id: I34a76f0842ebc4aef2c923e079e38d0bc1f98b5c\n"
    },
    {
      "commit": "23d82a9bc9a43b49ba684ba40875b91db310d3b9",
      "tree": "380803dbedfeeb154242e465da524c061f91ff40",
      "parents": [
        "7ae4a2c130ec2cb5dec69d095b810698acc543b3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 11:10:00 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 09 16:33:17 2012 -0800"
      },
      "message": "Fix typos in ALOG for pid vs tid\n\nChange-Id: I6dc70f137d0ff8a86427ab8882a81886e1de0782\n"
    },
    {
      "commit": "90bebef5669a9385c706b042d146a31dca2e5d9b",
      "tree": "a60c6383825eb3ed02493036605391d015732190",
      "parents": [
        "98ec94c5854daccc3474758524e7f4adfe535ce0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 15:24:38 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 17:21:49 2012 -0800"
      },
      "message": "No newline or space at end of ALOG format string\n\nChange-Id: I0bef580cbc818cb7c87aea23919d26f1446cec32\n"
    },
    {
      "commit": "b7bf796b758e144f94f6ed4d16c21bf22a118fb3",
      "tree": "ae407de10945e65b4092455db41ae6b8b3c8462c",
      "parents": [
        "98ec94c5854daccc3474758524e7f4adfe535ce0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 12:36:25 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 12:54:31 2012 -0800"
      },
      "message": "Move declaration of stream_type_t up earlier\n\nstream_type_t is used by AudioFlinger class, so it should be declared there.\nThis way we don\u0027t have to peek into PlaybackThread to get the declaration.\n\nChange-Id: Ie08bab1604699214d1e8df2d48d3fbfbbc436e96\n"
    },
    {
      "commit": "02bbd20cece1785c223ac4ca2ddc635931a80673",
      "tree": "f43adecd4648ff511eacc7ca2921c167ed3220de",
      "parents": [
        "98ec94c5854daccc3474758524e7f4adfe535ce0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 12:35:35 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 12:52:00 2012 -0800"
      },
      "message": "Rename type() to streamType()\n\nThis avoids possible confusion with thread\u0027s type().\nAlso remove redundant cast \"(audio_stream_type_t)\".\n\nChange-Id: I320b9177b6c267a102d215f002228bcf988c437a\n"
    },
    {
      "commit": "98ec94c5854daccc3474758524e7f4adfe535ce0",
      "tree": "bec80965e65828ee2f890d25c275fd3bf422eb45",
      "parents": [
        "72ef00de10fa95bfcb948ed88ab9b7a177ed0b48"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 25 14:28:29 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 10:24:54 2012 -0800"
      },
      "message": "Combine duplicate code \u0026 document wp\u003c\u003e in mClients\n\nChange-Id: Iea8cfe8e57563337fb2484a1246ef79d6ad3db18\n"
    },
    {
      "commit": "72ef00de10fa95bfcb948ed88ab9b7a177ed0b48",
      "tree": "beeaffd33a57a6cc5fa48f2fa905fc680c4746d1",
      "parents": [
        "dbfafaffe2e97eaf8d74ec6b6c468418a1ad2443"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 11:09:42 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 10:06:32 2012 -0800"
      },
      "message": "Use audio_io_handle_t consistently instead of int\n\nOther:\n - add a comment to nextUniqueId\n - made ThreadBase::mId const, since it is only assigned in constructor.\n\nChange-Id: I4e8b7bec4e45badcde6274d574b8a9aabd046837\n"
    },
    {
      "commit": "dbfafaffe2e97eaf8d74ec6b6c468418a1ad2443",
      "tree": "594fe80487e000923e244f40ecd3adbd138608fb",
      "parents": [
        "5e92a7861196ddae14638d4b7a63fc4892b7ef59"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 25 15:27:15 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 09:49:14 2012 -0800"
      },
      "message": "Simplify destructors\n\nRemove explicit clear() when the order doesn\u0027t matter.\n\nChange-Id: I5931bc7ef5f681c7ce329aa9ec0a6e46d34a56c5\n"
    },
    {
      "commit": "5e92a7861196ddae14638d4b7a63fc4892b7ef59",
      "tree": "6772b944a26acb22381a2eb38871b46cff9d856a",
      "parents": [
        "0a20fa9c41c96e31fa20e071074a4b6e7f6c41c3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 30 07:40:52 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 09:21:39 2012 -0800"
      },
      "message": "Effect UUID inputs passed by pointer are const\n\nChange-Id: I1f5c338bcb7368e3dd8cd5f804b2e6d9fbe087f8\n"
    },
    {
      "commit": "0a20fa9c41c96e31fa20e071074a4b6e7f6c41c3",
      "tree": "128bf63eaea4d94fbf42d6954cd92046f90bf98e",
      "parents": [
        "b61ec89bb0c701b3bd06eb658f854230681f8b39",
        "bb001926447d0b7dc71ca8bb3c9856f3136d8f4c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 08:40:28 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 08 08:40:28 2012 -0800"
      },
      "message": "Merge \"Use pid_t not int\""
    },
    {
      "commit": "b61ec89bb0c701b3bd06eb658f854230681f8b39",
      "tree": "d1281080768cd8ab98f97cc331e2e7bb27019059",
      "parents": [
        "63d2daed17ab749baa80bc808fb5083b688b771b",
        "1a0ae5be3d1273cba12584b33830d859510fbf82"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 08:40:15 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 08 08:40:15 2012 -0800"
      },
      "message": "Merge \"Don\u0027t double destruct audio_track_cblk_t\""
    },
    {
      "commit": "63d2daed17ab749baa80bc808fb5083b688b771b",
      "tree": "735cfc77d2082c044816fe367f33401fd5b472c7",
      "parents": [
        "4f9b0c54011eb8fd2ccfb393c2dcd51cd07800e0",
        "c59c004a3a6042c0990d71179f88eee2ce781e3c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 08:39:39 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 08 08:39:39 2012 -0800"
      },
      "message": "Merge \"AudioFlinger methods const and inline\""
    },
    {
      "commit": "86feafe15b3f9609e1e9f64184688c2b6f2e4834",
      "tree": "281f6c3826240aeabc62820918b9e206a6cfb76e",
      "parents": [
        "e616d4e6de6d53ddebbc3d7fb381af94589c2232",
        "c19e22450e6e3d07594c935c7a9522e85e909e82"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 08:33:41 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 08 08:33:41 2012 -0800"
      },
      "message": "Merge \"Use virtual destructors\""
    },
    {
      "commit": "e616d4e6de6d53ddebbc3d7fb381af94589c2232",
      "tree": "ec4258e62eeb8cc12077af1a8dae45b6b4f0d6cb",
      "parents": [
        "f22147e5d2982e0c461f7ce8058c2d596d518bd4",
        "090f01963e215f895020a31e22368cd44e086ce3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 07:45:15 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 08 07:45:15 2012 -0800"
      },
      "message": "Merge \"Improve performance for sp\u003c\u003e on stack\""
    },
    {
      "commit": "1579d7948117e3e6541b0cfda02cc5234a3280ea",
      "tree": "b86c07193eb8e2d6d313e1136fccffa043d4c7af",
      "parents": [
        "b5a66e15f371143f48665bbd462d75309582845d",
        "7378ca506e4e20c2b2d4e94a131cf1b95831adb5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 07:41:44 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 08 07:41:44 2012 -0800"
      },
      "message": "Merge \"Use 0 not NULL for sp\u003c\u003e and wp\u003c\u003e\""
    },
    {
      "commit": "b5a66e15f371143f48665bbd462d75309582845d",
      "tree": "45d58fa394a3d11bb4fb68ab6356191d863fc559",
      "parents": [
        "e98bbd36d67243fe987b09904956550a68af1cc7",
        "4c340c6521b634f159d2d6bc4e9359226fd8edf8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 07:40:23 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 08 07:40:23 2012 -0800"
      },
      "message": "Merge \"Use bool instead of int\""
    },
    {
      "commit": "e98bbd36d67243fe987b09904956550a68af1cc7",
      "tree": "3ad396f50bb4ad8e1bbf9fa939c4978851ec998b",
      "parents": [
        "dfa75555098a385ac8f4d29a73b32d66501f133d",
        "f587ba5b991c7cd91e4df093d0d796bd419e5d67"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 07:39:27 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 08 07:39:27 2012 -0800"
      },
      "message": "Merge \"Declare more IAudioFlinger methods const\""
    },
    {
      "commit": "1a0ae5be3d1273cba12584b33830d859510fbf82",
      "tree": "8073be7b5e33ee230159f7c0aed22bb6de63d3f9",
      "parents": [
        "787bae0578fbaab6219ebf23494866b224d01438"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 10:24:48 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 16:16:46 2012 -0800"
      },
      "message": "Don\u0027t double destruct audio_track_cblk_t\n\nFortunately audio_track_cblk_t doesn\u0027t have a destructor, but for clarity\nremove the double destruction.\n\nAlso add warning not to add any virtuals to audio_track_cblk_t.\n\nChange-Id: I70ebe1a70460c7002145b2cdf10f9f137396e6f3\n"
    },
    {
      "commit": "bb001926447d0b7dc71ca8bb3c9856f3136d8f4c",
      "tree": "fe9e3f0deff3396abf15bbff29f5b8a1d6f50175",
      "parents": [
        "787bae0578fbaab6219ebf23494866b224d01438"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 11:10:26 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 16:14:15 2012 -0800"
      },
      "message": "Use pid_t not int\n\nChange-Id: Iad1c2fd4152e94080ad8c65c13ddf4519fc2ed27\n"
    },
    {
      "commit": "d5e54f7a36daedc3b2a642d1499c262da04e6280",
      "tree": "9a56f54d6431ad2f7f0d2c6817f1e9f568bca769",
      "parents": [
        "787bae0578fbaab6219ebf23494866b224d01438"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 09:50:01 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 16:09:30 2012 -0800"
      },
      "message": "Remove dead code\n\nmFormat is unused in resampler\nmClientTid is unused\nlocal variable pid is unused in dump\n\nChange-Id: Ib156e38029366620bfeff2a13e73471867155a5b\n"
    },
    {
      "commit": "f587ba5b991c7cd91e4df093d0d796bd419e5d67",
      "tree": "0fe274cdfa6dcae81617725b5ea376c86245b104",
      "parents": [
        "787bae0578fbaab6219ebf23494866b224d01438"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 16:25:10 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 15:40:56 2012 -0800"
      },
      "message": "Declare more IAudioFlinger methods const\n\nThis is just documentation, as C++ method const-ness doesn\u0027t mean anything\nfor a binder API.  Instead, here const means \"no side effects\".\n\nChange-Id: Iaa9cd2fe477db10ae9a40cac4f79f0faa9b4e5e6\n"
    },
    {
      "commit": "4c340c6521b634f159d2d6bc4e9359226fd8edf8",
      "tree": "7cfdf3bedccd84f751909ee5866871576250f274",
      "parents": [
        "787bae0578fbaab6219ebf23494866b224d01438"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 12:33:54 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 15:36:47 2012 -0800"
      },
      "message": "Use bool instead of int\n\nThe .h is not modified to avoid increasing data size.\n\nChange-Id: Ide4a821a5b16424ffa03471dfff98dc3e9b5f751\n"
    },
    {
      "commit": "c59c004a3a6042c0990d71179f88eee2ce781e3c",
      "tree": "68e0c9bb6d5bb10a1a8263ebefbb5601946702ee",
      "parents": [
        "787bae0578fbaab6219ebf23494866b224d01438"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 02 14:06:11 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 15:25:24 2012 -0800"
      },
      "message": "AudioFlinger methods const and inline\n\nThis saves 1063 bytes and probably improves performance.\n\nChange-Id: I11cf0dfd925fbaec75e3d1b806852a538eae5518\n"
    },
    {
      "commit": "c19e22450e6e3d07594c935c7a9522e85e909e82",
      "tree": "2a81eb366d10425b83b6bbf9997d9c8813515ea1",
      "parents": [
        "787bae0578fbaab6219ebf23494866b224d01438"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 30 14:54:39 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 14:42:43 2012 -0800"
      },
      "message": "Use virtual destructors\n\nIt turns out to be just a comment, as all except AudioMixer are RefBase.\n\nThere are only a few performance-sensitive cases where it\u0027s worth thinking\nabout whether you need a virtual destructor, and the headache usually\noutweighs the benefit.\n\nChange-Id: I716292f9556ec17c29ce8c76ac8ae602cb496533\n"
    },
    {
      "commit": "7378ca506e4e20c2b2d4e94a131cf1b95831adb5",
      "tree": "60a526b206858f294a66194ae3c1bcda08b2e65b",
      "parents": [
        "787bae0578fbaab6219ebf23494866b224d01438"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 13:44:40 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 11:20:35 2012 -0800"
      },
      "message": "Use 0 not NULL for sp\u003c\u003e and wp\u003c\u003e\n\nChange-Id: Id1f0c89acefaceed6cb9ca7c165fce895e46d85b\n"
    },
    {
      "commit": "787bae0578fbaab6219ebf23494866b224d01438",
      "tree": "935422276579d6f7c3b4e835e1a79bc9082a2b26",
      "parents": [
        "ff3c83e04ae459c4252b86dd4440b4e37ee92c16",
        "de9719b3ec71472e6bf75117152176af51d1a515"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 08:31:01 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 03 08:31:01 2012 -0800"
      },
      "message": "Merge \"Use audio_in_acoustics_t consistently\""
    },
    {
      "commit": "ff3c83e04ae459c4252b86dd4440b4e37ee92c16",
      "tree": "8de4de832991dd2086313b6168f8523d002f6251",
      "parents": [
        "a0d68338a88c2ddb4502f95017b546d603ef1ec7",
        "3d2f877c1cb4e4ae4ddde7f57f4353de9341f11b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 08:00:52 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 03 08:00:52 2012 -0800"
      },
      "message": "Merge \"Use ToneGenerator::tone_type consistently\""
    },
    {
      "commit": "a0d68338a88c2ddb4502f95017b546d603ef1ec7",
      "tree": "f052125f4720fde00179d41d4ee04e02934052e4",
      "parents": [
        "87f155d6655b2d3b27e69281a29e85c6407e4d26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 16:47:15 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 07:57:01 2012 -0800"
      },
      "message": "Use NULL not 0 for raw pointers\n\nUse if (p !\u003d NULL) instead of if (ptr)\n\nChange-Id: Iaec3413a59ccbf233c98fcd918cc7d70ac5da9fa\n"
    },
    {
      "commit": "87f155d6655b2d3b27e69281a29e85c6407e4d26",
      "tree": "65032f39295f3fd280d8478bdc25a14b5362847d",
      "parents": [
        "f81e97e4ec8b01965a5b36987f886cf5001f71ff",
        "d05397144be774f2f3623c754e865f51753e4e31"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 07:46:42 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 03 07:46:42 2012 -0800"
      },
      "message": "Merge \"For performance, return large objects by reference\""
    },
    {
      "commit": "f81e97e4ec8b01965a5b36987f886cf5001f71ff",
      "tree": "25df07b2a8864a1d6b33d2ff0defaecb048e7c39",
      "parents": [
        "84afa3b51ac48f84ed62489529ce78cba7fca00e",
        "77c1119ea0b5cb32287088ceeeb7e3b6bd14a85d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 07:45:13 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 03 07:45:13 2012 -0800"
      },
      "message": "Merge \"No need to check a wp\u003c\u003e for 0 before promote()\""
    },
    {
      "commit": "84afa3b51ac48f84ed62489529ce78cba7fca00e",
      "tree": "ee9ba57cdc17668c9362b70f6bfbfcbd40a253ad",
      "parents": [
        "5c0ad10b14ec2287f90f95912d98e66eef006e2a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 25 15:28:08 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 07:37:14 2012 -0800"
      },
      "message": "Constructor initialization and const fields\n\nIn constructors, initialize member fields in the initialization list\nrather than constructor body where possible.  This allows more fields\nto be const, provided they are never modified.\n\nAlso initialize POD fields in constructor, unless it\u0027s obvious they\ndon\u0027t need to be initialized.  In that case, put a comment instead.\n\nRemove explicit clear() in destructors on fields that are now const.\n\nGive AudioSessionRef a default constructor, so it\u0027s immutable fields can\nbe marked const.\n\nAdd comment about ~TrackBase() trick.\n\nInitialize fields in declaration order to make it easier to confirm that\nall fields are set.\n\nMove initialization of mHardwareStatus from onFirstRef() to constructor.\n\nUse NULL not 0 to initialize raw pointers in initialization list.\n\nRename field mClient to mAudioFlingerClient, and getter from client()\nto audioFlingerClient().\n\nChange-Id: Ib36cf6ed32f3cd19003f40a5d84046eb4c122052\n"
    },
    {
      "commit": "5c0ad10b14ec2287f90f95912d98e66eef006e2a",
      "tree": "b11958235c122442a9dd1af28ad054e1e5046a79",
      "parents": [
        "62da7fbd60bee2dd57f503126266e9f04311d400",
        "23bb8becff20449a9b1647d5a1a99b14c83f0cce"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 07:26:28 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 03 07:26:28 2012 -0800"
      },
      "message": "Merge \"Cleanup thread types\""
    },
    {
      "commit": "62da7fbd60bee2dd57f503126266e9f04311d400",
      "tree": "22c9118701f42b77ed573001779390437d96872c",
      "parents": [
        "d45ee9d9d61af0791c7c3c51f8d4fe6794ef02a5",
        "83d86538c4c479a9225c75ab27938e8f05abb9c8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 07:18:06 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 03 07:18:06 2012 -0800"
      },
      "message": "Merge \"Make AudioTrack control block volume field private\""
    },
    {
      "commit": "d45ee9d9d61af0791c7c3c51f8d4fe6794ef02a5",
      "tree": "c5193c552b2bd0188276e6a2c96a21965f86edbc",
      "parents": [
        "914b33354be650a5213dd545ace49c6e81828043",
        "435dbe6c3ecd04bcb4bd80584064e287ebccd720"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 02 13:31:23 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 02 13:31:23 2012 -0800"
      },
      "message": "Merge \"Fix const sp\u003c\u003e\u0026 in parameter list and return value\""
    },
    {
      "commit": "d05397144be774f2f3623c754e865f51753e4e31",
      "tree": "da598c09f36ce72672b7acec33516dbd9103e172",
      "parents": [
        "fd267d7cf640225bb57f0ed1af44efc153275f6d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 30 12:56:03 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 30 13:01:17 2012 -0800"
      },
      "message": "For performance, return large objects by reference\n\nChange-Id: Ibf737018ef1d3c7d717584615dcb2d4ecdb50c99\n"
    },
    {
      "commit": "090f01963e215f895020a31e22368cd44e086ce3",
      "tree": "c00827de791ec3f221faab8effbe822a619a7927",
      "parents": [
        "fd267d7cf640225bb57f0ed1af44efc153275f6d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 30 13:00:02 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 30 13:00:02 2012 -0800"
      },
      "message": "Improve performance for sp\u003c\u003e on stack\n\nCombine default constructor for sp\u003c\u003e immediately followed by assignment,\nas the reference-counting is relatively slow.  Also return sp\u003c\u003e directly\nrather than via local variable, for the same reason.\n\nChange-Id: If55931f1e407994f6591ddde41b53db72fb4fc40\n"
    },
    {
      "commit": "435dbe6c3ecd04bcb4bd80584064e287ebccd720",
      "tree": "aa42e717d186dc84491e03c675c8c93683407fcf",
      "parents": [
        "fd267d7cf640225bb57f0ed1af44efc153275f6d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 30 10:15:48 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 30 10:31:09 2012 -0800"
      },
      "message": "Fix const sp\u003c\u003e\u0026 in parameter list and return value\n\nEffectModule::addHandle and Client::heap() were declared incorrectly.\n\nAs a parameter, an sp\u003c\u003e should be \u0026 for efficiency, and for input\nparameters it should also be const to protect the caller\u0027s value.\n\nBut as a return value, an sp\u003c\u003e should have neither const or \u0026.  The \"e\"\nin \"return e;\" might be located on the stack, and if there is \"\u0026\" then\nthe caller would see the address of a variable which no longer exists.\nAlso, an \u0026 would make it hard to do \"return 0;\".\nA \"const\" without \u0026 is meaningless in the return type.\n(In this particular case, the \"e\" is a member field, so it was safe.)\n\nChange-Id: I3df5f294214eb15a9d4d596c6d5ef29de97b5c27\n"
    },
    {
      "commit": "e9dd0176933d6233916c84e18f3e8c0d644ca05d",
      "tree": "456651a5f40cbd404d39abb20604817324926db3",
      "parents": [
        "fd267d7cf640225bb57f0ed1af44efc153275f6d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 18:08:45 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 18:08:45 2012 -0800"
      },
      "message": "Unconditional delete\n\nDon\u0027t check that pointer is non-NULL before delete.\n\nDon\u0027t leave deleted member fields non-NULL, except in a destructor,\nsince it could be misleading in a dump or debugger. (mRsmpOutBuffer)\n\nChange-Id: Ic0492a6b752f74a67f4c96dfb89ca2de4e69eecf\n"
    },
    {
      "commit": "77c1119ea0b5cb32287088ceeeb7e3b6bd14a85d",
      "tree": "1468a69506c7e84e2e44924f6244bec7ef8f856d",
      "parents": [
        "fd267d7cf640225bb57f0ed1af44efc153275f6d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 25 14:27:41 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 16:30:45 2012 -0800"
      },
      "message": "No need to check a wp\u003c\u003e for 0 before promote()\n\nAlso remove unnecessary wp\u003c\u003e local variable.\n\nChange-Id: I620e67b5d559d28616f8e00609a525cfe19c5ddc\n"
    },
    {
      "commit": "3d2f877c1cb4e4ae4ddde7f57f4353de9341f11b",
      "tree": "02ba1339028105733ff3897c5c72952781dc793d",
      "parents": [
        "a3a2cd4072aaa2d93c91251a786eb7323f8d2c27"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 15:25:25 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 16:01:44 2012 -0800"
      },
      "message": "Use ToneGenerator::tone_type consistently\n\nAlso remove defaults in startToneCommand(), they\u0027re not needed and the\ndefault for tone type was nonsense.\n\nChange-Id: I70fa8cee4f3dbb8c66ceb3719c8d3d2f447f05b9\n"
    },
    {
      "commit": "de9719b3ec71472e6bf75117152176af51d1a515",
      "tree": "d745196f8aa6832a18e380d78ad1bd1eae1e9e8f",
      "parents": [
        "a3a2cd4072aaa2d93c91251a786eb7323f8d2c27"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 12:32:34 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 13:31:54 2012 -0800"
      },
      "message": "Use audio_in_acoustics_t consistently\n\nChange-Id: I0a9dd668fb2e57b1c3ece3190588194974b99062\n"
    },
    {
      "commit": "fd267d7cf640225bb57f0ed1af44efc153275f6d",
      "tree": "c97f1923f3cf143a7a8cd94184335283100c6437",
      "parents": [
        "a3a2cd4072aaa2d93c91251a786eb7323f8d2c27",
        "eba51fb3a361f67a6a64d5a16eba6084fe27d60e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 09:06:00 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 27 09:06:00 2012 -0800"
      },
      "message": "Merge \"Use audio_source_t consistently\""
    },
    {
      "commit": "a3a2cd4072aaa2d93c91251a786eb7323f8d2c27",
      "tree": "188f6115eb45ac32f182d53540c76dae63cf4917",
      "parents": [
        "6f5980b75df837231365d238c1b0d6f386363fbb",
        "aed850d0d3b3c8cf3feaf1438076f33db2a60946"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 07:22:30 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 27 07:22:30 2012 -0800"
      },
      "message": "Merge \"AudioStreamIn and AudioStreamOut\""
    },
    {
      "commit": "6f5980b75df837231365d238c1b0d6f386363fbb",
      "tree": "a0e71b7150016bfd7763572c272b11b33aa13985",
      "parents": [
        "28f52c84c22e129063a576e1269a39ae0cc0bfb3",
        "90716c5728b37637b2d0a730a721bfc9fad299e0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 07:19:53 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 27 07:19:53 2012 -0800"
      },
      "message": "Merge \"Declare methods in binder opcode order\""
    },
    {
      "commit": "28f52c84c22e129063a576e1269a39ae0cc0bfb3",
      "tree": "c64b35e8b205295cc6f2503bbb8520868e01fc8a",
      "parents": [
        "114c458f2b80a252ec627add1d5fda2093c79068",
        "28243dd563fee1c82f0fff6cc27b5cbf21fa2585"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 07:19:10 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 27 07:19:10 2012 -0800"
      },
      "message": "Merge \"Use enum effect_state consistently\""
    },
    {
      "commit": "114c458f2b80a252ec627add1d5fda2093c79068",
      "tree": "3f676423666da814f847dc7944d223cb5a5bbe9c",
      "parents": [
        "37770e47b63038178e1d8bdb9f14785a86e9e858",
        "b853e986caf43408ad95b9014f194aadff385e3c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 07:18:23 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 27 07:18:23 2012 -0800"
      },
      "message": "Merge \"Use enum track_state consistently\""
    },
    {
      "commit": "eba51fb3a361f67a6a64d5a16eba6084fe27d60e",
      "tree": "2d3dc41818d33d596e66486dcf509086b9dde1e0",
      "parents": [
        "80a0d2de0a7db5cdcaf40fe33b14523b65d19423"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 23 13:58:49 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 16:50:19 2012 -0800"
      },
      "message": "Use audio_source_t consistently\n\nWas a mix of audio_source_t, uint8_t, and int.\n\nRelated fixes:\n - fix comments in MediaRecorder.java\n - AudioPolicyService server side was not checking source parameter at\n   all, so if the client wrapper was bypassed, invalid values could be\n   passed into audio HAL\n - JNI android_media_AudioRecord_setup was checking source for positive\n   values, but not negative values. This test is redundant, since already\n   checked at Java and now checked by AudioPolicyService also, but might\n   as well make it correct.\n\nChange-Id: Ie5e25d646dcd59a86d7985aa46cfcb4a1ba64a4a\n"
    },
    {
      "commit": "aed850d0d3b3c8cf3feaf1438076f33db2a60946",
      "tree": "78a7f2a4ce61fc7514fd3c18ac7805c488945407",
      "parents": [
        "2857b47a2731579772c76d46285660972c0ba23d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 09:46:34 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 15:58:07 2012 -0800"
      },
      "message": "AudioStreamIn and AudioStreamOut\n\nThese are immutable, so make the fields const.\ngetOutput() and getInput() methods are now const.\n\nChange-Id: I128246ebd56ea50b3e542be43f2aa1bcb55f1373\n"
    },
    {
      "commit": "23bb8becff20449a9b1647d5a1a99b14c83f0cce",
      "tree": "461647a589f80192679b52f210524c74cce4fb57",
      "parents": [
        "2857b47a2731579772c76d46285660972c0ba23d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 10:38:26 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 15:45:12 2012 -0800"
      },
      "message": "Cleanup thread types\n\nUse type_t instead of int for thread types.\nInitialize ThreadBase::mType in constructor and make it const.\n\nChange-Id: I43d141388b9639e4783c30b97dbda5688bf7555f\n"
    },
    {
      "commit": "90716c5728b37637b2d0a730a721bfc9fad299e0",
      "tree": "5c92855ca40d1de7f6dc5ad14ad16d54b87137c8",
      "parents": [
        "80a0d2de0a7db5cdcaf40fe33b14523b65d19423"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 13:40:12 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 14:34:30 2012 -0800"
      },
      "message": "Declare methods in binder opcode order\n\nThis makes it easier to compare interface and implementation.\n\nChange-Id: Ie060e43dec348902abcf40f5a610cec639d6d0d3\n"
    },
    {
      "commit": "29c23c3aee5ae799b3480dc6876a46c46b019710",
      "tree": "5303f312a95c76fb3df14f22e91a28e6a32f54f8",
      "parents": [
        "2857b47a2731579772c76d46285660972c0ba23d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 13:37:52 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 14:23:47 2012 -0800"
      },
      "message": "Use enum mixer_state consistently\n\nChange-Id: I5b71ed20f939dfc4b98143334b7aa064d282f584\n"
    },
    {
      "commit": "28243dd563fee1c82f0fff6cc27b5cbf21fa2585",
      "tree": "222f107b8674ef82b42328fce2b464134e22e155",
      "parents": [
        "2857b47a2731579772c76d46285660972c0ba23d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 13:43:46 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 14:20:34 2012 -0800"
      },
      "message": "Use enum effect_state consistently\n\nAlso fix indentation\n\nChange-Id: I393ef9e37ffceed5ad4a78df439726ae1fe139df\n"
    },
    {
      "commit": "b853e986caf43408ad95b9014f194aadff385e3c",
      "tree": "88794d079d055901613a34304c2eb4bececd2033",
      "parents": [
        "2857b47a2731579772c76d46285660972c0ba23d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 13:39:18 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 14:13:43 2012 -0800"
      },
      "message": "Use enum track_state consistently\n\nChange-Id: Ie5ebb7befa092e1de1e4df9c6e2d51e6bcfd176a\n"
    },
    {
      "commit": "9365ea9bf2e439b3e71abbabe22ce7382ebc4b3a",
      "tree": "db8f305183b20de93208b81c209ae0440e692579",
      "parents": [
        "5da85aa064f65d1fc90628bd6658ecd307e44725",
        "84e19873fde204d73628ba1b5ca9e3f5778574fa"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 25 08:57:23 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 25 08:57:23 2012 -0800"
      },
      "message": "am 535b0264: am 7eeaf3f0: Merge \"AudioFlinger: refine mixer sleep time logic\" into ics-mr1\n\n* commit \u0027535b0264a4cfa790e549bd9cd09980788f1375f4\u0027:\n  AudioFlinger: refine mixer sleep time logic\n"
    },
    {
      "commit": "84e19873fde204d73628ba1b5ca9e3f5778574fa",
      "tree": "113fb74556ff48132400e936fa7bd77233630429",
      "parents": [
        "7c5aea0a8d9b422999483f96a2566f77ff11abf2",
        "21e4b6ed00e814bffc70895847a4944d7a190020"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 24 11:51:50 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 24 11:51:50 2012 -0800"
      },
      "message": "am 7eeaf3f0: Merge \"AudioFlinger: refine mixer sleep time logic\" into ics-mr1\n\n* commit \u00277eeaf3f07aa6fb10639d9f96c1367eb98c3e8839\u0027:\n  AudioFlinger: refine mixer sleep time logic\n"
    },
    {
      "commit": "7c5aea0a8d9b422999483f96a2566f77ff11abf2",
      "tree": "be8c3dc3c8d2a781020eba7fb165c440f81ff38c",
      "parents": [
        "d9f088521782f071fc615df0ebbc80e53e21b2b1",
        "eaa0b5cc2f7723e9b25298126d0dcb48c56d5dac"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 24 11:51:47 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 24 11:51:47 2012 -0800"
      },
      "message": "am 41773d46: Merge \"DO NOT MERGE Revert \"Revert \"AudioFlinger: mix track only when really ready (2)\"\"\" into ics-mr1\n\n* commit \u002741773d46556aa47d4322ff89fdaf7d1345c2d1f2\u0027:\n  DO NOT MERGE Revert \"Revert \"AudioFlinger: mix track only when really ready (2)\"\"\n"
    },
    {
      "commit": "21e4b6ed00e814bffc70895847a4944d7a190020",
      "tree": "ff39d6e267fb9ebaa473db578ef3525330d8450d",
      "parents": [
        "eaa0b5cc2f7723e9b25298126d0dcb48c56d5dac"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 23 18:56:59 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 23 18:56:59 2012 -0800"
      },
      "message": "AudioFlinger: refine mixer sleep time logic\n\nWhen an AudioTrack is in underrun state, the AudioFlinger mixer will\nsleep for a short period of time to give the app a chance to fill the\nAudioTrack buffer. If the AudioTrack is still not ready during next mixing round,\nthe mixer will proceed with other tracks.\n\nIf an application keeps a steady underrun condition, the AudioFlinger mixer will\nalternate between ready and not ready states. In the longer term this will cause the\naudio HAL to underrun.\nThere is a mechanism to reduce the sleep period if the mixer is not ready several times in a\nrow but this mechanism is defeated by the alternating ready/not ready conditions.\n\nThe fix consists in only increasing sleep time if the mixer is ready for at least two\nconsecutive times.\n\nIssue 5904527.\n\nChange-Id: Id0139bca9be8c4e425ec6d428515c4d8f718e8c9\n"
    },
    {
      "commit": "eaa0b5cc2f7723e9b25298126d0dcb48c56d5dac",
      "tree": "5c73ae7daf8480e7ce2cc862790332401688931b",
      "parents": [
        "7baf7894bc2f1a62440f381eeb50143f210a5d61"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 23 18:35:10 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 23 18:37:07 2012 -0800"
      },
      "message": "DO NOT MERGE Revert \"Revert \"AudioFlinger: mix track only when really ready (2)\"\"\n\nThis reverts commit b918035d34422a2041b6ec8c09c566bb93345b40.\n\nChange-Id: I093bcfa56ad54a080b930208b6b79169d33581fb\n"
    },
    {
      "commit": "15dfda272eec983508b89fb8bc9ca6f2bb825496",
      "tree": "0c98903df597cd0d08e6a40b1c11b78cde2d6cbd",
      "parents": [
        "a3db30f7c53936a3acb87d2c44807ee2f0cfa16e",
        "7baf7894bc2f1a62440f381eeb50143f210a5d61"
      ],
      "author": {
        "name": "Justin Ho",
        "email": "justinho@google.com",
        "time": "Mon Jan 23 15:13:19 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 23 15:13:19 2012 -0800"
      },
      "message": "am fee5a860: Merge \"DO NOT MERGE Revert \"AudioFlinger: mix track only when really ready (2)\"\" into ics-mr1\n\n* commit \u0027fee5a860a8355cda071ff23644e943414ba7f65d\u0027:\n  DO NOT MERGE Revert \"AudioFlinger: mix track only when really ready (2)\"\n"
    },
    {
      "commit": "7baf7894bc2f1a62440f381eeb50143f210a5d61",
      "tree": "0ddf435e065f725aebbd1a726eb1087f6e5decfb",
      "parents": [
        "2774144fa8283f1a7b43e17a53c97dec0c366dd3"
      ],
      "author": {
        "name": "Justin Ho",
        "email": "justinho@google.com",
        "time": "Mon Jan 23 14:01:15 2012 -0800"
      },
      "committer": {
        "name": "Justin Ho",
        "email": "justinho@google.com",
        "time": "Mon Jan 23 15:02:41 2012 -0800"
      },
      "message": "DO NOT MERGE Revert \"AudioFlinger: mix track only when really ready (2)\"\n\nThis reverts commit 71c4496a9757438afd30b4404824f296f6158a49.\n\nChange-Id: Iff10c49ea728bb10023ddeb50a3b708db770fff2\n"
    },
    {
      "commit": "335787fe43596f38ea2fa50b24c54d0823a3fb1d",
      "tree": "8efb65da6c538ee243e4ac63541f8f815591aa7b",
      "parents": [
        "58f30210ea540b6ce5aa6a46330cd3499483cb97"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 17:00:00 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 17:12:59 2012 -0800"
      },
      "message": "Remove AudioFlinger dependencies on client\n\nChange-Id: Ibb591e41a3ca5d7015e2b66b98b8fef5f415fb37\n"
    },
    {
      "commit": "83d86538c4c479a9225c75ab27938e8f05abb9c8",
      "tree": "72fdff9fb9bb7e41fe48c41bfed65ab83b64f85f",
      "parents": [
        "58f30210ea540b6ce5aa6a46330cd3499483cb97"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 14:39:34 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 16:19:59 2012 -0800"
      },
      "message": "Make AudioTrack control block volume field private\n\nThis is part of the process of abstracting the control block\nto make it easier to maintain.\n\nChange-Id: Idb8f461e68dab3bcf268159cc0781651c6fb7094\n"
    },
    {
      "commit": "58f30210ea540b6ce5aa6a46330cd3499483cb97",
      "tree": "8c559ac8ca7892803b62e5e6d6018e9a4f4533a3",
      "parents": [
        "9bf3a2f69bbfa2562664181b779941e776b7e835"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 12:27:51 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 14:41:34 2012 -0800"
      },
      "message": "Use audio_format_t consistently, continued\n\nWas int or uint32_t.\n\nWhen AudioFlinger::format can\u0027t determine the correct format,\nreturn INVALID rather than DEFAULT.\n\nInit mFormat to INVALID rather than DEFAULT in the constructor.\nSubclass constructors will set mFormat to the correct value.\n\nChange-Id: I9b62640aa107d24d2d27925f5563d0d7407d1b73\n"
    },
    {
      "commit": "d967f0a099db2b71597a3127134afd4a46287a4a",
      "tree": "6428f1e6df83934c1ae6b46c10d6ee19cfe35c6a",
      "parents": [
        "05bfe50e13793404a78c20c850d467d17734d496",
        "7fc9a6fdf146ded90b51c52f4a05d797294dcb85"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 12:14:32 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 20 12:14:32 2012 -0800"
      },
      "message": "Merge \"Remove redundant get()\""
    },
    {
      "commit": "7fc9a6fdf146ded90b51c52f4a05d797294dcb85",
      "tree": "215cbb16f9babb95e8598123219abc9fed6156b9",
      "parents": [
        "27a0d83f53ddbfd6449ab0e3c786742a2cd135a9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 10 10:46:34 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 11:44:26 2012 -0800"
      },
      "message": "Remove redundant get()\n\nget() is almost always unnecessary, except in a LOG.\nAlso no need to check for !\u003d 0 before calling get().\n\nChange-Id: Ib06e7a503f86cf102f09acc1ffb2ad085025516d\n"
    },
    {
      "commit": "ea3cc3bca949139e401b77f2ac0cce7ac6e76f8f",
      "tree": "461e74fe9f5d14b718732ff58edc35164827ae01",
      "parents": [
        "6f444c95d86936217bf49fc11d279851b0fa364d",
        "0b07b8085d7b837b4dd5f09e0c8c39408f6bdbf7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 20 10:07:06 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 20 10:07:06 2012 -0800"
      },
      "message": "Merge \"Remove dead setRingerMode(mode, mask)\""
    },
    {
      "commit": "a3db30f7c53936a3acb87d2c44807ee2f0cfa16e",
      "tree": "195b8ec38f5b1e95a375d4a49503a3d923780f69",
      "parents": [
        "d746737921074e2a6c39c52b06022c5166689df5",
        "39fd8eb956dea32692d3d72b10b64a8597df0a40"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 17:26:16 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 19 17:26:16 2012 -0800"
      },
      "message": "am 9d25b82d: Merge \"Rename LOG_ASSERT to ALOG_ASSERT\"\n\n* commit \u00279d25b82d280c2d979d500e7da4447148f32f820b\u0027:\n  Rename LOG_ASSERT to ALOG_ASSERT\n"
    },
    {
      "commit": "d746737921074e2a6c39c52b06022c5166689df5",
      "tree": "62cfd5c53cafbf8a2a9f5d3f5095aa68a59eadf2",
      "parents": [
        "daef36f5d4934bd055c694a8d54b86e2b50a6159",
        "9a8ded7348c5b2302dd27b285b395416bc842c49"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 17:26:12 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 19 17:26:12 2012 -0800"
      },
      "message": "am 6df477be: Merge \"Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)\"\n\n* commit \u00276df477be186233e36fc370c4d2db6c1ed928a740\u0027:\n  Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)\n"
    },
    {
      "commit": "daef36f5d4934bd055c694a8d54b86e2b50a6159",
      "tree": "b9b371d7ce18951afafc597c2bc3fb01e9b63768",
      "parents": [
        "3734cbca25c6d902677cfb5e59dff7a1cb17a45d",
        "aa70226152d2084f85a96b52359dbc8476a86a45"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 17:26:08 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 19 17:26:08 2012 -0800"
      },
      "message": "am a826f9e2: Merge \"Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)\"\n\n* commit \u0027a826f9e2c4f6329d8d48c927f6e942e78ffaf92f\u0027:\n  Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)\n"
    },
    {
      "commit": "3734cbca25c6d902677cfb5e59dff7a1cb17a45d",
      "tree": "b7dda06a4111a2c7da34d41949cf288ad535a768",
      "parents": [
        "e744a90eb52bf9547848c08380cfb7ba7e63ffbc",
        "53feeb42c721e8fc9285e35e679906a951f3277c"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 17:26:03 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 19 17:26:03 2012 -0800"
      },
      "message": "am 4f367f33: Merge \"Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)\"\n\n* commit \u00274f367f3387887c538c81c34cc8becaea6fa5e430\u0027:\n  Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)\n"
    },
    {
      "commit": "e744a90eb52bf9547848c08380cfb7ba7e63ffbc",
      "tree": "6154d54c66881857e2bd851a59273e15b6adb769",
      "parents": [
        "ca05a87f4c69670a06bdee4b4f98bcdcd838beda",
        "52546c0ef96aa3e7e21482e0f9b6e982557c8da9"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 17:25:58 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 19 17:25:58 2012 -0800"
      },
      "message": "am ba7f0d2a: Merge \"Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)\"\n\n* commit \u0027ba7f0d2a03643ce429421b81febf18fd50473070\u0027:\n  Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)\n"
    },
    {
      "commit": "ca05a87f4c69670a06bdee4b4f98bcdcd838beda",
      "tree": "2b8556647f7fa9b8fd3c9355cda3bb26779bf725",
      "parents": [
        "90a607163f793b968d96295b876532e4d03b642c",
        "3812256de32e73e38ba16e50ac0451c10223d4eb"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 17:18:25 2012 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 17:18:25 2012 -0800"
      },
      "message": "Merge ee4618bc\n\nChange-Id: Ie1dc6ad38e7c30636d80f6caef11cf6673144940\n"
    },
    {
      "commit": "39fd8eb956dea32692d3d72b10b64a8597df0a40",
      "tree": "28e2a2d467c3f71d60114859641320f97c99c64a",
      "parents": [
        "9a8ded7348c5b2302dd27b285b395416bc842c49"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Mon Jan 09 18:35:44 2012 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:45:08 2012 -0800"
      },
      "message": "Rename LOG_ASSERT to ALOG_ASSERT\n\nChange-Id: Ie2c7ea6560656d65bad791a61996174c75677517\n"
    },
    {
      "commit": "9a8ded7348c5b2302dd27b285b395416bc842c49",
      "tree": "6244771b557279b7b8b8b574821b0afd80f252b2",
      "parents": [
        "aa70226152d2084f85a96b52359dbc8476a86a45"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 19:20:56 2012 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:45:03 2012 -0800"
      },
      "message": "Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)\n\nChange-Id: I1de629b4632a4b3187ca1a28d6416daccd35f924\n"
    },
    {
      "commit": "aa70226152d2084f85a96b52359dbc8476a86a45",
      "tree": "d9514686932670c9cd427232b9653b53ea6c5ca7",
      "parents": [
        "53feeb42c721e8fc9285e35e679906a951f3277c"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Jan 05 23:22:43 2012 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:44:59 2012 -0800"
      },
      "message": "Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)\n\nChange-Id: I8fbdfa7a7581f481968dbb65aa40f7042936d7cb\n"
    },
    {
      "commit": "53feeb42c721e8fc9285e35e679906a951f3277c",
      "tree": "bb48afd280bf7429d61229bfba2e733aa2805711",
      "parents": [
        "52546c0ef96aa3e7e21482e0f9b6e982557c8da9"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:44:56 2012 -0800"
      },
      "message": "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)\n\nChange-Id: I26f76452ac49e2890b14d133c065493d8df0fb4a\n"
    },
    {
      "commit": "52546c0ef96aa3e7e21482e0f9b6e982557c8da9",
      "tree": "54c28e0c5bf254aa29169a58baba8c1ff10b468e",
      "parents": [
        "3812256de32e73e38ba16e50ac0451c10223d4eb"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Dec 20 16:23:08 2011 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:44:50 2012 -0800"
      },
      "message": "Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)\n\nChange-Id: I44f267700356967dc51e8f85ebf457dc85cfb229\n"
    },
    {
      "commit": "3812256de32e73e38ba16e50ac0451c10223d4eb",
      "tree": "36738b11682c48374dc44c0b7c2a48a04986a019",
      "parents": [
        "b676a05348e4c516fa8b57e33b10548e6142c3f8"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Oct 20 11:56:00 2011 +0100"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:44:31 2012 -0800"
      },
      "message": "Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF)\n\nChange-Id: I5321ebd12e9c6248a108529e82c4e1af2a4405e3\n"
    },
    {
      "commit": "aeeb7e219e34d2d657d829913659a4e10e976375",
      "tree": "e8e5714af790d29647ae7080f2276bce93074075",
      "parents": [
        "27a0d83f53ddbfd6449ab0e3c786742a2cd135a9",
        "9e5af59badab79128c03c79534a20f09b6e93cfe"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 19 10:00:02 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 19 10:00:02 2012 -0800"
      },
      "message": "resolved conflicts for merge of 05683c85 to master\n\nChange-Id: I7846b7da8c5813b7a9b1f3f71aede0229689ff0d\n"
    },
    {
      "commit": "86905f445c96743b037eed6360afa956a85b019c",
      "tree": "a0d557d7c99a731e2922249e852fb9a07209a2d7",
      "parents": [
        "ca42b286a162f5cd6a4a916bfe429abe95780730",
        "22ecc912a87099cff8cadc424cd12f85c118673f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 06:09:05 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 06:09:05 2012 -0800"
      },
      "message": "Merge \"Add units to time periods\""
    },
    {
      "commit": "ca42b286a162f5cd6a4a916bfe429abe95780730",
      "tree": "add4bb37ad9021f097da7088b001ab5d4708521a",
      "parents": [
        "5cb73e780ac3ce0556a68e6e0396486ce9b19a6d",
        "8dad0e31c2366c501bd1d600261d0af35a6ca786"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 06:08:53 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 06:08:53 2012 -0800"
      },
      "message": "Merge \"Use const const strings for arrays and pointers to strings\""
    },
    {
      "commit": "22ecc912a87099cff8cadc424cd12f85c118673f",
      "tree": "56a676582d880f5314e52c1b4c0aa8de7acfb26d",
      "parents": [
        "04eaf3e5f20d7faa956c0d672024ffb5117f4c26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 09 08:33:38 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 15:45:55 2012 -0800"
      },
      "message": "Add units to time periods\n\nChange-Id: Ib980e2676cecf5d9b0c2e388da6dc8e370df8abb\n"
    },
    {
      "commit": "8dad0e31c2366c501bd1d600261d0af35a6ca786",
      "tree": "3eca30e0c32ea0516757186e359212c9c5c9a9f7",
      "parents": [
        "04eaf3e5f20d7faa956c0d672024ffb5117f4c26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 09 08:41:22 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 15:44:48 2012 -0800"
      },
      "message": "Use const const strings for arrays and pointers to strings\n\nChange-Id: I0a073e17ebf6ad59e7edbedac104c6fa4bcaf9c9\n"
    }
  ],
  "next": "f1d4592d4c3c99ebab55559e164ff102e825283e"
}
