)]}'
{
  "log": [
    {
      "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": "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"
    },
    {
      "commit": "2e9b0f24e7089fb23356871b2fdce771c2dae852",
      "tree": "33e7d13c8564168cde0c68ebbe82a99e7dd80373",
      "parents": [
        "314079efa77c07255b2a2794eba470fccd1541fb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 31 17:44:06 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 31 18:44:28 2012 -0700"
      },
      "message": "AudioFlinger: send audio source to audio effects\n\nAdded support for EFFECT_CMD_SET_AUDIO_SOURCE audio effect\ncommand to inform preprocessings of current audio source\nselection for capture.\n\nChange-Id: Ib2418a9aa8114e8457fe828ecd43b230ed86cdd6\n"
    },
    {
      "commit": "8cd6a4a8199a84270231ca1f9212070b35e72815",
      "tree": "b76823aecd32ce3d83edef37624aa6abff768e3d",
      "parents": [
        "104b1dfb4c512088c577c12367ce6337889678ff",
        "a1859489b82bffbdbb68f4a00535a2fb18038379"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Aug 31 09:22:45 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 31 09:22:45 2012 -0700"
      },
      "message": "am 08d8228d: am b3428f7f: Merge \"Update audio comments\" into jb-mr1-dev\n\n* commit \u002708d8228d508adf26e1e6bdf44401ee3b7fcca22f\u0027:\n  Update audio comments\n"
    },
    {
      "commit": "2662ac9220c9e07cd343e78bf3a0c21ca3e4ffd1",
      "tree": "35ef8577dcf4d7b411a4944654ee01d7a544f1ee",
      "parents": [
        "18910b47dfaba1b9ef830687ad19b0db764c944e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 30 10:59:30 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 15:31:00 2012 -0700"
      },
      "message": "Update audio comments\n\nChange-Id: Ie7504d0ddb252f7e4d4f99ed0b44cfc7b1049816\n"
    },
    {
      "commit": "fdca11917d73c21971054aa8cb9fc9ae28fa3164",
      "tree": "1e2fa9cb50a9d9d26ae9e6fece44691b58c34f78",
      "parents": [
        "b26fdd2d8073b3758b68c04c28923071d58e564a",
        "259addf9bb1ff5f8bfb2b0c3bd7dad7a0d6391f5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 15:25:30 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 30 15:25:30 2012 -0700"
      },
      "message": "am b5720b1f: am c9936c72: Merge \"Remove dead code\" into jb-mr1-dev\n\n* commit \u0027b5720b1ff9262419cd331e56c75a60b291bc7694\u0027:\n  Remove dead code\n"
    },
    {
      "commit": "7f7d27eb0ee5dc7b0f52dd2c89791d14bfe82f29",
      "tree": "2dbe613d3b8eb996496eb8d8b8e2f89d439b78e4",
      "parents": [
        "f351faed1f54aac8a06b6685dc77a7764d7cf543"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 02 16:37:07 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 15:18:16 2012 -0700"
      },
      "message": "Remove dead code\n\nRecordThread::isValidSyncEvent() returns false, so most of\nRecordThread::setSyncEvent() is never executed.\n\nChange-Id: I0cf848beb46a367a45126d2df3073c5afa2ca59c\n"
    },
    {
      "commit": "b0dc8b57c7cc39a057170a0d1e5842bd866b1775",
      "tree": "b402b329bab0461cfa61e766adbdc3e015235cb1",
      "parents": [
        "9370462e8ff3f15bb2d2aca80f51564d4cecf7c6",
        "59e2147cb3548ad08fe8889b550e777a5da08d45"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 30 15:09:19 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 30 15:09:19 2012 -0700"
      },
      "message": "am c9beb01c: am b9cba9b7: Merge \"Move libnbaio out of AudioFlinger\" into jb-mr1-dev\n\n* commit \u0027c9beb01c800e6326051aee52a00659288c25c6eb\u0027:\n  Move libnbaio out of AudioFlinger\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": "4aa73099649056a39bd37e090c1fedd07c1ccbd5",
      "tree": "c5029af24115fba7e9ea55afd77e2da96bf099ed",
      "parents": [
        "445e9d6da8a953492af126e2e1406dedda3b4343",
        "916ecd0acb4c12568d029c027a7626fc422bd84c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 22 11:09:58 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 22 11:09:58 2012 -0700"
      },
      "message": "am 916ecd0a: am 0c676cd0: Make tee sink compile OK again\n\n* commit \u0027916ecd0acb4c12568d029c027a7626fc422bd84c\u0027:\n  Make tee sink compile OK again\n"
    },
    {
      "commit": "0c676cd04ff15cc7eacf6144b4aead6deaccf60c",
      "tree": "aa78389096aa639ab092b38eb2e58db1a2971567",
      "parents": [
        "30e65e7e2ec01e13e45b5e38552a34d2fbb3f866"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 22 09:27:41 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 22 09:28:22 2012 -0700"
      },
      "message": "Make tee sink compile OK again\n\nChange-Id: Ie865ceeabaeb698a62c11eac9f96e303c44c28ae\n"
    },
    {
      "commit": "b45786becf800ae7c36939c7bc92f54fe8253147",
      "tree": "4ddda2dab5c6c55745dfd2896b1b967603fee9a6",
      "parents": [
        "2ef6e196198b3c2961e7fbf4637a70d6b38085ca",
        "a6a266d0e148f085ac1f83c4a36d3cf940c59e24"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 13 11:44:40 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 13 11:44:40 2012 -0700"
      },
      "message": "am a6a266d0: am 106e8a42: const methods\n\n* commit \u0027a6a266d0e148f085ac1f83c4a36d3cf940c59e24\u0027:\n  const methods\n"
    },
    {
      "commit": "2ef6e196198b3c2961e7fbf4637a70d6b38085ca",
      "tree": "373463abd597604e9fca9d0ce7e66725b486ac8a",
      "parents": [
        "bfb3fec3341889226c66d72ab926c7de9553a125",
        "0319e9e31cb7b0033a3026b0305b78e2d48c6ec8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 13 11:41:09 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 13 11:41:09 2012 -0700"
      },
      "message": "am 0319e9e3: am 0dbb3560: Simplify AudioFlinger::PlaybackThread::isValidSyncEvent()\n\n* commit \u00270319e9e31cb7b0033a3026b0305b78e2d48c6ec8\u0027:\n  Simplify AudioFlinger::PlaybackThread::isValidSyncEvent()\n"
    },
    {
      "commit": "106e8a42038f9e90d5ff97f8ab6f1a42258bde9e",
      "tree": "af631b5e756cf711d5d9d34db2dffe02cf64e7e3",
      "parents": [
        "0dbb356050d0db9e0043dd43045c1864a933332b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 02 13:37:12 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 13 11:38:18 2012 -0700"
      },
      "message": "const methods\n\nChange-Id: I92e32ee16274c032c9d0ce910676be2a7fa52471\n"
    },
    {
      "commit": "bfb3fec3341889226c66d72ab926c7de9553a125",
      "tree": "5320b0e366a97dd05a0853ba342d598a54cbb713",
      "parents": [
        "2917080826e0d7cec47e8ec8891e9ee1c2535d6a",
        "b2f2d1644b9d1a823fc3b78a59893652b080b35d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 13 11:38:12 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 13 11:38:12 2012 -0700"
      },
      "message": "am b2f2d164: am d23eedca: Discard setSyncEvent() return value\n\n* commit \u0027b2f2d1644b9d1a823fc3b78a59893652b080b35d\u0027:\n  Discard setSyncEvent() return value\n"
    },
    {
      "commit": "0dbb356050d0db9e0043dd43045c1864a933332b",
      "tree": "4fe3b2ab60f96691faaaf50f163c92946954e6de",
      "parents": [
        "d23eedca9b5a1812891c05d89850ab7ee707040d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 02 16:36:50 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 13 11:35:47 2012 -0700"
      },
      "message": "Simplify AudioFlinger::PlaybackThread::isValidSyncEvent()\n\nChange-Id: I3e4af69b929d4ca04afaac26c7e41c89fce25b9c\n"
    },
    {
      "commit": "2917080826e0d7cec47e8ec8891e9ee1c2535d6a",
      "tree": "9bfe82cfffb47a63bb365e8f38aeaf1379fb1a58",
      "parents": [
        "bf4c5d9f3bdb6fd3889afdeb0312d54f6f2e8de3",
        "f02356254262ec4a56e5ec1b1abefe1849ba9f9d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 13 11:33:42 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 13 11:33:42 2012 -0700"
      },
      "message": "am f0235625: am a9599049: Merge \"Replace hard-coded \"2\" by a constant and comment\" into jb-mr1-dev\n\n* commit \u0027f02356254262ec4a56e5ec1b1abefe1849ba9f9d\u0027:\n  Replace hard-coded \"2\" by a constant and comment\n"
    },
    {
      "commit": "d23eedca9b5a1812891c05d89850ab7ee707040d",
      "tree": "9f0c4309ded6a390c49bbe70590ea568a7167307",
      "parents": [
        "a959904968f1d300fe86334bf5099ae2dc39ee28"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 02 13:35:47 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 13 11:31:55 2012 -0700"
      },
      "message": "Discard setSyncEvent() return value\n\nsetSyncEvent() returns a status_t which is sometimes ignored.\nEmphasize this is intentional by casting to void.\n\nChange-Id: Ic614988347cba36bd2504d7ad321594a355b0d9d\n"
    },
    {
      "commit": "a959904968f1d300fe86334bf5099ae2dc39ee28",
      "tree": "bf95afcaab7a56642d1bf6b88ad2699eeaf5af04",
      "parents": [
        "bd828233d3eda966bf7145108dde74616abd97fb",
        "3ed292031dc50c56110cdadb1e3778117e3be76a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 13 11:30:17 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 13 11:30:17 2012 -0700"
      },
      "message": "Merge \"Replace hard-coded \"2\" by a constant and comment\" into jb-mr1-dev"
    },
    {
      "commit": "037ac53aac0f51f2ccfaaa91822365c1c73c4365",
      "tree": "6552c46685738bf5baf41d8708066b823aaf64f5",
      "parents": [
        "7f3a8e4cb89fadffe31a12859721866d5ca02353",
        "0efd035854ad2c8d20100a740e054c4bf7b3e9a4"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Aug 10 12:48:51 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 10 12:48:51 2012 -0700"
      },
      "message": "am 0efd0358: am fcfc61da: am ff4c64d6: am c64a1787: Merge \"Fix initialization of audio mixer track resources for MIPS.\"\n\n* commit \u00270efd035854ad2c8d20100a740e054c4bf7b3e9a4\u0027:\n  Fix initialization of audio mixer track resources for MIPS.\n"
    },
    {
      "commit": "fcfc61da927e98d18cdcb53da8fa0a8a32ee1422",
      "tree": "7dd8aadcffc35c98504f35d69fe467c0a8e8f397",
      "parents": [
        "7edbacf24e60c01e2d3b10715ec8f9cc2f55c11a",
        "ff4c64d6b1b58494a1b15f1a664e5c421d095d15"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Aug 10 12:44:02 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Aug 10 12:44:02 2012 -0700"
      },
      "message": "am ff4c64d6: am c64a1787: Merge \"Fix initialization of audio mixer track resources for MIPS.\"\n\n* commit \u0027ff4c64d6b1b58494a1b15f1a664e5c421d095d15\u0027:\n  Fix initialization of audio mixer track resources for MIPS.\n"
    },
    {
      "commit": "3ed292031dc50c56110cdadb1e3778117e3be76a",
      "tree": "7aee0b1a5f518733eebcca574807d4de62066c06",
      "parents": [
        "0d27c65ddb5c968baa6db0c26e80f5c451bc52bc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 07 15:24:44 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Aug 09 15:34:46 2012 -0700"
      },
      "message": "Replace hard-coded \"2\" by a constant and comment\n\nBug: 6679403\nChange-Id: I6c2701f9afedc26540dfad0b4e23348bbc4cb01a\n"
    },
    {
      "commit": "e75640c4b06a5715622eeffd8d204f811284fd8c",
      "tree": "ca1f546b5da34856c906a736c0eb7942bf9b3b22",
      "parents": [
        "f768ada0f9eeaaaf9847da7a432375aed4d95828",
        "638f936d4dd0d4afdc952988ac6b6a9dcbb577e7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 08 15:11:50 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 08 15:11:50 2012 -0700"
      },
      "message": "am 638f936d: am 0d27c65d: Tune the overrun correction\n\n* commit \u0027638f936d4dd0d4afdc952988ac6b6a9dcbb577e7\u0027:\n  Tune the overrun correction\n"
    },
    {
      "commit": "3c507a754788872bdc19aa651180447c5456f191",
      "tree": "ed6d6a85a55ad3ec4a5879ee4c2e4dabc8ff515a",
      "parents": [
        "0d8b4d87a797963c0549284251a179b66da56316",
        "acc5c275f6affe789184436b7d40fb1656a4596f"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Aug 08 15:10:49 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 08 15:10:49 2012 -0700"
      },
      "message": "am acc5c275: am f6a35760: Merge \"AudioFlinger: fix timed audio\" into jb-mr1-dev\n\n* commit \u0027acc5c275f6affe789184436b7d40fb1656a4596f\u0027:\n  AudioFlinger: fix timed audio\n"
    },
    {
      "commit": "0d27c65ddb5c968baa6db0c26e80f5c451bc52bc",
      "tree": "62cdadd7e272d5f5f5f187767984ecb0c12b5080",
      "parents": [
        "e983aa4ff4d80af7702888e230b9aaa93a7b7e57"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Aug 07 10:38:59 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 08 14:28:42 2012 -0700"
      },
      "message": "Tune the overrun correction\n\nThe new overrun correction is: if the previous write() cycle time is \u003c\n50% of expected, then sleep enough extra to make the total cycle time \u003d\n95% of expected.  This should help compensate for HAL implementations\nthat have uneven cycle times due to sample rate conversion.\n\nBug: 6881638\nChange-Id: I5ab58afdfceee7ac523177f021fbf62d743d571a\n"
    },
    {
      "commit": "2c3b2da3049627264b7c6b449a1622f002210f03",
      "tree": "f99fadbfef22ff3b7709a505623371c22e39566c",
      "parents": [
        "ee578c0330319f04a48bccbdb26b53fea0388d04"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Aug 02 17:08:54 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Aug 08 11:28:15 2012 -0700"
      },
      "message": "AudioFlinger: fix timed audio\n\n(cherry picked from commit e20ac92c564a2f4e8123885807abdf0a78de0dd7)\n\n\u003e AudioFlinger: fix timed audio\n\u003e\n\u003e Addresses Bug 6900517.\n\u003e\n\u003e Finish up support for timed audio in the new FastMixer world.  Pay special\n\u003e attention to remaining lock-less and voluntary yield free on the FastMixer\n\u003e thread.  This fixes audio playback for Q on JB.\n\u003e\n\u003e Change-Id: Iaf815e58a1b1d0a0190051794bec8dc5c9231785\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nChange-Id: I9bd687acc345a05867af48e71116690fdb0ce1b5\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "ee578c0330319f04a48bccbdb26b53fea0388d04",
      "tree": "883382e0eabdcdff6c04a7df4b50d9cebffaf1c7",
      "parents": [
        "d8f178d613821c3f61a5c5e391eb275339e526a9"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Jul 23 17:05:46 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Aug 08 11:28:15 2012 -0700"
      },
      "message": "AudioFlinger: Better handling for master volume/mute\n\n(cherry picked from commit 93d906837e0e89aa1d9c913ab2b531b809f9bb9e)\n\n\u003e AudioFlinger: Better handling for master volume/mute\n\u003e\n\u003e Changes to address bug 6842827.\n\u003e\n\u003e When a HAL is loaded, cache whether or not the HAL supports\n\u003e set_master_volume/mute in the AudioHwDevice structure.  Store an\n\u003e AudioHwDevice in AudioStream(In|Out) structures instead of just an\n\u003e audio_he_device_t.  This give threads (PlaybackThreads in\n\u003e particular) access to the cached capabilities.\n\u003e\n\u003e When setting master volume/mute, change the system to always set the\n\u003e setting on all HAL which support it and also to set the setting on all\n\u003e PlaybackThreads.  Change PlaybackThreads to apply the setting at the\n\u003e in SW mix stage of the pipeline if its assigned HAL does not support\n\u003e the setting, or to ignore the setting of the assigned HAL does support\n\u003e it.\n\u003e\n\u003e Change-Id: Ia14137a30b4c3ee6f2d7ddcc8cba87bf5eec87f4\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nChange-Id: Icb6bc13764e100a2003eb1dee2231132ab287d98\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "d8f178d613821c3f61a5c5e391eb275339e526a9",
      "tree": "93038d06c70535eeebc364e9f86cedbec074802c",
      "parents": [
        "3478eaa23c19dbbe473be70e8f3cc0c904d2465c"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Fri Jul 20 14:51:35 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Aug 08 11:28:15 2012 -0700"
      },
      "message": "Change audio flinger to user HAL master mute if available\n\n(cherry picked from commit 91de9b56282d126ffb36344266af5fee3cefcfdd)\n\n\u003e Change audio flinger to user HAL master mute if available\n\u003e\n\u003e Hand merge from ics-aah\n\u003e\n\u003e \u003e Change audio flinger to user HAL master mute if available: DO NOT MERGE\n\u003e \u003e\n\u003e \u003e Replicate the pattern used for HAL master volume support to make use\n\u003e \u003e of master mute support if the HAL supports it.  This is part of the\n\u003e \u003e change needed to address bug 6828363.  Because of the divergences\n\u003e \u003e between ICS and master, this change will need to be merged by hand.\n\u003e \u003e\n\u003e \u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\u003e \u003e Change-Id: I6d83be524021d273d093bcb117b8f2fe57c23685\n\u003e\n\u003e Change-Id: I32280582905c969aaec2bb166ec5c61df82d737a\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nChange-Id: I5cd709187221d307fe25c5117ccaadca5f6b197b\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "3c0a0e8541846427db0587c2fffb90f60ee680b0",
      "tree": "5ec5cfb29970fe635f34145ba9642f96fd91e9b7",
      "parents": [
        "ffd99cb795c92caee7f4bd0b26af9ae37b100fc3"
      ],
      "author": {
        "name": "Paul Lind",
        "email": "plind@mips.com",
        "time": "Wed Aug 01 18:49:49 2012 -0700"
      },
      "committer": {
        "name": "Paul Lind",
        "email": "plind@mips.com",
        "time": "Wed Aug 01 18:49:49 2012 -0700"
      },
      "message": "Fix initialization of audio mixer track resources for MIPS.\n\nThe value 1 \u003c\u003c 32 (maxNumTracks defaults to 32) is surprisingly not defined\nin C, and differs on MIPS than the other arch.\n\nTherefore the track resources were not initialized properly, resulting\nin failure to play any audio.\n\nThe fix allows the mConfiguredNames bitmask to be correctly set to all\n1\u0027s in the 32-track case, for all arch.\n\nChange-Id: Ied3e1305952e9567602e2cd76c5ef3acb0809ee0\nSigned-off-by: Paul Lind \u003cplind@mips.com\u003e\n"
    },
    {
      "commit": "bdce245042dab808cb9062d9161256f01b03a79c",
      "tree": "b904ef8480cf657e3717c5142a26f4ba5af38caf",
      "parents": [
        "ee0e8696befb9d229eebc180060d728849db1b69",
        "b2676a2920c6514ae9405cc56dfa2db49f096016"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 01 14:52:59 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 01 14:52:59 2012 -0700"
      },
      "message": "am b2676a29: am 44cda3a4: Don\\\u0027t wait for presentation complete if terminated\n\n* commit \u0027b2676a2920c6514ae9405cc56dfa2db49f096016\u0027:\n  Don\u0027t wait for presentation complete if terminated\n"
    },
    {
      "commit": "44cda3a4e7ca3de0db9cb49145def3803b03ebb4",
      "tree": "2ed0b1d13971820bd5dcd80ece0f7ab05150e2a8",
      "parents": [
        "3788a393bbcadebf38ac01ef9b2ecc46f07db011"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 01 09:40:18 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 01 10:46:10 2012 -0700"
      },
      "message": "Don\u0027t wait for presentation complete if terminated\n\nChange-Id: Ia04cf6c620693457dca87b4ffea5dd0fe71efdce\n"
    },
    {
      "commit": "d4b5f7213911636a26a43127eb6ea139f403f558",
      "tree": "95a3484c6672131c15cc8541815b2f0a1db9171c",
      "parents": [
        "20d36d0c2f4ed99be6d9c0973ac4e833b04576ec",
        "8d058d89fd4d46bbacbb8f2dc9bd52e94cd69e56"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 01 09:52:40 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 01 09:52:40 2012 -0700"
      },
      "message": "am 8d058d89: am 5665fde6: Merge \"Start adding support for multiple record tracks\" into jb-mr1-dev\n\n* commit \u00278d058d89fd4d46bbacbb8f2dc9bd52e94cd69e56\u0027:\n  Start adding support for multiple record tracks\n"
    },
    {
      "commit": "510a3d6b8018a77683dac466127ffd0af34bef6e",
      "tree": "1f3410b20a4dcbe77dd9b40800bdd569ceaff384",
      "parents": [
        "25f0d7ba1987de61c75f8c68b19de48e0ad9736c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 14:24:34 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Aug 01 09:11:11 2012 -0700"
      },
      "message": "Start adding support for multiple record tracks\n\nReplace single mTrack by vector mTracks.\nDestroy record tracks similarly to playback tracks.\nDump all record tracks, in addition to the active record track.\n\nChange-Id: I503f10b51928b6b92698fe1c51a9ddd3215df1f4\n"
    },
    {
      "commit": "05144f1d68c5240a1fedd42ac83814f3ecf70dfd",
      "tree": "06d978724b8e3423f7a7086547fd49e1726acd29",
      "parents": [
        "93d906837e0e89aa1d9c913ab2b531b809f9bb9e",
        "52008f821a5202502a82a8ba2c024e69bd336350"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 30 10:55:59 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 30 10:55:59 2012 -0700"
      },
      "message": "Merge \"Share local time frequency for all tracks \u0026 mixers\""
    },
    {
      "commit": "93d906837e0e89aa1d9c913ab2b531b809f9bb9e",
      "tree": "9e0fdd3b9cb2fb72263ca425e6cbd9403ebee372",
      "parents": [
        "91de9b56282d126ffb36344266af5fee3cefcfdd"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Jul 23 17:05:46 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Jul 30 10:36:28 2012 -0700"
      },
      "message": "AudioFlinger: Better handling for master volume/mute\n\nChanges to address bug 6842827.\n\nWhen a HAL is loaded, cache whether or not the HAL supports\nset_master_volume/mute in the AudioHwDevice structure.  Store an\nAudioHwDevice in AudioStream(In|Out) structures instead of just an\naudio_he_device_t.  This give threads (PlaybackThreads in\nparticular) access to the cached capabilities.\n\nWhen setting master volume/mute, change the system to always set the\nsetting on all HAL which support it and also to set the setting on all\nPlaybackThreads.  Change PlaybackThreads to apply the setting at the\nin SW mix stage of the pipeline if its assigned HAL does not support\nthe setting, or to ignore the setting of the assigned HAL does support\nit.\n\nChange-Id: Ia14137a30b4c3ee6f2d7ddcc8cba87bf5eec87f4\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "91de9b56282d126ffb36344266af5fee3cefcfdd",
      "tree": "0c934d29385a85c6e0d020398905a7a3dd47e69a",
      "parents": [
        "8bdac969e500bc61320a216539e840fe8ad78bb4"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Fri Jul 20 14:51:35 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Mon Jul 30 10:36:27 2012 -0700"
      },
      "message": "Change audio flinger to user HAL master mute if available\n\nHand merge from ics-aah\n\n\u003e Change audio flinger to user HAL master mute if available: DO NOT MERGE\n\u003e\n\u003e Replicate the pattern used for HAL master volume support to make use\n\u003e of master mute support if the HAL supports it.  This is part of the\n\u003e change needed to address bug 6828363.  Because of the divergences\n\u003e between ICS and master, this change will need to be merged by hand.\n\u003e\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\u003e Change-Id: I6d83be524021d273d093bcb117b8f2fe57c23685\n\nChange-Id: I32280582905c969aaec2bb166ec5c61df82d737a\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "0ec23ce0d1ff79566c402bc30df3074f6e25a22b",
      "tree": "8925eca2b9f4b9bccb7fa4d032ab80070179912d",
      "parents": [
        "e4e2a37dbe2a4d923232305549101f779a2e3638"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 10 12:56:08 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 27 14:54:48 2012 -0700"
      },
      "message": "Clean up start() parameters\n\nDocument where int is used instead of AudioSystem::sync_event_t\n  (probably because of a header file dependency).\nTrackBase::start() and RecordTrack::start() don\u0027t need default parameters.\n\nChange-Id: I82f4a4d078be900f3aa4bd926697e32f5ed68ec8\n"
    },
    {
      "commit": "e4e2a37dbe2a4d923232305549101f779a2e3638",
      "tree": "7038669149e9478745fbb5e05f320cee8fd5cb88",
      "parents": [
        "3dca4c7a5622fc6aa03397d749c4b4c1201cc4f3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 23 12:55:09 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 27 14:49:58 2012 -0700"
      },
      "message": "Extract methods to enter standby and standby mode\n\nAlso move initial standby from to threadLoop to avoid a race condition.\n\nChange-Id: I65afca83c36fb41b983b3b1d3dab35d4029560e3\n"
    },
    {
      "commit": "52008f821a5202502a82a8ba2c024e69bd336350",
      "tree": "5daaddaa46d47bec27af0bc5350f414452710b00",
      "parents": [
        "0a7af18d0308295405491f86603e3d119450aba0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Mar 18 09:34:41 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 25 18:49:08 2012 -0700"
      },
      "message": "Share local time frequency for all tracks \u0026 mixers\n\nChange-Id: I5e6f0e371f728a5225c2fa6f778c109449d33602\n"
    },
    {
      "commit": "0a7af18d0308295405491f86603e3d119450aba0",
      "tree": "bed6e2fe6df1d948db29bc84ff5d0a3bee02d6a6",
      "parents": [
        "58e5aa34f01d663654d8bafad65db1dda42161ff"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 09 16:09:19 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 25 14:48:11 2012 -0700"
      },
      "message": "Use valueAt instead of editValueAt when possible\n\nChange-Id: I885b169f4b176a6b5c2ca9a534214b4ffff1700e\n"
    },
    {
      "commit": "58e5aa34f01d663654d8bafad65db1dda42161ff",
      "tree": "706a80113457f48feae3eab9f8720bcc3da2b397",
      "parents": [
        "1d491ff06f4b9c90ff24fe953b90d0843eaf1c04"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jun 20 14:08:14 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 25 14:43:19 2012 -0700"
      },
      "message": "effect_descriptor_t const correctness\n\nChange-Id: Iad008f20d35a18acf500f773900164552fd0c19e\n"
    },
    {
      "commit": "1d491ff06f4b9c90ff24fe953b90d0843eaf1c04",
      "tree": "006faa29a2ad0ca2ea18c8e876c43749d72d138d",
      "parents": [
        "bf5bea96f236adb5eef78c2f414ef82b3602a0f7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 14:28:13 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 25 14:41:03 2012 -0700"
      },
      "message": "Fix races in AudioRecord stop()\n\nChange-Id: Id0ac1915f57fef4a938c7f90989c1162a8b6c51c\n"
    },
    {
      "commit": "69d799679c8c0308e42057e7b5ad63a7ae806480",
      "tree": "fd433daeb23326b7818031fcca0f8b87f77dbc3e",
      "parents": [
        "f1b3ee26cafc80900bae681bddf47446a6a3733f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 19 14:02:22 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 23 10:56:34 2012 -0700"
      },
      "message": "Use upmix/downmix utility routines\n\nChange-Id: I9ae2ec938fb695ec576ea008a42205325af7bbf1\n"
    },
    {
      "commit": "e65c89113232d070dd9153c54ca19301bca7a162",
      "tree": "09997cb32d82da8d2549044a95eb31c8c35cf39d",
      "parents": [
        "76da2635edbe0e6d023c665d5c344a3b7e070d73"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 20 15:57:23 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 20 15:57:23 2012 -0700"
      },
      "message": "fix audio effect not destroyed when needed.\n\ncommit a5f44eba contained an error which made that audio effect\nmodules where not destroyed but left in the destroyed state\nrendering them unuseable after being released.\n\nBug 6805168.\n\nChange-Id: Ia4e683b3c970ffd01846c482fde73d799ff219de\n"
    },
    {
      "commit": "33e6e35b03a726e35203e97550f32154c91d5f13",
      "tree": "2648568f97f1b3f13335a044d267caa15d1d4e78",
      "parents": [
        "cd2d61016527bf48bd2e9a920bb3fdbb875eb3e4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 16 15:56:57 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 20 12:33:33 2012 -0700"
      },
      "message": "Miscellaneous audio record fixes\n\nCall AudioSystem::stopInput() if exitPending() after wait() returns.\n\nAcquire lock before clearing mActiveThread.\n\nChange-Id: Ia55e4c4b3accc65ad5479cbdc094fd919152af9f\n"
    },
    {
      "commit": "cd2d61016527bf48bd2e9a920bb3fdbb875eb3e4",
      "tree": "17db61cdcaeda8479f9f523c7689727a5b979470",
      "parents": [
        "a08412711b3266d336134b16a45e98baa8d11b9d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 18 16:49:32 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 20 12:27:12 2012 -0700"
      },
      "message": "Use constructor to initialize instead of memcpy\n\nAlso don\u0027t check for thread parameter as it\u0027s always non-NULL\n\nChange-Id: Id23ded1370556ef3f76f81f5f0c6fa644bcba681\n"
    },
    {
      "commit": "be5f05e0fdfc4e3799653702187861a2afa072ee",
      "tree": "1cc15fea099c579aded967ec174f00307b2517eb",
      "parents": [
        "cf9465b83405a1ec26a164b079d9898c09d87fcd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 18 15:24:02 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jul 20 11:08:14 2012 -0700"
      },
      "message": "Internal dump methods return void not status_t\n\nOnly the IAudioFlinger::dump() needs to return a status_t.\n\nChange-Id: Iffeb2a7db4846df850b6b2ed960276f1fd75dba0\n"
    },
    {
      "commit": "5ad92f620fbbb6a8281f10169a23d38e3601e07a",
      "tree": "c7b3d9ada1999b57f72e02e1e63ad062260d18f1",
      "parents": [
        "bb4350d3b9e9485ae59e084de270f86aecef8066"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 19 10:02:15 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jul 19 10:02:15 2012 -0700"
      },
      "message": "Revert 94479fd5405642c67efd14cebe722feb9cbe6e77\n\nChange-Id: I5ca78d5462badf541868785b2ba2e3f6d0cf492a\n"
    }
  ],
  "next": "bb4350d3b9e9485ae59e084de270f86aecef8066"
}
