)]}'
{
  "log": [
    {
      "commit": "56938ef8dc82b49ddbc201a8855c91ba46d73bfb",
      "tree": "891f97fea9f8d8501752e34db02c19f2284db91a",
      "parents": [
        "e3722cb3364c3b5dab450067a13901e90291b46d",
        "7da35f231725aa6e0b2ac8714a7d66471368df77"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 16 08:14:40 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 16 08:14:41 2012 -0800"
      },
      "message": "Merge \"Use size_t for frame counts\""
    },
    {
      "commit": "7da35f231725aa6e0b2ac8714a7d66471368df77",
      "tree": "43c0c280293fce41ffe26176177f1cdec4e1831d",
      "parents": [
        "de5191e8b02f727756eb9d6e812af415d6cd0768"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 12:54:39 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 15 16:43:40 2012 -0800"
      },
      "message": "Use size_t for frame counts\n\nAlso fix typo: bufferCount should be frameCount.\n\nChange-Id: Ibed539504db75ef99dc21c8ff1bf2987122063a5\n"
    },
    {
      "commit": "5b78fc92d9e64623be66a5c3031b54dcd8ed28f9",
      "tree": "311f44c385ffde4f7dd93e681772acd3c241cc95",
      "parents": [
        "520a9af9438c29b24e328dd2b7a287c7a96a4e6b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 15 14:13:16 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 15 14:17:48 2012 -0800"
      },
      "message": "Static AudioTrack plays twice initially\n\nBug: 7528721\nChange-Id: I10bc16a26f33dba6572b730a170cb3bf00e68e30\n"
    },
    {
      "commit": "520a9af9438c29b24e328dd2b7a287c7a96a4e6b",
      "tree": "48d6cbcf8f8bd84e05c00855e0ede8d03e14e04c",
      "parents": [
        "1127d65d536ebbe447ee17ce0926a7ce4a2a3c08"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jun 21 12:56:37 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 16:45:53 2012 -0800"
      },
      "message": "Clean up frame size in AudioTrack and AudioFlinger\n\nTrackBase::mFrameSize, mChannelMask, and mChannelCount are now const.\nUse TrackBase::mFrameSize instead of re-calculating frame size.\nAudioFlinger only sees 16-bit PCM format, conversion from 8-bit is\n  now entirely on the client side.  Previously a small part of the\n  responsibility was on server side also.\nsize_t is unsigned, so use %u in logs.\nFix theoretical bug where TrackBase constructor was over-allocating space\n  for non-linear AudioTrack or 8-bit PCM AudioRecord (probably benign).\n\nChange-Id: I7cbbba0bf4dba29ea751d8af341ab8e5cbbdc206\n"
    },
    {
      "commit": "1127d65d536ebbe447ee17ce0926a7ce4a2a3c08",
      "tree": "5babfd3aecd195c92b12847592f415c6bad513e4",
      "parents": [
        "1513ad2d2de0962cc3b3121e6fae73d8ee1a4639"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 08:44:39 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 16:19:23 2012 -0800"
      },
      "message": "Use uint32_t for sample rate\n\nChange-Id: Ie240b48fb54b08359f69ecd4e5f8bda3d15cbe80\n"
    },
    {
      "commit": "1513ad2d2de0962cc3b3121e6fae73d8ee1a4639",
      "tree": "4baf59541c549bfc5b0367f1477dec1021954a35",
      "parents": [
        "8f1c74943c454fec3f1adf87312c4a4c89829d90",
        "020f79fd967736d36c7ec860814e2e93866a020f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 16:14:31 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 14 16:14:32 2012 -0800"
      },
      "message": "Merge \"Update audio comments\""
    },
    {
      "commit": "a9749e3468fda2288dda65d1ef52e0997f6d8897",
      "tree": "fd8b050956aca1d253a7770fface302ce8e08f61",
      "parents": [
        "656130a7bcff790dc9311754189d46bd4b911fbf",
        "98d9922247ef21b0faf8c7d817650b8327052a4a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 15:43:18 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 14 15:43:19 2012 -0800"
      },
      "message": "Merge \"Fix build warnings\""
    },
    {
      "commit": "656130a7bcff790dc9311754189d46bd4b911fbf",
      "tree": "1f6ca1671b149f734518ad8cd8254c24898ae64d",
      "parents": [
        "f550f56d4bc0fa165c675bbf2e41217c41089fcd",
        "5d3370d0db4dc97fa413a302e426fb24e87462be"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Nov 14 14:51:36 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 14 14:51:37 2012 -0800"
      },
      "message": "Merge changes I2ce3479d,Ibb56664d\n\n* changes:\n  more optimizations...\n  refactor code to improve neon code\n"
    },
    {
      "commit": "020f79fd967736d36c7ec860814e2e93866a020f",
      "tree": "b0912d848ca1b2324b3be5580498ad69f65d0f8e",
      "parents": [
        "17158f4a36ed16c779477a56ec831da55e8128fe"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 07 14:03:00 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 11:58:17 2012 -0800"
      },
      "message": "Update audio comments\n\nChange-Id: I85d7d2f6381b251db5695202fec75128883a8662\n"
    },
    {
      "commit": "98d9922247ef21b0faf8c7d817650b8327052a4a",
      "tree": "b3442f0d03184e0da4921f7fa2a5ed87fbac20c6",
      "parents": [
        "17158f4a36ed16c779477a56ec831da55e8128fe"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 08:32:08 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 14 11:12:07 2012 -0800"
      },
      "message": "Fix build warnings\n\nChange-Id: Ic43bcca166a529a6431711b05a7fa21849b6a38b\n"
    },
    {
      "commit": "e2a0586eae45a3eb1fad0f28ca2f8b0204d78df6",
      "tree": "183d3a32e9f20921508a5387f38422a21ab9b57c",
      "parents": [
        "91e1ea22fc688967115fb24247b967e513c99d8c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 13 09:58:55 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 13 10:00:46 2012 -0800"
      },
      "message": "Rename TrackBase::mFrameCount to mStepCount\n\nThis prepares for adding a new field TrackBase::mFrameCount\nwith a different meaning.\n\nChange-Id: I6bbe2c59f2a882be57caeec2e2e06f439a0e9e83\n"
    },
    {
      "commit": "5aab59a2bd0a2cd80240ffd66c1b963b5fe06d65",
      "tree": "5625489fba1f480481ecb9ea7ad3375985bd03b1",
      "parents": [
        "9c6c02eb5badf4ffcd44fc88f2587def2fd628b6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 12 07:58:20 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 12 15:13:34 2012 -0800"
      },
      "message": "Move frame size out of the control block\n\nThis is part of a series to clean up the control block.\n\nChange-Id: Ifab1c42ac0f8be704e571b292713cd2250d12a3f\n"
    },
    {
      "commit": "5d3370d0db4dc97fa413a302e426fb24e87462be",
      "tree": "ddaa49718d4c71bda6a7fe31112a9cfadb949092",
      "parents": [
        "3c11ff2f409a0abb5b9d8ffd5e13cc42cda67fdc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Nov 10 04:44:30 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Nov 10 04:49:15 2012 -0800"
      },
      "message": "more optimizations...\n\ncalculate the offsets from the phase differently, this happens\nto reduce the register pressure in the main loop, which in turns\nallows the compiler to generate much better code (doesn\u0027t need\nto spill a lot of stuff on the stack).\n\nthis gives another 15% performance increase\n\nChange-Id: I2ce3479dd48b9e6941adb80e6d443d6e14d64d96\n"
    },
    {
      "commit": "3c11ff2f409a0abb5b9d8ffd5e13cc42cda67fdc",
      "tree": "0ad48cef640c2c7e43dce2e2b13a755bef2abf9d",
      "parents": [
        "3f6f4393d0adf4465959059d69798aed55e34876"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Nov 10 03:26:39 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Nov 10 03:26:39 2012 -0800"
      },
      "message": "refactor code to improve neon code\n\nwe want to make sure we don\u0027t transfer data from the\nneon unit to the arm register file, as this can be quite\nslow. instead we do all the calculation on the neon side\nand write the result directly to main memory.\n\nChange-Id: Ibb56664d3ab03098ae2798b75e2b6927ac900187\n"
    },
    {
      "commit": "3f6f4393d0adf4465959059d69798aed55e34876",
      "tree": "d79a1043adfa3cc4f09b0b95255f2e9bc97a5099",
      "parents": [
        "c6ccbabd2800e749bc86a34d2ae233f99102ba51",
        "2f6226ad7a3fa81dc102001fbc1d1288e55a0947"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 08 17:13:02 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 08 17:13:02 2012 -0800"
      },
      "message": "Merge \"Move buffers pointer out of the control block\""
    },
    {
      "commit": "c6ccbabd2800e749bc86a34d2ae233f99102ba51",
      "tree": "f11c89a8d8bbba54a0558e78e2b480a0407bc516",
      "parents": [
        "af03dfb73d05dfabdf55640aff8b2256fdd78663"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Nov 04 15:16:13 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 08 12:45:59 2012 -0800"
      },
      "message": "NEON optimized SINC resampler\n\nthis currently gives us a 60% to 80% boost depending\non the quality level selected.\n\nChange-Id: I7db385007e811ed7bffe5fd3403b44e300894f5b\n"
    },
    {
      "commit": "af03dfb73d05dfabdf55640aff8b2256fdd78663",
      "tree": "e76f71580f1769785e7d100bed443d3fe168e41f",
      "parents": [
        "e0461d1d47c3e3cac625ce062b641519da37ba94"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 05 01:51:37 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 08 12:45:49 2012 -0800"
      },
      "message": "minor cleanups\n\nChange-Id: Ia12ee4fb59e90221761bec85e6450db29197591f\n"
    },
    {
      "commit": "2f6226ad7a3fa81dc102001fbc1d1288e55a0947",
      "tree": "d928e3a19343cff33e0d157c4c657e3931e8cbd6",
      "parents": [
        "e0461d1d47c3e3cac625ce062b641519da37ba94"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 08 12:13:58 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 08 12:18:59 2012 -0800"
      },
      "message": "Move buffers pointer out of the control block\n\nThis is part of a series to clean up the control block.\n\nChange-Id: Ie474557db7cb360f2d9a0f11600a68f5a3d46f07\n"
    },
    {
      "commit": "ba85098eb31bd2637db49816f0591361211024f2",
      "tree": "ac7f6e3c4d620dbbc87991dbb41944c53245c72a",
      "parents": [
        "891b11da870ad3f860c1d2610ef4d8836ed6c590"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 06 16:15:41 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 07 08:32:40 2012 -0800"
      },
      "message": "Remove CBLK_DIRECTION from control block flags\n\nThis is part of a series to clean up the control block.\n\nChange-Id: I0265fece3247356b585d4d48fbda6f37aea8a851\n"
    },
    {
      "commit": "891b11da870ad3f860c1d2610ef4d8836ed6c590",
      "tree": "e6b9b1be319590d43afc496a55d779724b3db10c",
      "parents": [
        "b2800e8f1360cbc3c5af2bea228b9622b1ddc9dd",
        "c26741598a840f7c1d12ee457fb26f68fcdbcc70"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Nov 07 08:29:30 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 07 08:29:31 2012 -0800"
      },
      "message": "Merge \"Remove CBLK_FAST from control block flags\""
    },
    {
      "commit": "c26741598a840f7c1d12ee457fb26f68fcdbcc70",
      "tree": "01156c9a64d61fe07a82d913c1aaa3aeb30adf94",
      "parents": [
        "96f1528dd637c6e806456d56c635ab2e92b0bd9b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 06 15:03:34 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Nov 06 17:25:22 2012 -0800"
      },
      "message": "Remove CBLK_FAST from control block flags\n\nThis is part of a series to clean up the control block.\n\nChange-Id: Ic881a3560d9547cb63fcc0cefec87aa3da480e0d\n"
    },
    {
      "commit": "3929402c7e3d9865cdeabedf291e1c4a1db48ce7",
      "tree": "64f59488fac7b410751b4bea930af272096ce068",
      "parents": [
        "96f1528dd637c6e806456d56c635ab2e92b0bd9b",
        "7df17073f1783421d6ed2013e6b55c60283d1474"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Nov 06 15:39:59 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 06 15:39:59 2012 -0800"
      },
      "message": "Merge changes I5d62a6c2,Iebf76958,I8068f0f7\n\n* changes:\n  improve resample test\n  change how we store the FIR coefficients\n  improve SINC resampler performance\n"
    },
    {
      "commit": "ac65726b26a63635d3461f96b4b979add5a8f7dc",
      "tree": "880824001a51fedfb0a2cd7d72b29b42a3272679",
      "parents": [
        "fda32926cfbdad0aae5a3e0bf88b2a218f9e7f6c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 05 13:39:09 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 05 16:41:14 2012 -0800"
      },
      "message": "Merge duplicate code in TrackBase::TrackBase()\n\nChange-Id: Id8a7db4d94888796a9dcbed4cac99941705cd174\n"
    },
    {
      "commit": "d12b033552585cd8761ba6241f21e4cea4a21878",
      "tree": "229874500055145fd99693ca4f87d997022edcc1",
      "parents": [
        "480421bb48af5df4f15498845447f3fde20a4069"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 05 13:38:15 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Nov 05 13:43:51 2012 -0800"
      },
      "message": "Simplify control block flag names\n\nUse only one symbol per flag\n\nChange-Id: Ia3582e2134abd60c896d11337face65383e79c7c\n"
    },
    {
      "commit": "7df17073f1783421d6ed2013e6b55c60283d1474",
      "tree": "4a774b325372a0c79718f69a57bb866dd17f6a70",
      "parents": [
        "e8299af5665bf9c396466c33b9b16a84fe78c7f6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Nov 04 18:49:14 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 05 01:05:01 2012 -0800"
      },
      "message": "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\nChange-Id: I5d62a6c26a9054a1c1a517a065b4df5a2cdcda22\n"
    },
    {
      "commit": "e8299af5665bf9c396466c33b9b16a84fe78c7f6",
      "tree": "f3356a4917a4ec9827d70bc9acf80feac7c1360c",
      "parents": [
        "50ebdf2086b645b9b703a6d489238767a9afb34f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Nov 04 02:03:49 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 05 01:03:43 2012 -0800"
      },
      "message": "change how we store the FIR coefficients\n\nThe coefficient table is now transposed and shows\nmuch better its polyphase nature: we now have a FIR\nper line, each line corresponding to a phase.\n\nThis doesn\u0027t change at all the results produced by\nthe filter, but allows us to make slightly better\nuse of the data cache and improves performance a bit\n(although not as much as I thought it would).\n\nThe main benefit is that it is the first step\nbefore we can make much larger optimizations\n(like using NEON).\n\nChange-Id: Iebf7695825dcbd41f25861efcaefbaa3365ecb43\n"
    },
    {
      "commit": "50ebdf2086b645b9b703a6d489238767a9afb34f",
      "tree": "e8c80fb18a5e34ee4e47975b763e63c41cb83071",
      "parents": [
        "fb242fa66643d1bd5362077a44c02c86c8064564"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Nov 03 23:37:53 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 05 01:03:02 2012 -0800"
      },
      "message": "improve SINC resampler performance\n\nThe improvement is about 60% by just tweaking a few\nthings to help the compiler generate better code.\nIt turns out that inlining too much stuff manually was hurting us.\n\nChange-Id: I8068f0f75051f95ac600e50ce552572dd1e8c304\n"
    },
    {
      "commit": "fb242fa66643d1bd5362077a44c02c86c8064564",
      "tree": "b2d1ead831ef5aba119e878d99ef5daed7a48bd5",
      "parents": [
        "36665ac2e7edae3e733b7f52145b80dfed9821a6",
        "c5b0b9a13a29be483173f092663ed17ea306ac0d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Nov 02 15:21:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 02 15:21:25 2012 -0700"
      },
      "message": "Merge \"new coefficients for the vhq resampler\""
    },
    {
      "commit": "c5b0b9a13a29be483173f092663ed17ea306ac0d",
      "tree": "6ca159e3b1770b58737c695fe1e8a52f886fb97a",
      "parents": [
        "d8a71417484ed7d937ef612d6499704d0c325874"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 01 21:03:46 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 01 21:03:46 2012 -0700"
      },
      "message": "new coefficients for the vhq resampler\n\nprevious coefficients were provided by a 3rd party and didn\u0027t have a\nway to re-generate them. we\u0027re now using the \u0027fir\u0027 utility.\n\nthe performance of the filter is virtually identical, except for\nthe down-sampling case which seems slightly better now:\n   It looks like both the previous and new coefficients are generating\nsome sort of clipping for full-scale signals in the down-sampling case\n(although the new ones seem better), the reason for that is\nunknown (see bug: 7453062)\n\nAlso updated the HQ coefficients for the down-samplers, previous ones\nwere a little bit too conservative -- the new ones push the cut-off\nfrequency up by about 1 KHz.\n\nChange-Id: I54a827b5c707c7cc41268ed01283758dce1d7647\n"
    },
    {
      "commit": "8af901cdea0af7e536579dee6d56e69987035a01",
      "tree": "46df7448209503f57a43e8c63f2334edaaf80e04",
      "parents": [
        "34238f2970c7630d173203662e0d572cc47b1ef7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 01 11:11:38 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 01 12:19:25 2012 -0700"
      },
      "message": "Line length 100\n\nChange-Id: Ib28fd7b9ce951a6933f006e7f8812ba617625530\n"
    },
    {
      "commit": "8c32734c1e2dda852011fc46d0caded971464bc2",
      "tree": "8f07ef015f8c5bd7cea4eed1ca8f19eee0fac0ad",
      "parents": [
        "d8a71417484ed7d937ef612d6499704d0c325874"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Sep 30 12:29:28 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 01 10:32:46 2012 -0700"
      },
      "message": "Save copy of mic input, disabled by default\n\nChange-Id: I4f5e95a5ddf016530d1b2747a0a5ca0962caabda\n"
    },
    {
      "commit": "901475744e15d8a4728cb111e510624377abaec3",
      "tree": "5bc42af76e29b2f89d82c9fb39d56a998f069c5a",
      "parents": [
        "0f41e62c8c2e0b2b8b936bebbd787533c662ec81",
        "67360781c2d139a71d924ae24880b56adb7c1605"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Oct 31 11:27:23 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 31 11:27:24 2012 -0700"
      },
      "message": "Merge \"StateQueue comments\""
    },
    {
      "commit": "be58bd19f4b99e04651cff0dfc968248f5b0e440",
      "tree": "66a23db8337f3f1d47d4bad46ffbf829debd1de5",
      "parents": [
        "d55d23209bb90ff7bd7443d1b54fa07c0ed8d14f",
        "faa4420344216ccbad15a49aa7c1cd6141532fcb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 30 16:19:56 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 30 16:19:56 2012 -0700"
      },
      "message": "Merge \"Remove obsolete references to libmedia_native\""
    },
    {
      "commit": "d55d23209bb90ff7bd7443d1b54fa07c0ed8d14f",
      "tree": "3126980478d2f54193365766446fb08fa3ee2ee2",
      "parents": [
        "b387e0f0e3338b4e19055d6ec2b79c04314251b3",
        "d7a3c142b3ce4ed26e025533f57bef9e4ec58740"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 30 14:54:32 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 30 14:54:32 2012 -0700"
      },
      "message": "Merge changes Ide218785,I86d0bb82\n\n* changes:\n  fix SINC resampler on non ARM architectures\n  fix another issue with generating FIR coefficients\n"
    },
    {
      "commit": "d7a3c142b3ce4ed26e025533f57bef9e4ec58740",
      "tree": "0659fcefa8fe4d25b276bc0f837a32c9b5e2657a",
      "parents": [
        "cca56d5784c02a5f02ce5e47c3d6583d71a2469b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 30 13:51:44 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 30 13:51:44 2012 -0700"
      },
      "message": "fix SINC resampler on non ARM architectures\n\nmake sure the C version of the code generates the same\noutput than the ARM assemply version.\n\nChange-Id: Ide218785c35d02598b2d7278e646b1b178148698\n"
    },
    {
      "commit": "cca56d5784c02a5f02ce5e47c3d6583d71a2469b",
      "tree": "dbfeed64df6777b0ba475dc2086abbf6282c23e1",
      "parents": [
        "955f37a0d8c6c441cd811104193970bd7c3bb486"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 30 12:49:07 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 30 12:49:07 2012 -0700"
      },
      "message": "fix another issue with generating FIR coefficients\n\nthe impulse response of a low-pass is 2*f*sinc(2*pi*f*k), we were\nmissing the 2*f scale factor. This explains why we were seeing\nclipping and had to manually scale the filter down.\n\nChange-Id: I86d0bb82ecdd99681c8ba5a8112a8257bf6f0186\n"
    },
    {
      "commit": "faa4420344216ccbad15a49aa7c1cd6141532fcb",
      "tree": "7ccb42a315e7c90e4eb124f0b87945c842f600da",
      "parents": [
        "f84d5761c5f12bb75af492de27d9bc5491e5667d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 30 10:51:39 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 30 10:51:39 2012 -0700"
      },
      "message": "Remove obsolete references to libmedia_native\n\nBug: 6654403\nChange-Id: I3993d62987cf0dd85db10bf002a5cce53d4f01bd\n"
    },
    {
      "commit": "b387e0f0e3338b4e19055d6ec2b79c04314251b3",
      "tree": "bae81c659221f15b984627f73e2c1336d649cb30",
      "parents": [
        "f84d5761c5f12bb75af492de27d9bc5491e5667d",
        "d82c750ca261d01caa405f555eef34b7af8d9b63"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 30 10:36:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 30 10:36:00 2012 -0700"
      },
      "message": "Merge \"Document AudioMixer hard-coded limits\""
    },
    {
      "commit": "f84d5761c5f12bb75af492de27d9bc5491e5667d",
      "tree": "0814fe523738bc04ce67e20d3e12dc0b76750ef1",
      "parents": [
        "944d6635b30fe21efd0bcdc97706ff7f464e7cdb",
        "cbe4b36e67baba4ec1a4d7a9db9461e09c714f0c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 30 10:34:28 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 30 10:34:28 2012 -0700"
      },
      "message": "Merge \"Use ALOGVV instead of commented ALOGV\""
    },
    {
      "commit": "3b0389dd5f611db1f65dcae88d0f6b332e447d7a",
      "tree": "9867d3adc520a017caa98ff99b5110ff994c9b51",
      "parents": [
        "a6d7d340cee564d41e7594a22233cab3d1ee26d9",
        "8a831724c52164a62e22e8e4d5f5180501e3c307"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 30 10:32:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 30 10:32:48 2012 -0700"
      },
      "message": "Merge \"Clean up constructor and derivation whitespace\""
    },
    {
      "commit": "a6d7d340cee564d41e7594a22233cab3d1ee26d9",
      "tree": "c4f0659b96d6274680501ea0e4578a84173e20c8",
      "parents": [
        "955f37a0d8c6c441cd811104193970bd7c3bb486",
        "288a6fd72949dec167c5421d5bc977d1ccb75561"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 30 10:30:59 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 30 10:31:00 2012 -0700"
      },
      "message": "Merge \"Mark volume fields private\""
    },
    {
      "commit": "7c4349fe6e1e4faaa0c0db40a74f2ccbac46f57e",
      "tree": "eb8b8e9ce47c23eddd15aac214f3591de73a9166",
      "parents": [
        "3e48fd11e3fca5c1d03354a99657298e110be56a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 29 17:13:20 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 29 17:13:20 2012 -0700"
      },
      "message": "fir a typo that caused up-sampling coefficiens to be wrong\n\nup-sample coefficient were generated with a cut-off frequency of 24KHz\nintead of ~20KHz, which caused more aliasing in the audible band.\n\nalso increased the attenuation to 1.3 dB on both up and down\nsampling coefficient to avoid clipping.\n\nChange-Id: Ie8aeecf1429190541b656810c6716b6aae5ece2e\n"
    },
    {
      "commit": "3e48fd11e3fca5c1d03354a99657298e110be56a",
      "tree": "137d322b97e3655d6dc50d8ec492239907336a80",
      "parents": [
        "856d2116bf4bfed20b7df113dadf6e0555994b42"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 29 17:13:16 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 29 17:13:16 2012 -0700"
      },
      "message": "test-resample: clip instead of overflowing\n\nChange-Id: I550e5a59e51c11e1095ca338222b094f92b96878\n"
    },
    {
      "commit": "cbe4b36e67baba4ec1a4d7a9db9461e09c714f0c",
      "tree": "69bdaf2020f496103db4f03211479bd2dae8eb26",
      "parents": [
        "bd37975395b6517e155f6195d2300872bc26ee70"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 18 15:51:03 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 26 16:20:49 2012 -0700"
      },
      "message": "Use ALOGVV instead of commented ALOGV\n\nChange-Id: I17bdb5274877760c7edaa31416020d349082e593\n"
    },
    {
      "commit": "67360781c2d139a71d924ae24880b56adb7c1605",
      "tree": "5cd26588d63785fb21057cc6ccc1c07f6e6ec1d0",
      "parents": [
        "bd37975395b6517e155f6195d2300872bc26ee70"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 26 16:10:30 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 26 16:10:30 2012 -0700"
      },
      "message": "StateQueue comments\n\nChange-Id: Id8c76d1e2ab5201e7ab3875f1dbcc0a126e611a4\n"
    },
    {
      "commit": "d82c750ca261d01caa405f555eef34b7af8d9b63",
      "tree": "dc23a31cd5bf88c18fc4fdf9ca2f28015090fb9d",
      "parents": [
        "bd37975395b6517e155f6195d2300872bc26ee70"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 08 12:33:37 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 26 15:50:45 2012 -0700"
      },
      "message": "Document AudioMixer hard-coded limits\n\nChange-Id: I83ea8bed375f251260945db788bdb5f280dba12d\n"
    },
    {
      "commit": "8a831724c52164a62e22e8e4d5f5180501e3c307",
      "tree": "038623e579f72ecd8a67b2efc9080794fc0e0c20",
      "parents": [
        "bd37975395b6517e155f6195d2300872bc26ee70"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 11:44:31 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 26 15:47:24 2012 -0700"
      },
      "message": "Clean up constructor and derivation whitespace\n\nChange-Id: I47d688a9c10c4c3c868accc34102fb402ebcac62\n"
    },
    {
      "commit": "288a6fd72949dec167c5421d5bc977d1ccb75561",
      "tree": "51a77fa189f0672f939e2f568a239a6b8dc2444b",
      "parents": [
        "bd37975395b6517e155f6195d2300872bc26ee70"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 06 11:34:22 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 26 15:44:19 2012 -0700"
      },
      "message": "Mark volume fields private\n\nChange-Id: I8ffca0460195263d159aa13015c246122d8556a2\n"
    },
    {
      "commit": "bcf5220780fbf24477bf8d6148581307356c97b7",
      "tree": "ceb0fe3fbc789693b211e751452ec6c1d9ccf03b",
      "parents": [
        "51ba3c7c9a4a238cdef57ad75a2d8f406ffd4515"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Oct 21 01:01:38 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 26 14:58:43 2012 -0700"
      },
      "message": "a test app for the resamplers\n\nChange-Id: I66852d90d384f1d9e77b51ad1a1ebdbaf61d0607\n"
    },
    {
      "commit": "51ba3c7c9a4a238cdef57ad75a2d8f406ffd4515",
      "tree": "235f1520ef4211d676bb9272a73ffb0e1c82b52c",
      "parents": [
        "3bd72cc23f74e750069a2943ad3d5c9af3be4b55"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 26 14:11:01 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 26 14:58:43 2012 -0700"
      },
      "message": "reenable the cubic resampler\n\ncubic resampler was disabled because it hadn\u0027t been qualified,\nhowever after I did some tests, it does improve significantly\nthe sound quality over the order-1 resampler, even if it is\nstill quite bad.\n\nalso HIGH_QUALITY resampler was partially disabled, it\u0027s now\nfully enabled. It\u0027s a big improvement over the cubic resampler\nin terms of aliasing noise (it\u0027s not as good in the pass-band).\n\nChange-Id: I70e3658c255896588642697be9eb594ff4ec0f8b\n"
    },
    {
      "commit": "3bd72cc23f74e750069a2943ad3d5c9af3be4b55",
      "tree": "aff530f634a7ce504d1e7b7926136f06bea481e4",
      "parents": [
        "04b49594036f17bc260af711becd13924774caae"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 26 13:48:42 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 26 14:58:42 2012 -0700"
      },
      "message": "improve SINC resampler coefficients\n\n- we increase the interpolation precision from 4 to 7 bits\nthis doesn\u0027t increase CPU power required, it only increases the\nsize of the filter table but significantly reduces the noise\nintroduced by the quantization of the impulse response.\n\n- the parameters of the filter are set such that aliasing is\nrejected at 80 dB below 20 KHz. Because we don\u0027t use a lot of\ncoefficient (to save compute power), there are quite a bit of\nattenuation in the pass-band: starting at 9KHz for the\ndown-sampler (48 to 44.1), and starting at 13 KHz for the\nup-sampler (44.1 to 48) -- the transition band is about 15 KHz.\n\nChange-Id: I855548d2aab8a0fb0d2a2da3a364b6842d7d3838\n"
    },
    {
      "commit": "d5f327e5f1d9d43208c59ae1f47187fb375fb941",
      "tree": "4d76d66ac6f79f535205c7c22b2960007593be7e",
      "parents": [
        "8516ae9f56fd6d2ae6c6b5534609ae2ae3725d10",
        "8e8f9758d01c8be201ea5601b4f724543ca7d27e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Oct 23 07:35:31 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 23 07:35:31 2012 -0700"
      },
      "message": "am 3aaa4e30: am c4640c9e: Increase allowed number of VHQ resamplers to 3\n\n* commit \u00273aaa4e30f7663673f3453d3f4671b1119f1802fd\u0027:\n  Increase allowed number of VHQ resamplers to 3\n"
    },
    {
      "commit": "f1b2a9b65a904b10f91482cc0389bea1f66a891f",
      "tree": "3319adf1a9f46b75405d42d996fee1209eb64fbb",
      "parents": [
        "b833a1bad02b06182d4a2406fbcc1c7dac7c2663"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Oct 22 17:09:27 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Oct 22 17:09:27 2012 -0700"
      },
      "message": "Increase allowed number of VHQ resamplers to 3\n\nBug: 7378660\nChange-Id: I69e33ca2eb4bb9bd38e2c63df62cd1130d68baf6\n"
    },
    {
      "commit": "8516ae9f56fd6d2ae6c6b5534609ae2ae3725d10",
      "tree": "5137d1783700e2d78e4c0f22a26bb8cb8e5b5af1",
      "parents": [
        "10ef71a886b3d0ad0b3935389dad6717370deda1",
        "02346f4c960d9eefb12dccb93fdb07a67c7f34f0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 22 11:54:12 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 22 11:54:12 2012 -0700"
      },
      "message": "am 7f4d5714: am e384d75b: Merge \"Fix a typo that caused the high quality resampler to produce garbage\" into jb-mr1-dev\n\n* commit \u00277f4d5714f3f0ab4efaf2d0929a9f984467ef95c7\u0027:\n  Fix a typo that caused the high quality resampler to produce garbage\n"
    },
    {
      "commit": "ebed918320bdacdb225f679a8d7135d1acd3fe51",
      "tree": "1f0157a53d0c958ab22a50871622983ac7579934",
      "parents": [
        "df4fca94ecad030e980e0c0f6b7d9711726d9638"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Oct 21 03:04:05 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Oct 21 03:04:05 2012 -0700"
      },
      "message": "Fix a typo that caused the high quality resampler to produce garbage\n\nthe problem is that if libaudio_resampler is present, it is those\ncoefficients that will always be selected, but the correct\nmeta-data.\n\nBug: 7385994\nChange-Id: Ieebeb37b4dfb62a1a051bc29fae2ce056dbc6621\n"
    },
    {
      "commit": "d3eb71055a81cf405ae3fac8172d3fd592ed2e4b",
      "tree": "601c6f79a81d778c384af394fc9c45eaedbeabae",
      "parents": [
        "882863ff933605bc9376df0303bd13fd0e3d99e7",
        "10640a5d5041629433e1c4aa49e4d3281e408542"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 19 13:22:21 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 19 13:22:21 2012 -0700"
      },
      "message": "am 424b4a57: am 291f824e: Remove active track when thread goes to standby\n\n* commit \u0027424b4a57f5e1e8bd99cb619398389a467ec41f92\u0027:\n  Remove active track when thread goes to standby\n"
    },
    {
      "commit": "126c910f48a1e1b7a8044157d95f774d5e142316",
      "tree": "7c56b9ad56ac16e1fc095cc4903f1ea7f271e988",
      "parents": [
        "569661450b446f957f58b6690bff30f94542b737"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 18 15:51:31 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 18 16:54:00 2012 -0700"
      },
      "message": "Remove active track when thread goes to standby\n\nBug: 7369232\nChange-Id: I7ff9f525dad4be0aef562a53015b06ee7d3d50f1\n"
    },
    {
      "commit": "ca794bc9fb43f24addff4c1915d397269d1568ab",
      "tree": "c5f5fdf6fcda6ad0cc31f4d7a96855966671b301",
      "parents": [
        "a15809ee0dbfd82afd28c4ea2014f682934857b1",
        "bb14027200efa61b1c6a84bc93206f79c4237c4a"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Oct 16 11:34:52 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 16 11:34:52 2012 -0700"
      },
      "message": "am aa00830e: am bbe11e46: Merge \"Fix track estimation for presentation complete\" into jb-mr1-dev\n\n* commit \u0027aa00830e46cb7494af7217246788c1bca83b1d04\u0027:\n  Fix track estimation for presentation complete\n"
    },
    {
      "commit": "115b87ecf6182698b54055288d0f8710308b324d",
      "tree": "59588554a539124b69c0f99290ad88d053ca6b57",
      "parents": [
        "6ebb67493075ecc817207bc0ca0305cde64b5c3b"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Oct 16 10:29:01 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Oct 16 11:00:11 2012 -0700"
      },
      "message": "Fix track estimation for presentation complete\n\nAudio tracks were not using the right latency estimation for\n signalling the completion of their presetation. This caused\n the synchronization mechanism between playback and record to be\n off, and a synchronized recording would contain some of the audio\n that was meant to be over once recording would start.\nUse the playback thread\u0027s latency reporting which takes the audio\n pipe into account.\n\nBug 7237669\n\nChange-Id: I23a907a53ad0b0d68d246789ec595a77a79fced5\n"
    },
    {
      "commit": "b9c24111ecc135d47d563eaa3609730b6b4ee5e0",
      "tree": "0222bb760921fc560e4692be37bcb04c6cc66c30",
      "parents": [
        "142dbcfe437524bc0e8d546d2d43cab2a3ea625b",
        "f84ae1292bc9a6a727ab5aeb08e097054b7d4b5a"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Oct 10 17:23:19 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 10 17:23:19 2012 -0700"
      },
      "message": "am 0f95fadb: am 7e2c0a15: Merge \"Support querying active record sources\" into jb-mr1-dev\n\n* commit \u00270f95fadb8a3ee402f2c51a932a06f1f685ab2d35\u0027:\n  Support querying active record sources\n"
    },
    {
      "commit": "e3f641fd9348bf7f4c07f6cc707347fccea1439c",
      "tree": "0b9e59cf60f2ee5edd7e6fe1fb3d6ea6aed8577f",
      "parents": [
        "a70995f9dec3c2915792113c9c228b5b6474a915"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Oct 10 12:11:16 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Oct 10 12:11:16 2012 -0700"
      },
      "message": "Support querying active record sources\n\nAdd support for querying whether there is currently a recording\n underway from the specified audio source.\n\nBug 7314859\n\nChange-Id: I986b231a10ffd368b08ec2f9c7f348d28eaeb892\n"
    },
    {
      "commit": "1e908f4d342f7c7f0535d254837fc2e95a535650",
      "tree": "d864464943b8a9cf67015cb55ce44a360800278a",
      "parents": [
        "d92e9a30bf30151099468dece88c8dda52b9186c",
        "3db8b1f24d8266e24797a5095521521f177f4809"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Oct 09 11:34:32 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 09 11:34:32 2012 -0700"
      },
      "message": "am 80dfc5dc: am 350d3b68: Merge \"audio policy: deprecate ro.camera.sound.forced\" into jb-mr1-dev\n\n* commit \u002780dfc5dc7ec6d20beb0360e8efcc5331f4d25d06\u0027:\n  audio policy: deprecate ro.camera.sound.forced\n"
    },
    {
      "commit": "116bc97164e0fa836744f31e54779b5a7a8c9db4",
      "tree": "d5c6b169afe3ef577e1b76113b65220ea54cda8e",
      "parents": [
        "2b5232dd49d006a08c35ba865a6801acdb15483c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Oct 08 16:00:36 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Oct 08 16:00:36 2012 -0700"
      },
      "message": "audio policy: deprecate ro.camera.sound.forced\n\nThe volume and routing policy of AUDIO_STREAM_ENFORCED_AUDIBLE is\nnow controlled by AudioService.\n\nDo not read ro.camera.sound.forced is not needed anymore.\n\nBug 7032634.\n\nChange-Id: Ic0a6396fc4b6efb91cdb4dffe0c8eb035d0440bd\n"
    },
    {
      "commit": "9c54cca8444bd00bba5173815d3029d45f244960",
      "tree": "40308d772774197953c694c0768ba0df517a4c94",
      "parents": [
        "5b9c992c7128bf857e82d42ac8027285ad86b1e0",
        "577e9cbdc02ae2daa84a608ea2d92a55754dfd99"
      ],
      "author": {
        "name": "ty.lee",
        "email": "ty.lee@lge.com",
        "time": "Sun Oct 07 23:43:45 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Oct 07 23:43:45 2012 -0700"
      },
      "message": "am 6f45866e: am c8823995: audioflinger/resampler: add build source for libaudio-resampler\n\n* commit \u00276f45866e8a942b2a8a21c75708a717b0c8a8f120\u0027:\n  audioflinger/resampler: add build source for libaudio-resampler\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": "ea967355de0b985c8111abd57a23f566fe355260",
      "tree": "f1ee479e635cc32949f88728e9a3391bb65e88ff",
      "parents": [
        "08102ee8425e39282893c2e84d2914e867124310",
        "3dde1669eaa212c4da725e9d2fe899452d022760"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 04 12:05:44 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Oct 04 12:05:44 2012 -0700"
      },
      "message": "resolved conflicts for merge of f12b1c81 to master\n\nChange-Id: I914a11706bd01a198e2137e0c12af0fc92ffa02b\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": "c704ce6c0101f4933587fb2799618fb55e80f69a",
      "tree": "5a4a741b2f6913cf3bef7dd7742d270e1c18d8bd",
      "parents": [
        "1103c305367d0c2494ae2f5ecb122871a8ef0cac",
        "6dff81c4bc955ca12cfe8c8a115ebbde359bc5eb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Oct 01 11:15:51 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 01 11:15:51 2012 -0700"
      },
      "message": "am 14bab416: am 087dd8e7: Disable audio watchdog\n\n* commit \u002714bab41620ed8e667c79242e5ad0f4bd84264758\u0027:\n  Disable audio watchdog\n"
    },
    {
      "commit": "0033ac1b0c2258077ad60792b5c60807b359fd0e",
      "tree": "6eecde7f75480730b1582c9eb04ea77a858452dd",
      "parents": [
        "f8e2c9821075156651254661a7ccbe5faeec45d4",
        "fdcd4f6c2086fc66e325808707cd85810a91ea4f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Oct 01 11:15:50 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 01 11:15:50 2012 -0700"
      },
      "message": "am 7fff6091: am 7165491b: Merge \"bug 7253033 clean up before closing an output\" into jb-mr1-dev\n\n* commit \u00277fff6091174451170912099954725c8109f4c559\u0027:\n  bug 7253033 clean up before closing an output\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": "2fa114de80a5f6afd2055054a163c6d7e2ef71bc",
      "tree": "d899700feaafc73126d80a4e0c7f9dab75d6c2c8",
      "parents": [
        "9bb6e65def86afb36a03643c50456e646cdf98a8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Sep 28 14:49:39 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sun Sep 30 11:11:26 2012 -0700"
      },
      "message": "bug 7253033 clean up before closing an output\n\nAn output can only be closed if there is no lock contention that\n prevents ThreadBase::exit() from being blocked. If an output\n device is waiting for an operation to complete (here a write\n in the remote_submix module, because the pipe is full), signal\n the module that it\u0027s entering the \"exiting\" state.\n\nChange-Id: I8248add60da543e90c25a4c809866cdb26255651\n"
    },
    {
      "commit": "395f2c8dd0d4b87c5b31cfa838885ae8169adff8",
      "tree": "4eaf1b617d73506981c589d2968a96543fcb6c3c",
      "parents": [
        "97ec89096a31fbdacf01743b1c979c29fdc9e923",
        "035bf1d19f2617029c94f0d3336b06a2cac65ea0"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Wed Sep 26 20:27:11 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 26 20:27:11 2012 -0700"
      },
      "message": "am 33afc99b: am 6d6a4d3f: Merge changes Ia4414241,I34f5d36a into jb-mr1-dev\n\n* commit \u002733afc99b78977ab94ba3fe86f485c6e2a33563aa\u0027:\n  audioflinger: use resample coefficients from audio-resampler library.\n  audioflinger/resampler: Add VERY_HIGH_QUALITY audio-resampler\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": "f818ccfbbfc574d179c4639af6b41c83c368a699",
      "tree": "9bd280bb488507f32db92c24e3fe9c837b1290cd",
      "parents": [
        "8000e368cbdcb8a2a712c9c92f6c97526b36f0ed"
      ],
      "author": {
        "name": "SathishKumar Mani",
        "email": "smani@codeaurora.org",
        "time": "Mon Sep 24 11:48:11 2012 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Wed Sep 26 18:48:34 2012 -0700"
      },
      "message": "audioflinger/resampler: Add VERY_HIGH_QUALITY audio-resampler\n\nChange-Id: I34f5d36ae60010ec64222d6660d10a84da3bf566\nBug: 7024293\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "7ab148fd703107f8f4d64483d1f03986bed3f38d",
      "tree": "3d38aa6ee13d0fe457817520736ff6ce8687aa48",
      "parents": [
        "2cc7525074d0784b75c9464ff3ab324f091b9428",
        "69fe8f3d3ac51f9f577418f3d209799fd86311d7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Sep 26 10:14:45 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 26 10:14:45 2012 -0700"
      },
      "message": "am 070936d0: am 842c5d95: Revert \"Don\\\u0027t wait for presentation complete if terminated\"\n\n* commit \u0027070936d0530b535ccc9b404872f8333368bbfb02\u0027:\n  Revert \"Don\u0027t wait for presentation complete if terminated\"\n"
    },
    {
      "commit": "52013e7ad02bd22b19a64bdccaa953c7b4b4d448",
      "tree": "68c0baa1e4d15d5fed04fb49a56660d08db3a216",
      "parents": [
        "4c6db4ce1e2760682d1c9e66448dbb39bb5d14d8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Sep 26 08:34:10 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Sep 26 08:55:08 2012 -0700"
      },
      "message": "Revert \"Don\u0027t wait for presentation complete if terminated\"\n\nThis reverts commit 44cda3a4e7ca3de0db9cb49145def3803b03ebb4\n\nChange-Id: I7fd29b77690dab057ac966a42fb198b2772f092c\n"
    },
    {
      "commit": "2de3067ebf718007c4bacd3df4fba6f070c1538b",
      "tree": "67a4a1dd702fd26f58898084c8349d7139c05e0a",
      "parents": [
        "034be0f7cf4df557efc60d2791cf413765926d4c",
        "7dc8a62de457d1b6c70ecb4f264ccad9c6eb73c1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 25 17:26:25 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 25 17:26:25 2012 -0700"
      },
      "message": "am 512ba315: am cc0f1cfb: Implement android.media.AudioManager.getProperty()\n\n* commit \u0027512ba3150d45803ebadbefe45977a5eeed323540\u0027:\n  Implement android.media.AudioManager.getProperty()\n"
    },
    {
      "commit": "4c6db4ce1e2760682d1c9e66448dbb39bb5d14d8",
      "tree": "a8ffad6bc9f78c05eefc85cbfdb782eb40b50b4b",
      "parents": [
        "64f935ebeae38828b3704e93fa5e7113f7839110"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 24 11:27:18 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Sep 25 17:13:18 2012 -0700"
      },
      "message": "Implement android.media.AudioManager.getProperty()\n\nBug: 6635041\nChange-Id: I3386a4a6c226bc4eceaf65556119e4fb15f73224\n"
    },
    {
      "commit": "aeda50a708e41a000c509ee52cc6876ec48c191c",
      "tree": "986d5276959b4585b5574778cc73b5368276b1c8",
      "parents": [
        "4eec6571e73c484990900c9e9f99a233827d73bb",
        "925bed5fbf5f6e15ef0292fd4845b190af0027dd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 25 12:35:23 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 25 12:35:23 2012 -0700"
      },
      "message": "am 4680802d: am b6ba2fd0: audioflinger: improve record start and thread exit\n\n* commit \u00274680802d540379fda8a831167d8e7f2067327d90\u0027:\n  audioflinger: improve record start and thread exit\n"
    },
    {
      "commit": "67d8ac3a8b49b114366684cd6310493423581056",
      "tree": "2e44b42fa993f87681218453705dc0b67da25c24",
      "parents": [
        "2eddc1d2f99fb280786e30ec91f3c5df78556166"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 24 15:02:17 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 25 09:40:00 2012 -0700"
      },
      "message": "audioflinger: improve record start and thread exit\n\nUse broadcast() instead of signal() on the\nthread wake up condition when starting record or requesting thread\nexit to make sure that if another thread is waiting for the same\ncondition (e.g binder thread calling setParameters()) the mixer\nthread will be woken up.\n\nBug 7184317.\n\nChange-Id: I3154a4509ca7af6ffae5236e522b0fab8e75ed06\n"
    },
    {
      "commit": "ca301b7ec0a2a005a924d1cc7a4e988843722055",
      "tree": "dc673f5ab0fb81da37d7df3dd44207a6c59115a7",
      "parents": [
        "b777b2757b299c5fdb26d729ce405ab5b1c698ec",
        "1ee422d344174d387f45d5cdc366cb9a0cd71b85"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 24 13:55:37 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 24 13:55:37 2012 -0700"
      },
      "message": "am 6aee72a4: am 8d452f1c: Merge \"Check clock_gettime(CLOCK_MONOTONIC) for failure\" into jb-mr1-dev\n\n* commit \u00276aee72a479afb15498a4dc31327c5d5ff7ee4294\u0027:\n  Check clock_gettime(CLOCK_MONOTONIC) for failure\n"
    },
    {
      "commit": "7ca821d51972bb83fa900cf2206ae98f29b33ca9",
      "tree": "717661c94824cf168da0c4b93394d21972bda419",
      "parents": [
        "595f54fd2d4990b2ff311314b76a224969d7e79e",
        "99ae06be60d7ccd753a0808191583225e5533f3a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 24 13:51:58 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 24 13:51:58 2012 -0700"
      },
      "message": "Merge \"Check clock_gettime(CLOCK_MONOTONIC) for failure\" into jb-mr1-dev"
    },
    {
      "commit": "99ae06be60d7ccd753a0808191583225e5533f3a",
      "tree": "dbffc4a569cf43347fb77e37e8f718546b838770",
      "parents": [
        "4bf45909bcccb46acac61c155edd031e85b9dc12"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 24 11:29:00 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 24 11:48:20 2012 -0700"
      },
      "message": "Check clock_gettime(CLOCK_MONOTONIC) for failure\n\nBug: 7100774\nChange-Id: I15a84a19bb6d6ef1d9dac4beaa03587638196404\n"
    },
    {
      "commit": "b777b2757b299c5fdb26d729ce405ab5b1c698ec",
      "tree": "8e8308ca79aab87ba18d8e239c4a6eb6f5a465ad",
      "parents": [
        "eec1151f216f980c78927478311ed12e59f60760",
        "3995ba03ea7075707be7269c766adacf0dc2b483"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 24 10:41:17 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 24 10:41:17 2012 -0700"
      },
      "message": "am 842feefd: am c0c3b298: Merge \"fix end of track presentation on suspended output\" into jb-mr1-dev\n\n* commit \u0027842feefd25f3ac03de3cd9bcc5bc7627abec6ebc\u0027:\n  fix end of track presentation on suspended output\n"
    },
    {
      "commit": "6090a17389fc86ec6d7b16b358c540fa6627923f",
      "tree": "8bd80fc89227fe62dcea06391b4e6c4395073866",
      "parents": [
        "4bf45909bcccb46acac61c155edd031e85b9dc12"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Sep 23 15:20:50 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Sep 23 15:20:50 2012 -0700"
      },
      "message": "fix end of track presentation on suspended output\n\nThe code detecting the end of an audio track presentation before\nremoving it from the active track list is based on the\ncount of audio frames sent to audio HAL. When an output stream\nis suspended (e.g. A2DP when SCO is active), this count does not\nchange and a track in stopped state will never be removed from\nactive track list causing the mixer thread to never release\nthe wake lock.\n\nThe fix consists in incrementing the audio HAL frame count even\nif the output is suspended.\n\nAlso fix a problem in getRenderPosition() when the output is suspended.\n\nBug 7167534.\n\nChange-Id: I3be836cbbea29b65dc087199cac6a1cd84c0a41d\n"
    },
    {
      "commit": "1cbb9253100d428e52330cc71f09db08cfdcf6ae",
      "tree": "909fdecf47fc74e1438fb6ab88790ada301d1cb3",
      "parents": [
        "550f0bc9cbe8ea44b380eafa2ee674c62d10b819",
        "a04d79e542e36bd99a47b51ab3741c97cb764401"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 14 10:28:40 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 14 10:28:40 2012 -0700"
      },
      "message": "am 01dcf4de: am 896adcd3: audioflinger: send priority request from a thread\n\n* commit \u002701dcf4de81ed0f9b6942dea2787463bf9c945a37\u0027:\n  audioflinger: send priority request from a thread\n"
    },
    {
      "commit": "550f0bc9cbe8ea44b380eafa2ee674c62d10b819",
      "tree": "0e6dee26ccced2d12c24b5321ced5ec550feb7d9",
      "parents": [
        "0bcf32db8661ab2da377843af2aefb0ac8fd878a",
        "d48e84c2aa9728c347e9e46f26883c160372e6d8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Sep 14 10:28:26 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 14 10:28:26 2012 -0700"
      },
      "message": "am 868bb58e: am 4362f530: Handle audio HAL returning 0 bytes in record thread\n\n* commit \u0027868bb58ed5873edb1d138f82d4751823ef433ebb\u0027:\n  Handle audio HAL returning 0 bytes in record thread\n"
    },
    {
      "commit": "ef6be0bb71c08db7e9e9274d70edffb95f0da25f",
      "tree": "feda8b0cdaa60a4845f6f6a311c3ddbb4c9811a6",
      "parents": [
        "89b4470bc926c4b5de59deaff2b6a4993ab6cab7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 13 11:18:23 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 13 17:03:00 2012 -0700"
      },
      "message": "audioflinger: send priority request from a thread\n\nWhen creating a fast AudioTrack, a request is sent to SchedulingPolicyService\nto elevate the requesting thread priority. This generates a binder\ncall into system_server process and to a JAVA service via JNI.\nIf the thread from which the track was created is in the system_server\nprocess and does not have the \"can call java\" attribute, a crash occurs because\nthe binder optimization reuses the same thread to process the returning binder\ncall and no JNI env is present.\n\nThe fix consists in sending the priority change request from the AudioFlinger\nmixer thread, not from the binder thread.\n\nThis also reverts the workaround in commit 73431968\n\nBug 7126707.\n\nChange-Id: I3347adf71ffbb56ed8436506d4357eab693078a3\n"
    },
    {
      "commit": "3fc73b477cba93ff74e46d93ed40ebe1cfced138",
      "tree": "bf9783e51b89fa00e908b30f7444d12a1a77e3aa",
      "parents": [
        "209132cebb721486e04b0e4686985e0e73502fc3",
        "a71ee31e562d5663fa768f705ccecf965e012f2e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 13 14:11:56 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 13 14:11:56 2012 -0700"
      },
      "message": "am 6777e539: am f4bca03d: Merge \"Don\\\u0027t deadlock on AudioRecord start when reads return 0\" into jb-mr1-dev\n\n* commit \u00276777e539f0479ed8ca13bfeed63edf9402b00655\u0027:\n  Don\u0027t deadlock on AudioRecord start when reads return 0\n"
    },
    {
      "commit": "89b4470bc926c4b5de59deaff2b6a4993ab6cab7",
      "tree": "be8150e982c53419fdb3d5ca2047fcdc344877c4",
      "parents": [
        "ae4b97ac25c1a1a5846731962c246c9811fb041f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Sep 13 11:44:00 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Sep 13 12:02:15 2012 -0700"
      },
      "message": "Handle audio HAL returning 0 bytes in record thread\n\nEnter standby when HAL returns an error, but also consider 0 bytes\n  returned as NOT_ENOUGH_DATA.\n\nChange-Id: Ica83142310e9c176f936e0440571a6034cbc575f\n"
    },
    {
      "commit": "063c1eac60d7cee5d6f1ee61a10f0b6027782357",
      "tree": "bee6aa994964f31537714cdf3a054107e829158e",
      "parents": [
        "cd0817e208a5420cf6787e766ec017676cbe4e72"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Sep 13 11:08:37 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Sep 13 11:08:37 2012 -0700"
      },
      "message": "Fix build in AudioFlinger/FastMixer\n\nCommit was missing some changes to modifications to send session ID\n from AudioFlinger to AudioMixer.\n\nChange-Id: I7daeaf4eff243b5287bef63be86a87acf408374a\n"
    },
    {
      "commit": "607364600e4f6ef8bebec8958e16e7fb0bcb7d25",
      "tree": "dd7c19507d39379c06116e54c6e2de979ef90956",
      "parents": [
        "71ea9f024c3943160110d9aa15b082b66516f72e"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Sep 12 18:48:33 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Sep 12 19:40:30 2012 -0700"
      },
      "message": "Don\u0027t deadlock on AudioRecord start when reads return 0\n\nWhen calling start() on an AudioRecord with a HAL that\n returns 0 on a read() operation, the start blocking\n condition was never unblocked.\nAdd a boolean to track the first read operation so the returned\n number of bytes (mBytesRead) is only evaluated after that\n first read.\n\nChange-Id: I8c735a00d48cd6a0da467ccdf75d3616b38f6afa\n"
    },
    {
      "commit": "a59d27196cc411331efbcce5dde817c7273a64c3",
      "tree": "e97e28ac0352ef4c73fb79339820d8b434443bf8",
      "parents": [
        "fd6e3ac0f85e288247b1783a17cc5b3110c35a89"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Sep 12 15:47:07 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Sep 12 15:49:56 2012 -0700"
      },
      "message": "Communicate audio session ID to downmixer\n\nThe audio downmixer effect might need the audio session Id, pass it\n from the track creation in AudioFlinger to the downmix effect\n creation in AudioMixer.\n\nChange-Id: I836873eebd6711f1048fce81cd2eb29b94f0ad0c\n"
    },
    {
      "commit": "cff7137411e737dfb783013c23841ccb335e5f5b",
      "tree": "08b899f1ab738d7e0ed11716ff7b786440a4cd8a",
      "parents": [
        "d6de933cfcc088d7c80e26bcca4d3b20b1573225"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Sep 10 18:58:27 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Sep 10 18:58:27 2012 -0700"
      },
      "message": "Communicate audio session ID to downmixer\n\nThe audio downmixer effect might need the audio session Id, pass it\n from the track creation in AudioFlinger to the downmix effect\n creation in AudioMixer.\n\nChange-Id: I5e29540542ae89cf4a0cdb537b3e67f04442a20a\n"
    },
    {
      "commit": "9b827b72202038a321a9b038165971bed042311c",
      "tree": "1a0af1c04258eafaf7cb30f74473693c8b52236f",
      "parents": [
        "e1525451b585e52f3a30fab58ad1d890ec2a26b8",
        "d93b53f2adf90a0e3bcaf1c6a171e4ad6f26928a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Sep 10 17:11:26 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 10 17:11:26 2012 -0700"
      },
      "message": "am f53e33fb: am 6ce3d19c: Merge \"Add outlier statistics for fast mixer cycle times\" into jb-mr1-dev\n\n* commit \u0027f53e33fbb03f7de07d79f5f99f73d7b2d0bbed03\u0027:\n  Add outlier statistics for fast mixer cycle times\n"
    },
    {
      "commit": "644f98718e604a58545918d99b1438e12b3a973f",
      "tree": "262ae1599c0d5a8d5a9da3191b1c1f7bfe8f5de6",
      "parents": [
        "53d2c6e7afe43b75c58de0cebd6ff9a06b43227c",
        "6a554118b2d3d0e1785ba32321954955293827e1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 10 17:06:58 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 10 17:06:58 2012 -0700"
      },
      "message": "am 1fbb83b6: am 85396642: Merge \"audioflinger: changes for new audio devices enums\" into jb-mr1-dev\n\n* commit \u00271fbb83b665720f2629d7a3759a0a7b61b4f04571\u0027:\n  audioflinger: changes for new audio devices enums\n"
    },
    {
      "commit": "b89909df83e55af1726ebc97d1a5ecb4905a91ef",
      "tree": "eb4a3a851a92a571c005c84ae87ee78f58289144",
      "parents": [
        "82016dab001142124f1ab1eba1850b5687a4f936",
        "ba8a616c39259e98094440e9656a49a1cc96c976"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Sep 09 09:52:13 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Sep 09 11:54:29 2012 -0700"
      },
      "message": "Merge \"Add outlier statistics for fast mixer cycle times\" into jb-mr1-dev"
    },
    {
      "commit": "ba8a616c39259e98094440e9656a49a1cc96c976",
      "tree": "34fe77cb737f9f301532d3c10d51354fb3da1d52",
      "parents": [
        "fcd7f0f7a1a5cddf4b3014e41c7c6fce721f5a79"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 07 12:58:38 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 07 12:58:38 2012 -0700"
      },
      "message": "Add outlier statistics for fast mixer cycle times\n\nChange-Id: I31c964caeb8b5d9ae0a426224f030cdcb01114a0\n"
    },
    {
      "commit": "8895925e38d2521607fd2010f3f3b14ecd15962c",
      "tree": "19c97b89d39488f3d60fdc64eb953cda601a6823",
      "parents": [
        "741b47db87db45dad47d115ffcc67553184ffbe3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 28 14:26:53 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 07 10:32:00 2012 -0700"
      },
      "message": "audioflinger: changes for new audio devices enums\n\nThe ThreadBase class now has a separate member for input\nand output devices (mInDevice, mOutDevice).\n\nOnly query get_supported_devices() from audio HAL if the function\nis exposed and if the audio policy manager did not specify the\naudio module to open.\n\nAlso fixed bug in AEC preprocessing that would reset\nto default output device when an input device was given.\n\nChange-Id: I19d4d06aeb920b068e3ef31e6e6be6345ce5d67a\n"
    },
    {
      "commit": "6a9fa853b13e854793a9ae85adf6bb2c78c81dd5",
      "tree": "3bed590ba6b4169c0ab5471b38725ec61db2c6fc",
      "parents": [
        "89710de8a149433f8258d779806c294b183edbe7",
        "7935213b833811c0cf876398bb1c506dd57d2399"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 06 18:09:04 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 06 18:09:04 2012 -0700"
      },
      "message": "am e1659521: am d06ab147: Merge \"AudioFlinger: send audio source to audio effects\" into jb-mr1-dev\n\n* commit \u0027e16595211299534fe1b1986f66d55d250ffc1fea\u0027:\n  AudioFlinger: send audio source to audio effects\n"
    }
  ],
  "next": "2e9b0f24e7089fb23356871b2fdce771c2dae852"
}
