)]}'
{
  "log": [
    {
      "commit": "a614426bc7e195af227a585bb0a07f43b4022d78",
      "tree": "18f9408e8a76815216783b24249b4e1177d982cd",
      "parents": [
        "35436ad21902edf83e3c1307b45b38d13137d31c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 19 09:00:47 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 27 13:33:45 2012 -0800"
      },
      "message": "New VHQ resampler\n\nSquashed commit of the following:\n\ncommit 12b6952da9f25e94d06dd7185bce255924e7e791\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Mon Nov 19 15:27:26 2012 -0800\n\n    fix a typo in SINC resampler that prevented tracks to be mixed\n\n    we were always erasing the current mix instead of mixing into it.\n\n    Change-Id: Ib229245f9e5a0d384f1727640a59e9f0469211a2\n\ncommit 0019ce082df430278f14ab922e900ce33b64897d\nAuthor: Dave Bort \u003cdbort@google.com\u003e\nDate:   Tue Nov 13 01:30:32 2007 -0800\n\n    Rename \"TARGET\" to \"MODULE\" in the build system.\n\n    Part one of the grand renaming.\n\n    API_CHANGE: Third parties may need to update their makefiles.\n    Any variables with \"LOCAL\" and \"TARGET\" in their names\n    should now use \"MODULE\" instead of \"TARGET\"; e.g., LOCAL_MODULE,\n    LOCAL_MODULE_TAGS.\n\n    PRESUBMIT\u003dpassed\n    OCL\u003d39840\n\n    Change-Id: Ica9a7937d3d9552ab84db46ac6eea8a290e404fe\n    Signed-off-by: Glenn Kasten \u003cgkasten@google.com\u003e\n\ncommit f01adc0cef0e39e75c76d9195ac26a94cac0a100\nAuthor: Glenn Kasten \u003cgkasten@google.com\u003e\nDate:   Wed Nov 14 08:32:08 2012 -0800\n\n    Fix build warnings\n\n    Change-Id: Ic43bcca166a529a6431711b05a7fa21849b6a38b\n\ncommit 9bb031a565c753a03d9c9397edea318947d80528\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Sat Nov 10 04:44:30 2012 -0800\n\n    more optimizations...\n\n    calculate the offsets from the phase differently, this happens\n    to reduce the register pressure in the main loop, which in turns\n    allows the compiler to generate much better code (doesn\u0027t need\n    to spill a lot of stuff on the stack).\n\n    this gives another 15% performance increase\n\n    Change-Id: I2ce3479dd48b9e6941adb80e6d443d6e14d64d96\n\ncommit 5a951598f31217b8cd2babd0720c9608ee17291a\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Sat Nov 10 03:26:39 2012 -0800\n\n    refactor code to improve neon code\n\n    we want to make sure we don\u0027t transfer data from the\n    neon unit to the arm register file, as this can be quite\n    slow. instead we do all the calculation on the neon side\n    and write the result directly to main memory.\n\n    Change-Id: Ibb56664d3ab03098ae2798b75e2b6927ac900187\n\ncommit b381ee9e83bc9fd18986e79c7809841514ed590e\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Sun Nov 4 15:16:13 2012 -0800\n\n    NEON optimized SINC resampler\n\n    this currently gives us a 60% to 80% boost depending\n    on the quality level selected.\n\n    Change-Id: I7db385007e811ed7bffe5fd3403b44e300894f5b\n\ncommit bea077354210242ea193a50b0dbab0fedab25df3\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Mon Nov 5 01:51:37 2012 -0800\n\n    minor cleanups\n\n    Change-Id: Ia12ee4fb59e90221761bec85e6450db29197591f\n\ncommit 8f4ed7decbe161a5ff38200b218f5216d80aba46\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Sun Nov 4 18:49:14 2012 -0800\n\n    improve resample test\n\n    - handle stereo input\n    - input file can now be ommited, in this case\n      a linear chirp will be used automatically\n    - better usage information\n\n    Change-Id: I5d62a6c26a9054a1c1a517a065b4df5a2cdcda22\n\ncommit 5fcd634ea6cb4df27c495abe20f5f9b8ff55d128\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Sun Nov 4 02:03:49 2012 -0800\n\n    change how we store the FIR coefficients\n\n    The coefficient table is now transposed and shows\n    much better its polyphase nature: we now have a FIR\n    per line, each line corresponding to a phase.\n\n    This doesn\u0027t change at all the results produced by\n    the filter, but allows us to make slightly better\n    use of the data cache and improves performance a bit\n    (although not as much as I thought it would).\n\n    The main benefit is that it is the first step\n    before we can make much larger optimizations\n    (like using NEON).\n\n    Change-Id: Iebf7695825dcbd41f25861efcaefbaa3365ecb43\n\ncommit d652231abf4c7e2ea1fc89caae730cec1f7259a1\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Sat Nov 3 23:37:53 2012 -0700\n\n    improve SINC resampler performance\n\n    The improvement is about 60% by just tweaking a few\n    things to help the compiler generate better code.\n    It turns out that inlining too much stuff manually was hurting us.\n\n    Change-Id: I8068f0f75051f95ac600e50ce552572dd1e8c304\n\ncommit 9dc68ef5b94c700c4ee68790e8cbb334c90a538d\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Thu Nov 1 21:03:46 2012 -0700\n\n    new coefficients for the vhq resampler\n\n    previous coefficients were provided by a 3rd party and didn\u0027t have a\n    way to re-generate them. we\u0027re now using the \u0027fir\u0027 utility.\n\n    the performance of the filter is virtually identical, except for\n    the down-sampling case which seems slightly better now:\n       It looks like both the previous and new coefficients are generating\n    some sort of clipping for full-scale signals in the down-sampling case\n    (although the new ones seem better), the reason for that is\n    unknown (see bug: 7453062)\n\n    Also updated the HQ coefficients for the down-samplers, previous ones\n    were a little bit too conservative -- the new ones push the cut-off\n    frequency up by about 1 KHz.\n\n    Change-Id: I54a827b5c707c7cc41268ed01283758dce1d7647\n\ncommit 38e0b8560a6fc1b7124e22e0e09a84a285182f8e\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Tue Oct 30 13:51:44 2012 -0700\n\n    fix SINC resampler on non ARM architectures\n\n    make sure the C version of the code generates the same\n    output than the ARM assemply version.\n\n    Change-Id: Ide218785c35d02598b2d7278e646b1b178148698\n\ncommit a1878128b182696ba508569b4d211d0dfae92463\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Tue Oct 30 12:49:07 2012 -0700\n\n    fix another issue with generating FIR coefficients\n\n    the impulse response of a low-pass is 2*f*sinc(2*pi*f*k), we were\n    missing the 2*f scale factor. This explains why we were seeing\n    clipping and had to manually scale the filter down.\n\n    Change-Id: I86d0bb82ecdd99681c8ba5a8112a8257bf6f0186\n\ncommit 1a0fb993430acc9f601e6c538305bc407c20ac5d\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Mon Oct 29 17:13:20 2012 -0700\n\n    fir a typo that caused up-sampling coefficiens to be wrong\n\n    up-sample coefficient were generated with a cut-off frequency of 24KHz\n    intead of ~20KHz, which caused more aliasing in the audible band.\n\n    also increased the attenuation to 1.3 dB on both up and down\n    sampling coefficient to avoid clipping.\n\n    Change-Id: Ie8aeecf1429190541b656810c6716b6aae5ece2e\n\ncommit 9520ad6862bd682ad075a9d9e3e94ada9f6e58b6\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Mon Oct 29 17:13:16 2012 -0700\n\n    test-resample: clip instead of overflowing\n\n    Change-Id: I550e5a59e51c11e1095ca338222b094f92b96878\n\ncommit ba36656300f250f7f1fdeb75149749344260e6cb\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Sun Oct 21 01:01:38 2012 -0700\n\n    a test app for the resamplers\n\n    Change-Id: I66852d90d384f1d9e77b51ad1a1ebdbaf61d0607\n\ncommit 056a08b9bfd33cf27228c992adc8293a56b01be8\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Fri Oct 26 14:11:01 2012 -0700\n\n    reenable the cubic resampler\n\n    cubic resampler was disabled because it hadn\u0027t been qualified,\n    however after I did some tests, it does improve significantly\n    the sound quality over the order-1 resampler, even if it is\n    still quite bad.\n\n    also HIGH_QUALITY resampler was partially disabled, it\u0027s now\n    fully enabled. It\u0027s a big improvement over the cubic resampler\n    in terms of aliasing noise (it\u0027s not as good in the pass-band).\n\n    Change-Id: I70e3658c255896588642697be9eb594ff4ec0f8b\n\ncommit 8c0241d3ff50ae85167f69b3bd369244894cfa44\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Fri Oct 26 13:48:42 2012 -0700\n\n    improve SINC resampler coefficients\n\n    - we increase the interpolation precision from 4 to 7 bits\n    this doesn\u0027t increase CPU power required, it only increases the\n    size of the filter table but significantly reduces the noise\n    introduced by the quantization of the impulse response.\n\n    - the parameters of the filter are set such that aliasing is\n    rejected at 80 dB below 20 KHz. Because we don\u0027t use a lot of\n    coefficient (to save compute power), there are quite a bit of\n    attenuation in the pass-band: starting at 9KHz for the\n    down-sampler (48 to 44.1), and starting at 13 KHz for the\n    up-sampler (44.1 to 48) -- the transition band is about 15 KHz.\n\n    Change-Id: I855548d2aab8a0fb0d2a2da3a364b6842d7d3838\n\ncommit 69e7dab2192adc1f780464146810629ebd01b145\nAuthor: Pixelflinger \u003cmathias.agopian@gmail.com\u003e\nDate:   Thu Oct 25 19:43:49 2012 -0700\n\n    improve fir tool: cleanup, better default, bug fixes\n\n    - all parameters can be changed on the command-line\n    - added float output\n    - added debug option\n    - added an option to generate a polyphase filter coefficients\n    - added an attenuation option in dBFS\n    - added a lot of comments and references\n    - fixed kaiser window parameter\n\n    also the default should generate a filter with 80 dB rejection\n    (of the 24 KHz aliasing) above 20 KHz and a 15 KHz transition\n    band around ~20 KHz (for 48 KHz sampling rate).\n    It\u0027s not very good but corresponds to the current code.\n\ncommit 8347499d105a50257c18e9dac652e750b06428b1\nAuthor: Glenn Kasten \u003cgkasten@google.com\u003e\nDate:   Mon Oct 22 17:09:27 2012 -0700\n\n    Increase allowed number of VHQ resamplers to 3\n\n    Bug: 7378660\n    Change-Id: I69e33ca2eb4bb9bd38e2c63df62cd1130d68baf6\n\ncommit f91cf3cad7f5c4d52614271c89ab468741c5d24c\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Sun Oct 21 03:04:05 2012 -0700\n\n    Fix a typo that caused the high quality resampler to produce garbage\n\n    the problem is that if libaudio_resampler is present, it is those\n    coefficients that will always be selected, but the correct\n    meta-data.\n\n    Bug: 7385994\n    Change-Id: Ieebeb37b4dfb62a1a051bc29fae2ce056dbc6621\n\ncommit e158a9e4262a174c59469a205658bc3ca4078234\nAuthor: Dan Bornstein \u003cdanfuzz@google.com\u003e\nDate:   Fri Oct 3 10:34:57 2008 -0700\n\n    Manually merge change #111620 from tc3 to mainline, to keep the\n\n    automerger from choking on it.\n\n    p4 sync\n    p4 integrate -r -b android_to_tc3 //...@111620,111620\n    p4 resolve -a\n    p4 resolve     # resolve a couple merge travesties\n\n    PRESUBMIT\u003dpassed\n    BUG\u003d1399648\n    TBR\u003dedheyl\n    OCL\u003d111902\n\n    Change-Id: I854b01553dd92bbf9c864f5a9bd51a3d665f0ac2\n    Signed-off-by: Glenn Kasten \u003cgkasten@google.com\u003e\n\ncommit b9f3c26032be7a6ea01a10d93d94826f449e68ab\nAuthor: Dave Bort \u003cdbort@google.com\u003e\nDate:   Fri Jan 18 14:51:05 2008 -0800\n\n    Rename \"Makefile\" to \"Android.mk\" throughout the tree.\n\n    For \u003chttp://b/issue?id\u003d960416\u003e.\n\n    I\u0027ve tested this as much as I can, but 1500 open files \u003d\n    easy to mess things up.  Please let me know if there\u0027s\n    a problem rather than rolling back this change.\n\n    PRESUBMIT\u003dpassed\n    BUG\u003d960416\n    TBR\u003djoeo\n    OCL\u003d46537\n\n    Change-Id: I5a404caf0f398a7afa7ae7abaf2f2a1c6ab490eb\n    Signed-off-by: Glenn Kasten \u003cgkasten@google.com\u003e\n\ncommit 0c22a9a44c4103483fba1d944acf1354c5eb1617\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Mon Oct 29 23:44:25 2007 -0700\n\n    Tweak the SINC resampler parameters and double the performance. It\u0027s using about 10% CPU in the worse case now.\n\n    Change-Id: I50ac7e6c6702a427fa36ab6d976c507155057507\n    Signed-off-by: Glenn Kasten \u003cgkasten@google.com\u003e\n\ncommit b85e41487983ad085b859acf8251e7e54480308a\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Mon Oct 29 04:34:36 2007 -0700\n\n    A sinc resampler for Audioflinger. It\u0027s not enabled yet, but fully functional and apparently working. It need more \"quality\" tests. In the 48-\u003e44 KHz, it takes about 25% of the CPU time.\n\n    Change-Id: I80eb5185e13ebdb907e0b85c49ba1272c23d60ec\n    Signed-off-by: Glenn Kasten \u003cgkasten@google.com\u003e\n\ncommit ba3949ef17cac2ba71cc3096c413782a49c922e5\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Thu Aug 23 21:01:28 2007 -0700\n\n    fix a few small typos in the FIR computation\n\n    Change-Id: I6e56b514fe520f30f7487f85c64ea5d2a7c19b40\n    Signed-off-by: Glenn Kasten \u003cgkasten@google.com\u003e\n\ncommit 7474bfa7de2604021963794dddfe44985648db6a\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Thu Aug 23 03:16:02 2007 -0700\n\n    This is a tool to compute the the reconstruction filter coefficients for a sinc audio resampler.\n\n    Change-Id: I99be2505139b8e0e7647200e1647509d4f7e6067\n    Signed-off-by: Glenn Kasten \u003cgkasten@google.com\u003e\n\nBug: 7577965\nChange-Id: I2c84a9283a1668723bad83e1a119c849c88c3e6b\n"
    },
    {
      "commit": "2b5232dd49d006a08c35ba865a6801acdb15483c",
      "tree": "24ad1d26999191a5502627a2b9737c013a39a85d",
      "parents": [
        "3d33019b95439ba8cc062633168ec8fe51ef6ad4"
      ],
      "author": {
        "name": "ty.lee",
        "email": "ty.lee@lge.com",
        "time": "Mon Oct 01 13:54:14 2012 +0900"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Sun Oct 07 12:05:27 2012 -0700"
      },
      "message": "audioflinger/resampler: add build source for libaudio-resampler\n\nBug: 7229644\nChange-Id: I93bde36be1c3ec84174a4c98423e28f8b3d8782f\nSigned-off-by: ty.lee \u003cty.lee@lge.com\u003e\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "a6d41334d25ffde12484eb28301352560a063ef6",
      "tree": "4d8df3822f93824ada324d5038ab0b4cd27ce77b",
      "parents": [
        "95f24dacbde69295fd21bbf683281b277e097bb1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Oct 01 14:04:31 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 04 09:44:04 2012 -0700"
      },
      "message": "Integrate improved coefficient sinc resampler: VHQ\n\nSummary:\nVery high quality is enabled only for 44.1 -\u003e 48 or 48 -\u003e 44.1,\n  and uses low quality for all other use cases.\nTrack estimated CPU load and throttles the quality based on load;\n  as currently configured it should allow up to 2 instances of very high quality.\nMedium quality and high quality are currently disabled unless explicitly requested.\n\nDetails:\nOnly load .so the first time it is needed.\nCleanup code style: formatting, indentation, whitespace.\nRestore medium quality resampler, but it is not used (see next line).\nFix memory leak for sinc resampler.\nCheck sample rate in resampler constructor.\nAdd logs for debugging.\nRename DEFAULT to DEFAULT_QUALITY for consistency with other quality levels.\nRenumber VERY_HIGH_QUALITY from 255 to 4.\nUse enum src_quality consistently.\nImprove parsing of property af.resampler.quality.\nFix reentrancy bug - allow an instance of high quality and an instance\n  of very high quality to both be active concurrently.\n\nBug: 7229644\nChange-Id: I0ce6b913b05038889f50462a38830b61a602a9f7\n"
    },
    {
      "commit": "02e5dbb025bf164f0b273f01a114ddc497798823",
      "tree": "b300f58fd59db71f26aba84f6d8603bdc965b868",
      "parents": [
        "6756203ec80f7640f743d8cc9d8799302d9513b6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Sep 27 13:49:02 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Sep 30 13:13:11 2012 -0700"
      },
      "message": "Disable audio watchdog\n\nIt\u0027s not critical, and is wasting power\n\nBug: 7241714\nChange-Id: I6ad4375f0000c92529688723dbe0ff0caa809c5d\n"
    },
    {
      "commit": "41dfd129a181a5b0b62628733cf96e0ce11d64d7",
      "tree": "4614b6808b79cb3e84d5d5b6dbce9275ca89de98",
      "parents": [
        "f818ccfbbfc574d179c4639af6b41c83c368a699"
      ],
      "author": {
        "name": "SathishKumar Mani",
        "email": "smani@codeaurora.org",
        "time": "Tue Jan 17 10:49:47 2012 -0800"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Wed Sep 26 18:48:44 2012 -0700"
      },
      "message": "audioflinger: use resample coefficients from audio-resampler library.\n\n-Add a separate quality VERY_HIGH_QUALITY in resampler\n-Use resample coefficients audio-resampler library for\n quality VERY_HIGH_QUALITY.\n-This improves the quality of resampled output.\n\nBug: 7024293\nChange-Id: Ia44142413bed5f5963d7eab7846eec877a2415e4\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "fc7992bd8220824f1404c0c54ac516d9e28b58c2",
      "tree": "972da8ca10068930ebb465a72c76be69a0ca6a79",
      "parents": [
        "6db33a9272da8f011be1c51675220b81655fd470"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 29 11:10:32 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 10:53:37 2012 -0700"
      },
      "message": "Move libnbaio out of AudioFlinger\n\nlibnbaio is now a separate shared library from AudioFlinger, rather\nthan a static library used only by AudioFlinger.\n\nAudioBufferProvider interface is now also independent of AudioFlinger,\nmoved to include/media/\n\nChange-Id: I9bb62ffbc38d42a38b0af76e66da5e9ab1e0e21b\n"
    },
    {
      "commit": "c1dae24a08b67b98e18e4239d4f3a74d600d353c",
      "tree": "d0923bff8eb16c7b060a37379dc2fc9a298e8554",
      "parents": [
        "2c75ef40330522fb50bbd7a0aa105573355b323c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 13:13:53 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 03 16:25:07 2012 -0700"
      },
      "message": "Remove debug code HAVE_REQUEST_PRIORITY and SOAKER\n\nChange-Id: I73a2afe72d8acb53e57e6b4e6fb5133e22b7875a\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": "c15d6657a17d7cef91f800f40d11760e2e7340af",
      "tree": "c4346cb0fcde7483e42900aecce64df96250889b",
      "parents": [
        "b7acdfb8068bf408ed859dfdd441b4a8722eb12a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed May 30 14:52:57 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 11 11:39:54 2012 -0700"
      },
      "message": "Add audio watchdog thread\n\nChange-Id: I4ed62087bd6554179abb8258d2da606050e762c0\n"
    },
    {
      "commit": "28ed2f93324988767b5658eba7c1fa781a275183",
      "tree": "07ba39f61d41aa6ff2af76dc2c9122a102c92059",
      "parents": [
        "a4f7e0e9a0e92a063f1b3a08988cf46e2cf1fa94"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 07 10:17:54 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jun 08 10:09:22 2012 -0700"
      },
      "message": "Reduce underruns in screen off, esp. with EQ\n\nAdd MonoPipe APIs to specify setpoint.\nUse screen state to configure pipe setpoint.\nFix a long-standing bug where pipe sleep time was excessive,\n  which interacted poorly with governor and low clock frequencies.\n  Now it deducts the elapsed time since last write(),\n  which was significant when there was EQ and low clock frequency.\n\nBug: 6618373\nChange-Id: I6f3b0072c2244aeb033ef0795ad164491a164ff5\n"
    },
    {
      "commit": "399930859a75d806ce0ef124ac22025ae4ef0549",
      "tree": "2471b70dedc0bb33f7310de8ae0e5622344c6f82",
      "parents": [
        "1295bb4dcff7b29c75cd23746816df12a871d72c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 31 13:40:27 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jun 04 08:27:25 2012 -0700"
      },
      "message": "State queue dump\n\nBug: 6591648\nChange-Id: Iac75e5ea64e86640b3d890c46a636641b9733c6d\n"
    },
    {
      "commit": "fbae5dae5187aca9d974cbe15ec818e9c6f56705",
      "tree": "101ef33da2a18e0cb1c70a0e1ae085450dc60396",
      "parents": [
        "cd8a36fdc49a823f78d45e8e1a464dc261553b26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 21 09:17:20 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 21 12:36:06 2012 -0700"
      },
      "message": "Keep a copy of most recent audio played\n\nChange-Id: I6b2f97881c39998a2fae9ab79d669af6c0a37e94\n"
    },
    {
      "commit": "99c99d00beb43b939dedc9ffb07adb89f6a85ba5",
      "tree": "a93aeb409fa2399bf552ea901793514f0cf79f6b",
      "parents": [
        "552477608b137fb66af126655c6865207a82d888"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon May 14 16:37:13 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 17 16:29:07 2012 -0700"
      },
      "message": "systrace for audio\n\nTrace fast track buffer fill status for underruns etc.\n\nMove the definition of macro to Android.mk.\n\nNo overhead if disabled.\n\nChange-Id: If0e83e21b61b059ca38f543f8a6ffb58e08c79ee\n"
    },
    {
      "commit": "1dc28b794587be22c90a97070d928f94586db638",
      "tree": "81fc99726926ceb84a331350434beb2666695cf1",
      "parents": [
        "9e786c78898d738b1cb21cd8bdfcc49dbcacfce6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 24 10:01:03 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 24 10:52:04 2012 -0700"
      },
      "message": "Use scheduling policy service\n\nChange-Id: I3c09da1dc0de5039d0c15ce7fb2bc373fa398712\n"
    },
    {
      "commit": "58912562617941964939a4182cda71eaeb153d4b",
      "tree": "f0d9551f41e729540b5c0bc23bd5f0b4682d346e",
      "parents": [
        "a08f041125c7688aa33aef1b229278641ae1c375"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 03 10:45:00 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 23 09:24:28 2012 -0700"
      },
      "message": "AudioFlinger normal mixer uses FastMixer\n\nChange-Id: I3131bb22d2d057e9197a2ebfa6aa1cfaab9e5321\n"
    },
    {
      "commit": "3acbd053c842e76e1a40fc8a0bf62de87eebf00f",
      "tree": "1d6dcc01039a1af770131c6b427efa27a2e5755f",
      "parents": [
        "f853499c6a088ef8506cacbb3ccdffa87e0cec3e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 28 10:39:56 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Apr 22 14:50:01 2012 -0700"
      },
      "message": "Configure policy of mediaserver threads\n\nChange-Id: Ifd825590ba36996064a458f64453a94b84722cb0\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"
    },
    {
      "commit": "dc998c809e084b617990b281e2ed5271830cc2e0",
      "tree": "7d05323b201206ccb6cecf72d82faf82055afd70",
      "parents": [
        "eee482b84bb456e87fa42e8ad02fd2d803839586"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 23 18:53:59 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 18 07:34:34 2012 -0700"
      },
      "message": "Add template class StateQueue\n\nChange-Id: Iccc5eb42bc295a22b2e429a4551f083cd7b6831a\n"
    },
    {
      "commit": "010662326b9c43c703725f933e95e0897f8a6bdd",
      "tree": "29a39db792c50d29f266d9df86af2d1de2d4c752",
      "parents": [
        "a1472d9883e35edd280201c8be3191695007dfd4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 27 11:50:44 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 02 07:44:17 2012 -0700"
      },
      "message": "Non-blocking audio I/O interface, WIP\n\nYet another abstraction similar to AudioTrack::Buffer and AudioBufferProvider,\nbut with support for streaming, non-blocking, and eventually PTS.\n\nThis is intended to be used as follows:\n - primary HAL output stream implements a Sink\n - primary HAL input stream implements a Source\n - Pipe implements a Sink\n - PipeReader implements a Source or TimedSource (not shown yet),\n   which supports \"read at PTS\"\n - fast AudioTrack on server side will implement a Source using cblk\n - normal AudioTrack on server side will not be changed initially\n - fast AudioRecord on server side will implement a Sink using cblk\n - normal AudioRecord on server side will not be changed initially\n - fast mixer thread will read from Sources and write to a Sink,\n   or (unlikely) implement a Source and multiple Sinks\n - Visualization and PCM logger will read from Source or TimedSource\n - A2DP normal mixer will be connected directly to its output stream\n   and there will be a kind of OutputTrack for duplication that will\n   read from a Sink with non-blocking write fed by the fast mixer.\n\nPatch set 3 changes:\n - Add more implementations of NBAIO interfaces:\n   added SourceAudioBufferProvider, MonoPipe, MonoPipeReader.\n - Added Format_sampleRate and Format_channelCount.\n - Extract out the roundUp() method.\n - Respond to most comments from previous code review.\n - The new classes are untested.\n\nPatch set 4 changes:\n - Fix bugs in MonoPipe::write() and MonoPipeReader::read()\n - Fix bug initializing mFrameBitShift too early\n - renamed roundUp() to roundup()\n - Fix Android.mk\n - Add LOG_TAG an LOG_NDEBUG, use ALOG_ASSERT and utils/Log.h instead of assert\n - Fix build warnings\n - Move constructor and destructor bodies from .h to .cpp\n - Line length 100\n - Following naming conventions for #include double-include protector macros\n - Include what you use\n - More NBAIO logging\n - MonoPipe write can be blocking\n\nPatch set 5 changes:\n - Address code review comments\n - Use a static library so unused implementations don\u0027t take memory\n - Comment out libsndfile dependency\n - Remove debugging LOGV and LOG_NDEBUG\n\nPatch set 6 changes (would be 6 at old location, actually 2 at new location):\n - Address code review comments on patchset 5\n - For MonoPipe, allow the full pipe to be used, no need to omit one slot\n - Don\u0027t do atomic releasing stores unless needed\n\nStill to do:\n - I\u0027m not happy with the Pipe class names\n - Update build/ for new static library?\n\nChange-Id: Ie6c61f05ce06b676b033be448a8ef9025a2ffcfd\n"
    },
    {
      "commit": "d12c68ad699ce0ed822a4d4db86e8e02324c6b03",
      "tree": "ffe2a3e44b05ad91acff86224ace0a4e8532e670",
      "parents": [
        "4f5da11df06802856bf526f16563df7d5755f653"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 23 14:04:27 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 23 14:04:27 2012 -0700"
      },
      "message": "Revert \"AudioFlinger does not need libmedia any more\"\n\nThis reverts commit c920dee060ac69684be33210ee44b99a5fc3e8b2"
    },
    {
      "commit": "4f5da11df06802856bf526f16563df7d5755f653",
      "tree": "29cc2e5196553eb5878163342787298351f71a5d",
      "parents": [
        "ab55517549170b0def3d7b625324b6a44b60d5ae"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 22 15:21:35 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 22 15:24:22 2012 -0700"
      },
      "message": "AudioFlinger does not need libmedia any more\n\nChange-Id: Ifd2c61882109ec36ca68072a2bf6506e08c8cf34\n"
    },
    {
      "commit": "2ee367e444e7b62e02bde8a2e47603a9ad342c6e",
      "tree": "95649f9b430efcb58ffd0dad50ea44f4ab038eb3",
      "parents": [
        "1746929ddc7592ab397c402724a61352e45df093"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 17:36:25 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 17:36:25 2012 -0700"
      },
      "message": "Add libmedia_native\n\nChange-Id: I3ac357c78fb89f108d15c6e5b9fa317de0e9fb9a\n"
    },
    {
      "commit": "33b383948e8f270bff30378476f00dce289004eb",
      "tree": "a42eeb76674395b36611da694166ddd4144a0fa8",
      "parents": [
        "dfaf549e3e310bc22444f4404b19f4907b24c286"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 15:59:35 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 16:44:34 2012 -0700"
      },
      "message": "Remove dependency on audio_* location\n\nChange-Id: I4bc66115fcb9ba22b057bd72db3f561dcb18a0d8\n"
    },
    {
      "commit": "01c4ebf6b794493898114a502ed36de13137f7e5",
      "tree": "7f663fdad4040a40411e79d837c14e52e11a65b9",
      "parents": [
        "d6fd85a157ce2054b2304e6d171fa87ae09c363d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 22 10:47:35 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 24 13:42:13 2012 -0800"
      },
      "message": "AudioBufferProvider comments and cleanup\n\nAdd comments about which methods implement the AudioBufferProvider interface.\n\nSimplified the definition of kInvalidPts.  \u003cstdint.h\u003e is very hard to work\nwith, there seems to be no way to use it reliably to get INT64_MAX without\nhaving a separate source file, which is ugly because it means kInvalidPts\nis not a compile-time constant.  So I just deleted AudioBufferProvider.cpp\nand used a hard-coded constant instead.\n\nAdded a default constructor for Buffer so that the fields aren\u0027t random\n(especially .raw which is used to determine if the buffer is valid).\n\nMake the pts for getNextBuffer default to kInvalidPTS so code that\ndoesn\u0027t need a pts doesn\u0027t have to specify a value.\n\nRename the parameter to AudioMixer::setBufferProvider to make it clearer.\n\nChange-Id: I87e7290884d4ed975b019f62d1ab6ae2bc5065a5\n"
    },
    {
      "commit": "4ff14bae91075eb274eb1c2975982358946e7e63",
      "tree": "e9e54fddb9832d30b69c2a11c9ed2884397f2f95",
      "parents": [
        "951bd8d1ad9581a414e171ad8605a9515d0ad667"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Feb 08 16:37:41 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Feb 16 13:45:11 2012 -0800"
      },
      "message": "Upintegrate Audio Flinger changes from ICS_AAH\n\nBring in changes to audio flinger made to support timed audio tracks\nand HW master volume control.\n\nChange-Id: Ide52d48809bdbed13acf35fd59b24637e35064ae\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "44deb053252a3bd2f57a007ab9560f4924f62394",
      "tree": "57fac6fb14c9f7897409b54b360afebef59c2e70",
      "parents": [
        "860936d780d98a5968f40e66ca6ae800c67adbc3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Feb 05 18:09:08 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 13 10:30:23 2012 -0800"
      },
      "message": "Factor out and speed up permission-checking code\n\nUse the caching permission check for dump to save IPC.\n\nCache getpid() to save kernel call for other permission checks.\n\nThe C runtime library getpid() can\u0027t cache due to a fork\nrace condition, but we know that mediaserver doesn\u0027t fork.\n\nDon\u0027t construct String16 on the stack.\n\nChange-Id: I6be6161dae5155d39ba6ed6228e7683e67be34ed\n"
    },
    {
      "commit": "cdf2158f3b9498d6cd0eb228d8bee16e32399e16",
      "tree": "21af355df3a1f1d8d559b419fe8daf37c46dadbc",
      "parents": [
        "7ae4a2c130ec2cb5dec69d095b810698acc543b3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 02 14:01:58 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 09 18:14:44 2012 -0800"
      },
      "message": "Disable HQ resamplers for now until qualified\n\nThis saves about 6500 bytes.\n\nChange-Id: I87102fe561c95c19c9e615dea3de914f96639257\n"
    },
    {
      "commit": "3b21c50ef95fe4e7ac3426ca14b365749e66ff08",
      "tree": "e3f9a8d6ab695bd1d4d494fbf1b9d80bcc25585c",
      "parents": [
        "eebeceec684a36222b4559e3157b0db04c0a67ed"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 15 09:52:39 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 16 11:42:03 2011 -0800"
      },
      "message": "Extract out audio DSP code to utility library\n\nChange-Id: Ib8ce72028a7ea30e82baa518e381370e820ebbd0\n"
    },
    {
      "commit": "feb0db689c17dced50afaee54c659f1676e2d505",
      "tree": "a949f6cb66c3c5886cd0682fcb3781b0fd5db0a8",
      "parents": [
        "288b66b60c9b3af3d84408885d0a4030c45eea9a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 22 09:04:31 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 25 18:41:12 2011 -0700"
      },
      "message": "Fix issue 4604090: notification sound interrupted.\n\nThe problem is that the audio HAL fails to acquire the wake lock when playing the notification.\nThis is because of a change that removed the mediaserver process form the system group for honeycomb.\n\nThe fix consists in requesting the wake lock from PowerManagerService when AudioFlinger mixer\nwakes up.\n\nA consequence of this change is that audio HALs or pcm drivers do not have to hold wake locks\nanymore as in the past.\n\nChange-Id: I4fb3cc84816c9c408ab7fec75886baf801e1ecb5\n"
    },
    {
      "commit": "e0b5bb23f0a26d248275d203885b820659da7320",
      "tree": "4d7cf07bb5fdd85a882f31f9e4eaae173efdbdde",
      "parents": [
        "4378ace44b9de477608a6c2fbf7134bc0345555f",
        "4d8d0c30abfa4b8d75866d42094cc797e05068fa"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 15 16:27:13 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 15 16:27:13 2011 -0700"
      },
      "message": "Merge \"Log CPU usage\""
    },
    {
      "commit": "4d8d0c30abfa4b8d75866d42094cc797e05068fa",
      "tree": "49d5a2a3b2aa864d2780101c03b6129a0cbbbb4c",
      "parents": [
        "5895e970ae119210773a5184c019178e2516b132"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 08 15:26:12 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 15 13:28:19 2011 -0700"
      },
      "message": "Log CPU usage\n\nChange-Id: Ie447e59be139153e526b7ad467c46c659d26816f\n"
    },
    {
      "commit": "5e0067b486c3862316aa1f293cf9690c0cf54bda",
      "tree": "104ac8491b40d6e9d8353322792fb83ce76f4c82",
      "parents": [
        "52f556b976a9caceee183d8af2118ddbee02c70a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 11 22:12:16 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 11 22:12:16 2011 -0700"
      },
      "message": "Remove the simulator target from all makefiles.\nBug: 5010576\n\nChange-Id: I04d722f258951a3078fe07899f5bbe8aac02a8e8\n"
    },
    {
      "commit": "6d8b694d999e9be7d5dcc336535832a80fb6f61f",
      "tree": "4fcdbf4a7f7fa24a16d7bf27816922031870102f",
      "parents": [
        "5895e970ae119210773a5184c019178e2516b132"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 24 07:01:31 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 07 15:25:51 2011 -0700"
      },
      "message": "Moved and renamed effect API header files\n\nMoved specific effect header files to\nsystem/media/audio_effects/include/audio_effects\nand renamed to lower case (effect_xxx.h).\n\nChange-Id: Icfc2264bfd013cab0395d7e310ada636b9fe3621\n"
    },
    {
      "commit": "fce7a473248381cc83a01855f92581077d3c9ee2",
      "tree": "e002e1edd8a11f2be56ce9538ab1b13aa289bc9e",
      "parents": [
        "db5cb14318bb24cd6ea14ff7ceea0d5e1f83d903"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Apr 19 22:30:36 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed Apr 27 13:10:10 2011 -0700"
      },
      "message": "audio/media: convert to using the audio HAL and new audio defs\n\nChange-Id: Ibc637918637329e4f2b62f4ac7781102fbc269f5\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "6b80e0be94d3f92ec4aa2b7cace816780d3f338d",
      "tree": "cf5fc0a267ccd922c4139de394ea7d7a506416de",
      "parents": [
        "dab0bea38ab2c2d6b52907b7f5684834c4979251"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Apr 19 22:06:30 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Wed Apr 27 10:48:38 2011 -0700"
      },
      "message": "audioflinger: move legacy audio hw/policy out to libhardware_legacy\n\nChange-Id: I4adcec73d3c08bcbe15bb19e1ba2ff18b195af45\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "db130fbd3ccd37e247e49494a84f8a9841ecd593",
      "tree": "eddfcd84debc055e78baa446fafb3e88032577e4",
      "parents": [
        "856990b491d84b7ed4fefe337485c8997ba9dd02"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 03 17:18:19 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 03 17:18:19 2011 -0800"
      },
      "message": "Bug 3366885 Remove LVMX switch\n\nChange-Id: I0bf98c6f85f00b3296874571e1c049dcc4e2fcca\n"
    },
    {
      "commit": "65ab47156e1c7dfcd8cc4266253a5ff30219e7f0",
      "tree": "da088916c7cadadcddf47467f20cc8b0b6ff7f41",
      "parents": [
        "98fe12aba55e8b8bb14b23c4c3cdba9a99a9753c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "message": "move native services under services/\n\nmoved surfaceflinger, audioflinger, cameraservice\n\nall native services should now reside in this location.\n\nChange-Id: Iee42b83dd2a94c3bf5107ab0895fe2dfcd5337a8\n"
    }
  ]
}
