)]}'
{
  "log": [
    {
      "commit": "e4a7ce250cb94a00aa2f76e5edca1c4479dc5401",
      "tree": "90743cbfc56a46b815fc5118b0695f5130e8d6a5",
      "parents": [
        "d702a568cb62e5aebe048147350bb3c76f9386ba"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 03 11:23:17 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 03 15:55:56 2015 -0800"
      },
      "message": "Add \"m\" prefix to fields\n\nChange-Id: Ifdb8fa886d1ff53cd7c8aff3c2f8286e6e18dec2\n"
    },
    {
      "commit": "ad8510a339ffab330c2c46e5c247dd1cf9e15c22",
      "tree": "f8643e6711ce756876c02cbb2c0ed4ed459c6187",
      "parents": [
        "04333cdc8d6a3c8e4a11835371e8ad13adf3f7f0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 17 16:24:07 2015 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 19 09:47:41 2015 -0800"
      },
      "message": "Include what you use\n\nChange-Id: I1967861f383bb5ed6743fb69e3bd439907ed7033\n"
    },
    {
      "commit": "9a59276fb465e492138e0576523b54079671e8f4",
      "tree": "e3e51544dc4e641cdfe0b38bfaac530167656eb8",
      "parents": [
        "e93b6b7347a7846c8fd746542364ec11b0cd5124"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Jul 21 21:56:01 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jul 24 18:57:27 2014 -0700"
      },
      "message": "Add multichannel capability to AudioFlinger\n\nBut not enabled (kEnableExtendedChannels \u003d\u003d false).\n\nChange-Id: I62f7e31fbd29ad703a9a02f5d1a280b6972dd423\n"
    },
    {
      "commit": "1258c1ab592a899fabb1e31eb5db2ef413b6f38a",
      "tree": "17bd7e0084b3089a8a66afeaf9a560a58ef4715d",
      "parents": [
        "798ce934571bc7eb5715bf1c03cbe5436a1220e3"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 23 21:22:17 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 29 18:17:02 2014 -0700"
      },
      "message": "Add multiple format capability to FastMixer\n\nFloating point data from MixerThread into FastMixer.\nMultiple output format capability from FastMixer to Sink.\n\nChange-Id: I0da17810ee71381a39a006c46faec71108d22c26\n"
    },
    {
      "commit": "b9e722bdf00333557578497c5abfc77c5d779ecb",
      "tree": "358849da7593a03312599c17cb2c970b92eccd09",
      "parents": [
        "7b2b401a1decf286890171a6791b7a6aa8b80ca7",
        "45d68d366d07b10733c1e8af6a6984befbc08ce1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 27 22:29:46 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 27 22:29:46 2014 +0000"
      },
      "message": "Merge \"Rename mixBuffer to mMixerBuffer in FastMixer\""
    },
    {
      "commit": "45d68d366d07b10733c1e8af6a6984befbc08ce1",
      "tree": "b79d525dc649db24fdbd4c11feb5f3d9eb12f17e",
      "parents": [
        "ef7c7fbd0e3fb36af14cd7d39f64c949031516a5"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 23 21:13:31 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 23 22:13:50 2014 -0700"
      },
      "message": "Rename mixBuffer to mMixerBuffer in FastMixer\n\nLikewise mixBufferState becomes mMixerBufferState.\nThis harmonizes with the naming in AF::MixerThread.\n\nChange-Id: I1255d7c07cc2c6ee925d7430925236d2bd163122\n"
    },
    {
      "commit": "e348c5b72ad889389c7c1c900c121f0fbee221b5",
      "tree": "9c77581ad7520309c0bb90f11bba766a6cd61b28",
      "parents": [
        "9382378b6b271949bdce527ea3da748c13c4c692",
        "c0bf836f8a4e34d66c10a2bb8b8cee0db04790cc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 21 18:47:50 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 21 18:47:50 2014 -0700"
      },
      "message": "resolved conflicts for merge of c0bf836f to master\n\nChange-Id: I5cf238fa56d6fff443b212870cf9dd7f1110e7da\n"
    },
    {
      "commit": "ee499291404a192b059f2e04c5afc65aa6cdd74c",
      "tree": "1c1537b599b21c331b15493f776adcbff307ac2f",
      "parents": [
        "d084206d5a4a5364211af46e4201311933e83bfc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 21 17:55:51 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 21 18:15:33 2014 -0700"
      },
      "message": "Move frameworks/av off private API.\n\nBug: 11156955\nChange-Id: Ib3bb9d66a2bf92977c2445b62aa074a2d7a45aea\n"
    },
    {
      "commit": "2234002b0710c8db73f82d397cb945cd541c6bbb",
      "tree": "be662712131225845bb0afd7d32e7c37a7f295ad",
      "parents": [
        "67ee990d324229ab0565ce632bd5a04297e16a01"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 07 12:04:41 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 28 12:26:11 2014 -0700"
      },
      "message": "Start pulling bits of FastMixer up to FastThread\n\nChange-Id: I4c6f7b8f88fcf107bb29ee6432feecd4ab6554d2\n"
    },
    {
      "commit": "f7160b5dc3091fd9624f25d534c6848ee831b706",
      "tree": "521236419b4532dc8e91ed22be147a6aeb8baa34",
      "parents": [
        "4cd161b5bf7a8008d684db4b217ed84d1704e683"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 18 17:01:15 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 31 12:23:11 2014 -0700"
      },
      "message": "FastMixer use FastThread and FastMixerState use FastThreadState\n\nChange-Id: I594c973e9f575113bdefee6f4cf8c29d8beac1f3\n"
    },
    {
      "commit": "4182c4e2a07e2441fcd5c22eaff0ddfe7f826f61",
      "tree": "c7ed5d9b71f919bf664dd0cb6cbdd1c3de2f9241",
      "parents": [
        "0d61251648b5110bfc33ef5b3d19bbf65db0a7b5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 15 14:45:07 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 19 09:30:37 2013 -0700"
      },
      "message": "Use AudioSystem::setLowRamDevice() to configure memory\n\nBug: 9798886\nChange-Id: I9321e3f369f1ed9429ae222e3926ebdeb012b8b0\n"
    },
    {
      "commit": "0d35f7818dedd67844cc90218d5c131a8644f802",
      "tree": "a20ec711dad0a1f5945f62346d14ec8570b90f32",
      "parents": [
        "70369845f8250df4f6f22c336414b4df0a3ce53e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 11 10:58:50 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 11 10:58:50 2013 -0700"
      },
      "message": "Increase size of statistics buffer\n\nBug: 8354576\nChange-Id: I327e9dc203e09df8abc21e589ce9056540618abd\n"
    },
    {
      "commit": "0a14c4ce1a41bc09eb7855fa531a3af629a69139",
      "tree": "dfde5cdadeea7bbbdb8e50477ca35ac4768693f0",
      "parents": [
        "362ebcbf100f7fccd37551c77e67c4faa7241b63"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 13 14:58:49 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 14 17:49:31 2012 -0700"
      },
      "message": "Make CPU frequency statistics optional\n\nCertain CPUs with dynamic cluster swapping and hotplug\ndon\u0027t report CPU frequency accurately.  The file descriptors\nused to read the frequency become stale and report bogus data.\nSo make this feature a build time option for debugging only.\nThis will also improve performance of the fast mixer loop.\n\nChange-Id: I602f81ec3281a37992769208be08084ed1469e8c\n"
    },
    {
      "commit": "1295bb4dcff7b29c75cd23746816df12a871d72c",
      "tree": "81cf673d36c8aaf3d9d51a9f372a8425ee5fa49b",
      "parents": [
        "bf0d21fb1310e8677caa53b90e8c3aecebc7fc13"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 31 07:43:43 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jun 03 14:49:11 2012 -0700"
      },
      "message": "Fast track dumpsys\n\nBug: 6591648\nChange-Id: I696f51c682e7233ba690d97da26012084989b412\n"
    },
    {
      "commit": "09474df67278c0cd621b57c4aef1deaec4d8447f",
      "tree": "eafcf9a62df5202c4a0628a9ac9798b7c49dd08b",
      "parents": [
        "d08f48c2ad2941d62b313007955c7145075d562c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 10 14:48:07 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 14 08:56:45 2012 -0700"
      },
      "message": "Improve underrun handling for fast tracks\n\nMaintain more accurate accounting of type of underrun.\nAutomatically remove track from active list after a series of \"empty\" underruns.\n\nChange-Id: If042bf80e1790dcaaf195c99dc9c0ed9b55382c1\n"
    },
    {
      "commit": "42d45cfd0c3d62357a6549c62f535e4d4fe08d91",
      "tree": "40667398d6db38a70fa2729e6d574a01b1ebefd1",
      "parents": [
        "c150ca7dda844891fa684f6898da7f7e0c40329d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 02 10:34:47 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 10 13:39:16 2012 -0700"
      },
      "message": "Update fast mixer statistics\n\nCompute statistics on fast mixer elapsed time and CPU load per cycle using a\nsimple moving average rather than by fixed blocks.  This has a couple advantages:\n - remove burstiness of CPU usage due to former floating-point calculations in fast mixer\n - gives us flexibility in how to report (e.g. could report over just the last 1 second)\n\nDisadvantage is increased RAM, and since the samples are not updated\natomically, it is possible to have an error in the statistics.  This\nshould not be much of an issue due to the relatively large number of samples.\n\nAlso add CPU raw ns and adjusted MHz statistics.\n\nChange-Id: Iaa2cd13f18250c3162aff40409b3694b769d9505\n"
    },
    {
      "commit": "288ed2103d96f3aabd7e6bea3c080ab6db164049",
      "tree": "dec8e7b3a993e86baa8916ba70dcd6b3c053d062",
      "parents": [
        "0c0abd4ad26971b5fba94734137fe0bb1a590ab6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 25 17:52:27 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 30 13:00:31 2012 -0700"
      },
      "message": "Fix race condition for non-started fast tracks\n\nThis required re-implementing how fast tracks are considered active.\nNow, they use the same logic as normal tracks, except underrun is ignored.\n\nOther changes:\n - add framesReady() to AudioBufferProvider interface\n - rebased\n - add track underrun counter state to fast mixer dump state\n - move dumpsys header to Track::appendDumpHeader()\n   so it closer to where tracks are dumped\n - display track state in dumpsys as a character code\n - measure and display warmup time and cycles in dumpsys\n - copy in the presentation complete code\n - add ExtendedAudioBufferProvider for framesReady() which returns size_t\n - simplify underrun tracking\n - deferred reset track after stop()\n - add comments\n\nChange-Id: I7db8821bc565230ec76da1f9380fe3fb09735e5b\n"
    },
    {
      "commit": "21e8c50bd13ebe44f3088e26c9c6df0e163c469c",
      "tree": "0437226abb896de30fd20123eb3089168989391a",
      "parents": [
        "8d6086781c79620ce6133df7bd27f0efdee6b4e6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 12 09:39:42 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Apr 20 07:38:05 2012 -0700"
      },
      "message": "FastMixer update\n\nUpdates:\n - Add support for mono fast tracks\n - Add support for optional sample rate conversion on fast tracks\n - Log sample rate and frame count\n - Enable statistics\n\nChange-Id: Ife014edf4f452da361f3eaaae19209ef6ff6958b\n"
    },
    {
      "commit": "97b5d0d5b5ef766eb5dd680d05a5d199662d4ae0",
      "tree": "a7042a97ac8019ba62a7c35ef9e11711caab7021",
      "parents": [
        "0845682ff93c9765b74b53dc404d0954efc28c2e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 23 18:54:19 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 18 07:49:43 2012 -0700"
      },
      "message": "Fast mixer\n\nChange-Id: I61552f83507e08e4c706076b9fb15362869e6265\n"
    }
  ]
}
