)]}'
{
  "log": [
    {
      "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": "6f444c95d86936217bf49fc11d279851b0fa364d",
      "tree": "cc4f211aed6385dfd9d6bccbc2f7e4fc68128823",
      "parents": [
        "aeeb7e219e34d2d657d829913659a4e10e976375",
        "bd9c9a80fd487b3e83861c32b388eac146f8a299"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 19 14:40:44 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 14:40:44 2012 -0800"
      },
      "message": "Merge \"Make sure the ThrottledSource reports the proper mime type\""
    },
    {
      "commit": "bd9c9a80fd487b3e83861c32b388eac146f8a299",
      "tree": "4adb463b60a3b74d19dcab75ae68c996529e2066",
      "parents": [
        "27a0d83f53ddbfd6449ab0e3c786742a2cd135a9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 19 14:17:49 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jan 19 14:17:49 2012 -0800"
      },
      "message": "Make sure the ThrottledSource reports the proper mime type\n\nof the underlying source.\n\nChange-Id: I7cfd5c9f10d4b07781ed82fbdc9bf3db2e86cf84\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": "27a0d83f53ddbfd6449ab0e3c786742a2cd135a9",
      "tree": "6bb67bb1bf2d9c069053a98a0a6d6a31bfa2fd02",
      "parents": [
        "241fc78866b2aefd75cd1890df5a75b7008728e8",
        "a3f1fa308728976fc9ca1b4f37d26e633b32b9ac"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 06:10:37 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 06:10:37 2012 -0800"
      },
      "message": "Merge \"Fix incorrect includes of AudioTrack.h\""
    },
    {
      "commit": "241fc78866b2aefd75cd1890df5a75b7008728e8",
      "tree": "e7bb3a3c5ee9749b09a3a914f348f13c77334216",
      "parents": [
        "86905f445c96743b037eed6360afa956a85b019c",
        "347966c827883711d1ec631f204e4a6ab74e9d99"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 06:09:20 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 06:09:20 2012 -0800"
      },
      "message": "Merge \"Simplify range check for audio_mode_t (continued)\""
    },
    {
      "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": "5cb73e780ac3ce0556a68e6e0396486ce9b19a6d",
      "tree": "cc230059a33c3431c31b8e326d294e8d66296767",
      "parents": [
        "b93db88344829d02f114768b5f8a8e30f78b88fc",
        "f1d4592d4c3c99ebab55559e164ff102e825283e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 19 06:08:40 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 19 06:08:40 2012 -0800"
      },
      "message": "Merge \"For booleans, use ! instead of \u003d\u003d false\""
    },
    {
      "commit": "9e5af59badab79128c03c79534a20f09b6e93cfe",
      "tree": "2adc30973b7511fa56436596aca516f51a6ad4b3",
      "parents": [
        "b45e50a5bce5fba740318d056c8dd1fd9caed354",
        "2774144fa8283f1a7b43e17a53c97dec0c366dd3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 18 16:08:06 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 18 16:08:06 2012 -0800"
      },
      "message": "am db2e7163: Merge \"AudioFlinger: mix track only when really ready (2)\" into ics-mr1\n\n* commit \u0027db2e71635968f455ad4f41b2e24fb8b909c24ca0\u0027:\n  AudioFlinger: mix track only when really ready (2)\n"
    },
    {
      "commit": "a3f1fa308728976fc9ca1b4f37d26e633b32b9ac",
      "tree": "613598b5d86ce915b4f505c0d9c19592fa8f7d79",
      "parents": [
        "04eaf3e5f20d7faa956c0d672024ffb5117f4c26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 14:54:46 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 16:06:47 2012 -0800"
      },
      "message": "Fix incorrect includes of AudioTrack.h\n\nRemove unnecessary includes of AudioTrack.h.\nUse forward declaration of class names in preference to #include when possible.\n\nChange-Id: I12982811fa75c2c7695d8bbfa595a7aaec047dc0\n"
    },
    {
      "commit": "347966c827883711d1ec631f204e4a6ab74e9d99",
      "tree": "fb6dccc3b6a583c319cf0a82395c93461835a5ae",
      "parents": [
        "04eaf3e5f20d7faa956c0d672024ffb5117f4c26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 14:58:32 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 15:57:40 2012 -0800"
      },
      "message": "Simplify range check for audio_mode_t (continued)\n\nMissed one place in earlier CL of same name\n\nChange-Id: I0dd25364d0b8d5d731c02d352f139a0c8d4df1a8\n"
    },
    {
      "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"
    },
    {
      "commit": "f1d4592d4c3c99ebab55559e164ff102e825283e",
      "tree": "6e565ad0a02b7058688b86a1d9c949e38fd3608c",
      "parents": [
        "04eaf3e5f20d7faa956c0d672024ffb5117f4c26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 15:54:24 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 15:42:59 2012 -0800"
      },
      "message": "For booleans, use ! instead of \u003d\u003d false\n\nChange-Id: Ibc115936d2d0b0b7744ebe9b52839ea5b42c4edd\n"
    },
    {
      "commit": "0b07b8085d7b837b4dd5f09e0c8c39408f6bdbf7",
      "tree": "97068573fa84e254ad129147682603d5818c2ae2",
      "parents": [
        "04eaf3e5f20d7faa956c0d672024ffb5117f4c26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 14:56:06 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 15:10:31 2012 -0800"
      },
      "message": "Remove dead setRingerMode(mode, mask)\n\nChange-Id: Ia4cc8be8424a40b3dcb7ebd0264fdff4e5247f7f\n"
    },
    {
      "commit": "2774144fa8283f1a7b43e17a53c97dec0c366dd3",
      "tree": "5c73ae7daf8480e7ce2cc862790332401688931b",
      "parents": [
        "86d24aa35adf82512d341d9aaebd62b36b0a0847"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 17 19:20:12 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 18 12:27:38 2012 -0800"
      },
      "message": "AudioFlinger: mix track only when really ready (2)\n\nThis problem due to the way audio buffers are mixed when\nlow power mode is active was addressed by commits 19ddf0eb\nand 8a04fe03 but only partially. As a matter of fact, when more\nthan one audio track is playing, the problem is still present.\nThis is most noticeable when playing music with screen off\nand a notification or navigation instruction is played: in this case,\nthe music or notification is likely to skip.\n\nThe fix consists in declaring the mixer ready if all active tracks\nare ready. Previous behavior was to declare ready if at least one track was\nready. To avoid that one application failing to fill the track buffer blocks other\ntracks indefinitely, this condition is respected only if the mixer was ready\nin the previous round.\n\nIssue 5799167.\n\nChange-Id: Iabd4ca08d3d45f563d9824c8a03c2c68a43ae179\n"
    },
    {
      "commit": "b93db88344829d02f114768b5f8a8e30f78b88fc",
      "tree": "d2f33fa270c77346dfc28f8459b337912c697b5b",
      "parents": [
        "77418fc9b4131cabfe9a85963604bdd535a04df8",
        "c813985abd8ba61e999b3505f6a332574f87a1be"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 18 11:01:00 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 11:01:00 2012 -0800"
      },
      "message": "Merge \"Temporarily restore AudioSystem/AudioTrack APIs with their former signatures\""
    },
    {
      "commit": "c813985abd8ba61e999b3505f6a332574f87a1be",
      "tree": "d87c4ec564d4f3d19db4c1032661799cce847617",
      "parents": [
        "04eaf3e5f20d7faa956c0d672024ffb5117f4c26"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 18 10:51:55 2012 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 18 10:51:55 2012 -0800"
      },
      "message": "Temporarily restore AudioSystem/AudioTrack APIs with their former signatures\n\nuntil we get updated prebuilts from vendor.\n\nChange-Id: I8aae81d2513edca0ab268053a11c8c4206879e61\n"
    },
    {
      "commit": "77418fc9b4131cabfe9a85963604bdd535a04df8",
      "tree": "c9681f491ca6547bc49acc764c1c0a7753afe3e0",
      "parents": [
        "6c90884d683f00b56f2050c598b2cc40b7ca60d3",
        "ec2e74b538b899aac54f55ed1aa60286624f8895"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 18 09:29:56 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 09:29:56 2012 -0800"
      },
      "message": "Merge \"AVIExtractor: adding a H264 fourCC which is also specified in the reference. (H264 code can be found avi file which is encoded with FFmpeg.)\""
    },
    {
      "commit": "6c90884d683f00b56f2050c598b2cc40b7ca60d3",
      "tree": "8d2705d96eb8a19696f4f84c096202c18ed07d05",
      "parents": [
        "04eaf3e5f20d7faa956c0d672024ffb5117f4c26",
        "40a4e1440869b2e3981f261b0d301cd16c0cf0aa"
      ],
      "author": {
        "name": "Bryan Mawhinney",
        "email": "bryanmawhinney@google.com",
        "time": "Wed Jan 18 08:58:19 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 08:58:19 2012 -0800"
      },
      "message": "Merge \"Make sure seek triggers a reconnect if needed.\""
    },
    {
      "commit": "04eaf3e5f20d7faa956c0d672024ffb5117f4c26",
      "tree": "a1c32a1cd2e94f80e11748b6e56c0d7899492c11",
      "parents": [
        "63ad6aacc6ce6b729bf25f41376cfea731a2c1eb",
        "b1cf75c4935001f61057989ee3cf27bbf09ecd9c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 18 07:46:18 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 18 07:46:18 2012 -0800"
      },
      "message": "Merge \"Track volume cleanup\""
    },
    {
      "commit": "40a4e1440869b2e3981f261b0d301cd16c0cf0aa",
      "tree": "ba4dc1613a6ca3b4b8fc762fd3e9c7a20b79429f",
      "parents": [
        "63ad6aacc6ce6b729bf25f41376cfea731a2c1eb"
      ],
      "author": {
        "name": "Bryan Mawhinney",
        "email": "bryanmawhinney@google.com",
        "time": "Wed Jan 18 13:40:07 2012 +0000"
      },
      "committer": {
        "name": "Bryan Mawhinney",
        "email": "bryanmawhinney@google.com",
        "time": "Wed Jan 18 13:43:16 2012 +0000"
      },
      "message": "Make sure seek triggers a reconnect if needed.\n\nPreviously, if we had disconnected at the high watermark,\nthe read immediately following a seek would fail, and would\nnot be retried, resulting in an error.\n\nChange-Id: I45a53563fe17d6b54893815abc7750a7dfb0a124\n"
    },
    {
      "commit": "63ad6aacc6ce6b729bf25f41376cfea731a2c1eb",
      "tree": "7f5a8de6e8540f2424668e5c650dee567194fb4d",
      "parents": [
        "f237a30e9344d43f832ba11db6f62c6ad2084444",
        "83844cc2f95dc279015b47fd1e18c7cb4eabe9a1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 17 17:35:03 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 17:35:03 2012 -0800"
      },
      "message": "Merge \"audio framework: manage stream volume per device\""
    },
    {
      "commit": "b1cf75c4935001f61057989ee3cf27bbf09ecd9c",
      "tree": "e3daaea6160475e36dedfccaabf5d8b94406d05e",
      "parents": [
        "f237a30e9344d43f832ba11db6f62c6ad2084444"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 12:20:54 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 16:25:17 2012 -0800"
      },
      "message": "Track volume cleanup\n\nAlways read and write track volumes atomically. In most places this was\nalready being done, but there were a couple places where the left and\nright channels were read independently.\n\nChanged constant MAX_GAIN_INT to be a uint32_t instead of a float.\nIt is always used as a uint32_t in comparisons and assignments.\nUse MAX_GAIN_INT in more places.\n\nNow that volume is always accessed atomically, removed the union\nand alias for uint16_t volume[2], and kept only volumeLR.\n\nRemoved volatile as it\u0027s meaningless.\n\nIn AudioFlinger, clamp the track volumes read from shared memory\nbefore applying master and stream volume.\n\nChange-Id: If65e2b27e5bc3db5bf75540479843041b58433f0\n"
    },
    {
      "commit": "83844cc2f95dc279015b47fd1e18c7cb4eabe9a1",
      "tree": "3e9f329efec962076a0904ce7f093a9a51bac6b1",
      "parents": [
        "263709e7be37c7040aaef385bc5c9389a9b5f514"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 18 16:43:31 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 17 15:15:04 2012 -0800"
      },
      "message": "audio framework: manage stream volume per device\n\nImprove volume management by keeping track of volume for each type\nof device independently.\nVolume for each stream (MUSIC, RINGTONE, VOICE_CALL...) is now maintained\nper device.\n\nThe main changes are:\n- AudioService now keeps tracks of stream volumes per device:\n volume indexes are kept in a HashMap \u003c device , index\u003e.\n active device is queried from policy manager when a volume change request\n is received\n initalization, mute and unmute happen on all device simultaneously\n- Settings: suffixes is added to volume keys to store each device\nvolume independently.\n- AudioSystem/AudioPolicyService/AudioPolicyInterface: added a device argument\nto setStreamVolumeIndex() and getStreamVolumeIndex() to address each\ndevice independently.\n- AudioPolicyManagerBase: keep track of stream volumes for each device\nand apply volume according to current device selection.\n\nChange-Id: I61ef1c45caadca04d16363bca4140e0f81901b3f\n"
    },
    {
      "commit": "f237a30e9344d43f832ba11db6f62c6ad2084444",
      "tree": "fd4b7f606dde419fba1ba1a22c2eef74410b1166",
      "parents": [
        "3f6448e020969be59ad4d8df99c5296f237ffbd9",
        "ad0f6cc5e115ca167ff122c83451b46d85c590ac"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 14:10:07 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 14:10:07 2012 -0800"
      },
      "message": "Merge \"Remove dead setVolume() and mVolume[2]\""
    },
    {
      "commit": "ad0f6cc5e115ca167ff122c83451b46d85c590ac",
      "tree": "b8ff1f073a464c73bb142cc354f4382a2fa4ce9a",
      "parents": [
        "0696400a6bb9abbed62b3b9c6aa105495dc600a2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 12:20:38 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 13:33:33 2012 -0800"
      },
      "message": "Remove dead setVolume() and mVolume[2]\n\nChange-Id: I94b835434093e920432614eb5007101e87758f32\n"
    },
    {
      "commit": "3f6448e020969be59ad4d8df99c5296f237ffbd9",
      "tree": "5a55c2ba389c11e41d48842468f3c8aa4d108aa7",
      "parents": [
        "0696400a6bb9abbed62b3b9c6aa105495dc600a2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 16 13:11:50 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 11:59:35 2012 -0800"
      },
      "message": "Move fixed_fft to system/media/audio_utils\n\nChange-Id: If8a03911434862a872539c313f54825ffb2cc672\n"
    },
    {
      "commit": "0696400a6bb9abbed62b3b9c6aa105495dc600a2",
      "tree": "2368d7ccb33fbceb99585839b85420e38e59abf0",
      "parents": [
        "a9b21c5a7c24fe14d20372263c0bf5faf3d3e348",
        "f78aee70d15daf4690de7e7b4983ee68b0d1381d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 11:32:53 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 11:32:53 2012 -0800"
      },
      "message": "Merge \"Use audio_mode_t consistently\""
    },
    {
      "commit": "a9b21c5a7c24fe14d20372263c0bf5faf3d3e348",
      "tree": "ae5642e47beac63937bc5e812532d3ddfd31507e",
      "parents": [
        "263709e7be37c7040aaef385bc5c9389a9b5f514"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 10:06:38 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 10:06:38 2012 -0800"
      },
      "message": "Rename Visualizer::mLock\n\nThis avoids confusion with parent class AudioEffect\u0027s mLock which is\nprotected.\n\nChange-Id: I2ae0b0869fe3c606f682252973795b34477951d0\n"
    },
    {
      "commit": "263709e7be37c7040aaef385bc5c9389a9b5f514",
      "tree": "4a68796c8fe905b9924d7be1fc7192719f8a446a",
      "parents": [
        "3944e0326a286bcb931551e61e79c033b10d09d4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 08:40:01 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 07:45:07 2012 -0800"
      },
      "message": "Check stream type in AudioFlinger::createTrack\n\nA bad parameter to AudioFlinger::createTrack could cause mediaserver to crash.\n\nOther AudioFlinger stream type cleanup:\n - Simplify range check for audio_stream_type_t\n - Add comment about mStreamTypes array initialization.\n\nChange-Id: Ia33aa1cce0fdd694b08d9288816ffc097a9543d0\n"
    },
    {
      "commit": "3944e0326a286bcb931551e61e79c033b10d09d4",
      "tree": "508b29b6a0195b6f975ffdc0bc14defc09c9b8ec",
      "parents": [
        "613882293184e575a44bff681a3decaefe889e69",
        "9806710f5d6722cfc5783c7eca3512451a0f2035"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 07:28:14 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 07:28:14 2012 -0800"
      },
      "message": "Merge \"Fix locking for mMasterVolume and mMute\""
    },
    {
      "commit": "613882293184e575a44bff681a3decaefe889e69",
      "tree": "052f84c8fe6e7b201f03117f617c3ad77b8b0dd0",
      "parents": [
        "0107954f72153db747a3727dc1157e9236dfed90",
        "b9980659501d0428d65d8292f3c32da69d37fbd2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 07:27:46 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 07:27:46 2012 -0800"
      },
      "message": "Merge \"Use size_t for frame size\""
    },
    {
      "commit": "0107954f72153db747a3727dc1157e9236dfed90",
      "tree": "f279f37a12104778bdf7fa912e2205dd0c339f6e",
      "parents": [
        "b9ac2007cd141992eb5412ffb1c6527e0259b3ab",
        "fff6d715a8db0daf08a50634f242c40268de3d49"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 07:25:36 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 07:25:36 2012 -0800"
      },
      "message": "Merge \"Use audio_stream_type_t consistently\""
    },
    {
      "commit": "b9ac2007cd141992eb5412ffb1c6527e0259b3ab",
      "tree": "0dfa7a88493a832fca8b75be40687a22d4e11d0c",
      "parents": [
        "51067c14482decc3dcc1ac16a6573a9cfa9cc3de",
        "05632a5fa4b88ca474294887fc92a9fcdf0e2352"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 07:18:26 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 07:18:26 2012 -0800"
      },
      "message": "Merge \"AudioTrack and AudioFlinger send level cleanup\""
    },
    {
      "commit": "ec2e74b538b899aac54f55ed1aa60286624f8895",
      "tree": "987be93cc1b9d8e72979ed95d83048b52ba4c0cb",
      "parents": [
        "51067c14482decc3dcc1ac16a6573a9cfa9cc3de"
      ],
      "author": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Sun Jan 15 12:00:34 2012 +0900"
      },
      "committer": {
        "name": "Dongwon Kang",
        "email": "dwkang@google.com",
        "time": "Sun Jan 15 12:06:40 2012 +0900"
      },
      "message": "AVIExtractor: adding a H264 fourCC which is also specified in the reference.\n(H264 code can be found avi file which is encoded with FFmpeg.)\n\nChange-Id: Id9eccd4580443f42b2afa491c94ac2c2faa37f87\n"
    },
    {
      "commit": "9806710f5d6722cfc5783c7eca3512451a0f2035",
      "tree": "c0fb62e5d69389a3f31812a63ca90a76c7d6ab0e",
      "parents": [
        "09192653e836b21689f004bf8dee375356641181"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 13 11:47:54 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 15:53:10 2012 -0800"
      },
      "message": "Fix locking for mMasterVolume and mMute\n\nmMasterVolume and mMute are both protected by mutex in AudioFlinger class, but\nthere were two places where they were accessed without a mutex.\n\nAlso make AudioFlinger::mMasterMute private not protected.\n\nChange-Id: Ia3897daeb5c50313df5bcc071824357526237f3e\n"
    },
    {
      "commit": "05632a5fa4b88ca474294887fc92a9fcdf0e2352",
      "tree": "28e36d2cce839d66870ea066a2b334dd9b63c833",
      "parents": [
        "09192653e836b21689f004bf8dee375356641181"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 03 14:22:33 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 15:25:14 2012 -0800"
      },
      "message": "AudioTrack and AudioFlinger send level cleanup\n\nAdd an API to control block for getting/setting send level.\nThis allow us to make the mSendLevel field private.\n\nDocument the lack of barriers.\n\nUse 0.0f to initialize floating-point values (for doc only).\n\nChange-Id: I59f83b00adeb89eeee227e7648625d9a835be7a4\n"
    },
    {
      "commit": "b9980659501d0428d65d8292f3c32da69d37fbd2",
      "tree": "8b703aca299f4f715a65d07cc37b753e9753a941",
      "parents": [
        "f4e76c538f81068bc2e125f3f9ef8b8dd40f2d2a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 09:48:27 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 14:58:44 2012 -0800"
      },
      "message": "Use size_t for frame size\n\nexcept in the control block, where we don\u0027t have room.\n\nIn AudioFlinger::ThreadBase::TrackBase::getBuffer,\nread the frame size from control block only once.\n\nChange-Id: Id6c4bccd4ed3e07d91df6bbea43bae45524f9f4e\n"
    },
    {
      "commit": "51067c14482decc3dcc1ac16a6573a9cfa9cc3de",
      "tree": "7131377f740586aa0567b6494559ee49ae59d614",
      "parents": [
        "f4e76c538f81068bc2e125f3f9ef8b8dd40f2d2a",
        "c7a8e2422445030b9312470abca23c966b6367c7"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jan 13 14:32:50 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 13 14:32:50 2012 -0800"
      },
      "message": "Merge \"media/mtp: Add missing LOCAL_C_INCLUDES\""
    },
    {
      "commit": "f4e76c538f81068bc2e125f3f9ef8b8dd40f2d2a",
      "tree": "8bb6adcabdbe22194926469102f06c25ec054845",
      "parents": [
        "09192653e836b21689f004bf8dee375356641181",
        "b45e50a5bce5fba740318d056c8dd1fd9caed354"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jan 13 11:28:09 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 13 11:28:09 2012 -0800"
      },
      "message": "am c0ef548c: am d75961ee: am b4cee0f8: Merge \"stagefright aacenc/amrwbenc: Remove trailing whitespace\"\n\n* commit \u0027c0ef548c748f0c3bc917eff7b50941f9cbe1df86\u0027:\n  stagefright aacenc/amrwbenc: Remove trailing whitespace\n"
    },
    {
      "commit": "b45e50a5bce5fba740318d056c8dd1fd9caed354",
      "tree": "4d54436f9d0ed116b921d5814a684707bf370210",
      "parents": [
        "bc08dd57fe03b29d5acf53ab21e382b8c5600d33",
        "bcc2252eb16484cf58036146ea5034756dde8027"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jan 13 11:25:09 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 13 11:25:09 2012 -0800"
      },
      "message": "am d75961ee: am b4cee0f8: Merge \"stagefright aacenc/amrwbenc: Remove trailing whitespace\"\n\n* commit \u0027d75961eecbfeb3f7e027a2a1f6011a26dd7d2d2d\u0027:\n  stagefright aacenc/amrwbenc: Remove trailing whitespace\n"
    },
    {
      "commit": "bcc2252eb16484cf58036146ea5034756dde8027",
      "tree": "2d120ec67c027b9c270b26f2832f515d070d6b75",
      "parents": [
        "22bf648b0b5484834850667664912b660df28585",
        "b676a05348e4c516fa8b57e33b10548e6142c3f8"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jan 13 11:22:08 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 13 11:22:08 2012 -0800"
      },
      "message": "am b4cee0f8: Merge \"stagefright aacenc/amrwbenc: Remove trailing whitespace\"\n\n* commit \u0027b4cee0f871e0f5a2abd6c6f05b65710b69423f2c\u0027:\n  stagefright aacenc/amrwbenc: Remove trailing whitespace\n"
    },
    {
      "commit": "fff6d715a8db0daf08a50634f242c40268de3d49",
      "tree": "f5331971b746b2e0d878e1127003a0dab72e5fbb",
      "parents": [
        "09192653e836b21689f004bf8dee375356641181"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 16:38:12 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 10:20:14 2012 -0800"
      },
      "message": "Use audio_stream_type_t consistently\n\nAt native level it was a mixture of audio_stream_type_t, int, uint32_t,\nand uint8_t.  Java is still int.  Also fixed a couple of hard-coded -1\ninstead of AUDIO_STREAM_DEFAULT, and in startToneCommand a hard-coded 0\ninstead of AUDIO_STREAM_VOICE_CALL.\n\nChange-Id: Ia33bfd70edca8c2daec9052984b369cd8eee2a83\n"
    },
    {
      "commit": "c7a8e2422445030b9312470abca23c966b6367c7",
      "tree": "67e2bf5be90a682b1523ff2a7bad4ae97049ef3b",
      "parents": [
        "83bc7f3cf78b28a818417f40a4f0c00593993366"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jan 13 14:17:29 2012 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jan 13 14:21:42 2012 +0100"
      },
      "message": "media/mtp: Add missing LOCAL_C_INCLUDES\n\nOne of the source files here is including \u003ccutils/tztime.h\u003e which\nitself includes \u003cbionic_time.h\u003e, a private C library header used\nto define the strftime_tz() extension (which used to be declared\nin \u003ctime.h\u003e but was moved there instead).\n\nAdd a missing C include path to let our code compile as usual.\n\nChange-Id: I6aac2f1d3d15ad182679c81ff3f4febff74eb671\n"
    },
    {
      "commit": "09192653e836b21689f004bf8dee375356641181",
      "tree": "0b8df874c2840f9dcfb9d11ba2230d91282d998c",
      "parents": [
        "4cc55d53d542c4f4ed645738cebb65b9e7eb6c44",
        "9d2f386dd2885eaffa11fd494ae258bb09fe6397"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jan 12 16:56:58 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 16:56:58 2012 -0800"
      },
      "message": "Merge \"Separate sniffing from session initialization\""
    },
    {
      "commit": "9d2f386dd2885eaffa11fd494ae258bb09fe6397",
      "tree": "382639f8cc7f1a3677589d7dfca37b667ea4261c",
      "parents": [
        "83bc7f3cf78b28a818417f40a4f0c00593993366"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jan 10 08:24:37 2012 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jan 12 16:25:12 2012 -0800"
      },
      "message": "Separate sniffing from session initialization\n\nThis avoid lengthy/duplicate sniffing for drm plugins when a decrypt session is opened\n\no The change is backward compatibile in that no update is required\n  for existing drm plug-ins if they do not plan to provide separate\n  sniffer/extractor\n\nrelated-to-bug: 5725548\n\nChange-Id: I7fc4caf82d77472da4e2bc7b5d31060fb54fd84c\n"
    },
    {
      "commit": "4cc55d53d542c4f4ed645738cebb65b9e7eb6c44",
      "tree": "417efab1bc349bfaa4bdf7fccdff0e53fb76e7c0",
      "parents": [
        "d5a8bf0bca459389cdb81fdcc30893516bdce951",
        "e1c3962e268ffc12bfd1bd9ea84da1f135f36960"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 10:30:28 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 10:30:28 2012 -0800"
      },
      "message": "Merge \"Use audio_format_t consistently\""
    },
    {
      "commit": "f78aee70d15daf4690de7e7b4983ee68b0d1381d",
      "tree": "c84e36c036a847bdf12f44c949eacb7b3ba79698",
      "parents": [
        "d5a8bf0bca459389cdb81fdcc30893516bdce951"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 04 11:00:47 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 09:52:37 2012 -0800"
      },
      "message": "Use audio_mode_t consistently\n\nIt was int or uint32_t.\nAlso make getMode() const.\n\nChange-Id: Ibe45aadbf413b9158e4dd17f2b3bcc6355288d37\n"
    },
    {
      "commit": "d5a8bf0bca459389cdb81fdcc30893516bdce951",
      "tree": "92870fd797bc4cc281c60e463848e27e7f16b1ea",
      "parents": [
        "83bc7f3cf78b28a818417f40a4f0c00593993366",
        "bc08dd57fe03b29d5acf53ab21e382b8c5600d33"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 12 09:00:21 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 12 09:00:21 2012 -0800"
      },
      "message": "am ce77af47: Reconcile with ics-mr1-release\n\n* commit \u0027ce77af47e979d365155e4003ca2943b639600e73\u0027:\n"
    },
    {
      "commit": "bc08dd57fe03b29d5acf53ab21e382b8c5600d33",
      "tree": "0ddf435e065f725aebbd1a726eb1087f6e5decfb",
      "parents": [
        "a7cbd8e1a52c307cb8aac7d06a777ba2713fed82",
        "7382d6a1b92a54b9a002eb5d4bcc1dcac651c176"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 12 08:56:17 2012 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 12 08:56:17 2012 -0800"
      },
      "message": "Reconcile with ics-mr1-release\n\nChange-Id: Ie242914fa4cfdf35675bbd2777f0817186860526\n"
    },
    {
      "commit": "b676a05348e4c516fa8b57e33b10548e6142c3f8",
      "tree": "79cbd20823076300dffa09f7afdb3cfa8d5d4231",
      "parents": [
        "a9798d3c1f1c9787975dc0f16e2191da95f2f0da"
      ],
      "author": {
        "name": "Mans Rullgard",
        "email": "mans@mansr.com",
        "time": "Tue Apr 05 17:40:06 2011 +0300"
      },
      "committer": {
        "name": "Martin Storsjo",
        "email": "martin@martin.st",
        "time": "Thu Jan 12 11:14:04 2012 +0200"
      },
      "message": "stagefright aacenc/amrwbenc: Remove trailing whitespace\n\nThis was applied in AOSP master earlier, in commit\nb21611e5b0f1797e39e781d91ade023bac87637f, but when merged\ninto the Google internal tree in\n88c2d4d26d79384f32a25bd775cf873cb678b12a, none of these\nchanges have been brought in. (The diff of this merge commit\nand its first parent, d94b71d, is empty.)\n\nTherefore, reapply the rest of these changes on the files\nthat still are present in the current version.\n\nChange-Id: I645a9b9134769958a11808a06163123d28d83e46\n"
    },
    {
      "commit": "7382d6a1b92a54b9a002eb5d4bcc1dcac651c176",
      "tree": "0ddf435e065f725aebbd1a726eb1087f6e5decfb",
      "parents": [
        "86d24aa35adf82512d341d9aaebd62b36b0a0847",
        "d9a4d0bdc90c2ad37b0e9a818d8fd5cbbe624c7c"
      ],
      "author": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Wed Jan 11 16:29:04 2012 -0800"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Wed Jan 11 16:29:04 2012 -0800"
      },
      "message": "merge in ics-mr1-release history after reset to ics-mr1\n"
    },
    {
      "commit": "83bc7f3cf78b28a818417f40a4f0c00593993366",
      "tree": "92870fd797bc4cc281c60e463848e27e7f16b1ea",
      "parents": [
        "3bba0e0a60b15895134bc2c731d21fd7ebd28784"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 04 12:38:13 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 12:27:41 2012 -0800"
      },
      "message": "libmedia new can\u0027t fail on Android\n\nChange-Id: Ie79dd5abb8078b35474bf0f1b3a6ff994a3a3360\n"
    },
    {
      "commit": "3bba0e0a60b15895134bc2c731d21fd7ebd28784",
      "tree": "d2a61bc06a6a7338fb5a08505a8865ea378c27e6",
      "parents": [
        "544096247a907bc55688e5c03d5586ba5219d82a",
        "f8c1a6f7ef515810356816b50bfe18af95f3ec32"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 11:40:27 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 11:40:27 2012 -0800"
      },
      "message": "Merge \"Fix race in AudioSystem::getInputBufferSize\""
    },
    {
      "commit": "544096247a907bc55688e5c03d5586ba5219d82a",
      "tree": "e5a79fd39e116b521df89d20d09f1e472153ce85",
      "parents": [
        "e3a067f8bc98134941ee1a4da8c2a92a15aaa9cc",
        "0049acfc8b1c33eb90afc925dacd08a487618e17"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 11:39:06 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 11:39:06 2012 -0800"
      },
      "message": "Merge \"Fix bug in JetPlayer::loadFromFile\""
    },
    {
      "commit": "e3a067f8bc98134941ee1a4da8c2a92a15aaa9cc",
      "tree": "97e9e84c95a32d4f956de7cfc466242c85d5f808",
      "parents": [
        "e51dd6dd7b7034c171246ebf5e08b187ef17150c",
        "930f4caa1e311ef7ff538c421a324396157eb24f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 11:38:21 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 11:38:21 2012 -0800"
      },
      "message": "Merge \"Simplify range check for audio_mode_t\""
    },
    {
      "commit": "e51dd6dd7b7034c171246ebf5e08b187ef17150c",
      "tree": "e0ad17e5bf012befb4fdc60e5c54ad55ae443814",
      "parents": [
        "c40256146bee58bff09e1c16ef99ea06d31f89f9",
        "a7cbd8e1a52c307cb8aac7d06a777ba2713fed82"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 11 11:14:30 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 11 11:14:30 2012 -0800"
      },
      "message": "am 05985a2e: am c15cf3d2: Merge \"stagefright: limit audio gap for looped playback\" into ics-mr1\n\n* commit \u002705985a2e2ae5c21fbf69d2884c59ea475fce7f6d\u0027:\n  stagefright: limit audio gap for looped playback\n"
    },
    {
      "commit": "a7cbd8e1a52c307cb8aac7d06a777ba2713fed82",
      "tree": "0ddf435e065f725aebbd1a726eb1087f6e5decfb",
      "parents": [
        "b470ec5eb16e08f6d0d24bf79aa76c05fe5543a1",
        "86d24aa35adf82512d341d9aaebd62b36b0a0847"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 11 11:12:45 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 11 11:12:45 2012 -0800"
      },
      "message": "am c15cf3d2: Merge \"stagefright: limit audio gap for looped playback\" into ics-mr1\n\n* commit \u0027c15cf3d286f3d63d141b73f639a5a61ddb028029\u0027:\n  stagefright: limit audio gap for looped playback\n"
    },
    {
      "commit": "c40256146bee58bff09e1c16ef99ea06d31f89f9",
      "tree": "ff6a1d83349e949e123212eeda04199770565229",
      "parents": [
        "0132e12ded92529b1520ad62f5134fa31361c90b",
        "a4454b4765c5905f14186893b0688be375642283"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 10:25:23 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 10:25:23 2012 -0800"
      },
      "message": "Merge \"Use correct type for hardware call state\""
    },
    {
      "commit": "0132e12ded92529b1520ad62f5134fa31361c90b",
      "tree": "ae97a86b1eb46ac93290ca795a7c0e08773c06f9",
      "parents": [
        "2ea3410d0d3d592ce30c3ba0ce3e0e63b1244057",
        "1099586bd48a8a90bb1cc4e7c279703bc7259214"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 10:23:34 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 10:23:34 2012 -0800"
      },
      "message": "Merge \"Declare IAudioTrack methods in binder opcode order\""
    },
    {
      "commit": "2ea3410d0d3d592ce30c3ba0ce3e0e63b1244057",
      "tree": "3a0047f985b8989449e7be6e0c394c3218b2daa7",
      "parents": [
        "22f3efdefddc855ea0763275310850bf55bd4fd1",
        "a7d8d6fc5e102a08b262a1b78aa1abeeb097d9e4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 10:23:04 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 10:23:04 2012 -0800"
      },
      "message": "Merge \"Use consistent style of \u0026 reference for AutoMutex\""
    },
    {
      "commit": "22f3efdefddc855ea0763275310850bf55bd4fd1",
      "tree": "8982998eb1ac559f98e7c198fdeb5a6e853c0b07",
      "parents": [
        "9770988e61961d34033fd2c12f0de85a267df68f",
        "33df529414c248972587d97cbb2e3309e0a7eeff"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 10:22:45 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 10:22:45 2012 -0800"
      },
      "message": "Merge \"Fix missing tag in mediaserver ServiceManager: log\""
    },
    {
      "commit": "9770988e61961d34033fd2c12f0de85a267df68f",
      "tree": "80cc52b55695c1f147b06d5318ee4cd6d61b8467",
      "parents": [
        "02b2d2dddc9be339cf7647d4ead53cecd1c51038",
        "4a6f02833d8421b7d9b20f89729d8bb03b8b8102"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 10:22:19 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 10:22:19 2012 -0800"
      },
      "message": "Merge \"AudioFlinger new can\u0027t fail\""
    },
    {
      "commit": "02b2d2dddc9be339cf7647d4ead53cecd1c51038",
      "tree": "4a743ee6a972a2d35b2cb4a9f73234bd31dc8440",
      "parents": [
        "c1dc1cb1d1eaf84e88669f1a5f22579a0d9237c2",
        "f9a27779634ce3a01e5957f234cd04eba74fa07f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 10:01:34 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 10:01:34 2012 -0800"
      },
      "message": "Merge \"Fix build warning\""
    },
    {
      "commit": "f8c1a6f7ef515810356816b50bfe18af95f3ec32",
      "tree": "39adc0cad7ded05219a3d4ca9f9388511bbe7c97",
      "parents": [
        "c1dc1cb1d1eaf84e88669f1a5f22579a0d9237c2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 10 09:01:19 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 10 15:43:48 2012 -0800"
      },
      "message": "Fix race in AudioSystem::getInputBufferSize\n\nIt was caching the recording parameters without a mutex.\n\nChange-Id: Ic4b9f621cbc080d224c2233cf3ca3454fc0f19bd\n"
    },
    {
      "commit": "0049acfc8b1c33eb90afc925dacd08a487618e17",
      "tree": "7e4d4b45c01eddf9fe71248edc7ebd24f70d2fc5",
      "parents": [
        "c1dc1cb1d1eaf84e88669f1a5f22579a0d9237c2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 10 08:41:33 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 10 15:43:24 2012 -0800"
      },
      "message": "Fix bug in JetPlayer::loadFromFile\n\nA long pathname would corrupt the heap due to incorrect use of strncpy.\n\nAlso was using hard-coded constant 256 instead of PATH_MAX.\n\nChange-Id: Iba382bbb38624fbc41fec91449f9814f77d4ac0d\n"
    },
    {
      "commit": "930f4caa1e311ef7ff538c421a324396157eb24f",
      "tree": "ac544b75a8964ac7759355fd0659d246070bcc57",
      "parents": [
        "c1dc1cb1d1eaf84e88669f1a5f22579a0d9237c2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 16:47:31 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 10 15:42:32 2012 -0800"
      },
      "message": "Simplify range check for audio_mode_t\n\nAudioSystem::setMode previously allowed negative modes, but these were\nthen rejected by AudioFlinger.\n\nNow negative modes (including AUDIO_MODE_INVALID and AUDIO_MODE_CURRENT)\nare explicitly disallowed.\n\nChange-Id: I0bac8fea737c8eb1f5b6afbb893e48739f88d745\n"
    },
    {
      "commit": "86d24aa35adf82512d341d9aaebd62b36b0a0847",
      "tree": "0ddf435e065f725aebbd1a726eb1087f6e5decfb",
      "parents": [
        "60a78ac9535878984b0777788760b9ee7465c5e6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 09 13:47:48 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 09 13:48:25 2012 -0800"
      },
      "message": "stagefright: limit audio gap for looped playback\n\nThe audio gap when looping audio is mostly due to\na delay requested by the audio player when executing\nthe end of stream message. This is to allow the audio\nto be drained out of the pipe before actually stopping the\nAudioTrack.\nThis delay is not needed when looping as the AudioTrack\nis not stopped.\n\nThe fix consists in ignoring the requested delay when the\nlooping flag is set in awesome player.\n\nIssue 5800981.\n\nChange-Id: Ib32d2930c53ecebc21ca8440e6e054c7e20db4a5\n"
    },
    {
      "commit": "c1dc1cb1d1eaf84e88669f1a5f22579a0d9237c2",
      "tree": "a23167188913d4f7ae0673d5efc3a232d245d048",
      "parents": [
        "5f29ca38b71506ad7c7cb9925efbddf588e9655b"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Mon Jan 09 18:35:44 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Mon Jan 09 21:36:22 2012 +0000"
      },
      "message": "Rename LOG_ASSERT to ALOG_ASSERT  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157519\n\nBug: 5449033\nChange-Id: I8ceb2dba1b031a0fd68d15d146960d9ced62bbf3\n"
    },
    {
      "commit": "5f29ca38b71506ad7c7cb9925efbddf588e9655b",
      "tree": "e67bef8a10e8705ebe0f43fbf49d27764a362040",
      "parents": [
        "25b248eb52a0a16adaef6b79c9d92cb88b9a2bc2",
        "54c3b66444ebfb9f2265ee70ac3b76ccefa0506a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 09 11:59:17 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 09 11:59:17 2012 -0800"
      },
      "message": "Merge \"By convention const goes before the type specifier\""
    },
    {
      "commit": "25b248eb52a0a16adaef6b79c9d92cb88b9a2bc2",
      "tree": "8cf950ec7a75f5199c6657b3b721046030a7493d",
      "parents": [
        "879bc64e43d62f2690c77a3282cef2e45d1b76e9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 03 15:28:29 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 09 11:57:07 2012 -0800"
      },
      "message": "Use cached reference to media.player service\n\nThis save unnecessary binder calls\n\nChange-Id: I93a60efc54d9c8fb8fab706cd4477bbfd00ffec8\n"
    },
    {
      "commit": "879bc64e43d62f2690c77a3282cef2e45d1b76e9",
      "tree": "40952192d397dcff30df01558c68c11ef675cb7f",
      "parents": [
        "5c7b3bcc88e2b472f1f7b416d89222714b96a567",
        "98dd542ffcd3424b1da58bd273c0c1ff5b8c8960"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 09 10:25:00 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 09 10:25:00 2012 -0800"
      },
      "message": "Merge \"Replace loop by __builtin_ctz\""
    },
    {
      "commit": "5c7b3bcc88e2b472f1f7b416d89222714b96a567",
      "tree": "8de86a7b665428b3dddc2fce5abbbe722e37ef80",
      "parents": [
        "febdbfec3b1ed0e20aa4f10bfdd82702d3e41f4b",
        "9a2aaf927e56a4b4acab23ef16b3f133a9f48a63"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 09 10:24:40 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 09 10:24:40 2012 -0800"
      },
      "message": "Merge \"Clean up AudioTrack::mActive and stopped()\""
    },
    {
      "commit": "febdbfec3b1ed0e20aa4f10bfdd82702d3e41f4b",
      "tree": "56a30693e96b14b6e3040277aa017d90b2b5af52",
      "parents": [
        "29357bc2c0dd7c43ad3bd0c8e3efa4e6fd9bfd47",
        "a3a854868a80fd9b9b8720e06a172754943f9417"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 09 10:24:09 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 09 10:24:09 2012 -0800"
      },
      "message": "Merge \"suspended() and isSuspended() are const\""
    },
    {
      "commit": "29357bc2c0dd7c43ad3bd0c8e3efa4e6fd9bfd47",
      "tree": "3bdafe4b02fe36f6ee29c3170f0b0d2799bebf86",
      "parents": [
        "d709ca9c6a0fa1c8f40cbe624a119398643c5087"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 19:20:56 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Sun Jan 08 13:19:13 2012 +0000"
      },
      "message": "Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/157220\n\nBug: 5449033\nChange-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c\n"
    },
    {
      "commit": "d709ca9c6a0fa1c8f40cbe624a119398643c5087",
      "tree": "da9649b4ca178078ae86b4ef85e6b0c937086949",
      "parents": [
        "0e5ace70ca8067fc2c3259fe041352d1dab7e1e2",
        "b470ec5eb16e08f6d0d24bf79aa76c05fe5543a1"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jan 06 18:18:36 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 06 18:18:36 2012 -0800"
      },
      "message": "am 20090b30: Reconcile with ics-mr1-release\n\n* commit \u002720090b30340f9382a2eca6a9bed21117f7a27d7e\u0027:\n"
    },
    {
      "commit": "b470ec5eb16e08f6d0d24bf79aa76c05fe5543a1",
      "tree": "ec9e13131339633dcd8a9785bdf0db7588020d95",
      "parents": [
        "afb3f7fd1a093c333a90cadfe484fe2643e57031",
        "d9a4d0bdc90c2ad37b0e9a818d8fd5cbbe624c7c"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jan 06 18:15:13 2012 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jan 06 18:15:14 2012 -0800"
      },
      "message": "Reconcile with ics-mr1-release\n\nChange-Id: Id0aeb30eb75c6c4aee7abbc9877aa5b16389778c\n"
    },
    {
      "commit": "d9a4d0bdc90c2ad37b0e9a818d8fd5cbbe624c7c",
      "tree": "ec9e13131339633dcd8a9785bdf0db7588020d95",
      "parents": [
        "60a78ac9535878984b0777788760b9ee7465c5e6",
        "1c03729ed505d5ad66b72ea6ee921d8bb06245c6"
      ],
      "author": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Fri Jan 06 16:32:11 2012 -0800"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Fri Jan 06 16:32:11 2012 -0800"
      },
      "message": "merge in ics-mr1-release history after reset to ics-mr1\n"
    },
    {
      "commit": "0e5ace70ca8067fc2c3259fe041352d1dab7e1e2",
      "tree": "da9649b4ca178078ae86b4ef85e6b0c937086949",
      "parents": [
        "5ff1dd576bb93c45b44088a51544a18fc43ebf58",
        "afb3f7fd1a093c333a90cadfe484fe2643e57031"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jan 06 15:51:44 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 06 15:51:44 2012 -0800"
      },
      "message": "am 4bc873e6: am 7944704e: Merge \"Switch camera sounds to always use the system enforced audio stream.\" into ics-mr1\n\n* commit \u00274bc873e6ff73200af866f8c9efca66ad8ed23682\u0027:\n  Switch camera sounds to always use the system enforced audio stream.\n"
    },
    {
      "commit": "afb3f7fd1a093c333a90cadfe484fe2643e57031",
      "tree": "ec9e13131339633dcd8a9785bdf0db7588020d95",
      "parents": [
        "22bf648b0b5484834850667664912b660df28585",
        "60a78ac9535878984b0777788760b9ee7465c5e6"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jan 06 15:49:17 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 06 15:49:17 2012 -0800"
      },
      "message": "am 7944704e: Merge \"Switch camera sounds to always use the system enforced audio stream.\" into ics-mr1\n\n* commit \u00277944704e6c4cc10105838b78d3d8403bf66a066b\u0027:\n  Switch camera sounds to always use the system enforced audio stream.\n"
    },
    {
      "commit": "4a6f02833d8421b7d9b20f89729d8bb03b8b8102",
      "tree": "1509b0c7adce6eb0fdbc19a4b0a986d1a8a2e33b",
      "parents": [
        "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 15:03:11 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 15:12:25 2012 -0800"
      },
      "message": "AudioFlinger new can\u0027t fail\n\nChange-Id: I7dae05a5ea1c962a9975386eab1fedbbe106ffba\n"
    },
    {
      "commit": "33df529414c248972587d97cbb2e3309e0a7eeff",
      "tree": "1b70171fcd19e781e778d798fd7841c3eaa9fc06",
      "parents": [
        "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 19 14:09:14 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 14:40:14 2012 -0800"
      },
      "message": "Fix missing tag in mediaserver ServiceManager: log\n\nChange-Id: I2d5525ffee0b66c0bc361a02b313ec4dd61e6552\n"
    },
    {
      "commit": "1099586bd48a8a90bb1cc4e7c279703bc7259214",
      "tree": "c1b5f494fb3a212954495539bfe0c506bfc3dd05",
      "parents": [
        "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 03 14:50:23 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 13:35:57 2012 -0800"
      },
      "message": "Declare IAudioTrack methods in binder opcode order\n\nThis makes it easier to match up the declarations.\n\nChange-Id: I0996c20b2903b778b356dfe52b07b0ec634855dd\n"
    },
    {
      "commit": "a7d8d6fc5e102a08b262a1b78aa1abeeb097d9e4",
      "tree": "311f4dca56c443667b06476a4277e6a5c7996657",
      "parents": [
        "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 15:41:56 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 13:33:41 2012 -0800"
      },
      "message": "Use consistent style of \u0026 reference for AutoMutex\n\nAutoMutex, which is a typedef for Mutex::Autolock, is overloaded for\neither a reference (\u0026) or pointer (*) parameter, but we prefer to use\nthe reference form when the mutex is known at compile time.\n\nChange-Id: I3515e6d6ab7959b2356a27fa3b04fd49e42cb31e\n"
    },
    {
      "commit": "a4454b4765c5905f14186893b0688be375642283",
      "tree": "5f0e50456d96d048555a7329c9be067241266607",
      "parents": [
        "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 04 11:02:33 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 13:29:47 2012 -0800"
      },
      "message": "Use correct type for hardware call state\n\nChange-Id: Ic6d98b129e3ec653df1d8f7e829adf8dccb4f378\n"
    },
    {
      "commit": "60a78ac9535878984b0777788760b9ee7465c5e6",
      "tree": "ec9e13131339633dcd8a9785bdf0db7588020d95",
      "parents": [
        "071ccd5a9702500f3f7d62ef881300914926184d"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Jan 05 15:34:53 2012 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jan 06 10:24:01 2012 -0800"
      },
      "message": "Switch camera sounds to always use the system enforced audio stream.\n\nInstead of picking between the music stream and the enforced audio\nstream, change the camera service to always play sounds through\nenforced system stream. Also update the currently-hidden CameraSound\nAPI to match.\n\nBug: 5778365\nChange-Id: I3cc64b1d1ff567dbac8020a665d5b19846197ff3\n"
    },
    {
      "commit": "54c3b66444ebfb9f2265ee70ac3b76ccefa0506a",
      "tree": "2ae6ae86501101399d639f2a1227742c120e7ac8",
      "parents": [
        "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 07:46:30 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 08:00:59 2012 -0800"
      },
      "message": "By convention const goes before the type specifier\n\nChange-Id: I70203abd6a6f54e5bd9f1412800cc01212157e58\n"
    },
    {
      "commit": "f9a27779634ce3a01e5957f234cd04eba74fa07f",
      "tree": "d22f89179467963dc03ae1aa900c539c3c1e9d1c",
      "parents": [
        "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 07:47:26 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 07:49:34 2012 -0800"
      },
      "message": "Fix build warning\n\nChange-Id: Ic99608d0c14ed56c02f036e0bbaaae1b16bab8ba\n"
    },
    {
      "commit": "5ff1dd576bb93c45b44088a51544a18fc43ebf58",
      "tree": "c002dcda87f08329197b01395539bd25f10ca737",
      "parents": [
        "8a08dcc0a5de19a904e77d5f31bed3dff9a59890"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Jan 05 23:22:43 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 10:07:54 2012 +0000"
      },
      "message": "Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157065\n\nBug: 5449033\nChange-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69\n"
    },
    {
      "commit": "98dd542ffcd3424b1da58bd273c0c1ff5b8c8960",
      "tree": "e3bc2deb104359535cb71f9f728cfb197298cda6",
      "parents": [
        "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 15 14:38:29 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 15:31:19 2012 -0800"
      },
      "message": "Replace loop by __builtin_ctz\n\nUsing the builtin is faster on some platforms, for example on ARM it\u0027s\n19 instructions instead of 13, and is O(1) instead of O(n).  Of course,\ntrack creation is an inherently slow operation, so this doesn\u0027t matter\nmuch now.  But if we add support for virtual tracks, then physical tracks\nwill be allocated/freed more frequently.  Also just on principle ...\n\nChange-Id: I3f590934092bd7a1869cbedbc7357928aa5cc8ff\n"
    },
    {
      "commit": "8a08dcc0a5de19a904e77d5f31bed3dff9a59890",
      "tree": "74f1e0437d3431a755c5ee1f2cf2c71d368810ee",
      "parents": [
        "1dcd47537a81fc55db9b48dce7fff7bae8a601d5",
        "df64d15042bbd5e0e4933ac49bf3c177dd94752c"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Jan 05 14:07:02 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 05 14:07:02 2012 -0800"
      },
      "message": "Merge \"Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)  DO NOT MERGE\""
    },
    {
      "commit": "e1c3962e268ffc12bfd1bd9ea84da1f135f36960",
      "tree": "d24fac9434dbe5808a6c31a50414da7b5ce47c9a",
      "parents": [
        "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 04 09:36:37 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 13:34:54 2012 -0800"
      },
      "message": "Use audio_format_t consistently\n\nWas int, uint32_t, uint16_t, and uint8_t with 2-bit bitfield.\nAlso replace 0 by AUDIO_FORMAT_DEFAULT and replace 1 by\nAUDIO_FORMAT_PCM_16_BIT.\n\nChange-Id: Ia8804f53f1725669e368857d5bb2044917e17975\n"
    },
    {
      "commit": "1dcd47537a81fc55db9b48dce7fff7bae8a601d5",
      "tree": "5a1795bd7aefe20d332f7388d8cddcadc3df841a",
      "parents": [
        "88592eccaf6afcddd5f985955be92fe25205c680",
        "22bf648b0b5484834850667664912b660df28585"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 05 12:08:48 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 05 12:08:48 2012 -0800"
      },
      "message": "am d32ee5ba: Reconcile with ics-mr1-release\n\n* commit \u0027d32ee5baa057992431263907ec5cf8f19b43c043\u0027:\n"
    },
    {
      "commit": "9a2aaf927e56a4b4acab23ef16b3f133a9f48a63",
      "tree": "c4bbdbe2a7e0292105736849e28faf12d298e47c",
      "parents": [
        "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 03 09:42:47 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 11:55:24 2012 -0800"
      },
      "message": "Clean up AudioTrack::mActive and stopped()\n\nmActive is protected by mLock; volatile is meaningless on SMP.\n\nFixed a couple of places where mActive was accessed without a lock:\n - stopped()\n - processAudioBuffer()\n\nAdded stopped_l() for cases where we already hold the lock.\n\nMade mActive a bool not int.\n\nMoved down a lock in setPosition that was being acquired too early.\n\nChange-Id: I73ff368e991c0db9f9472df0b3f96fd33fcc7311\n"
    },
    {
      "commit": "a3a854868a80fd9b9b8720e06a172754943f9417",
      "tree": "b0c5342a5ab0492ac2ca7baf169dcdf355eab31d",
      "parents": [
        "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 04 11:01:11 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 10:51:02 2012 -0800"
      },
      "message": "suspended() and isSuspended() are const\n\nChange-Id: I04b95970b5a645b64e7e64fffd46d868354dda66\n"
    },
    {
      "commit": "88592eccaf6afcddd5f985955be92fe25205c680",
      "tree": "5a1795bd7aefe20d332f7388d8cddcadc3df841a",
      "parents": [
        "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef",
        "9c56d4ae6212c21ce5fd71ed534eb195983a07c1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 08:20:10 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 05 08:20:10 2012 -0800"
      },
      "message": "Merge \"Remove the notion of \"active track\" from mixer\""
    },
    {
      "commit": "22bf648b0b5484834850667664912b660df28585",
      "tree": "2ffdfd9dbc064aa3d2a9b229f87b679220ef4f79",
      "parents": [
        "fe0698f9d44ca923ff1ba528f2c42019937ea5e2",
        "1c03729ed505d5ad66b72ea6ee921d8bb06245c6"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 05 07:45:28 2012 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 05 07:45:28 2012 -0800"
      },
      "message": "Reconcile with ics-mr1-release\n\nChange-Id: I8a74c329fc7dd115e36d5180fab8e8680d6df4f8\n"
    },
    {
      "commit": "a2a0a5d7d56baa831870f4bf2a0d942a477d92ef",
      "tree": "1979692770dd902d0aa7e8c0760e496e13539e5c",
      "parents": [
        "7ab41c9f773ba599646f1b0d00955c1be80f92fd",
        "f6b1678f8f508b447155a81b44e214475ab634a8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 07:38:29 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 05 07:38:29 2012 -0800"
      },
      "message": "Merge \"Use the standard CC_LIKELY and CC_UNLIKELY macros\""
    }
  ],
  "next": "f6b1678f8f508b447155a81b44e214475ab634a8"
}
