)]}'
{
  "log": [
    {
      "commit": "b53fc4ef8da47df8d5f580e8ee6135866ffebc33",
      "tree": "e0ae90826c9f015c3f4f48faddf93b94ed84aea6",
      "parents": [
        "33ddcb6f1049cb4b6c71bb7ea605375f9492601d",
        "47c888a9fb74f8a46fbf666f0611fd1a9491466f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 02 08:03:58 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 02 08:03:58 2014 -0700"
      },
      "message": "resolved conflicts for merge of 47c888a9 to master\n\nChange-Id: I4ba2fdc6374a93a892bb7651b0d174e495f09bf6\n"
    },
    {
      "commit": "47c888a9fb74f8a46fbf666f0611fd1a9491466f",
      "tree": "ea7631cdcd94ec77ac39be13ed601cce6da89504",
      "parents": [
        "f38e190887e73bc08735af95b073ebfaabd65f95",
        "e580aa4a756d1825c440a4b4309022b1babb6de1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 02 14:51:37 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 02 14:51:37 2014 +0000"
      },
      "message": "am e580aa4a: am 86438382: Merge \"When passing a size_t via binder, use 64-bits unconditionally\"\n\n* commit \u0027e580aa4a756d1825c440a4b4309022b1babb6de1\u0027:\n  When passing a size_t via binder, use 64-bits unconditionally\n"
    },
    {
      "commit": "e580aa4a756d1825c440a4b4309022b1babb6de1",
      "tree": "689e1e7dbd0748d317f8363af7f37090929e9664",
      "parents": [
        "3d9164da1b3d58701e41c78e06839d61ed1b4ff9",
        "86438382a381eb39ed8da53fbd16cf6730fded6c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 02 14:48:27 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 02 14:48:27 2014 +0000"
      },
      "message": "am 86438382: Merge \"When passing a size_t via binder, use 64-bits unconditionally\"\n\n* commit \u002786438382a381eb39ed8da53fbd16cf6730fded6c\u0027:\n  When passing a size_t via binder, use 64-bits unconditionally\n"
    },
    {
      "commit": "86438382a381eb39ed8da53fbd16cf6730fded6c",
      "tree": "46cf9cd7ccdf436fe2585e45dfb1998529846caa",
      "parents": [
        "236f8ddd23af92f98f2deae86bf6e6b5c9278857",
        "e03dd22716e688faa56467561827d9b1ea0c4214"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri May 02 14:45:29 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 02 14:45:29 2014 +0000"
      },
      "message": "Merge \"When passing a size_t via binder, use 64-bits unconditionally\""
    },
    {
      "commit": "33ddcb6f1049cb4b6c71bb7ea605375f9492601d",
      "tree": "bcacaacc4826f9fb40e2acf99cbac5dd65a9bb74",
      "parents": [
        "8710fb4b39e1807a5f2a4486fe0b140129b3618d",
        "877a0ac7e8677fa1cbd0e8565ad9d38ba0db5fc0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 01 22:53:51 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 01 22:53:52 2014 +0000"
      },
      "message": "Merge \"Use AUDIO_INTERLEAVE_* constants\""
    },
    {
      "commit": "8710fb4b39e1807a5f2a4486fe0b140129b3618d",
      "tree": "a7a9585f998deede697ba6de8353a9727ddbb55f",
      "parents": [
        "88014186c34dbc5c8f4cdf0936cae2a36e4b61ac",
        "f38e190887e73bc08735af95b073ebfaabd65f95"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Thu May 01 22:25:14 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 01 22:25:14 2014 +0000"
      },
      "message": "am f38e1908: am 3d9164da: am 236f8ddd: Merge \"Add missing include\"\n\n* commit \u0027f38e190887e73bc08735af95b073ebfaabd65f95\u0027:\n  Add missing include\n"
    },
    {
      "commit": "f38e190887e73bc08735af95b073ebfaabd65f95",
      "tree": "f306e4c8f7efcfa2a2af11c4094c2598f01ff649",
      "parents": [
        "ee46bd378b7a68789be9c85d8a59fa02d4aed030",
        "3d9164da1b3d58701e41c78e06839d61ed1b4ff9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Thu May 01 22:22:33 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 01 22:22:33 2014 +0000"
      },
      "message": "am 3d9164da: am 236f8ddd: Merge \"Add missing include\"\n\n* commit \u00273d9164da1b3d58701e41c78e06839d61ed1b4ff9\u0027:\n  Add missing include\n"
    },
    {
      "commit": "3d9164da1b3d58701e41c78e06839d61ed1b4ff9",
      "tree": "057a0574d4c03123ad4497104e3691c9c16417dd",
      "parents": [
        "2b0b701f57c5efebe868d0eedce8cfc399007e8a",
        "236f8ddd23af92f98f2deae86bf6e6b5c9278857"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Thu May 01 22:20:06 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 01 22:20:06 2014 +0000"
      },
      "message": "am 236f8ddd: Merge \"Add missing include\"\n\n* commit \u0027236f8ddd23af92f98f2deae86bf6e6b5c9278857\u0027:\n  Add missing include\n"
    },
    {
      "commit": "236f8ddd23af92f98f2deae86bf6e6b5c9278857",
      "tree": "477653859a77583f0f2493650f93c026fca4251b",
      "parents": [
        "0c388650722ac53571be21ee04ce342c1c9510c2",
        "80a5d305a8408651fbc9b11e9d21125887da8c40"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Thu May 01 22:18:34 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 01 22:18:34 2014 +0000"
      },
      "message": "Merge \"Add missing include\""
    },
    {
      "commit": "877a0ac7e8677fa1cbd0e8565ad9d38ba0db5fc0",
      "tree": "ebea0b6a1baa42f5992d4eed4d0b72b85c870b2f",
      "parents": [
        "d1adad7acdff96f6518935214d93a655cc447570"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 30 17:04:13 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 30 17:04:53 2014 -0700"
      },
      "message": "Use AUDIO_INTERLEAVE_* constants\n\nChange-Id: I6609fa75c9a57fc4ca3887d626a2f4fb8b6593a1\n"
    },
    {
      "commit": "1a7be1ec9c769203e6c8e26378de0ab8e2ad493d",
      "tree": "68773b199cc4adcb96124270863244477570c78e",
      "parents": [
        "f131f87369ec06fc27fc1f14ea72f0ca1a066509",
        "91820d46b5f3065c2fded3cdf65d305715b33bb1"
      ],
      "author": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Tue Apr 29 11:34:16 2014 -0700"
      },
      "committer": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Tue Apr 29 11:34:16 2014 -0700"
      },
      "message": "Merge commit \u002791820d46b5f3065c2fded3cdf65d305715b33bb1\u0027 into HEAD\n"
    },
    {
      "commit": "29fe1ea4b5a1d1fc1fb87b53866901357c04c5c1",
      "tree": "815e0a3c1225770e29b6e72d7005737d1c9e398d",
      "parents": [
        "b1b1e303d93a5c67eedeca6ef3039be6cb4dc9f9",
        "9829344d526f87ca745208f04216ec795b239581"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Apr 14 18:07:35 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 14 18:07:35 2014 +0000"
      },
      "message": "am 9829344d: Merge \"media: memset sizeof argument issues\"\n\n* commit \u00279829344d526f87ca745208f04216ec795b239581\u0027:\n  media: memset sizeof argument issues\n"
    },
    {
      "commit": "d6579cc9f06052f94bf5a2c34261c84de0efce23",
      "tree": "19a65464efb5c70b2e656053f53a1d0db5039ac9",
      "parents": [
        "a133bc87eb8269a6fa61772cb708f10c9c3b7a87"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Apr 10 09:37:52 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Apr 11 11:25:19 2014 -0700"
      },
      "message": "media: memset sizeof argument issues\n\nChange-Id: I37ef154eea0f77fb7f22faf6891f3025f6ff346e\n"
    },
    {
      "commit": "80a5d305a8408651fbc9b11e9d21125887da8c40",
      "tree": "7fd996ef706a9c798b0d58bfded2ce6421667398",
      "parents": [
        "4f53fe74051026e6635ba5bdbed4f1898cb66028"
      ],
      "author": {
        "name": "Igor Chernyshev",
        "email": "igorc@google.com",
        "time": "Wed Apr 02 14:51:40 2014 -0700"
      },
      "committer": {
        "name": "Igor Chernyshev",
        "email": "igorc@google.com",
        "time": "Wed Apr 02 14:51:40 2014 -0700"
      },
      "message": "Add missing include\n\nChange-Id: I9fc3ebf60b98760611ac2071c7c519a0f8326341\n"
    },
    {
      "commit": "99021c47f45ee8bf3317cff7d08226e76c8d8227",
      "tree": "5f8c264aefbb41cab611f5db8272c36827b9fa39",
      "parents": [
        "118e7ff24af2e470ffed2bf7b37c9afa69afee92",
        "f356a123bf966150965a1af1cb9bd6ff2ca020de"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 01 22:23:23 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 01 22:23:23 2014 +0000"
      },
      "message": "am f356a123: am 68d9d71a: Support CAST V2 Authentication in MediaDrm\n\n* commit \u0027f356a123bf966150965a1af1cb9bd6ff2ca020de\u0027:\n  Support CAST V2 Authentication in MediaDrm\n"
    },
    {
      "commit": "f356a123bf966150965a1af1cb9bd6ff2ca020de",
      "tree": "22c31d7cd8430663ee6a78b5daafffc718f11454",
      "parents": [
        "4f1ef2cd65d734edae17f8586cf717598b40f2c3",
        "68d9d71a792deed75d32fe13febc07c9c12c8449"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Apr 01 22:00:45 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 01 22:00:45 2014 +0000"
      },
      "message": "am 68d9d71a: Support CAST V2 Authentication in MediaDrm\n\n* commit \u002768d9d71a792deed75d32fe13febc07c9c12c8449\u0027:\n  Support CAST V2 Authentication in MediaDrm\n"
    },
    {
      "commit": "68d9d71a792deed75d32fe13febc07c9c12c8449",
      "tree": "15ba0a2a541bd0b69fa286d04c9cc40d30b49871",
      "parents": [
        "1000d426bedb1ec38bdfff98fc8f004b64af13cb"
      ],
      "author": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Tue Mar 04 13:21:31 2014 -0800"
      },
      "committer": {
        "name": "Jeff Tinker",
        "email": "jtinker@google.com",
        "time": "Sat Mar 29 08:43:09 2014 -0700"
      },
      "message": "Support CAST V2 Authentication in MediaDrm\n\nJava API version\n\nUpdate frameworks to enable support for CAST\nV2 Authentication in the DRM Plugin.\n\nChange-Id: I9066ada0edf8e0d777c503897d8c7fc7f76f2861\nrelated-to-bug: 12702350\n"
    },
    {
      "commit": "c9b8d90dabdf1234be0117c592f635a92c4eb0d9",
      "tree": "8bbeb033b0eb0bcbbfb12faaa6f2133d3cd093ea",
      "parents": [
        "5c4fa907328c8ee586367272c7525cb87742f14d",
        "142f519aa1acd5804d111e60d100f170fed28405"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 23:23:09 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 26 23:23:09 2014 +0000"
      },
      "message": "Merge \"Use symbol AUDIO_IO_HANDLE_NONE from \u003csystem/audio.h\u003e\""
    },
    {
      "commit": "5c4fa907328c8ee586367272c7525cb87742f14d",
      "tree": "072ee3fe93cbcc8505118b51bc371265214036f3",
      "parents": [
        "2301acc6a9c7a3af4ad01f3d1d0f76f13eca7350",
        "adad3d7d935da176ff24941b4ae9edf7340e9b96"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 22:22:23 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 26 22:22:24 2014 +0000"
      },
      "message": "Merge \"Use LOG_ALWAYS_FATAL instead of LOG_FATAL\""
    },
    {
      "commit": "142f519aa1acd5804d111e60d100f170fed28405",
      "tree": "aaffc4a234a4b0a5e719374056edf12eb2333b29",
      "parents": [
        "ecdca392ed40e89a6ef14b86446e952c35497ac4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 25 17:44:59 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 14:56:54 2014 -0700"
      },
      "message": "Use symbol AUDIO_IO_HANDLE_NONE from \u003csystem/audio.h\u003e\n\nChange-Id: Id6b1aa17558eb73e17f22b8eab6cd02e00a96dff\n"
    },
    {
      "commit": "2301acc6a9c7a3af4ad01f3d1d0f76f13eca7350",
      "tree": "6dde0cdf76066b31d3e0c0c96ea8e36990266fce",
      "parents": [
        "ecdca392ed40e89a6ef14b86446e952c35497ac4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 17 10:21:00 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 14:49:23 2014 -0700"
      },
      "message": "Update comments\n\nChange-Id: I5776313b9b49072cd666d28880f0d07cc73f827b\n"
    },
    {
      "commit": "adad3d7d935da176ff24941b4ae9edf7340e9b96",
      "tree": "7a8a2f8e31c7dd690805c1cfd9982d218c66296b",
      "parents": [
        "1392eb3d1802e9f894f87d7a7387207d1b6faca1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 21 14:51:43 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 14:46:28 2014 -0700"
      },
      "message": "Use LOG_ALWAYS_FATAL instead of LOG_FATAL\n\nLOG_FATAL is compiled out in most builds, so the\nassertion checks were not being performed.\n\nChange-Id: I774f0985ab9c5ccecd8989a0f1c940386b73fc35\n"
    },
    {
      "commit": "ecdca392ed40e89a6ef14b86446e952c35497ac4",
      "tree": "bf796efe37aca6ded41ca0ad4291ca344af337ac",
      "parents": [
        "51beebba9d4989d05831a13bbe5cdf53ecac1bf5",
        "66e4635cb09fadcaccf912f37c387396c428378a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 21:29:28 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 26 21:29:28 2014 +0000"
      },
      "message": "Merge \"Use symbolic constants from \u003csystem/audio.h\u003e\""
    },
    {
      "commit": "51beebba9d4989d05831a13bbe5cdf53ecac1bf5",
      "tree": "b2c6af1099ba3c20b8dd08d39f8dcf822303971a",
      "parents": [
        "b8f8d231685afdec472136b45c527a71bfb8bcc4",
        "45faf7e02791993a487d6e038d16ff46395f1975"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 21:14:17 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 26 21:14:17 2014 +0000"
      },
      "message": "Merge \"Use symbol AUDIO_DEVICE_NONE from \u003csystem/audio.h\u003e\""
    },
    {
      "commit": "b8f8d231685afdec472136b45c527a71bfb8bcc4",
      "tree": "8f5afcbeec0aa0e9c441c5fc1c42a8a8b35d77f3",
      "parents": [
        "9b6fcc2f8294d21b859b4cbcff84107a499e221f",
        "0ed19594452c901c3c8665d06610fffe46895d06"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 21:13:18 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 26 21:13:18 2014 +0000"
      },
      "message": "Merge \"Remove stream type from AudioSystem::getRenderPosition()\""
    },
    {
      "commit": "73ec11738cd4399c55d4905665a14a7c4cd42cbf",
      "tree": "1105d7402857079f44e234ba1ab6ecfa8290a094",
      "parents": [
        "8c7b9fb41585fccb06573252823b929c82a40999",
        "9ea65d0f4a564478343b1a722fae4ce5883670c3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 20:56:04 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 26 20:56:04 2014 +0000"
      },
      "message": "Merge \"Fix uses of KeyedVector\""
    },
    {
      "commit": "8c7b9fb41585fccb06573252823b929c82a40999",
      "tree": "b15b9c23c2440bf1df24350f1034064016110897",
      "parents": [
        "f7f21b93bfce562784ee8f632fb01a2f8e4ffa6b",
        "241618f1b286f9e7e02fe61e96d9194e2e1e8a7a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 20:44:48 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 26 20:44:49 2014 +0000"
      },
      "message": "Merge \"Remove streamType parameter from AudioSystem::getLatency()\""
    },
    {
      "commit": "0ed19594452c901c3c8665d06610fffe46895d06",
      "tree": "54d8cd6a63a3f85d6199d4a9d6b7981fab14b973",
      "parents": [
        "1392eb3d1802e9f894f87d7a7387207d1b6faca1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 07:50:05 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 19:22:40 2014 +0000"
      },
      "message": "Remove stream type from AudioSystem::getRenderPosition()\n\nThe I/O handle is never equal to AUDIO_IO_HANDLE_NONE,\nso the stream type is not needed.\n\nChange-Id: I1ab134a2fa379d6dd0b6167345a856a192d478f9\n"
    },
    {
      "commit": "f7f21b93bfce562784ee8f632fb01a2f8e4ffa6b",
      "tree": "e5222e0f1f2ff320e83dfe8ef4a068b87be677d0",
      "parents": [
        "887bbadb3e1de315c74c905594ee5f2d29a5675c",
        "ebb80e4f9873cc1a5ee3f766323f622bb0c07ae5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 18:59:01 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 26 18:59:01 2014 +0000"
      },
      "message": "Merge \"Remove dead code\""
    },
    {
      "commit": "ebb80e4f9873cc1a5ee3f766323f622bb0c07ae5",
      "tree": "c78d80901828a831e4562847f6ecaf03211bb2bc",
      "parents": [
        "1392eb3d1802e9f894f87d7a7387207d1b6faca1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 08:21:17 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 08:27:13 2014 -0700"
      },
      "message": "Remove dead code\n\nChange-Id: I0878d11451c7bbbf96b59f5fe0cd97ba1f033aa9\n"
    },
    {
      "commit": "241618f1b286f9e7e02fe61e96d9194e2e1e8a7a",
      "tree": "fcec6a520e30f66bbb1b5e072f8aadb247724a67",
      "parents": [
        "1392eb3d1802e9f894f87d7a7387207d1b6faca1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 25 17:48:57 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 25 18:09:12 2014 -0700"
      },
      "message": "Remove streamType parameter from AudioSystem::getLatency()\n\nChange-Id: Ie7346e93436ddc215cad7d16be555dcb6c277d54\n"
    },
    {
      "commit": "45faf7e02791993a487d6e038d16ff46395f1975",
      "tree": "d54ff27f6fd42e670ddebfa993a00b5202fb7633",
      "parents": [
        "1392eb3d1802e9f894f87d7a7387207d1b6faca1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 17 10:23:01 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 25 17:29:00 2014 -0700"
      },
      "message": "Use symbol AUDIO_DEVICE_NONE from \u003csystem/audio.h\u003e\n\nChange-Id: I61f882c5e7c949bf00d3bfc745ebf3b5e1c42a58\n"
    },
    {
      "commit": "66e4635cb09fadcaccf912f37c387396c428378a",
      "tree": "7982a54dbc04375babd42e59c03ef930454a9687",
      "parents": [
        "1392eb3d1802e9f894f87d7a7387207d1b6faca1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 16 17:44:23 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 25 16:22:54 2014 -0700"
      },
      "message": "Use symbolic constants from \u003csystem/audio.h\u003e\n\nAUDIO_INTERLEAVE_*\nAUDIO_STREAM_MIN\nAUDIO_SESSION_ALLOCATE\n\nChange-Id: I31dd6f327204685e50716079ce21c4ba206dff11\n"
    },
    {
      "commit": "9ea65d0f4a564478343b1a722fae4ce5883670c3",
      "tree": "7e23f994d376d45183eac141e914ddbfd126cdf5",
      "parents": [
        "1392eb3d1802e9f894f87d7a7387207d1b6faca1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 17 10:21:24 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 25 16:13:00 2014 -0700"
      },
      "message": "Fix uses of KeyedVector\n\nConstructor for AudioFlinger::mAudioHwDevs was missing, and so\nAudioFlinger::findSuitableHwDev_l() could return an undefined pointer\nif a non-0 module wasn\u0027t found.\n\nA KeyedVector of Plain Old Data (POD) element type must specify the\ndefault value in the constructor, or else the default will be undefined.\n\nMinor:\n - Parameter had wrong type in constructor for AudioSystem::gOutputs.\n - Remove obsolete AudioSystem::gStreamOutputMap.\n\nChange-Id: I9841493e018440e559d8b8b0e4e748ba2b2d365b\n"
    },
    {
      "commit": "85d109a4b0eddd76a8c5cee170bc2bcc99d00118",
      "tree": "063a73398f17da98b0a9ecc5923ab05bbc3fc5d9",
      "parents": [
        "1392eb3d1802e9f894f87d7a7387207d1b6faca1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 17 10:25:08 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 25 15:38:25 2014 -0700"
      },
      "message": "Document AudioSystem::newAudioSessionId() failures\n\nChange-Id: Iaa168722f362c36bdfa87fe20dc0a59b43cf1ca3\n"
    },
    {
      "commit": "1392eb3d1802e9f894f87d7a7387207d1b6faca1",
      "tree": "1cce5cc09d21a1de2a7976da00766723194d9a23",
      "parents": [
        "d32ab80d7961bd0bb87e9402bb3017d30220b9e3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 25 11:49:08 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 25 11:50:21 2014 -0700"
      },
      "message": "Fix operator precedence\n\nChange-Id: I164708a5b76a341a185467b008ecbec98d58a6df\n"
    },
    {
      "commit": "d4a31b8bcd7df99dfce2f25a32badf4611a6ba1a",
      "tree": "a910c51ee1fdd3b8bc14f822da70b3136f8b50a8",
      "parents": [
        "259ace8f6057dbb0fdec4c8223aefc0282274be3",
        "de9453fb5cbc9cd69fd1ea45d577851e3aa3b8c9"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Wed Mar 19 21:57:42 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 19 21:57:42 2014 +0000"
      },
      "message": "Merge \"Add MediaPlayer::getAudioStreamType.\""
    },
    {
      "commit": "de9453fb5cbc9cd69fd1ea45d577851e3aa3b8c9",
      "tree": "bb52d2f3c0f9f77a904ad4aaba8867cad727e28b",
      "parents": [
        "8c75ab3416313843314446c5bbeafa62b83f0d63"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Wed Mar 19 13:05:45 2014 -0400"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Wed Mar 19 15:40:40 2014 -0400"
      },
      "message": "Add MediaPlayer::getAudioStreamType.\n\nChange-Id: I9cd8a718d2873543609aa651fd85749478f4f89f\n"
    },
    {
      "commit": "bfd55f243feb3f04e26ad07aae035475768ada8a",
      "tree": "ace7974e03aa66e5858c58e3205171d786e0882e",
      "parents": [
        "e848bd9abb3bbbd4c66f9fb9d1442f7663d7ba40"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 18 14:00:39 2014 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Mar 19 09:48:18 2014 -0700"
      },
      "message": "Use more tags to help the ICU detector.\n\nThe detector only gave non-ascii data to ICU. In some cases that could\nresult in very short data, for which ICU would issue a low confidence\nlevel for the actual encoding. By padding the data with additional\n(ascii) tags, we improve accuracy for such files. Becauses this can\nreduce accuracy in other cases, only do this when the initial confidence\nis low.\n\nb/13473604\n\nChange-Id: I63d932043155c310b0e358cdf2d37787961e94b7\n"
    },
    {
      "commit": "c5a17425986b4ce3384e6956762c86018b49c4a0",
      "tree": "313484677c719c944bc7923b0c3766cba3bef5c6",
      "parents": [
        "c3df838434b37d8400eea2438083cc01a4c1cc71"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 13 14:59:59 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 14 14:49:36 2014 -0700"
      },
      "message": "Remove name output parameter from createTrack\n\nIt was only used for one log.\nA better solution will be a per-track unique ID.\n\nChange-Id: Ia440e02ae4a5a4019a9a2d08970e1ee93ac4c3a3\n"
    },
    {
      "commit": "c644345b0b8f5292a049c4cee2bb7a2a6159b884",
      "tree": "423a2a937e693746189cf51852d0e727c418471b",
      "parents": [
        "1ac1638077277de52d1dd4c54db71e67753f1960",
        "720ad9ddb2ac6b55b0dfbfcd2d8360151d8ac427"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Mar 11 17:12:36 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 11 17:12:37 2014 +0000"
      },
      "message": "Merge \"AudioTrack non-blocking write\""
    },
    {
      "commit": "3a90f2849d49bf65f2d6257fd6da30ae46d745fa",
      "tree": "992a54b006e96de6f62b2b0420bf352935b775c9",
      "parents": [
        "664334fc2204b9968e1600313383f5a6ff321811"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Mar 10 11:21:43 2014 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Mar 10 11:21:43 2014 -0700"
      },
      "message": "Fix freeze on pause\n\nisOffloaded() tries to lock mLock again. We should be calling isOffloaded_l()\nb/13394633\n\nChange-Id: I155be6fee937f894d8e6c974e593223ab6014ade\n"
    },
    {
      "commit": "f566406a48ecf878d8a0034b6c600d42454d264c",
      "tree": "a565bcb6139569d15dbc2ec616820e448c74b7ff",
      "parents": [
        "6950d10077d10757e894d8e125ba5111eb02517a",
        "6db20dcb54dad932a3ea2e3a5dca41fce5802eb4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Mar 08 06:23:51 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Mar 08 06:23:51 2014 +0000"
      },
      "message": "am 6db20dcb: Merge \"AudioTrack: When paused, return cached playback position\" into klp-dev\n\n* commit \u00276db20dcb54dad932a3ea2e3a5dca41fce5802eb4\u0027:\n  AudioTrack: When paused, return cached playback position\n"
    },
    {
      "commit": "6950d10077d10757e894d8e125ba5111eb02517a",
      "tree": "fd7db5963ce8fa82b6f2590494efbdf61532f642",
      "parents": [
        "1aeb490d95a32be37a8691827ddc44c99575c411",
        "2f55c2c03b17795e94b325d402ac5b409e3ba0e8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sat Mar 08 06:22:13 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Mar 08 06:22:13 2014 +0000"
      },
      "message": "am 2f55c2c0: Merge \"Simplify AudioTrack stream end and fix race\" into klp-dev\n\n* commit \u00272f55c2c03b17795e94b325d402ac5b409e3ba0e8\u0027:\n  Simplify AudioTrack stream end and fix race\n"
    },
    {
      "commit": "3a20f9af8587d2e5bbf4654a3a958f43c4133445",
      "tree": "80cd4642fe95200e8dc68d7cba241e594ced4816",
      "parents": [
        "77a85ebe1fc28f3af07ebefeea53fad778f442c0",
        "38efe8eb08e08610d535a164768851ac7c13d654"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Mar 08 02:03:09 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Mar 08 02:03:09 2014 +0000"
      },
      "message": "am 38efe8eb: am 6db20dcb: Merge \"AudioTrack: When paused, return cached playback position\" into klp-dev\n\n* commit \u002738efe8eb08e08610d535a164768851ac7c13d654\u0027:\n  AudioTrack: When paused, return cached playback position\n"
    },
    {
      "commit": "38efe8eb08e08610d535a164768851ac7c13d654",
      "tree": "7853a753cbfac471087604d702ad6b2c546a2269",
      "parents": [
        "4ee774f322ad3292fcfbb3c120cf250643419425",
        "6db20dcb54dad932a3ea2e3a5dca41fce5802eb4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Mar 08 02:00:05 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Mar 08 02:00:05 2014 +0000"
      },
      "message": "am 6db20dcb: Merge \"AudioTrack: When paused, return cached playback position\" into klp-dev\n\n* commit \u00276db20dcb54dad932a3ea2e3a5dca41fce5802eb4\u0027:\n  AudioTrack: When paused, return cached playback position\n"
    },
    {
      "commit": "6db20dcb54dad932a3ea2e3a5dca41fce5802eb4",
      "tree": "295ef5012f98e4b9251f28774cfb3f83710ea197",
      "parents": [
        "2f55c2c03b17795e94b325d402ac5b409e3ba0e8",
        "2048c2292c0466b184fb8f67c91f4d0ab9f5c3f3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Mar 08 00:29:56 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 08 00:29:56 2014 +0000"
      },
      "message": "Merge \"AudioTrack: When paused, return cached playback position\" into klp-dev"
    },
    {
      "commit": "77a85ebe1fc28f3af07ebefeea53fad778f442c0",
      "tree": "ab8e4c7f94c80fa457c4146ad8e8fe4fb5701436",
      "parents": [
        "ed043625654454462be451a63f5fd69adce67f98",
        "4ee774f322ad3292fcfbb3c120cf250643419425"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 07 21:18:48 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 07 21:18:48 2014 +0000"
      },
      "message": "am 4ee774f3: am 2f55c2c0: Merge \"Simplify AudioTrack stream end and fix race\" into klp-dev\n\n* commit \u00274ee774f322ad3292fcfbb3c120cf250643419425\u0027:\n  Simplify AudioTrack stream end and fix race\n"
    },
    {
      "commit": "4ee774f322ad3292fcfbb3c120cf250643419425",
      "tree": "207b8891e48745fc85b2ddecc060acab0e1bb8e6",
      "parents": [
        "4293011df9caa1c5dce0f02d7a6d35e702bdfef4",
        "2f55c2c03b17795e94b325d402ac5b409e3ba0e8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 07 21:14:51 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 07 21:14:51 2014 +0000"
      },
      "message": "am 2f55c2c0: Merge \"Simplify AudioTrack stream end and fix race\" into klp-dev\n\n* commit \u00272f55c2c03b17795e94b325d402ac5b409e3ba0e8\u0027:\n  Simplify AudioTrack stream end and fix race\n"
    },
    {
      "commit": "dcec903589ac651b9f558454392d286c13f743fb",
      "tree": "e436514f1a63d4b26dad1c142912411c23e60578",
      "parents": [
        "5bc83fc352e5682ecafe61d77062c26ac8db4229"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 20 09:28:56 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 07 11:09:51 2014 -0800"
      },
      "message": "Simplify AudioTrack stream end and fix race\n\nBug: 10994052\nChange-Id: Ib2e38e7a600bcffef8cbc68c1722e40fbbc7ea67\n"
    },
    {
      "commit": "b8d0b780c9ae160b830cc7a31b22600293e4978b",
      "tree": "9ea56a5014c7ac2a029cb7668319bd837b837f4c",
      "parents": [
        "328ab3c21c185a7541e7ee087a61e18f6888af1c",
        "af191eb4feac513d17dc0362e0cea5bc9e0ffe9d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 07 02:30:11 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 07 02:30:11 2014 +0000"
      },
      "message": "am af191eb4: Merge \"Replace size_t in shared memory by uint32_t\"\n\n* commit \u0027af191eb4feac513d17dc0362e0cea5bc9e0ffe9d\u0027:\n  Replace size_t in shared memory by uint32_t\n"
    },
    {
      "commit": "e857b65c1d3aa055281cb48f59c9b5eb4a062dd0",
      "tree": "9d0780a2aebbb8839ec74fe16b1b868e6d45e3e9",
      "parents": [
        "ce9be73c7e7f379d68e1a0d0210a6f7b9418269f",
        "3c9130a8a12ce962dc8d22e04243b135b9e98b01"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Mar 07 02:26:36 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 07 02:26:36 2014 +0000"
      },
      "message": "am 3c9130a8: Merge \"Make frameworks/av 64-bit compatible\"\n\n* commit \u00273c9130a8a12ce962dc8d22e04243b135b9e98b01\u0027:\n  Make frameworks/av 64-bit compatible\n"
    },
    {
      "commit": "32fbb48de0248518fc5a14099b32fe4b8e9fc102",
      "tree": "44c01484475c34374a8a7cdcbab31ec84ac03a55",
      "parents": [
        "d224ee56ec8c2bc7963f43ca9d80cf31a3ba4c57",
        "4361749d74113069aafb0620a1189404205c58d0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Fri Mar 07 02:26:05 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 07 02:26:05 2014 +0000"
      },
      "message": "am 4361749d: Merge \"AudioTrack: Never try to use the fast path if resampling is required\"\n\n* commit \u00274361749d74113069aafb0620a1189404205c58d0\u0027:\n  AudioTrack: Never try to use the fast path if resampling is required\n"
    },
    {
      "commit": "2048c2292c0466b184fb8f67c91f4d0ab9f5c3f3",
      "tree": "126fcbfff298dd8e0f8ddb834c93c8850b8654ac",
      "parents": [
        "a11111f9135c98cf4247bbd1a61d7df3053e549e"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Wed Jan 08 13:59:53 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 06 18:00:39 2014 -0800"
      },
      "message": "AudioTrack: When paused, return cached playback position\n\nAn offload output can be re-used between two audio tracks having\nthe same configuration. A timestamp query for a paused track\nwhile the other is running would return an incorrect time.\nTo fix this, cache the playback position on a pause() and return\nthis time when requested until the track is resumed.\n\nBug: 12826612.\nChange-Id: Ia42b8b8fd2ba8993dfcc9abca72da48d71d78d74\n"
    },
    {
      "commit": "1c32a00b8750998562a8d76351ba5c6d2ed788c8",
      "tree": "68ac5f1ccd1c53a7ba7da918eec2ea96c5918b94",
      "parents": [
        "1bdf803fde294017d8b504891618f688a21a2e75",
        "96f04886d1c1bfbc422e2be033ea66be83e42441"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 07 01:28:22 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 07 01:28:23 2014 +0000"
      },
      "message": "Merge \"Simplify AudioTrack stream end and fix race\""
    },
    {
      "commit": "7064fd2dcdfeafea53cd5a992bb78c413542f29f",
      "tree": "eb8961194a192128c7db06f5c0de50f9a72b93cd",
      "parents": [
        "48588bdd9ec1102a5e96b9033d1ed8b8d6a3b3ba"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Wed Jan 08 13:59:53 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 06 11:38:38 2014 -0800"
      },
      "message": "AudioTrack: When paused, return cached playback position\n\nAn offload output can be re-used between two audio tracks having\nthe same configuration. A timestamp query for a paused track\nwhile the other is running would return an incorrect time.\nTo fix this, cache the playback position on a pause() and return\nthis time when requested until the track is resumed.\n\nBug: 12826612.\nChange-Id: I324112ea9827e52fff53ef44cd8513c8d85a0bc4\n"
    },
    {
      "commit": "ebcb254adb7402ab89ae97c4d9d16d886790dcb3",
      "tree": "24de7ca4a5f4e18226c4c1f8c8442b50eab07f7c",
      "parents": [
        "a18deee6fb516f03a9448b517ebe8881bb601912"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 05 18:30:08 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 05 18:30:33 2014 -0800"
      },
      "message": "audio policy service: clean up type casting.\n\nChange-Id: If16d6495c16e0d61a221f81bfd49e7d14bbfdc12\n"
    },
    {
      "commit": "c1e06f692cf16a8c9f5ae921ab4d642f7a082877",
      "tree": "f08061b883bc7f4e2d67f1c62b9eceddb2557fc2",
      "parents": [
        "5d3e310a847d090b7f79554154d25c70be8fd594",
        "09e45992067f03a05f82400a6cacf16bb8018f16"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 05 23:54:00 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 05 23:54:00 2014 +0000"
      },
      "message": "am 09e45992: am 25a86930: am 88876fb4: AudioTrack: fix obtainBuffer timeout calculation\n\n* commit \u002709e45992067f03a05f82400a6cacf16bb8018f16\u0027:\n  AudioTrack: fix obtainBuffer timeout calculation\n"
    },
    {
      "commit": "25a86930ac0ccf4750ad2fb0c2f5a4a122d24ecf",
      "tree": "ffc379029cf2e53932f46375efc61363fb0f1a6e",
      "parents": [
        "994d9bad4c545cc8861e971f9dbcb4c061ee19ed",
        "88876fb4eb8365343f2a9ca0e8f53148ca38b845"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 05 23:47:20 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 05 23:47:20 2014 +0000"
      },
      "message": "am 88876fb4: AudioTrack: fix obtainBuffer timeout calculation\n\n* commit \u002788876fb4eb8365343f2a9ca0e8f53148ca38b845\u0027:\n  AudioTrack: fix obtainBuffer timeout calculation\n"
    },
    {
      "commit": "d812fc012298470a1b8120e6d60a24b0b1d48047",
      "tree": "bf3c68ea3a908a0792e766714cd9d54f98ebfb46",
      "parents": [
        "88876fb4eb8365343f2a9ca0e8f53148ca38b845"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 03 09:06:43 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 05 14:10:41 2014 -0800"
      },
      "message": "Increase kFastTrackMultiplier from 1 to 2\n\nBug: 11967381\nChange-Id: Iedec06280aa745d9df5d661f4916940cede9c191\n"
    },
    {
      "commit": "88876fb4eb8365343f2a9ca0e8f53148ca38b845",
      "tree": "7891ad7f6e93d856f4fc8b5184bf2d8c95a84ead",
      "parents": [
        "145b727b4cce8b1b8d161612f30d12bbdfc8d134"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 27 18:13:39 2014 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 05 14:07:43 2014 -0800"
      },
      "message": "AudioTrack: fix obtainBuffer timeout calculation\n\nAudioTrack::obtainBuffer() passes a pointer to a timeout\nvariable that has gone out of scope when calling\nClientProxy::obtainBuffer().\n\nSame fix for AudioRecord.\n\nBug: 11968591.\nChange-Id: I5b3d0d86ed2bd8c0412eb2432b1ab519d70efce9\n"
    },
    {
      "commit": "d0115d8c4db2f337030dea706bc0a434c4a03ed6",
      "tree": "239450c60bc4cb8519edeb8985dbc601fe51c652",
      "parents": [
        "7e92abeafb184e8a34213d7149592e95a72601b0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 26 17:16:50 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 05 12:17:54 2014 -0800"
      },
      "message": "update offloaded audio track sampling rate\n\nAudioPlayer must read the sampling rate from offloaded audio sinks\nwhenever a new time position is computed as the decoder can update\nthe sampling rate on the fly.\n\nBug: 12823955.\n\nChange-Id: I997e5248cfd4017aeceb4e11689324ded2a5bc88\n"
    },
    {
      "commit": "720ad9ddb2ac6b55b0dfbfcd2d8360151d8ac427",
      "tree": "58049745c0426d9b615a3891419963f2589edd7b",
      "parents": [
        "56df9ff31d583ad3eae4f279a3df550273c58e1e"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Feb 04 11:00:59 2014 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Mar 03 10:44:27 2014 -0800"
      },
      "message": "AudioTrack non-blocking write\n\nBug 7531968\n\nChange-Id: I6d0e79fa8cab5b6eb36bcc34977f4cf0d7eec8ea\n"
    },
    {
      "commit": "ecc8155914bf006d435b825c0fda24f446228709",
      "tree": "3195944d2681ce53b66e3107b4f8ae243acb4305",
      "parents": [
        "b442921146664fba77b91f221e9b1997ffb8170e",
        "879707057cde0a83b5f6143c918c66b8f4a97581"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sat Mar 01 00:51:31 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 01 00:51:31 2014 +0000"
      },
      "message": "Merge \"Make openRecord_l more like createTrack_l for fast tracks: part 3\""
    },
    {
      "commit": "f0aaabfeab95f67889fd417947900d6ec7dbdd3c",
      "tree": "2b21a18ffaa0f5bc9b72aa483f0a89805b0d79df",
      "parents": [
        "d2304db2fcb5112292105a0949a55986a4c9875f",
        "2c48f27be6b3ae58e451d9b56c1dfd00e606f345"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 28 22:24:57 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 28 22:24:58 2014 +0000"
      },
      "message": "Merge \"Make openRecord_l more like createTrack_l for fast tracks: part 2\""
    },
    {
      "commit": "879707057cde0a83b5f6143c918c66b8f4a97581",
      "tree": "c0dd80560309dc9fb878e467847fa108ed45c6cd",
      "parents": [
        "2c48f27be6b3ae58e451d9b56c1dfd00e606f345"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 27 15:31:39 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 28 12:25:34 2014 -0800"
      },
      "message": "Make openRecord_l more like createTrack_l for fast tracks: part 3\n\nCreate the callback thread earlier, before creating the IAudioRecord,\nso that the thread\u0027s tid is available as a parameter to openRecord().\n\nAlso move initialization of mCbf to same point as in AudioTrack.cpp.\n\nChange-Id: I61ea4c5e2724ccfc691aaf51bc02a7c10d5a7495\n"
    },
    {
      "commit": "2c48f27be6b3ae58e451d9b56c1dfd00e606f345",
      "tree": "4ce653acdeb8bce659944f7697cf36a344f026fe",
      "parents": [
        "33ca5cf8826f5fcd9c011e8d336138b62d982f2a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 27 13:35:06 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 28 12:23:45 2014 -0800"
      },
      "message": "Make openRecord_l more like createTrack_l for fast tracks: part 2\n\nAssume double-buffering because we don\u0027t know the true HAL sample rate,\nand for fast tracks we must accomodate kernel scheduling and app\ncomputation jitter.\n\nChange-Id: I983d6048a8b4814cfa5bf789397cdd9f1572256c\n"
    },
    {
      "commit": "d2304db2fcb5112292105a0949a55986a4c9875f",
      "tree": "fe2723acf4c0eebcc39443769ab8b48840ddb48e",
      "parents": [
        "33ca5cf8826f5fcd9c011e8d336138b62d982f2a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 03 07:40:31 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 28 12:06:05 2014 -0800"
      },
      "message": "Rename setStreamOutput to invalidateStream\n\nAnd simplify by removing the unused I/O handle parameter \u0027output\u0027.\n\nChange-Id: Ie9c4df17a7378066312d4ed8790fda7a9125c95e\n"
    },
    {
      "commit": "33ca5cf8826f5fcd9c011e8d336138b62d982f2a",
      "tree": "19546ee5a21f0706d2d190f840b056f8fd278ef2",
      "parents": [
        "9cf4f07c2dc5d4f14bfd1adee691667eb55882ec",
        "c6ba823a397abf865b02f4f48fe18231f94d8e87"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 28 19:49:48 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 28 19:49:48 2014 +0000"
      },
      "message": "Merge \"Make openRecord_l more like createTrack_l for fast tracks: part 1\""
    },
    {
      "commit": "bce50bfc3846ab008bafa75c5d3f29fd7b5395f7",
      "tree": "ebefb9f660bf71aec96bd297e155d12c9d3588e8",
      "parents": [
        "838b3d8bafa4a781e277870dee4e0390165cff52"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 27 15:29:51 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 28 07:56:38 2014 -0800"
      },
      "message": "Fix type of AudioTrack/AudioRecord parameter frameCount\n\nIt\u0027s size_t consistently\n\nChange-Id: I29638ef59ac773218025f2403a3508a307b487e0\n"
    },
    {
      "commit": "838b3d8bafa4a781e277870dee4e0390165cff52",
      "tree": "b70ff81e8ef1c9fcdc21aad7fd07dfe793ad6872",
      "parents": [
        "484b4cd809aa46a54791d5c82a78d0f8aac895cf"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 27 15:30:41 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 28 07:56:34 2014 -0800"
      },
      "message": "Fix type of AudioTrack/AudioRecord parameter notificationFrames\n\nIt\u0027s uint32_t consistently\n\nChange-Id: If8298c7e9aeea2b951fe47b675adbdf48d104846\n"
    },
    {
      "commit": "484b4cd809aa46a54791d5c82a78d0f8aac895cf",
      "tree": "f729614ef60d6122ad8796751c1aea9ad2afa749",
      "parents": [
        "8897759002677a7072a51a7f0b7cc63761c5f2d4",
        "19a9fef6d2970a615f4f33025f9141e44b7c9f34"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Feb 27 22:03:49 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 27 22:03:50 2014 +0000"
      },
      "message": "Merge \"Don\u0027t crash on remote read error, just return\""
    },
    {
      "commit": "c6ba823a397abf865b02f4f48fe18231f94d8e87",
      "tree": "dcb8d8bb9f8c03bcf921184c9833862003e70f54",
      "parents": [
        "8897759002677a7072a51a7f0b7cc63761c5f2d4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 27 13:34:29 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 27 13:34:29 2014 -0800"
      },
      "message": "Make openRecord_l more like createTrack_l for fast tracks: part 1\n\nUse the transfer mode to distinguish use cases, as the presence of\na callback handler is not sufficient.  For example, the track could be\nconfigured for synchronous transfer with write() or read(), and also\nhave a callback handler for position updates.  But that does not mean\nthe track can operate in fast track mode.\n\nChange-Id: I2a7f1f0ca98e68efe180b524496985109d8ce291\n"
    },
    {
      "commit": "19a9fef6d2970a615f4f33025f9141e44b7c9f34",
      "tree": "7bf51af96ccdaa8a770e43795033e3da6a52df57",
      "parents": [
        "0517e0b6e4a86f34388631416dd6b3b4fcb91ff8"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Feb 27 13:20:07 2014 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Feb 27 13:20:07 2014 -0800"
      },
      "message": "Don\u0027t crash on remote read error, just return\n\nChange-Id: I35a2af255f55e008d64142ed0eceb6e83473d630\n"
    },
    {
      "commit": "e27e2d9bcabc1a367cb56b4599665c931a1d22ec",
      "tree": "5ec47116fa737797ad8fd1d737ce27d4161103f2",
      "parents": [
        "3d2e09f0221693de08129edd02adf340a44e7a38"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Thu Feb 27 14:29:56 2014 -0500"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Thu Feb 27 14:29:56 2014 -0500"
      },
      "message": "Fix includes to no longer pull in Skia includes directories.\n\nbug:13225538\nChange-Id: I4fccc414923f7e62cd46d691c67cb44b9692c225\n"
    },
    {
      "commit": "c08d20b6a37122ebf116262c9372509ed060d4c1",
      "tree": "ea9f9586612094d800e2a3498f0b9b4573f609ad",
      "parents": [
        "045e739161f5ae00321a6cfba20935abb791005b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 24 15:21:10 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 25 15:20:49 2014 -0800"
      },
      "message": "Simplify error handling after track creation\n\nIAudioFlinger::createTrack and IAudioFlinger::openRecord\nboth guarantee that (status \u003d\u003d OK) \u003d\u003d (sp\u003c\u003e !\u003d 0).\n\nChange-Id: I91cb4f7e843019efb65cace7ba146f7da7aa5b59\n"
    },
    {
      "commit": "045e739161f5ae00321a6cfba20935abb791005b",
      "tree": "51ad975be585931d45da9ae101b1455525001a31",
      "parents": [
        "f7cc3631c5c264e13ce8c6bc15bd829b2ff9b036"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 25 15:15:53 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 25 15:20:07 2014 -0800"
      },
      "message": "Move initialize of mInput to match AudioTrack\n\nChange-Id: I4dc977f22f51cd618dc83d800b4b8756929a4612\n"
    },
    {
      "commit": "f7cc3631c5c264e13ce8c6bc15bd829b2ff9b036",
      "tree": "c2df9dc5ad6c4cb79789865832a34152fc80c74a",
      "parents": [
        "a5ed48d3476df7dd1e10b380a68e3333f2b646fd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 25 15:14:45 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 25 15:19:52 2014 -0800"
      },
      "message": "Update comments to match AudioTrack\n\nChange-Id: I7dd14eabd78c9130a157da2063a1d65ec4f9c65a\n"
    },
    {
      "commit": "a5ed48d3476df7dd1e10b380a68e3333f2b646fd",
      "tree": "397bf25445f4eae92006e5d7691ff38a897b4d1b",
      "parents": [
        "591d9a3652f868652ccc48dd9e9714f3a9813963"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 25 15:13:37 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 25 15:19:35 2014 -0800"
      },
      "message": "Move initialization of mRefreshRemaining to match AudioTrack\n\nThis also fixes a bug where, for a re-created IAudioRecord,\nmRefreshRemaining was not being reset correctly.\n\nChange-Id: I9f721a4edf92aab859cf3f247ab7f65562d14fb0\n"
    },
    {
      "commit": "591d9a3652f868652ccc48dd9e9714f3a9813963",
      "tree": "5b45f354e144448a00c4a0c9cd3261bd0816ded0",
      "parents": [
        "7c1b8941bb54e38f2a717e41af0d9565f5977c27",
        "089e87201522c8979ac8f00fa729e907f54c790b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 25 22:58:02 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 25 22:58:02 2014 +0000"
      },
      "message": "Merge \"mAudioRecord is always non-0 if set() is successful\""
    },
    {
      "commit": "7c1b8941bb54e38f2a717e41af0d9565f5977c27",
      "tree": "7c5af10bfbea4a9c10356facdc24a9306693fee9",
      "parents": [
        "6c69333431b2fdd995a1c2eb6f01182155f4a691",
        "5f631515d098c29603cda88f7a7e7580a2d55b57"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 25 21:23:36 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 25 21:23:36 2014 +0000"
      },
      "message": "Merge \"Unify comments and whitespace between AudioTrack and AudioRecord\""
    },
    {
      "commit": "6c69333431b2fdd995a1c2eb6f01182155f4a691",
      "tree": "fd5c1177c9df607313b94669b27a4c268f3293cc",
      "parents": [
        "882469cfe767188a4c67d2d83f3d72ab553a4818",
        "e3247bf8dd4f8fa8dfa3a108260241ae4a967569"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 25 20:57:35 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 25 20:57:36 2014 +0000"
      },
      "message": "Merge \"Update channel fields at same place in AudioTrack and AudioRecord\""
    },
    {
      "commit": "882469cfe767188a4c67d2d83f3d72ab553a4818",
      "tree": "61c3778cad5d38743e4cb9c53e07eb646f74b02b",
      "parents": [
        "a63805cd676b7004f1851df6e43183f2a22c40a8",
        "11cb175005db0090345f44bfa049b52fd8c809b8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 25 19:54:58 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 25 19:54:58 2014 +0000"
      },
      "message": "Merge \"Update mReqFrameCount at same point in AudioTrack and AudioRecord\""
    },
    {
      "commit": "99ef241a8d310b3319c02eac18de9bb7422c5ab0",
      "tree": "5d1627543262c8bfd0e9f1fa88da8ee50d2f48cc",
      "parents": [
        "9f474b7824abb0d5408d02e365cf37a986663979",
        "c85df82b1e8b05714268926a8bb3deb9c65f9a22"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 25 19:34:25 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 25 19:34:25 2014 +0000"
      },
      "message": "Merge \"Permit AudioRecord to support non-linear formats in future\""
    },
    {
      "commit": "9f474b7824abb0d5408d02e365cf37a986663979",
      "tree": "153354d59d0ef95f88832ba25e30a133964334b6",
      "parents": [
        "172abfe2cc30104282f8e65b82e9c9758adc83da",
        "b42f318d9733f88c7eb9bedfd33b086b8ea5dff5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 25 19:20:10 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 25 19:20:11 2014 +0000"
      },
      "message": "Merge \"Simplify and cleanup error handling in AudioRecord::getMinFrameCount\""
    },
    {
      "commit": "172abfe2cc30104282f8e65b82e9c9758adc83da",
      "tree": "e9d99ac10f51c6427aea253ef624772ec02d9827",
      "parents": [
        "68d074fe4538e0f1bd647c3f3aa932ea7dca332a",
        "86f04663032ddaa25110149d709bbf896ad83b02"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 25 15:48:25 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 25 15:48:25 2014 +0000"
      },
      "message": "Merge \"Add log at entry to set() in AudioTrack and AudioRecord\""
    },
    {
      "commit": "b42f318d9733f88c7eb9bedfd33b086b8ea5dff5",
      "tree": "5a38a8e40dd8c3ad572a418b2eb7fa08866e0a36",
      "parents": [
        "dc6ac201032d0f6ad0c8149ae2f009ec38693025"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 24 13:42:58 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 25 07:46:35 2014 -0800"
      },
      "message": "Simplify and cleanup error handling in AudioRecord::getMinFrameCount\n\nChange-Id: I8721ecedfb429c4e233453d1e768ddf69ecabbe4\n"
    },
    {
      "commit": "089e87201522c8979ac8f00fa729e907f54c790b",
      "tree": "ae86fd828953a88786a4ef6f02d9d0248280e73a",
      "parents": [
        "5f631515d098c29603cda88f7a7e7580a2d55b57"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 24 15:12:48 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 24 17:21:49 2014 -0800"
      },
      "message": "mAudioRecord is always non-0 if set() is successful\n\nChange-Id: I0c2483210903c922f06f097ada373a37b9a90a02\n"
    },
    {
      "commit": "5f631515d098c29603cda88f7a7e7580a2d55b57",
      "tree": "74b2b5ec4b6aeddeffcb6c04c833a3d4030660dd",
      "parents": [
        "e3247bf8dd4f8fa8dfa3a108260241ae4a967569"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 24 15:16:07 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 24 17:21:41 2014 -0800"
      },
      "message": "Unify comments and whitespace between AudioTrack and AudioRecord\n\nChange-Id: I5320a6b2d7f7077cb12d7da4f2ca30a940100bf2\n"
    },
    {
      "commit": "e3247bf8dd4f8fa8dfa3a108260241ae4a967569",
      "tree": "9b1ffe395ab3c15a4baa71bcb91022a2a2f21bb0",
      "parents": [
        "11cb175005db0090345f44bfa049b52fd8c809b8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 24 15:19:07 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 24 17:21:37 2014 -0800"
      },
      "message": "Update channel fields at same place in AudioTrack and AudioRecord\n\nChange-Id: I4b649feeef47e7968a9fa3a460217017ca9b05fe\n"
    },
    {
      "commit": "11cb175005db0090345f44bfa049b52fd8c809b8",
      "tree": "9798441ae7d492cd41ca2ef5b84feb70f8703e97",
      "parents": [
        "c85df82b1e8b05714268926a8bb3deb9c65f9a22"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 24 15:16:59 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 24 17:21:35 2014 -0800"
      },
      "message": "Update mReqFrameCount at same point in AudioTrack and AudioRecord\n\nChange-Id: I12369dfbb9e75389f2cab015a706decdaf310a0d\n"
    },
    {
      "commit": "c85df82b1e8b05714268926a8bb3deb9c65f9a22",
      "tree": "877f382a6a014e10634fc6dd40661eabd84eb467",
      "parents": [
        "86f04663032ddaa25110149d709bbf896ad83b02"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 24 15:13:40 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 24 17:21:32 2014 -0800"
      },
      "message": "Permit AudioRecord to support non-linear formats in future\n\nBut still restricted to 16-bit PCM currently\n\nChange-Id: I5df0e5033da9144ca73e44addf14a63d31406034\n"
    },
    {
      "commit": "86f04663032ddaa25110149d709bbf896ad83b02",
      "tree": "014693a35b36f4cee533a39bfb20025e99af9887",
      "parents": [
        "dc6ac201032d0f6ad0c8149ae2f009ec38693025"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 24 15:13:05 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 24 17:21:29 2014 -0800"
      },
      "message": "Add log at entry to set() in AudioTrack and AudioRecord\n\nChange-Id: Ife23b88474c1d62c0cf682c1a310d951f2c0f54a\n"
    },
    {
      "commit": "c9c7e25a4b1c34439fb365f6cfbef063884566cc",
      "tree": "43162dd8e8867d610a3791c6ca2b2efcf4875f69",
      "parents": [
        "3a005b3b19b750afe24577ae322aff4602ca2740"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Feb 21 12:01:23 2014 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Feb 21 12:32:11 2014 -0800"
      },
      "message": "Add method to get redirected Uri\n\nChange-Id: Id8aac1077c3de1bb1f58bfcfcca93d685abe9b79\n"
    },
    {
      "commit": "e9841c60ab2b954b97628801bd3bb2f84a69a35e",
      "tree": "0cf5d998be39a3d24e092c195378dcf003c1fc2c",
      "parents": [
        "4cc0a6a835c806d200ef83ef31fe5bef327c355c",
        "ee3759090c2194eaeca4944a01104771ff1c91d2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 18 22:25:16 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 18 22:25:16 2014 +0000"
      },
      "message": "Merge \"Simplify and remove old comment\""
    },
    {
      "commit": "6dd62fb91d82dedcfa3ab38c02eb0940b4ba932a",
      "tree": "5c463a944686864894c2be528a52df9d275dd221",
      "parents": [
        "f3b785ae6ea135115b54ac58cedc12b444483902"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 05 16:35:58 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 18 12:52:35 2014 -0800"
      },
      "message": "Multi-client recording\n\nSupports multiple clients both at native sample rate and with resampling.\n\nChange-Id: Icea55b4fd30751761b7debaa3ce016c79e712d8d\n"
    },
    {
      "commit": "ee3759090c2194eaeca4944a01104771ff1c91d2",
      "tree": "e264f2844d66ba225e00c5af110aeb3a1a22e69c",
      "parents": [
        "f3b785ae6ea135115b54ac58cedc12b444483902"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 18 12:43:37 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 18 12:43:37 2014 -0800"
      },
      "message": "Simplify and remove old comment\n\nChange-Id: Iee41641252f65cea9ce0ea0ec1ea4229608f7c64\n"
    },
    {
      "commit": "f3b785ae6ea135115b54ac58cedc12b444483902",
      "tree": "41a14b1f3d27bdba864fbe796af4d17ba79831dd",
      "parents": [
        "0220fd3ec49d01437af019dc390b7b501bdd770d",
        "3e8027a04c20a4b7028f1615538b36219386c9e5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 18 20:25:39 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 18 20:25:39 2014 +0000"
      },
      "message": "Merge \"Move StateQueueInstantiations to libinstantssq\""
    },
    {
      "commit": "3e8027a04c20a4b7028f1615538b36219386c9e5",
      "tree": "547552b1b32c40961d9130d10b28b05b173b1782",
      "parents": [
        "c02c96161dde9d6ca7b408cf08fcf10bd8e61a54"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 15 09:24:38 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 18 11:49:18 2014 -0800"
      },
      "message": "Move StateQueueInstantiations to libinstantssq\n\nThis removes a circular dependency between libmedia and libnbaio\n\nChange-Id: I3692cbbe2b76028a953b36606b62cdda70c8c26f\n"
    },
    {
      "commit": "7074296c72b3be919ebc9dfd504f4572a188d2e7",
      "tree": "21b792b395807c9283760acd3a565d5de90c7e3e",
      "parents": [
        "9a73cd3face153cbd04ceff0cfc0efdd4837b94e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 18 08:00:47 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 18 08:01:01 2014 -0800"
      },
      "message": "Fix warning due to incorrect log format\n\nChange-Id: I58ff399ace74965ebf8e5690c20637385f9425ad\n"
    }
  ],
  "next": "e03dd22716e688faa56467561827d9b1ea0c4214"
}
