)]}'
{
  "log": [
    {
      "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": "4513aa2cda9e636e4ac675dab9a1353b22e951ae",
      "tree": "546a77e6c051d4096a60295d7bb259d9c6e771bb",
      "parents": [
        "95006625bd1c562c952833bf08c52e7e6c524363",
        "12b44bd5fe3069cd3450d05b6c446b600e0553d3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Apr 23 23:45:27 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 23 23:45:27 2014 +0000"
      },
      "message": "Merge \"AArch64: rewrite audioflinger\u0027s sinc resample by intrinsics.\""
    },
    {
      "commit": "3ab368e0810d894dcbc0971350c095049478a055",
      "tree": "a50053c391da8c02797158395f2ecfec83218855",
      "parents": [
        "db43b34c3428e480f8c4c66e7e88f4001f37f91e"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Apr 15 14:55:53 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Apr 15 14:57:31 2014 -0700"
      },
      "message": "media: use size_t for integer iterator to Vector::size()\n\nChange-Id: I0a744dc7815a86a993df9b0623440be620ec8903\n"
    },
    {
      "commit": "12b44bd5fe3069cd3450d05b6c446b600e0553d3",
      "tree": "d7c3ff6a66a682520248b3b39e68a470968e3663",
      "parents": [
        "51b3ea2b8f7298bffbd246c65a606cd053357b66"
      ],
      "author": {
        "name": "Zhongwei Yao",
        "email": "zhongwei.yao@arm.com",
        "time": "Thu Apr 10 17:23:42 2014 +0100"
      },
      "committer": {
        "name": "Zheng Xu",
        "email": "zheng.xu@arm.com",
        "time": "Thu Apr 10 18:28:46 2014 +0100"
      },
      "message": "AArch64: rewrite audioflinger\u0027s sinc resample by intrinsics.\n\nPass conformance test on armv7 and aarch64, performance test is done on armv7.\nCompared with original armv7 assembly version, this version has similar\nresult. Here is performance data on pandaboard android4.4 (input: random wave\nfile, unit: Mspl/s, toolchain:gcc 4.8):\n\n|                | origin(assembly) | current(intrinsics) | C version |\n|----------------+------------------+---------------------+-----------|\n| single channel | 6.17             | 7.14                | 3.43      |\n| double channel | 5.24             | 5.63                | 3.50      |\n\nChange-Id: If5670218e1586e9dfd2b8d9c66a6880f3e4808ca\n"
    },
    {
      "commit": "d09ec3b22013ef43d422c916dfd44bab9101a659",
      "tree": "ded7eec70094a054406b39d7d4a89dd3007cd115",
      "parents": [
        "f4d9d45ebad478091d65b2a4c18544d308d3fff0",
        "36817364738d4c45adc3e448fbec02a9611bfeda"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Mar 19 19:56:17 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 19 19:56:17 2014 +0000"
      },
      "message": "am 36817364: Merge \"Add libaudioresampler\"\n\n* commit \u002736817364738d4c45adc3e448fbec02a9611bfeda\u0027:\n  Add libaudioresampler\n"
    },
    {
      "commit": "ddf887c08b58382920effb7f0b2049e471960b4a",
      "tree": "a1f2797399f967b46ec2d823f6f520f5b8426684",
      "parents": [
        "b2ecad7f079f4f852d334e67fd7a72ff1696a78e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Mar 19 09:05:08 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Mar 19 10:53:13 2014 -0700"
      },
      "message": "Add libaudioresampler\n\nlibaudioresampler is available in both 32-bit and 64-bit,\nunlike libaudioflinger which is currently 32-bit only.\n\nBug: 8141282\nChange-Id: I839f7b4e6aaed6984012ca6d514323f927669df6\n"
    },
    {
      "commit": "d8590167fec151cc2e8f6e28e406c99882f40884",
      "tree": "6d266adb3ec0e7c1337eed3115005a67a72861b2",
      "parents": [
        "3327597fe780a076a0755c7a4f1aff895c531dad",
        "77658a069c81a0d5b4a1b81443b470a3ea64cab0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Tue Mar 18 17:41:42 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 18 17:41:42 2014 +0000"
      },
      "message": "am 77658a06: Merge \"AudioPolicyService: malloc/delete pair\"\n\n* commit \u002777658a069c81a0d5b4a1b81443b470a3ea64cab0\u0027:\n  AudioPolicyService: malloc/delete pair\n"
    },
    {
      "commit": "77658a069c81a0d5b4a1b81443b470a3ea64cab0",
      "tree": "3e08958e7ac8f848823003064713cb731a05b5e9",
      "parents": [
        "64727dd7c8513b6c9ddcce2f4b305618bb76121c",
        "db358afc965d9bfb703953ac004275428a7cda64"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Tue Mar 18 17:31:25 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 18 17:31:26 2014 +0000"
      },
      "message": "Merge \"AudioPolicyService: malloc/delete pair\""
    },
    {
      "commit": "236104afb2300b7d969b1dc786f14b5f912df1cf",
      "tree": "d8b9d1ea56541d1c7a9cdc7e7f4eeea86f1b30bd",
      "parents": [
        "f10b9885462bea2f0c683038d6833ee230ad9eb2",
        "089affb6c2d9ed1e2d49df4be02d30dc490506f9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Fri Mar 14 20:53:30 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 14 20:53:30 2014 +0000"
      },
      "message": "am 089affb6: Merge \"mediaserver and associated services are 32-bit only\"\n\n* commit \u0027089affb6c2d9ed1e2d49df4be02d30dc490506f9\u0027:\n  mediaserver and associated services are 32-bit only\n"
    },
    {
      "commit": "af783aa91f7a279153fb8bab8d0d6b9f737996e9",
      "tree": "25c5b54bf884f220cce4ee21a9cbaf6583820f91",
      "parents": [
        "19afb3869eb6a3e3733dc1f7420e1d4c3c03d376"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Sun Mar 02 19:48:19 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Mar 12 11:24:53 2014 -0700"
      },
      "message": "mediaserver and associated services are 32-bit only\n\nalso 32-bit only command-line apps\n\nChange-Id: I9ac557a8d02bbf6986a9b5c3cdce23d400b306a3\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": "10ac79930120efea20b125f5faedfe89e8674676",
      "tree": "a184430fecfcceecb117c2d4669c9b3331403250",
      "parents": [
        "32fbb48de0248518fc5a14099b32fe4b8e9fc102",
        "5930e8ebdacf3a59c13eef11fd03658ba58b443e"
      ],
      "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 5930e8eb: Merge \"AudioFlinger: Remove code for supporting resampling in fast tracks\"\n\n* commit \u00275930e8ebdacf3a59c13eef11fd03658ba58b443e\u0027:\n  AudioFlinger: Remove code for supporting resampling in fast tracks\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": "396a2bc8d1934ccea6159dfcee88e47f0c3c21aa",
      "tree": "c16e317e1417d6229e635ca7c825dc59e939b1b9",
      "parents": [
        "05a4b64ea4d01e29c427d8b5f5107b8edc2dbb21",
        "d66cd743525cc049033caa3e81cbdf74c72a4556"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Fri Mar 07 02:23:19 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 07 02:23:19 2014 +0000"
      },
      "message": "am d66cd743: Merge \"audioflinger: conform inline ASM to UAL\"\n\n* commit \u0027d66cd743525cc049033caa3e81cbdf74c72a4556\u0027:\n  audioflinger: conform inline ASM to UAL\n"
    },
    {
      "commit": "6cbccee701e74fa43a5ea49c15af7dd3267b6699",
      "tree": "90fa3e762bead3f0dca419b14ee992100ba4c454",
      "parents": [
        "525b099ada155d6654300cb2e5d8c1a09f4eb8ba"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Fri Dec 13 15:40:13 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Thu Mar 06 10:44:13 2014 -0800"
      },
      "message": "audioflinger: Fix for a deadlock in track creation\n\nAudioFlinger enters a deadlock (with itself) on trying to free a\nRecordTrack or Track object that failed initialization. Clear this\nbad object from the caller instead.\n\nBug: 12423233\nChange-Id: I926f2beb922a70f6924e593e2bbf1a5b5df85b16\n"
    },
    {
      "commit": "4f4c9a22f4676c65bcae77f0805dcd699b3ba475",
      "tree": "4e7e9f1ab7238a965949fec8ea62a28d4e7ae8ec",
      "parents": [
        "c7753b12a9c8c1cba69ba75bccc0083c37bc67f1",
        "281dd4e13309973dbb85bce531f884237e0d8fb0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 05 23:47:17 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 05 23:47:17 2014 +0000"
      },
      "message": "am 281dd4e1: audioflinger: fix static track end detection\n\n* commit \u0027281dd4e13309973dbb85bce531f884237e0d8fb0\u0027:\n  audioflinger: fix static track end detection\n"
    },
    {
      "commit": "7028a2c8106ee5a22db88da5dad581820ee07254",
      "tree": "afcb2b29c856c84809893e5dda8a68f68054ed75",
      "parents": [
        "6b2604259c12ee28b49f26ab2adac96eefe30934",
        "7e92abeafb184e8a34213d7149592e95a72601b0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 05 22:41:53 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 05 22:41:53 2014 +0000"
      },
      "message": "am 7e92abea: audioflinger: fix offload write buffer offset\n\n* commit \u00277e92abeafb184e8a34213d7149592e95a72601b0\u0027:\n  audioflinger: fix offload write buffer offset\n"
    },
    {
      "commit": "281dd4e13309973dbb85bce531f884237e0d8fb0",
      "tree": "f58a048f67a81b56c07593f727c92a445b249f4b",
      "parents": [
        "abab1c33caf0982c11713e6d64d60105dcbc8ab7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 20 17:36:01 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 05 14:03:30 2014 -0800"
      },
      "message": "audioflinger: fix static track end detection\n\nIf a static track is not a fast track,\nprepareTracks_l() must rely on framesReady() to\ndetect end of buffer and remove the track from the active\ntrack list.\nFailing to do so results in the track staying active but\nnot processed by the mixer because in underrun. This leaves the\nmix buffer content uninitialized and causes the effect process\nfunction to accumulate its output onto undefined data.\n\nBug: 12013676.\nChange-Id: I4b0819a9d93141ac3307b8786fc6a451dd585220\n"
    },
    {
      "commit": "abab1c33caf0982c11713e6d64d60105dcbc8ab7",
      "tree": "fed18cdc3a9543b56ffeaf73db55d0d20ee937e9",
      "parents": [
        "d0115d8c4db2f337030dea706bc0a434c4a03ed6"
      ],
      "author": {
        "name": "Gaurav Kumar",
        "email": "gaurav.kumar@broadcom.com",
        "time": "Mon Jan 06 10:57:18 2014 +0530"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 05 13:59:28 2014 -0800"
      },
      "message": "AudioMixer: Remove tracks from enabledTracks after reseting outTemp\n\nIf any track goes through AudioMixer::process__genericNoResampling, and\nits getnextbuffer returns NULL, Then that track is removed by AudioMixer\nfrom enabledTracks.\n\nThus if all tracks getnextbuffer return NULL, Then this function doesn\u0027t\nreset outTemp and last buffer in AudioFlinger\u0027s mMixBuffer will be\nrepeated and noise is observed.\n\nRemove tracks from enabledTracks after reseting outTemp to zero, so that\nprocess__genericNoResampling will reset outTemp and noise won\u0027t appear.\n\nBug: 12450065\n\nChange-Id: I28996d425838728955f01eb1a00acf6e6dc2dea1\nSigned-off-by: Gaurav Kumar \u003cgaurav.kumar@broadcom.com\u003e\nSigned-off-by: Pierre Couillaud \u003cpierre@broadcom.com\u003e\n"
    },
    {
      "commit": "7e92abeafb184e8a34213d7149592e95a72601b0",
      "tree": "09ec6f7fdfdc0b9564660f134bd6a460a4480d85",
      "parents": [
        "85b3013e06e8fe7802fe6259ecac80261e834332"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 22 09:29:56 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 05 12:12:01 2014 -0800"
      },
      "message": "audioflinger: fix offload write buffer offset\n\nFix current audio HAL write buffer offset calculation\nwhich assumes that the frame size is a multiple of 2.\n\u0027\nBug: 12823725.\n\nChange-Id: I0195ed5cfef225a6f114e7dd405a02680bb7254e\n"
    },
    {
      "commit": "7c206e5bd24b5ae4565d0e60b637458a1054dfcf",
      "tree": "316b886b5c436f5cfa9d14cecab3d42013ca0b88",
      "parents": [
        "21e81bca4d1e6f7d1ccac61b65da7c7a4a121064",
        "e0cd1051ed9fea0629745c29020516ae62298461"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Wed Mar 05 01:24:09 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 05 01:24:09 2014 +0000"
      },
      "message": "am e0cd1051: audioflinger: update track ready condition\n\n* commit \u0027e0cd1051ed9fea0629745c29020516ae62298461\u0027:\n  audioflinger: update track ready condition\n"
    },
    {
      "commit": "21e81bca4d1e6f7d1ccac61b65da7c7a4a121064",
      "tree": "25ed8460e9719f09063932ecd1297bc7f99c3b0c",
      "parents": [
        "571596564f4b818b8e89c4bbe824e557e8e00075",
        "e010f65e6337267cb15f8894c950a3f64370dd36"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Wed Mar 05 01:24:09 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 05 01:24:09 2014 +0000"
      },
      "message": "am e010f65e: audioflinger: Fix for a deadlock in track creation\n\n* commit \u0027e010f65e6337267cb15f8894c950a3f64370dd36\u0027:\n  audioflinger: Fix for a deadlock in track creation\n"
    },
    {
      "commit": "50c3157c5a3e0617be77716beff1ae8801d8a72f",
      "tree": "7b550f2609351c85fc70658220f14e3a5737288e",
      "parents": [
        "e0cd1051ed9fea0629745c29020516ae62298461"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Tue Dec 03 21:26:02 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 04 16:03:12 2014 -0800"
      },
      "message": "audioflinger: check for condition before waiting\n\nAsyncCallbackThread must check for any condition that\nwas already been satisfied before waiting.\n\nBug: 11824817\nChange-Id: I04683a1f355de4f440106cab47fd916aa39d5e35\n"
    },
    {
      "commit": "e0cd1051ed9fea0629745c29020516ae62298461",
      "tree": "03273a98e8fc21f916bd0de1163913c51171b953",
      "parents": [
        "e010f65e6337267cb15f8894c950a3f64370dd36"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Fri Dec 27 16:09:28 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 04 15:58:25 2014 -0800"
      },
      "message": "audioflinger: update track ready condition\n\nSignal track ready if the track isStopping().\n\nBug: 12423190\nChange-Id: I95e14905df10ebf301e398263478c8ca25d7e2ce\n"
    },
    {
      "commit": "e010f65e6337267cb15f8894c950a3f64370dd36",
      "tree": "e631dc8a6690f18c6b977272404abe1df70cc30c",
      "parents": [
        "a4f24ff9b239300b4bb2098c1413c0a60edc2d7e"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Fri Dec 13 15:40:13 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 04 15:36:20 2014 -0800"
      },
      "message": "audioflinger: Fix for a deadlock in track creation\n\nAudioFlinger enters a deadlock (with itself) on trying to free a\nRecordTrack or Track object that failed initialization. Clear this\nbad object from the caller instead.\n\nBug: 12423233\nChange-Id: I926f2beb922a70f6924e593e2bbf1a5b5df85b16\n"
    },
    {
      "commit": "377b2ec9a2885f9b6405b07ba900a9e3f4349c38",
      "tree": "b938e1d75a1beefae86244f287ca22f4a277740d",
      "parents": [
        "cdda7bf4d3ca9cad6979374a18dd5be79ea83d80"
      ],
      "author": {
        "name": "Kévin PETIT",
        "email": "kevin.petit@arm.com",
        "time": "Mon Feb 03 12:35:36 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 11 11:40:06 2014 +0000"
      },
      "message": "Make frameworks/av 64-bit compatible\n\nContains the necessary changes to make frameworks/av build and work\non a 64-bit machine.\n\nSigned-off-by: Craig Barber \u003ccraig.barber@arm.com\u003e\nSigned-off-by: Kévin PETIT \u003ckevin.petit@arm.com\u003e\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\n\nChange-Id: I725feaae50ed8eee25ca2c947cf15aee1f395c43\n"
    },
    {
      "commit": "5930e8ebdacf3a59c13eef11fd03658ba58b443e",
      "tree": "d3766c6b6957a45b411ffcdc00b2595e75d2ac4e",
      "parents": [
        "4361749d74113069aafb0620a1189404205c58d0",
        "3ce28aa3cb5262775180a8b423cfb4a5670ebc59"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Mon Feb 10 18:05:01 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 10 18:05:01 2014 +0000"
      },
      "message": "Merge \"AudioFlinger: Remove code for supporting resampling in fast tracks\""
    },
    {
      "commit": "4361749d74113069aafb0620a1189404205c58d0",
      "tree": "dfddd0eede083dd799e7cd5179a98954259ee6e9",
      "parents": [
        "7142d10a7a3941b2deb18869a7f7b79462e0aa52",
        "398f21348e5100289f6e5be30c8b5257fa04aaf9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Mon Feb 10 18:04:54 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 10 18:04:54 2014 +0000"
      },
      "message": "Merge \"AudioTrack: Never try to use the fast path if resampling is required\""
    },
    {
      "commit": "3ce28aa3cb5262775180a8b423cfb4a5670ebc59",
      "tree": "c033ef7bb7e98903661266d30f22259d12f5bc43",
      "parents": [
        "398f21348e5100289f6e5be30c8b5257fa04aaf9"
      ],
      "author": {
        "name": "Martin Storsjo",
        "email": "martin@martin.st",
        "time": "Wed Feb 05 19:49:05 2014 +0200"
      },
      "committer": {
        "name": "Martin Storsjo",
        "email": "martin@martin.st",
        "time": "Wed Feb 05 19:56:50 2014 +0200"
      },
      "message": "AudioFlinger: Remove code for supporting resampling in fast tracks\n\nThis isn\u0027t used at the moment.\n\nChange-Id: I4e0fb2af5f7d959dbafd5ddb7defa1c6b8e8636a\n"
    },
    {
      "commit": "5f51ade2c290e239a125dc88943b240e1105fd97",
      "tree": "19372aa7633c63aec8821c0a7e43f37a31c960ef",
      "parents": [
        "5db1e3a6f30c252ed61461dd8c58786e905e5f5a"
      ],
      "author": {
        "name": "synergy dev",
        "email": "synergye@codefi.re",
        "time": "Tue Feb 04 06:38:33 2014 -0500"
      },
      "committer": {
        "name": "synergy dev",
        "email": "synergye@codefi.re",
        "time": "Tue Feb 04 07:37:07 2014 -0500"
      },
      "message": "audioflinger: conform inline ASM to UAL\n\nClang requires some inline ASM to conform to the UAL standards (Unified Assembler Language).\nThis fixes a small issue in this inline asm to allow building.\n\nChange-Id: Ifd9b1814343ab5ade636b9401a21d575559dac16\n"
    },
    {
      "commit": "398f21348e5100289f6e5be30c8b5257fa04aaf9",
      "tree": "26fb40e2808e33bcad41a36d263bc26b02f5c62c",
      "parents": [
        "c4eef29af4e306319d8741e0c3ade1ede9a0a2b5"
      ],
      "author": {
        "name": "Martin Storsjo",
        "email": "martin@martin.st",
        "time": "Fri Jan 31 13:30:15 2014 +0200"
      },
      "committer": {
        "name": "Martin Storsjo",
        "email": "martin@martin.st",
        "time": "Fri Jan 31 13:30:15 2014 +0200"
      },
      "message": "AudioTrack: Never try to use the fast path if resampling is required\n\nUnless AudioFlinger was built with FAST_TRACKS_AT_NON_NATIVE_SAMPLE_RATE\nenabled, AudioFlinger would deny using the fast path (and internally\nfall back to the normal codepath) when it realized that resampling\nwas required. Since the buffer size calculations within AudioFlinger\ndon\u0027t take resampling into account properly (see the calculation\nbelow \"AUDIO_OUTPUT_FLAG_FAST denied\" in audioflinger/Threads.cpp,\njust below the hunk that this patch changes), make sure AudioTrack\ndoesn\u0027t try to use the fast path if resampling is required.\n\nThis removes the possibility to enable\nFAST_TRACKS_AT_NON_NATIVE_SAMPLE_RATE in AudioFlinger since it\nAudioTrack now won\u0027t even try to use the fast path for content\nthat requires resampling, regardless of the AudioFlinger configuration.\n\nChange-Id: Icf0f8ad50bf0fdb84657f518c0120aa0535f23f9\n"
    },
    {
      "commit": "745e9a8283b56c7772ee7d72383a3f2e012e1ef9",
      "tree": "281cab68618b85ac31ccb6c3a436229d9d81a1ce",
      "parents": [
        "1bf0eecd2ec6a3b3e29ad2c91bcefda76abef2fe"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 20 17:36:01 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 30 19:37:52 2014 +0000"
      },
      "message": "audioflinger: fix static track end detection\n\nIf a static track is not a fast track,\nprepareTracks_l() must rely on framesReady() to\ndetect end of buffer and remove the track from the active\ntrack list.\nFailing to do so results in the track staying active but\nnot processed by the mixer because in underrun. This leaves the\nmix buffer content uninitialized and causes the effect process\nfunction to accumulate its output onto undefined data.\n\nBug: 12013676.\nChange-Id: Iad72c921fa18d34811abf7d1073890c093a27725\n"
    },
    {
      "commit": "1bf0eecd2ec6a3b3e29ad2c91bcefda76abef2fe",
      "tree": "41b83ec660ace65ac60b2d6061327ce9c7f33309",
      "parents": [
        "06da69d57d90e180e1165905e6c703227a06f041",
        "7e79cd2d3067cdb7b9daf639cf772d4dd149c934"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Jan 29 17:48:44 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 29 17:48:44 2014 +0000"
      },
      "message": "Merge \"AudioMixer: Remove tracks from enabledTracks after reseting outTemp\""
    },
    {
      "commit": "7e79cd2d3067cdb7b9daf639cf772d4dd149c934",
      "tree": "bbb14bc8c011b3c7e60c2b78c2a2f4366bf12639",
      "parents": [
        "99044adc6e209d31e9c5308d960e2bd5f6999f85"
      ],
      "author": {
        "name": "Gaurav Kumar",
        "email": "gaurav.kumar@broadcom.com",
        "time": "Mon Jan 06 10:57:18 2014 +0530"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Jan 29 17:46:08 2014 +0000"
      },
      "message": "AudioMixer: Remove tracks from enabledTracks after reseting outTemp\n\nIf any track goes through AudioMixer::process__genericNoResampling, and\nits getnextbuffer returns NULL, Then that track is removed by AudioMixer\nfrom enabledTracks.\n\nThus if all tracks getnextbuffer return NULL, Then this function doesn\u0027t\nreset outTemp and last buffer in AudioFlinger\u0027s mMixBuffer will be\nrepeated and noise is observed.\n\nRemove tracks from enabledTracks after reseting outTemp to zero, so that\nprocess__genericNoResampling will reset outTemp and noise won\u0027t appear.\n\nBug: 12450065\nChange-Id: I1ccac7ee4a3bf7fd930254356c072099e11e7c19\nSigned-off-by: Gaurav Kumar \u003cgaurav.kumar@broadcom.com\u003e\nSigned-off-by: Pierre Couillaud \u003cpierre@broadcom.com\u003e\n"
    },
    {
      "commit": "61540b5fe82cad1c6baa018f02bd2554e62e4364",
      "tree": "bc1a94ff57fe9293c873fe412611e16b748da75e",
      "parents": [
        "5ca94d2f3c4662aed7b66a97b77eb2d1948464ad",
        "e6056ba0f2399fa3ebea9665e12a8237f99de250"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Fri Jan 10 17:22:39 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 10 17:22:40 2014 +0000"
      },
      "message": "Merge \"Frameworks: AudioFlinger: Fix effects memory leak\""
    },
    {
      "commit": "c95616357a911e5c1c55873492b05ebfa3cf1894",
      "tree": "fa56f9fbc01da9bfca3814af80c63e7857bfa2fd",
      "parents": [
        "645e43977d3aabc5addab022d772accc32fd5bdc"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Tue Dec 03 21:26:02 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 17 22:05:51 2013 +0000"
      },
      "message": "audioflinger: check for condition before waiting\n\nAsyncCallbackThread must check for any condition that\nhas already been satisfied before waiting.\n\nBug: 11824817\nChange-Id: Ic8c2090d521ecd6a30b76ee75635258d35eb1eff\n"
    },
    {
      "commit": "a67c76538fff102cd44b2f38dd073df5f2a33605",
      "tree": "da803da6b3053b23ad6c5ebbd33fd7667e2697b3",
      "parents": [
        "a0e1c3918dd1356445df98e89dab6be2c8a78da3",
        "b5fed68bcdd6f44424c9e4d12bfe9a3ff51bd62e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 17 16:26:41 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 17 16:26:41 2013 +0000"
      },
      "message": "Merge \"Increase kFastTrackMultiplier from 1 to 2\""
    },
    {
      "commit": "b5fed68bcdd6f44424c9e4d12bfe9a3ff51bd62e",
      "tree": "12cac79b78992586c8f8da4f618a020f40d92441",
      "parents": [
        "92630351d265a61faae2dfe006a8bb330283aa7b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 03 09:06:43 2013 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Dec 04 17:12:42 2013 -0800"
      },
      "message": "Increase kFastTrackMultiplier from 1 to 2\n\nChange-Id: I158f147295eebcea96e4047d7618069bc48bdd7d\n"
    },
    {
      "commit": "d7e59228caad3867794d847f6bf163c6495e9506",
      "tree": "f09784ce425a6928c56a932101752b63b21d8f44",
      "parents": [
        "7dae71d606ded1dbc2aa9733c3d98ffac57988f2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 15 12:02:28 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 15 12:11:39 2013 -0800"
      },
      "message": "audioflinger: do not use raw pointer for tracks\n\nCommit 9da3d95 surfaced a problem caused by the use of a raw\npointer to a track in offload thread implementation.\n\nPointers to tracks should always be weak or strong pointers.\n\nBug: 11708529.\nChange-Id: Ic48632532d186c9be8261f73cefdf824b9fbbd2b\n"
    },
    {
      "commit": "9da3d9573a18ffe08365557c706cf52f09118d1c",
      "tree": "c30511f753f1b49d5519ba5249316b12f33bb29a",
      "parents": [
        "1b9f9b134e732a48198e51f16424f330cbf03143"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 12 19:25:43 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 12 19:32:36 2013 -0800"
      },
      "message": "audioflinger: fix offload track transition\n\nMake sure that when transitioning from one active\noffloaded track to the next we flush DSP content\nif both tracks are not on the same audio session.\nThis happens when switching between two applications\nplaying the same type of content (e.g MP3, stereo, 44.1).\nIn this case, we reuse the same output thread because the track\nformats are compatible.\n\nBug: 11247103.\nChange-Id: I2b9031591149adeb70766da5e0d21ff2933a37e8\n"
    },
    {
      "commit": "1b9f9b134e732a48198e51f16424f330cbf03143",
      "tree": "b51c0fd76cd949c420404ce221eae0ce9fad597e",
      "parents": [
        "22990fe1ee3531e84dbadb7ff9ffd68d5bbe9060"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 12 19:10:17 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 12 19:10:17 2013 -0800"
      },
      "message": "audioflinger: fix offload resume after drain\n\nWhen pausing and resuming during the drain,\nthe drain sequence number shuold not be modified\notherwise the drain callback will be ignored.\nThis causes failure to notify end of stream to audio\nplayer and transition to next song.\n\nBug: 11247103.\nChange-Id: I2a35c5cc3fd6aa667cdd257f9e9cc8715cef5159\n"
    },
    {
      "commit": "a23f17ac334ff20a11ee63dd177cb1080e44c483",
      "tree": "e15dc095de74afc97fc509aa855cedf010df6c1e",
      "parents": [
        "5c7ffaed6f04b844c2e4e2024bfb0203ac2233dd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 05 18:22:08 2013 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 05 18:22:08 2013 -0800"
      },
      "message": "audioflinger: fix direct output underrun\n\nUnderruns on tracks handled by a direct or offloaded\nthreads were not properly reported to the applications\ncausing a failure to automatically recover.\n\nBug: 11535001.\nChange-Id: I7a8696b4d646f78b16710addfe7c108d0dd0038d\n"
    },
    {
      "commit": "5c7ffaed6f04b844c2e4e2024bfb0203ac2233dd",
      "tree": "71dac4a8045e2c0eca9dfbd341936f731ffa0a9b",
      "parents": [
        "3ff5792adfdbf67662a5f8064315a55690d53944",
        "2c3740f01acca69c3e0bcc5e01bb0edc51b6777f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 31 22:29:50 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 31 22:29:50 2013 +0000"
      },
      "message": "Merge \"AudioFlinger: fix duplicating thread standby.\" into klp-dev"
    },
    {
      "commit": "2c3740f01acca69c3e0bcc5e01bb0edc51b6777f",
      "tree": "fafcc00b076ae05c67b4cd0d3cd7de406b418c09",
      "parents": [
        "fd4779740ec3e9e865d5514464df26d015354388"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 30 16:57:06 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 30 16:57:06 2013 -0700"
      },
      "message": "AudioFlinger: fix duplicating thread standby.\n\nCommit fd47797 fixing issue 11247103 introduced a regression\nwhere the duplicating thread does not exit standby state as\nexpected. This in turn prevents the tracks sending audio to\nother threads to complete their activity cycle normally.\n\nThe fix conists in clearing mStandby state also in the specialized\nthreadLoop_write() method of DuplicatingThread subclass.\n\nBug: 11451415.\nChange-Id: Ie8a92c819a56a2834ea25fa70a8b7b2125721775\n"
    },
    {
      "commit": "1c594b637df26499ce1dae2db34f2b3290efd838",
      "tree": "0d231e939a18d3f28f1e19658a7b7ed2e61ed1fb",
      "parents": [
        "fd4779740ec3e9e865d5514464df26d015354388",
        "d72b7c0180ee83fc3754629ed68fc5887a125c4c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 30 01:13:52 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 30 01:13:52 2013 +0000"
      },
      "message": "Merge \"audioflinger: enable effects after registration if needed\" into klp-dev"
    },
    {
      "commit": "fd4779740ec3e9e865d5514464df26d015354388",
      "tree": "11e6523dd9d2d04b6e0d3ea742968c6988646e2c",
      "parents": [
        "9cae217050aa1347d4ac5053c305754879e3f97f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 25 18:10:40 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Oct 28 14:17:22 2013 -0700"
      },
      "message": "AudioFlinger: more fixes for offload audio lost\n\nmStandby being false was not a reliable indication that\nsomething had been written to audio HAL.\n\nConsidering the last track in mActiveTracks vector as the\nlatest activated track was wrong as this is a SortedVector.\n\nBug: 11247103.\nChange-Id: I397d011c5afcdd779def3fe25aaae7669a472cfc\n"
    },
    {
      "commit": "9cae217050aa1347d4ac5053c305754879e3f97f",
      "tree": "dff82f277cba8f34af39eaeeb00adec01bbda26c",
      "parents": [
        "be567be3f92026f5964c1c9ecce00e30bb7df412"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Mon Jan 14 14:12:05 2013 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Oct 25 14:06:03 2013 -0700"
      },
      "message": "Assign blame for playback wakelocks.\n\nSet a work source for the playback wakelock, so that playback is\ncounted against the requesting app instead of the media server.\n\nCherrypicked from master.\n\nb/9464621\n\nChange-Id: I7329f88a288a95a582a78005a1c3d16a5a611e31\n"
    },
    {
      "commit": "95c03858e2ab4fb693a2bfe47b3caa806e43c044",
      "tree": "f872e4b7570cf2f431cca474e47d9d10c6cbed66",
      "parents": [
        "6a51d7ed7062536ccc892c8850a34ed55cbc8d5c",
        "2e422c472c91aa7912befd0fc038d1e11f354bc1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 18 22:02:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 18 22:02:47 2013 +0000"
      },
      "message": "Merge \"Allow releaseBuffer after flush\" into klp-dev"
    },
    {
      "commit": "2e422c472c91aa7912befd0fc038d1e11f354bc1",
      "tree": "7583e04f353f9cadf5081fafdcb8042450e3c85c",
      "parents": [
        "dedc7b0fa23c21b525dc8abb572bb8161ad66a9b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 18 13:00:29 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 18 13:53:41 2013 -0700"
      },
      "message": "Allow releaseBuffer after flush\n\nAfter AudioTrack start checks for pending flush,\nallow releaseBuffer on any previously obtained buffer.\nFor example, this can happen if the resampler has obtained\na buffer but not released the whole buffer yet.\nNote that the resampler will be reading obsolete data.\n\nBug: 11285590\nChange-Id: I0614fbb62e43604aac3089cce4b7797c87a306b5\n"
    },
    {
      "commit": "6a51d7ed7062536ccc892c8850a34ed55cbc8d5c",
      "tree": "95746546a67c27a04a0e5bd82f9760d80ad5f0d9",
      "parents": [
        "dedc7b0fa23c21b525dc8abb572bb8161ad66a9b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 17 18:59:26 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 17 18:59:26 2013 -0700"
      },
      "message": "audioflinger: fix track terminated before playing\n\nWhen a track is terminated before any audio was written,\nwe should not send a drain request to the HAL. The drain\nwill be ignored and we will wait the async callback for ever.\n\nAlso fix a potential deadlock by not deleting a track with the\nthread mutex held: mPreviousTrack changed from a sp to a raw pointer.\n\nBug: 11247103.\nChange-Id: I0a4b47b099204c7c326d45d700234ab8f72d8eae\n"
    },
    {
      "commit": "12022ff8d223ccf4dfae019c81e4a93a3f44985c",
      "tree": "ba799e32b0699249e7fb8e6f5d6fa4120b978d67",
      "parents": [
        "f8f15b05fe051009945c9042a1a9260280e0feb2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 17 11:32:39 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 17 11:33:31 2013 -0700"
      },
      "message": "Fix flush() followed by start()\n\nBug: 11259166\nChange-Id: I72526cdfd4e3ff4b06e6a317e577f57cc285205d\n"
    },
    {
      "commit": "e6056ba0f2399fa3ebea9665e12a8237f99de250",
      "tree": "184e36a01bed4e9b529cc7d46ba820f498e41d4b",
      "parents": [
        "ab70649e2b0ea3d917242814417ec5711f4cb811"
      ],
      "author": {
        "name": "Yu Yezhong",
        "email": "yuyezhong@gmail.com",
        "time": "Tue Oct 15 14:32:34 2013 +0800"
      },
      "committer": {
        "name": "Yu Yezhong",
        "email": "yuyezhong@gmail.com",
        "time": "Tue Oct 15 14:32:34 2013 +0800"
      },
      "message": "Frameworks: AudioFlinger: Fix effects memory leak\n\nPatch by: csheng@marvell.com\nChange-Id: I4e3032fb34643902f98e8fd7c8e894b6452324c9\nSigned-off-by: Yu Yezhong \u003cyuyezhong@gmail.com\u003e\n"
    },
    {
      "commit": "014e7fa2e90827d911c37bb0ce4d2e10e14d0bb3",
      "tree": "1eebc29942794f1688fde67b9056803b8194355a",
      "parents": [
        "b3cb72a17d9a472883e9e2faa18b42eac533fe99"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Oct 14 15:03:38 2013 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Oct 14 17:29:57 2013 +0100"
      },
      "message": "Make Audio wakelock names less unique.\n\nThese wakelocks now show up in the client process, where they\nmight cause wakelock overflows if AudioFlinger threads die often.\n\nThe client process should be agnostic of audio flinger threading,\nso don\u0027t make the wakelock names rely on audioflinger thread names.\n\nWakelock names now depend only on the audio flinger thread type, and\nnot the ID itself.\n\nbug: 11200551\n\nChange-Id: Ia1f71b569cb7502d617b77596abc245f461a6ec0\n"
    },
    {
      "commit": "d72b7c0180ee83fc3754629ed68fc5887a125c4c",
      "tree": "9c6bef31eaca96d7420a65fcdd2438666c5668dd",
      "parents": [
        "15ad2470b2f2ac34473eb568b606ad75e8e63ac6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Oct 12 16:17:46 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Oct 12 16:37:00 2013 -0700"
      },
      "message": "audioflinger: enable effects after registration if needed\n\nThis fixes a bug where effects were not properly reenabled after\nbeing moved from one playback thread to another. The effect\nis enabled but the audio policy manager sees it as disabled.\n\nBug: 11181933.\nChange-Id: I19cac7acbaf61c546e667fd85ed7d4eda1c716d8\n"
    },
    {
      "commit": "fee4ce338d78eeb58af1f66831ead53322d3859e",
      "tree": "f90931a7c5c4628b0e8e47976d68a9d586802b53",
      "parents": [
        "ea0fadeb5d81ef3cb7f9db458c9033d628bdb86a",
        "e93cf2ca27ae6f4a81d4ef548bbf10a34db6d98f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Oct 07 16:16:06 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 07 16:16:06 2013 +0000"
      },
      "message": "Merge \"Cleanup openRecord error handling\" into klp-dev"
    },
    {
      "commit": "ea0fadeb5d81ef3cb7f9db458c9033d628bdb86a",
      "tree": "1650f71cf339cd9d561377e239e2a12f7b08cffc",
      "parents": [
        "026c5b07fefd36e0e2dd7035c2898d0e28596d0f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 04 16:23:48 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 04 16:37:07 2013 -0700"
      },
      "message": "audioflinger: offload: fix pause/flush/resume\n\nIf a pause/flush/resume sequence is fast enough, resume is received while\nwe are still in PAUSING state in which case it is a NOP. If this happens,\nflush is still forwarded to the audio HAL but is not preceeded by a pause\nwhich can cause problems to the audio DSP.\nIt is necessary to preserve the flush as this sequence is typical to a seek.\n\nThe fix consists in forcing a pause/resume when a flush request must be\nexecuted and the audio HAL has not been paused previously.\n\nBug: 11081559.\nChange-Id: Ib84ed26d503a61c05933b923ec556b10cedfe140\n"
    },
    {
      "commit": "547789d25dc6bd6561553bcf6b384fb0d4fee834",
      "tree": "767ae4b24b4fc71cc547cfa16898f5299d26a6cc",
      "parents": [
        "7bab024867996bec6dc4e3e31ed4570da9afbc25"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 04 11:46:55 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 04 11:46:55 2013 -0700"
      },
      "message": "audioflinger: fix wake lock acquisition check\n\nCommit e14a5d6 introduced a bug in ThreadBase::acquireWakeLock() where\nthe wake lock acquisition return code is not initialized before\nbeing checked causing the wake lock token to be sometines not set\nand potential failure to release the wake lock later.\n\nBug: 10985160.\nChange-Id: Iffd40e773ae3bcfec3c148a844d5dbebbf474eaf\n"
    },
    {
      "commit": "8097068de97c0cdab8150931f290edbd5b3721e5",
      "tree": "953f68c84ab80ca4f899e88081768d81dd31c93e",
      "parents": [
        "580ed263a6ea6c766f9f715e101340c7fe26ab75",
        "e14a5d6d2cc91dd2fc09ffdf7aa670b37da0795d"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Oct 03 21:15:05 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 03 21:15:05 2013 +0000"
      },
      "message": "Merge \"Better recording wake lock accounting\" into klp-dev"
    },
    {
      "commit": "e14a5d6d2cc91dd2fc09ffdf7aa670b37da0795d",
      "tree": "ab8d3ea087c653c632068af36e443c5c3609cfe4",
      "parents": [
        "3d97e23fcd78f752443cb6c30a1ee39f49f1f987"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Oct 03 08:51:24 2013 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Oct 03 13:54:53 2013 -0700"
      },
      "message": "Better recording wake lock accounting\n\nCount wake lock use against the app that initiated the recording,\nnot against the media server.\n\nb/10985160\n\nChange-Id: Iae6e6c030b7f1c6081d9c79725d6990f60dadaaa\n"
    },
    {
      "commit": "59fe010bcc072597852454a2ec53d7b0a2002a3b",
      "tree": "b6b42e04a89ead77c9ecd9635a328686a8bb9863",
      "parents": [
        "5d6d86a4d102704f49b9235eaf282c428d7100b6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 18:48:26 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 30 12:05:38 2013 -0700"
      },
      "message": "fix volume and effect enable delay on offloaded tracks\n\nVolume: add a method to wake up the mediaserver playback\nthread when a volume command is received on an offloaded track.\n\nEffects: call effect chain process on offloaded playback threads\nasynchronously from writes to allow effect state updates while\nwaiting for async write callback.\n\nBug: 10796540.\n\nChange-Id: Id2747ae88783575d1d7ffd6fc86fbd054ab2c739\n"
    },
    {
      "commit": "a2340b3059b9d6e4286d0db7069df477c164df0c",
      "tree": "4e14bcf9309bda5e444479b0e45a0c24c3e98a54",
      "parents": [
        "0adc67dfc5cedb211c36f06849681a60a32f5805",
        "fed6292af65a0b97b583ecbd3c232b3811a3f37b"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Sep 27 00:50:59 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 27 00:50:59 2013 +0000"
      },
      "message": "Merge \"Don\u0027t call audio effect process on offloaded playback threads\" into klp-dev"
    },
    {
      "commit": "4de95592980dba88a35b3dc8f3fd045588387a4f",
      "tree": "e871e1ad9318cdd21fe82eb6f44f687f366d1c60",
      "parents": [
        "1802399c7c4d8557922688f246df292703f417f1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 26 15:28:21 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 26 15:56:43 2013 -0700"
      },
      "message": "audioflinger: fix crash when starting offload thread\n\nPassing a sp to parent thread to AsyncCallbackThread() constructor\ncauses a strong reference to be acquired on the OffloadThread inside\nits constructor which causes an early launch of the thread loop\nwith unpredictable consequences.\n\nPass a wp to parent thread instead.\n\nAlso move the creation of the AsyncCallbackThread to\nreadOutputParameters() where mUseAsyncWrite is initialized which\nmakes more sense.\n\nAlso change the type of AsyncCallbackThread parent thread to PlaybackThread\ninstead of OffloadThread to allow a broder use of non blocking write which\nin theory is not limited to audio offload use case.\n\nBug: 8174034.\nChange-Id: I4b093b022030cd4f5eb8b8e477333e91098a6549\n"
    },
    {
      "commit": "fed6292af65a0b97b583ecbd3c232b3811a3f37b",
      "tree": "24d1dc7750659a108dd48ec46ba89a9a49bd019d",
      "parents": [
        "d2ac3144e201398340cc5b9bb36e5efe39edd9eb"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Sep 25 18:50:33 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Sep 26 11:43:58 2013 -0700"
      },
      "message": "Don\u0027t call audio effect process on offloaded playback threads\n\nAn audio effect process command is not meant to be called for\n playback threads belonging to offloaded playback.\n\nBug 10933817\n\nChange-Id: Idc7b6a0224791bbf8d61648474d3c288617c498f\n"
    },
    {
      "commit": "eb3c337a3d6c74ec857dfc8be7eeafe634614bcd",
      "tree": "7ade01c31e70ffeadf88fc60b2144faa47f9c49f",
      "parents": [
        "d2ac3144e201398340cc5b9bb36e5efe39edd9eb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 25 12:25:29 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 25 12:44:00 2013 -0700"
      },
      "message": "fix deadlock in audioflinger::createEffect()\n\ncommit 5baf2af5 introduced a regression by calling\ngetOutputForEffect() with AudioFLinger main mutex locked.\nThe locking order must always be AudioPolicyService mutex then\nAudioFlinger then ThreadBase mutex.\n\nBug: 10916796.\nChange-Id: Ide34a2d84dbb06dbb35abd0640d91b01b0ac4d40\n"
    },
    {
      "commit": "e93cf2ca27ae6f4a81d4ef548bbf10a34db6d98f",
      "tree": "4de6f04ad4abc14bb0e777bcb02863196c59e34b",
      "parents": [
        "402dfba6dcd68f5fd8d8921f9751f3e47eb1449d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 24 11:52:37 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 24 12:12:47 2013 -0700"
      },
      "message": "Cleanup openRecord error handling\n\nBug: 10888816\nChange-Id: I84897dd7d30b370640b54e928f230604b873cb68\n"
    },
    {
      "commit": "664539d25180ab8f77e0521533ea2821cf28985f",
      "tree": "19b1c2a62d44ac7199249825aec131c70f6801ca",
      "parents": [
        "402dfba6dcd68f5fd8d8921f9751f3e47eb1449d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 23 18:24:31 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 23 18:33:25 2013 -0700"
      },
      "message": "audioflinger: fix ro.audio.silent in offload again\n\nCommit 1abbdb4 was not working 100% of the times because\nit is possible that the offload thread loop never sleeps\nafter being created in which case the property is never read.\n\nThe loop now reads the property once when starting.\n\nBug: 10899309.\nChange-Id: I2e2ca332f2d7086e59d65f6010378c4d9618ba9e\n"
    },
    {
      "commit": "21e5456821e3c107d09b0629adbf23c9e06e7c0b",
      "tree": "c2eef1ee9d591a96e88922b5061a861d8596c802",
      "parents": [
        "4b701cc041d635e5ec56e382043a4c5d01aedd80"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 23 12:08:05 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 23 12:38:11 2013 -0700"
      },
      "message": "fix incoming call audio start time.\n\ncommit cec4abb fixing issue 6720482 had a flaw that\nwould insert commmands at the wrong position in the\naudio policy service command thread queue causing other\ncommands to be delayed more than expected.\n\nA change in track stop timing introduced by commit bfb1b83\nmade this issue visible when answering a call.\n\nBug: 10860012.\nChange-Id: Iec769112f14e13d13b64628b808e43663e33771c\n"
    },
    {
      "commit": "a3b97ad288e6808c54c6275eaac1bd53108d8f11",
      "tree": "eb4ee28ecd01cf4a4548004e8a2d9154ce0f2c73",
      "parents": [
        "fbb2609f132f23a983d376dec9ae6bfebfcacc4c",
        "accc147666bfd37fc8b4ef745f18a8c751555ec2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 20 16:56:33 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 20 16:56:34 2013 +0000"
      },
      "message": "Merge \"audioflinger: implement getTimestamp() for offloaded tracks\" into klp-dev"
    },
    {
      "commit": "accc147666bfd37fc8b4ef745f18a8c751555ec2",
      "tree": "a091aa566ed09e8efe881a16e3806ee4169de3f0",
      "parents": [
        "5baf2af52cd186633b7173196c1e4a4cd3435f22"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 20 09:36:34 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 20 09:36:34 2013 -0700"
      },
      "message": "audioflinger: implement getTimestamp() for offloaded tracks\n\nBug: 9587132.\nChange-Id: Ie9d5f4cca96306d08bc9a2dbd6edd8953096702d\n"
    },
    {
      "commit": "fbb2609f132f23a983d376dec9ae6bfebfcacc4c",
      "tree": "df445957b7af9020660a3e4ee927807578dac685",
      "parents": [
        "cfca686ae8e64bda44a370232f3ba367e6e520d1",
        "ede6c3b8b1147bc425f7b923882f559a513fe23b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 20 00:48:39 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 20 00:48:39 2013 +0000"
      },
      "message": "Merge \"audioflinger: fix lost offload thread resume event\" into klp-dev"
    },
    {
      "commit": "ede6c3b8b1147bc425f7b923882f559a513fe23b",
      "tree": "ac3986f0521aa4a5af705299ab423ec9d5e98bfa",
      "parents": [
        "5baf2af52cd186633b7173196c1e4a4cd3435f22"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 19 14:37:46 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 19 15:53:20 2013 -0700"
      },
      "message": "audioflinger: fix lost offload thread resume event\n\nIt was possible that a resume request signaled by addTrack_l()\nwhile waiting for an async write callback is lost. This is because\nmSignalPending was not set and waitingAsyncCallback_l() would pause the\nthread loop before executing prepareTracks_l().\n\nThe fix consists in using signal_l() method to wake the thread\nloop o that mSignalPending is set.\n\nAlso make sure that sleepTime is reset to 0 when resuming to make sure\nthat we write any remaining bytes to the HAL.\n\nBug: 10810347.\n\nChange-Id: If9a3b22cc3b9e6eb384a56c48c40e6258d0896ad\n"
    },
    {
      "commit": "d1b28d41dbda203ffb420ba2e36cbe736b163ff8",
      "tree": "8515326721a76081b458cce1329e13b7252d2fbe",
      "parents": [
        "5baf2af52cd186633b7173196c1e4a4cd3435f22"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 18 18:47:13 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 18 19:00:22 2013 -0700"
      },
      "message": "audioflniger: fix leaked audiosession references\n\nacquireAudioSessionId() should not create session references\nif the caller is not listed in the known notification clients.\nIt happens when the MediaPlayer or AudioTrack is created by the\nmediaserver on behalf of a client (e.g CameraService). In this case\nreleaseAudioSessionId() can be called from a different pid and\nthe session reference will not be removed.\nAlso we will not be able to remove the reference if the client\nprocess dies.\n\nBug: 10606426.\nChange-Id: Ibb5e27518daeb484a2e66302e4c6221cbaca5b70\n"
    },
    {
      "commit": "5baf2af52cd186633b7173196c1e4a4cd3435f22",
      "tree": "9c6752456812c4a927574a71e1d2ec2495ff6ce3",
      "parents": [
        "9a98b6de791aeb130192df10744f5b35f8b6ef1a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 12 17:37:00 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 18 11:52:40 2013 -0700"
      },
      "message": "more support for audio effect offload\n\nOffloading of audio effects is now enabled for offloaded\noutput threads. If an effect not supporting offload is enabled,\nthe AudioTrack is invalidated so that it can be recreated in PCM\nmode.\n\nFix some issues in effect proxy related to handling of effect\ncommands to offloaded and non offloaded effects.\n\nAlso fixed a bug on capture index in software Visualizer effect.\n\nBug: 8174034.\n\nChange-Id: Ib23d3c2d5a652361b0aaec7faee09102f2b18fce\n"
    },
    {
      "commit": "7f91e5e09cf3bd8068894b2e54cbdaac70bf53a0",
      "tree": "d780b615c9e2ea42c5449ebfeb870b3c7bee7eb9",
      "parents": [
        "d4dadf23dd2dd8acd514d60d84475954070340b8",
        "1abbdb4429479975718421c4fef3f79ce7c820e3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Sep 14 00:07:28 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Sep 14 00:07:29 2013 +0000"
      },
      "message": "Merge \"audioflinger: fix ro.audio.silent in offload mode\" into klp-dev"
    },
    {
      "commit": "1abbdb4429479975718421c4fef3f79ce7c820e3",
      "tree": "ac73fe0a2f36b66d9c33f22dd09ac76730beefce",
      "parents": [
        "99bf6267f0a4e2c3153be49ced59ae164d55ea6d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 13 17:00:08 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 13 17:00:08 2013 -0700"
      },
      "message": "audioflinger: fix ro.audio.silent in offload mode\n\nChange-Id: I5a1a79000d53146689b0a198cc5419c36509703f\n"
    },
    {
      "commit": "972a173d7d1de1a3b5a617aae3e2abb6e05ae02d",
      "tree": "f506c9ef80a8a31bfd58a254617fdecb26dbbcf5",
      "parents": [
        "99bf6267f0a4e2c3153be49ced59ae164d55ea6d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 04 09:42:59 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 13 12:14:07 2013 -0700"
      },
      "message": "audioflinger: longer offload thread standby delay\n\n- Increase offloaded output thread standby delay to 1 second\nto allow transition between tracks with going to stanby\nif reusing the same audio track (gapless)\n\n- Make sure pause/flush/resume sequence is sent to the HAL\nin the right order\n\n- Fix format display in track dump\n\nBug: 8174034.\nChange-Id: I43ef6f8fdbf7427e4eff6cc2d0665d7d1463ea8a\n"
    },
    {
      "commit": "dc33c542351449ceee95cc50a9009f495e7c72ba",
      "tree": "0f44c9770a45605876de1e051801bee5781a56ad",
      "parents": [
        "efc4d4899e03fb8464017dd48539106cec2163de",
        "0c72b24f91c68442eb374bd1b338c394105b8262"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Sep 12 15:13:44 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 12 15:13:45 2013 +0000"
      },
      "message": "Merge \"Fix AudioTrack shared memory leak\" into klp-dev"
    },
    {
      "commit": "db358afc965d9bfb703953ac004275428a7cda64",
      "tree": "395f94ebfe8708da02e36fd57e01380cac3e54b4",
      "parents": [
        "d6ca2e8bc17db104f0421ae1e7e0799488b96d70"
      ],
      "author": {
        "name": "You Kim",
        "email": "you.kim72@gmail.com",
        "time": "Thu Sep 12 20:48:08 2013 +0900"
      },
      "committer": {
        "name": "You Kim",
        "email": "you.kim72@gmail.com",
        "time": "Thu Sep 12 20:48:08 2013 +0900"
      },
      "message": "AudioPolicyService: malloc/delete pair\n\nChange-Id: I75cd44ac0caccda9148faaa052c9e7a0c06d46d1\nSigned-off-by: You Kim \u003cyou.kim72@gmail.com\u003e\n"
    },
    {
      "commit": "efc4d4899e03fb8464017dd48539106cec2163de",
      "tree": "40e6503137bc0720b515c05b2d39771d1d25c7c7",
      "parents": [
        "a911f51c21430ac92f1d796b2338878fd98382e9",
        "9a54bc27876acd5d8be5b1fc3dc46701fe76fbb3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 12 00:15:15 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 12 00:15:15 2013 +0000"
      },
      "message": "Merge \"audioflinger: add HOTWORD audio source.\" into klp-dev"
    },
    {
      "commit": "0c72b24f91c68442eb374bd1b338c394105b8262",
      "tree": "d5b7396b593f2157fead8f0c5c41d45c1c236009",
      "parents": [
        "6220f993541b0317e6ace3c410dd35a8d76e30bc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Sep 11 09:14:16 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Sep 11 12:47:29 2013 -0700"
      },
      "message": "Fix AudioTrack shared memory leak\n\nBug: 2801375\nChange-Id: I50e15164fe310f69ea019dca5b49171a02bc6992\n"
    },
    {
      "commit": "9a54bc27876acd5d8be5b1fc3dc46701fe76fbb3",
      "tree": "15f25097fc7fc2548d41a29c94c22710472f01ca",
      "parents": [
        "84b7fb0c88ddd05ed7c148c82fe1691040a9404d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 09 09:08:44 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 10 14:39:28 2013 -0700"
      },
      "message": "audioflinger: add HOTWORD audio source.\n\nHOTWORD is a special capture audio source that uses\nthe same audio tuning as VOICE_RECOGNITION but allows an\nactive capture to be preempted.\n\nBug: 10640877.\n\nChange-Id: Iea09a11cbcdbacc8d434e5230e7559dcd1b44ac0\n"
    },
    {
      "commit": "813e2a74853bde19e37d878c596a044b3f299efc",
      "tree": "b95aa8b59f49b4348b2112047ee80e572637d706",
      "parents": [
        "84b7fb0c88ddd05ed7c148c82fe1691040a9404d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Aug 31 12:59:48 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 09 09:09:21 2013 -0700"
      },
      "message": "audioflinger: no effects on offloaded tracks\n\nInvalidate offloaded tracks when an effect is enabled\nso that the track is recreated in PCM mode and the effect\ncan be applied.\nThis is temporary until effect offloading is implemented.\n\nBug: 8174034.\n\nChange-Id: I77b8b54a10db6cb8334be76d863ea7e720eaad09\n"
    },
    {
      "commit": "3b4529e03c5fc7a44c22f9091ad15a269bfca3a8",
      "tree": "552d810348dc2ffd6018e58970a4cbbb39eceb5e",
      "parents": [
        "60c60df7db278d2fa5c90b0fa14f99a61d50272b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 05 18:09:19 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 06 18:09:03 2013 +0000"
      },
      "message": "audioflinger: remove async write race conditions\n\nRemove possible race conditions between async callback\nthread and offload thread when clearing and setting the\ndraining and write blocked flags.\n\nBug: 8174034.\nChange-Id: I7af10491f39dc0e7d7414862a9d8e763daa2e2b7\n"
    },
    {
      "commit": "fe346c707f59d763ded93bc3d27b51f0c0408258",
      "tree": "3e6f12ac7b37bc8ef10845c4c7ccdcfef4b51cd5",
      "parents": [
        "4d0815d694e5a2edb3ce48427de50f55d0f84c0b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 30 13:28:22 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 15:19:03 2013 -0700"
      },
      "message": "Fix miscellanous AudioTrack::getTimestamp() bugs\n\nCheck that get_presentation_position is non-NULL before calling.\n\nAudioTrack::getTimestamp not implemented for fast tracks.\n\nFix typo in Track::getTimestamp().\n\nFix bugs in AudioTrack::getTimestamp after stop:\n - getTimestamp while stopped is not allowed.\n - stop, start, getTimestamp now returns the correct value.\n\nChange-Id: Ie8d9dc1f28d8927634e04175a68b147ffc2ea8eb\n"
    },
    {
      "commit": "732845c7e8d294bb1aaa4cd9687da62b51f1f6e6",
      "tree": "775ccbda50c8bb2403af5cb52b8891a6130ded5d",
      "parents": [
        "6466c9e6e6278c740aed77f695f679be9f5db478"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 23 09:26:31 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 15:12:20 2013 -0700"
      },
      "message": "FastMixer computes presentation timestamps for fast tracks\n\nand forwards them to each track\u0027s ExtendedAudioBufferProvider::onTimestamp().\n\nChange-Id: I06fb9586bb7e20d5c0289abdc8cac6cd3fd2f6e8\n"
    },
    {
      "commit": "6466c9e6e6278c740aed77f695f679be9f5db478",
      "tree": "cd987ec819ddecba0665cd692285069c083fb19b",
      "parents": [
        "894d6be4f9b4721c77a01919ecf03b27cec90cc9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 23 10:54:07 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 15:12:11 2013 -0700"
      },
      "message": "Add ExtendedAudioBufferProvider::framesReleased and onTimestamp\n\nand implement them in SourceAudioBufferProvider using the associated NBAIO_Source,\nand in Track using the associated AudioTrackServerProxy.\n\nChange-Id: I60dc4adba63fc1dc452ff16caf347e4a7c8242c2\n"
    },
    {
      "commit": "767094dd98b01baf21de2ad09c27b3c98776cf73",
      "tree": "57b1a9c3b3d794bac2e1922b314046f02df18e7e",
      "parents": [
        "e45a767e13fe3396185c9d378a70f7f11eb881d0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 23 13:51:43 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 03 11:24:02 2013 -0700"
      },
      "message": "Add NBAIO_Sink::getTimestamp()\n\nwith a real implementation in AudioStreamOutSink\nfor dummy implementation initially in MonoPipe.\n\nUse in AudioFlinger::PlaybackThread::threadLoop_write()\nto keep the input to the timestamp latch up-to-date.\n\nChange-Id: I10ef277991b63bb43d55d6f3df75116ef32246cd\n"
    },
    {
      "commit": "6bf9ae20b3bd2dbb8f2e89ee167a6785222301cf",
      "tree": "4075a75b4c805011df36d78b015edf6180d649df",
      "parents": [
        "d656a4be3c3b6bc249b06599c2b02c2863d2c47f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 30 15:12:37 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 30 15:12:37 2013 -0700"
      },
      "message": "audioflinger: offloaded tracks flush/pause order\n\nMake sure that a flush received after a pause is forwarded\nto the HAL after the pause.\n\nChange-Id: Ib3221f70c59f8b3dbbac20b23104f6b779b75be0\n"
    },
    {
      "commit": "bd096fd9d8e5fc0e62f98807f4818a06f70d0812",
      "tree": "8ff27bce9f34e4bdd0f8e233494a24efef475a7d",
      "parents": [
        "573d80a8f463f648a515fc0975bf83951b272993"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 23 13:53:56 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 29 09:59:31 2013 -0700"
      },
      "message": "Implement Track::getTimestamp()\n\nusing a new timestamp latch in PlaybackThread, and\nAudioTrackServerProxy::framesReleased() which returns mServer.\n\nChange-Id: I1ebfba968c773faaab95648c272fd3ebd74718d6\n"
    },
    {
      "commit": "573d80a8f463f648a515fc0975bf83951b272993",
      "tree": "c50d730bd7bd113a0f86c091730f9b861354f395",
      "parents": [
        "53cec22821072719ee02c856e9ac2dda2496c570"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 26 09:36:23 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 29 09:24:28 2013 -0700"
      },
      "message": "Add AudioFlinger::PlaybackThread::Track::getTimestamp()\n\nwith a dummy implementation initially,\nand use it in AudioFlinger::TrackHandle::getTimestamp()\n\nChange-Id: I2da88fc52a135a7f0d9fd9538986e919dc8ccd3b\n"
    },
    {
      "commit": "53cec22821072719ee02c856e9ac2dda2496c570",
      "tree": "1ac72eaf3ba6059680f8c3d7e39ae58a9e03adc8",
      "parents": [
        "ce70374bf105f8a6160bf5dd70affea012b2a464"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 29 09:01:02 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 29 09:19:07 2013 -0700"
      },
      "message": "Add IAudioTrack::getTimestamp()\n\nwith dummy implementation in AudioFlinger::TrackHandle, and\nimplement AudioTrack::getTimestamp() using IAudioTrack.\n\nAlso document invariant that mAudioTrack and control block are always\nnon-0 after successful initialization.\n\nChange-Id: I9861d1454cff7decf795d5d5898ac7999a9f3b7e\n"
    },
    {
      "commit": "893a5642871114fca3b2a00c6ff8e5699ce3e3ed",
      "tree": "d34721dfd133e8a79a4ff32ee8e8d2d83ef24031",
      "parents": [
        "7fb865653293e665f48b31e791ca124e98c7d257"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 16 20:19:26 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 16 20:21:07 2013 -0700"
      },
      "message": "Enforce permission for recording from remote submix.\n\nBug: 10265163\nChange-Id: I2395036bac6e10baeaf6ea4bc3093bd9dd98742d\n"
    },
    {
      "commit": "90e58b1fefc8caf70b34301a92bc86179580b6fc",
      "tree": "c3413197c464b11a3ea8ca846443cc7b15326582",
      "parents": [
        "ddb0ccf3fb6fe8da8c71a6deb30561b821f3c0a2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 31 16:16:02 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 02 16:22:42 2013 -0700"
      },
      "message": "RecordThread::createRecordTrack_l use flags for fast tracks\n\nLook at client\u0027s request for a fast track in the flags parameter,\nand check whether the request can be satisfied.\n\nChange-Id: I65ddaeb1b85670fe9066076f638bfed0cda01c0d\n"
    },
    {
      "commit": "ddb0ccf3fb6fe8da8c71a6deb30561b821f3c0a2",
      "tree": "a467af6f181bff45e8c1e47284ebbc4d6d3ccead",
      "parents": [
        "eeca32671896739e84050da5992d5f151a1629de"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 31 16:14:50 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 02 16:22:42 2013 -0700"
      },
      "message": "RecordTrack::createRecordTrack_l flags are in/out\n\nThe flags are currently unused, but will be used for requesting a fast\ntrack.  Making flags in/out will allow reporting back up to client that\nthe request is denied.\n\nChange-Id: Ifbee57da3632ce130551065a426577fb97b1a68d\n"
    },
    {
      "commit": "eeca32671896739e84050da5992d5f151a1629de",
      "tree": "d611c0a426354e80345956c945e9381e6137209b",
      "parents": [
        "27f7b2a8fe899565487d8a326676a5f7d0a05a37"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 31 16:12:48 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 02 16:22:42 2013 -0700"
      },
      "message": "IAudioFlinger::openRecord track_flags_t flags is in/out\n\nThis will allow AudioFlinger to tell client it is denying a request.\n\nChange-Id: Iff2be3ad6636371bbda9c9899a283c94620c1f06\n"
    },
    {
      "commit": "f36dbfe3d517e9311be0a4d0fd6658380690e84c",
      "tree": "65768073d7fd288eac6c28f1283589d65fe0cbad",
      "parents": [
        "1a3739169becc850999c3c06db402541119a428c",
        "82aaf94a5b18939e4d790bbc752031f3070704a3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 02 16:14:01 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 02 16:14:01 2013 +0000"
      },
      "message": "Merge \"Report underruns for fast tracks also\""
    },
    {
      "commit": "1a3739169becc850999c3c06db402541119a428c",
      "tree": "84762cba8a976b67dca741e8cad5adb2486f0c71",
      "parents": [
        "c5f8c3e5502f3c220fdbb54573608f3b3bd47517",
        "6d4d879037a495f9a4276a6996d1845594ce9090"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Thu Aug 01 12:47:14 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 01 12:47:14 2013 -0700"
      },
      "message": "am 6d4d8790: am b687ff9f: Merge \"Fix mismatched delete/new couple\"\n\n* commit \u00276d4d879037a495f9a4276a6996d1845594ce9090\u0027:\n  Fix mismatched delete/new couple\n"
    },
    {
      "commit": "82aaf94a5b18939e4d790bbc752031f3070704a3",
      "tree": "4e39e32d0ccde726548afcbd81e253d5e316b295",
      "parents": [
        "b08ab81bab9e8cd2e3a7fff02725a387070fd078"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 17 16:05:07 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 31 09:15:00 2013 -0700"
      },
      "message": "Report underruns for fast tracks also\n\nThis fixes a regression that was introduced earlier\nby commit 9f80dd223d83d9bb9077fb6baee056cee4eaf7e5\ncalled \"New control block for AudioTrack and AudioRecord\".\nThat commit broke underrun reporting for fast tracks.\n\nAlso remove Track::mUnderrunCount, which counted the number of underrun\nevents, and was only used by dumpsys media.audio_flinger.\n\nNow dumpsys media.audio_flinger reports the number of underrun frames,\n\nIsolated underrun-related control block accesses via the proxy, so that\nthe server is not directly poking around in the control block.\n\nThe new proxy APIs are AudioTrackServerProxy::getUnderrunFrames() and\nAudioTrackServerProxy::tallyUnderrunFrames().  getUnderrunFrames() returns\na rolling counter for streaming tracks, or zero for static buffer tracks\nwhich never underrun, but do a kind of \u0027pause\u0027 at end of buffer.\ntallyUnderrunFrames() increments the counter by a specified number of frames.\n\nChange-Id: Ib31fd73eb17cbb23888ce3af8ff29f471f5bd5a2\n"
    },
    {
      "commit": "b08ab81bab9e8cd2e3a7fff02725a387070fd078",
      "tree": "ca39f5da6fd5d654a71472143ee4718855f576d6",
      "parents": [
        "4d74828fc0f6c13d49a36147a4250bcfa8ad0a47",
        "34af02647b387a252fb02bab8e2cb9f7bd9c8abb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 30 22:40:15 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 30 22:40:16 2013 +0000"
      },
      "message": "Merge \"Add resampler comments and fix a typo\""
    },
    {
      "commit": "34af02647b387a252fb02bab8e2cb9f7bd9c8abb",
      "tree": "2e2e6f24d984884746c91704fb054e00e38e5ff0",
      "parents": [
        "39a60318dcd78b2cb406d2c7dba57cbe9c99c3e7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 30 11:52:39 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 30 12:01:03 2013 -0700"
      },
      "message": "Add resampler comments and fix a typo\n\nChange-Id: Ie071673875f663de4212eed4a4dff89d51a5a915\n"
    }
  ],
  "next": "d054c32443a493513ab63529b0c8b1aca290278c"
}
