)]}'
{
  "log": [
    {
      "commit": "2757127f55dc4928f0025f5d95c9fd5f165971ac",
      "tree": "25d762c853dea088e94b05d23971bf4ccab175c6",
      "parents": [
        "667d3ea42b3557f90d7d2a7638d2575db0b13470",
        "d11d1be13a6391290fb1dbc572292973dae59909"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Tue Dec 16 17:38:28 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 16 17:38:28 2014 +0000"
      },
      "message": "am d11d1be1: am 7ebc1670: am 8975220e: Merge \"Fix for Bundled Effects level compensation\" into lmp-mr1-dev\n\n* commit \u0027d11d1be13a6391290fb1dbc572292973dae59909\u0027:\n  Fix for Bundled Effects level compensation\n"
    },
    {
      "commit": "d11d1be13a6391290fb1dbc572292973dae59909",
      "tree": "049146db61c1de50e6b1d91d87ec51543e8ede72",
      "parents": [
        "045513fc55cd500225071c11b06e1f4bb133681f",
        "7ebc167072be27f42b7c58bd7f9378c8311533ab"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Tue Dec 16 17:27:40 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 16 17:27:40 2014 +0000"
      },
      "message": "am 7ebc1670: am 8975220e: Merge \"Fix for Bundled Effects level compensation\" into lmp-mr1-dev\n\n* commit \u00277ebc167072be27f42b7c58bd7f9378c8311533ab\u0027:\n  Fix for Bundled Effects level compensation\n"
    },
    {
      "commit": "d3671c844e2592ce3a29d6d3c4fc344343783f46",
      "tree": "ce3b2726153fbcfc70827d726b28da5a3c0852fc",
      "parents": [
        "5d61cc77c592d1cf56a71ac9891b210c860b2bae",
        "e10615e7f8749de887c8d25579398ad9e4094077"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 12 20:56:59 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 12 20:56:59 2014 +0000"
      },
      "message": "am e10615e7: am 6b3e1a6d: am ac90a24d: Merge \"Remove obsolete TARGET_SIMULATOR checks\"\n\n* commit \u0027e10615e7f8749de887c8d25579398ad9e4094077\u0027:\n  Remove obsolete TARGET_SIMULATOR checks\n"
    },
    {
      "commit": "e10615e7f8749de887c8d25579398ad9e4094077",
      "tree": "4d3490f00ecea3650ff483128583ee984696cda8",
      "parents": [
        "d7986933bcf0b327bc260312b0ff0f83431a158b",
        "6b3e1a6d59b304a2dde7f03ba184feac0dec4ee7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 12 20:08:55 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 12 20:08:55 2014 +0000"
      },
      "message": "am 6b3e1a6d: am ac90a24d: Merge \"Remove obsolete TARGET_SIMULATOR checks\"\n\n* commit \u00276b3e1a6d59b304a2dde7f03ba184feac0dec4ee7\u0027:\n  Remove obsolete TARGET_SIMULATOR checks\n"
    },
    {
      "commit": "b092a173cf139c0f03bd2fcf3e6e78cce515211d",
      "tree": "ca1090e9ebaf64d2a1d902d2c1b905ed2a0a7e95",
      "parents": [
        "cf1e3bb24b88cf942c133248d26ee7bb57ed5ba7"
      ],
      "author": {
        "name": "Trevor Drake",
        "email": "trevordrake.gerrit@gmail.com",
        "time": "Thu Dec 11 19:25:38 2014 +0000"
      },
      "committer": {
        "name": "Trevor Drake",
        "email": "trevordrake.gerrit@gmail.com",
        "time": "Thu Dec 11 19:25:38 2014 +0000"
      },
      "message": "Remove obsolete TARGET_SIMULATOR checks\n\nChange-Id: I9d499190e49fed16aac686ae5da79ab870605ff4\n"
    },
    {
      "commit": "02521e37c0494b83947c35160f3669de8adc9e5b",
      "tree": "b1da6be2aaee6e241bae52e10170f2a7b936f03d",
      "parents": [
        "9257000c453c1a6f6bf073ff0bf3ba7ef9baf183"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Thu Nov 20 08:54:51 2014 -0800"
      },
      "committer": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Tue Dec 09 14:13:09 2014 -0800"
      },
      "message": "Fix for Bundled Effects level compensation\n\nFrom the bundled effects, only the EQ had some sort of level compensation\nbased on the settings of the effect.  This patch takes into account all\nthe status and levels of EQ, BassBoost and Virtualizer bundled effects\nand makes an informed decision on the overall level compensation.\n\nbug: 18213779\nChange-Id: I23c7b94fe7da5482f0bbef0cbe715ea464631420\n"
    },
    {
      "commit": "4a2eedc149c5c423ac517a049f357347d9d5dbef",
      "tree": "a584e534a691bb1359ac4cf5a713f24ae94ad00e",
      "parents": [
        "33edcf10489f783a5659ff89ceaca02828496053",
        "59ca7038364cd6fa3e7e1b52e0e90fa0960af038"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Tue Dec 09 00:57:44 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 09 00:57:44 2014 +0000"
      },
      "message": "am 59ca7038: am 4df79c2c: am d6e7f1e1: Merge \"Fix for AOSP force virtualization mode\" into lmp-mr1-dev\n\n* commit \u002759ca7038364cd6fa3e7e1b52e0e90fa0960af038\u0027:\n  Fix for AOSP force virtualization mode\n"
    },
    {
      "commit": "59ca7038364cd6fa3e7e1b52e0e90fa0960af038",
      "tree": "2a54c4146c84d2bb4c80ad3b3576182d3adeaf93",
      "parents": [
        "5f480891e5818f111f431ae69b4c1354e302242a",
        "4df79c2c13f6163f7d99360a7fb34bf3bd2a5115"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Mon Dec 08 19:14:59 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 08 19:14:59 2014 +0000"
      },
      "message": "am 4df79c2c: am d6e7f1e1: Merge \"Fix for AOSP force virtualization mode\" into lmp-mr1-dev\n\n* commit \u00274df79c2c13f6163f7d99360a7fb34bf3bd2a5115\u0027:\n  Fix for AOSP force virtualization mode\n"
    },
    {
      "commit": "47d4c9a4d53ed014b520edbda2edc3e280efb8a5",
      "tree": "5970b2b39c01cb5deb5d98c6b88db0202500dfe8",
      "parents": [
        "f1828910d48bbd22e1392e6ab0ce31298d1f115c"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Thu Dec 04 17:47:19 2014 -0800"
      },
      "committer": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Thu Dec 04 17:47:19 2014 -0800"
      },
      "message": "Fix for AOSP force virtualization mode\n\nForcing virtualization mode with AOSP code might erroneously return\na failed code, whilst it was correct.  Fixing the condition for\nAutomatic mode.\n\nbug: 18538537\nChange-Id: I5837ff40cfed04c99889813cd56ebe3d90793e74\n"
    },
    {
      "commit": "75c537887ac6947d0bb54bd7e783ff62a3043dc1",
      "tree": "fe20a4574821dacbd176f5e0d4a8fd6ecdd17271",
      "parents": [
        "060ef2a4f42820c77ded1de99c6e1f5edb0033a0",
        "575174d62b665900203d70a4d410329b8918c2af"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Sun Nov 16 17:35:36 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Nov 16 17:35:36 2014 +0000"
      },
      "message": "am 575174d6: am bb0cf4d0: am d0264109: Merge \"Move libldnhncr to libc++.\"\n\n* commit \u0027575174d62b665900203d70a4d410329b8918c2af\u0027:\n  Move libldnhncr to libc++.\n"
    },
    {
      "commit": "f38c754cb69d0675612418cfff7847967ec6b717",
      "tree": "501f2c520684b2d5fab93afa9f7bebc1db2af7bf",
      "parents": [
        "14a74010125880ff30386b69e21310f38008e0eb"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Sat Nov 15 18:09:15 2014 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Sat Nov 15 18:09:15 2014 -0800"
      },
      "message": "Move libldnhncr to libc++.\n\nBug: 15193147\nChange-Id: If59c4a53a497f501881d26d58b80b11371906527\n"
    },
    {
      "commit": "d89eaddd1544dc9f6665e2578583e8083cac00da",
      "tree": "dc49e13b8a81d56fb33da80212d46a9a37d77d3e",
      "parents": [
        "55b2e0ea6dfa0da2a6fbac9ce2307977c27bc423"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Oct 07 13:28:44 2014 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Oct 08 20:12:45 2014 +0000"
      },
      "message": "Check for duplicate uuids when parsing audio_effects.conf\n\nuuids need to be unique, and things don\u0027t work properly when they\u0027re\nnot.\nAlso fix/enhance/extend the dumpEffectDescriptor() method, and\ninclude a list of effects in audioflinger dumpsys.\n\nChange-Id: I3dfbc5ed0f7272c7809e337f2929212ece047ee4\n"
    },
    {
      "commit": "b55e1228f24dd707e120572e83bbdf1b691cd4b7",
      "tree": "7c122febc7adfa578cdc445a093c71d09ffdb64a",
      "parents": [
        "2734bb9e5dbbacaf636644cbf12068b7e5aa09b8",
        "fed1594d707b4623015e538b2f69faf76bc38d5b"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Sep 12 19:27:43 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 12 19:27:43 2014 +0000"
      },
      "message": "am fed1594d: am 9916dcb6: am 0d64fcb4: Merge \"Clean up some makefiles.\"\n\n* commit \u0027fed1594d707b4623015e538b2f69faf76bc38d5b\u0027:\n  Clean up some makefiles.\n"
    },
    {
      "commit": "fed1594d707b4623015e538b2f69faf76bc38d5b",
      "tree": "0a1e0cd89a11872e2900c094dde3d56814272b06",
      "parents": [
        "bd014b81ef227752150bdbd1bb6a235db09f3616",
        "9916dcb6ef041752fda5f13192ee6a36e51e73a5"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Sep 12 05:59:29 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 12 05:59:29 2014 +0000"
      },
      "message": "am 9916dcb6: am 0d64fcb4: Merge \"Clean up some makefiles.\"\n\n* commit \u00279916dcb6ef041752fda5f13192ee6a36e51e73a5\u0027:\n  Clean up some makefiles.\n"
    },
    {
      "commit": "20adec0cea8b434e9f60888f49023b5a7dde98ec",
      "tree": "bab72066c298453c070f00c899fe8e5c395616ec",
      "parents": [
        "2b16391d066d20f38f3556d65bce827a8d134e4d"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Sep 11 15:28:53 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Sep 11 15:29:27 2014 -0700"
      },
      "message": "Clean up some makefiles.\n\nThe build system takes care of these things for you.\n\nChange-Id: Ife9605f15786e11d6a3578f56ed83dd9ae7fd799\n"
    },
    {
      "commit": "a5309e5c2a7a02852d2a0db7ada89a2eacb047d0",
      "tree": "fe272ffbcea53bf6b1996f5c5486fc60cedcfe6d",
      "parents": [
        "5d166509fa0cdf0e4b3037d7e05005a5390aedd3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 07 20:26:57 2014 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 08 08:50:15 2014 -0700"
      },
      "message": "Enable loading of 64 bit effect libraries\n\nChange-Id: I19252ea8d7dd8b9eee2532059c5a3a98d53c3b28\n"
    },
    {
      "commit": "333f66d4642ddd36b42668da2767551ba25f0248",
      "tree": "5b21995570cbab7e36422983804c44f82fa7f03b",
      "parents": [
        "5698d4461a260dbf208484383f692b03c6473e74"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 08 16:31:40 2014 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 15 15:12:54 2014 +0000"
      },
      "message": "DO NOT MERGE LVM virtualizer: add support for virtualizer capability query\n\nChange-Id: I88106ba25f9b3f8fd7616307ab6b7fbe7afb6e91\n(cherry picked from commit bfd3b9764841971be2d2f04a3fdbd41a2144beea)\n"
    },
    {
      "commit": "bfd3b9764841971be2d2f04a3fdbd41a2144beea",
      "tree": "31b2be114b1cc38904cfbf958eafc4e208d423a3",
      "parents": [
        "0521213468ffe960ab66925c8378c72a5abda263"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 08 16:31:40 2014 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 15 14:46:23 2014 +0000"
      },
      "message": "LVM virtualizer: add support for virtualizer capability query\n\nChange-Id: I88106ba25f9b3f8fd7616307ab6b7fbe7afb6e91\n"
    },
    {
      "commit": "7618c5cb2fd60e944307e46afa051987d1e016c6",
      "tree": "7619c9a4cf9de3a5feec178002b904f83c80f145",
      "parents": [
        "665470b36f202bcc8ee2f7417f68fd2608dd07c1"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 08 14:17:29 2014 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 08 16:35:58 2014 -0700"
      },
      "message": "Cleanup unused parameters or variable in EffectBundle\n\nNo unused parameter warning in EffectBundle.\nRemove unused variable declaration in Virtualizer_getParameter\n\nChange-Id: Ibe1c051bc21ac53a6c770b4aa28e31ac5d559d9b\n"
    },
    {
      "commit": "7b6c7b89241397261d52602cbeaa559962efbfec",
      "tree": "1d347a2ce88b8e38c4e127224b3cc749c63f00af",
      "parents": [
        "fcd58351b6d7fcd62a0fe65b425723dd53d10e5e"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Jun 20 13:29:08 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Jun 20 14:57:17 2014 -0700"
      },
      "message": "libeffects: 64-bit compile warnings\n\nChange-Id: I210129f5742b046f7ceef48194f039352eff596d\n"
    },
    {
      "commit": "e541269be94f3a1072932d51537905b120ef4733",
      "tree": "39646def02d7230929eb85189f48b9193b8c23a0",
      "parents": [
        "7c96d53a65085f42ac2b6d416cbc16fd36ed72ff"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 16 11:25:07 2014 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 16 15:05:05 2014 -0700"
      },
      "message": "Use new channel count functions for audio masks\n\nChange-Id: Ia658ab4b6320d19fdb50f123c930918724ff0ef3\nSigned-off-by: Andy Hung \u003chunga@google.com\u003e\n"
    },
    {
      "commit": "49f095546d047b52c5070229bbee0c3f27548256",
      "tree": "e8655eaaac3236025d96de19f86ad029aa5ed836",
      "parents": [
        "96b292fd3c76f9af155ee6f7a8559258eeedc6fd",
        "cf79c7a576837d8bccecc80612a1f6f30bb328a8"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Thu May 08 13:48:00 2014 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Thu May 08 13:48:00 2014 -0700"
      },
      "message": "resolved conflicts for merge of cf79c7a5 to master\n\nChange-Id: Ic4e75541193f733f477cfa4a2a87cce4c9e64f45\n"
    },
    {
      "commit": "029a64e0327ecc1215a3d17ce50f508edae1c4a6",
      "tree": "4c99a37fb8eb563cd55240cba177edc06a45ac7c",
      "parents": [
        "32fa3c6fab55b075c916f4dad38e42e239bb7813"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 15 09:58:55 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 30 13:49:03 2014 -0700"
      },
      "message": "Define CHANNEL_MASK_* in terms of AUDIO_CHANNEL_OUT_*\n\nand use same suffixes\n\nChange-Id: I90b74ede171ba2550db4a220cfd1ad2e3caefe2d\n"
    },
    {
      "commit": "32fa3c6fab55b075c916f4dad38e42e239bb7813",
      "tree": "afcf4bf640ea8ad973e2e613d4d5fee2e21377d3",
      "parents": [
        "bff804655bcc8e94c48e8da170b9381e9aab7980"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 29 09:01:52 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Apr 30 09:34:02 2014 -0700"
      },
      "message": "Remove AUDIO_CHANNEL_OUT_SURROUND\n\nand corresponding downmix effect\n\nChange-Id: I1576aa373ca7acbb84d7742bacbd9c2da04a7a4c\n"
    },
    {
      "commit": "cb010a3fa85db1eb90346b35e484e21e7f1b1a4b",
      "tree": "720906051414d27dfca82c175618a83190d9ea3d",
      "parents": [
        "77d4f613bbed8b646c8ddade6a0737fcbd391b07",
        "e1ff1051ffee8fb650741ad133f0f28b73eb7a73"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Apr 18 22:11:00 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 18 22:11:00 2014 +0000"
      },
      "message": "am e1ff1051: am e0f20cea: Merge \"libeffects: 64 bit compile issues\"\n\n* commit \u0027e1ff1051ffee8fb650741ad133f0f28b73eb7a73\u0027:\n  libeffects: 64 bit compile issues\n"
    },
    {
      "commit": "7cb0e733210c2ce7dd2a7c9d32f6d83c4dab9656",
      "tree": "406ac589b6b1cf7efaef89723fd0b8de5e5e2b91",
      "parents": [
        "cd4eb72edb0575ce1e84fbd3f27bb85bab6110ed"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Apr 18 13:48:25 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Apr 18 13:57:58 2014 -0700"
      },
      "message": "libeffects: 64 bit compile issues\n\nChange-Id: I32dd13d307572fee91150f8e113df78924ca0067\n"
    },
    {
      "commit": "08d6608556b44f90f6e7fb7dc280f4509af79502",
      "tree": "b19240f44ee71e6dec43fb7806e1d59020c400b0",
      "parents": [
        "ad77a5e08282a92903f91c414b8f65797cb72dde",
        "3a46b975070b503bc71b53b70f9a8f5bd03bba1c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Mar 07 20:15:52 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 07 20:15:52 2014 +0000"
      },
      "message": "am 3a46b975: am a9b82160: Merge \"LP64 fixes for media/libeffects\"\n\n* commit \u00273a46b975070b503bc71b53b70f9a8f5bd03bba1c\u0027:\n  LP64 fixes for media/libeffects\n"
    },
    {
      "commit": "a9b82160a6682438d43709ba5e7a29022ad1af58",
      "tree": "7e6fba930126b50bc2e22845552cf930ad44b926",
      "parents": [
        "395c2fc0c422c9218f39f6ed2040e90b1cc9920a",
        "b302bd5d288be2d3363b80053ca2392560b00b25"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Mar 07 16:04:44 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 07 16:04:45 2014 +0000"
      },
      "message": "Merge \"LP64 fixes for media/libeffects\""
    },
    {
      "commit": "9cf4f07c2dc5d4f14bfd1adee691667eb55882ec",
      "tree": "15cfd27d1abe01fe5806201f38fff349536172f8",
      "parents": [
        "bce50bfc3846ab008bafa75c5d3f29fd7b5395f7",
        "e276aef8779a7763b318ebd3e8c09f35ff37a95c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Fri Feb 28 17:24:25 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Feb 28 17:24:25 2014 +0000"
      },
      "message": "am e276aef8: am 0cf16339: Merge \"Fix preventing from heap overwrite in capture command\"\n\n* commit \u0027e276aef8779a7763b318ebd3e8c09f35ff37a95c\u0027:\n  Fix preventing from heap overwrite in capture command\n"
    },
    {
      "commit": "0cf1633922f970caee19e2cc2f5c042ca30b4aa6",
      "tree": "3f8355c7cd43d30fa29b1e49e33d909c75dfe337",
      "parents": [
        "096d72a32824a0a8c86a716ba44d589183b2b0b3",
        "abb7b17613fff41433cda94207eb535c9fed8fba"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Fri Feb 28 17:12:12 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 28 17:12:13 2014 +0000"
      },
      "message": "Merge \"Fix preventing from heap overwrite in capture command\""
    },
    {
      "commit": "e27e2d9bcabc1a367cb56b4599665c931a1d22ec",
      "tree": "5ec47116fa737797ad8fd1d737ce27d4161103f2",
      "parents": [
        "3d2e09f0221693de08129edd02adf340a44e7a38"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Thu Feb 27 14:29:56 2014 -0500"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Thu Feb 27 14:29:56 2014 -0500"
      },
      "message": "Fix includes to no longer pull in Skia includes directories.\n\nbug:13225538\nChange-Id: I4fccc414923f7e62cd46d691c67cb44b9692c225\n"
    },
    {
      "commit": "8fc4d57d41f532b90187b9404a8ac705770d75b4",
      "tree": "6fa63a63d790ed9a8401f60d5473c21ae2f9fc52",
      "parents": [
        "4ee5d2b9d0cdaf936bd5fecd670e5f38da63e4ae",
        "a93c8c9c89ba679cf312c7d082913121bb5543c2"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Tue Feb 25 19:36:22 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 25 19:36:23 2014 +0000"
      },
      "message": "Merge \"Avoid a building error\""
    },
    {
      "commit": "b302bd5d288be2d3363b80053ca2392560b00b25",
      "tree": "7eaf242136ba86c73b7371e47475a2d7c5334847",
      "parents": [
        "80b72e6f4202ce26facbe51b8739814bca198a2c"
      ],
      "author": {
        "name": "Ashok Bhat",
        "email": "ashok.bhat@arm.com",
        "time": "Tue Feb 18 11:40:00 2014 +0000"
      },
      "committer": {
        "name": "Ashok Bhat",
        "email": "ashok.bhat@arm.com",
        "time": "Thu Feb 20 14:12:49 2014 +0000"
      },
      "message": "LP64 fixes for media/libeffects\n\nChanges include:\n\n[x] In get parameter series of functions, replaced size_t*\n    formal parameter type with uint32_t* where actual parameter\n    passed was uint32_t*.\n\n[x] In set parameter series of functions, changed size_t\n    formal parameter to uint32_t where actual parameter was\n    uint32_t.\n\n[x] Changed the definition of LVM_UINT32 from unsigned\n    long to uint32_t as unsigned long is 64-bit in LP64.\n\n[x] Used other stdint.h types for other LVM_types for\n    consistency.\n\n[x] Use of uintptr_t for the pNextMember of the INST_ALLOC\n    structure, rather than LVM_UINT32, for portablility.\n\n[x] Use of uintptr_t where pointers are used in arithmetic.\n\n[x] Replaced the use of 0xFFFFFFFC with ~3 in places where\n    it was used to clear last two bits.\n\n[x] Removed int casts where cmdSize and *replySize, both\n    uint32_t, were being compared with sizeof().\n\nChange-Id: Ibec0b4d8e9b855f44b1cd853be6df84d13cf4186\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\n"
    },
    {
      "commit": "abb7b17613fff41433cda94207eb535c9fed8fba",
      "tree": "1ccb9a72843f7b023cbd9b5365fc6c424b672dc7",
      "parents": [
        "80b72e6f4202ce26facbe51b8739814bca198a2c"
      ],
      "author": {
        "name": "Ryszard Grzesica",
        "email": "ryszard.grzesica@sonymobile.com",
        "time": "Fri Jan 17 11:40:16 2014 +0100"
      },
      "committer": {
        "name": "Takeshi Aimi",
        "email": "takeshi.aimi@sonymobile.com",
        "time": "Thu Feb 20 02:01:35 2014 +0900"
      },
      "message": "Fix preventing from heap overwrite in capture command\n\nThere was heap usage error in case of stop of audio framework while\ncapturePoint was negative. Pointer to reply data was moved but\nfinal silence write was done using original buffer size.\nNow silence set is done at the beginning under the condition\nthat framework has stopped.\n\nChange-Id: I7dab1e922f1813e5fbfd4a64c8b0d15d9465520c\n"
    },
    {
      "commit": "6c44568b8f065ae06556ba6a9b3c725d9b416857",
      "tree": "8ed9e71e0cb8e8f67d161569f7039f263f41fd40",
      "parents": [
        "af191eb4feac513d17dc0362e0cea5bc9e0ffe9d"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 13 16:39:11 2014 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 13 16:40:36 2014 -0800"
      },
      "message": "libeffects: don\u0027t set module path\n\nSetting the module path breaks multilib builds where there may\nbe two different module paths for 32-bit and 64-bit, and there\nis no need to set it to the default.\n\nChange-Id: I95d62b5573a0bb0ab6c97649041dfc4309cbc8b9\n"
    },
    {
      "commit": "377b2ec9a2885f9b6405b07ba900a9e3f4349c38",
      "tree": "b938e1d75a1beefae86244f287ca22f4a277740d",
      "parents": [
        "cdda7bf4d3ca9cad6979374a18dd5be79ea83d80"
      ],
      "author": {
        "name": "Kévin PETIT",
        "email": "kevin.petit@arm.com",
        "time": "Mon Feb 03 12:35:36 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Feb 11 11:40:06 2014 +0000"
      },
      "message": "Make frameworks/av 64-bit compatible\n\nContains the necessary changes to make frameworks/av build and work\non a 64-bit machine.\n\nSigned-off-by: Craig Barber \u003ccraig.barber@arm.com\u003e\nSigned-off-by: Kévin PETIT \u003ckevin.petit@arm.com\u003e\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\nSigned-off-by: Marcus Oakland \u003cmarcus.oakland@arm.com\u003e\n\nChange-Id: I725feaae50ed8eee25ca2c947cf15aee1f395c43\n"
    },
    {
      "commit": "f90c7e0bb8d83d8b7f733bdf430d331ea3f221e8",
      "tree": "f2e5372c4876aad1901b54cc98d988cbee387549",
      "parents": [
        "b447379e2ea1c9ca4cd543ac183df70567d40485"
      ],
      "author": {
        "name": "jpadmana",
        "email": "jayashree.r.padmanaban@intel.com",
        "time": "Thu Nov 14 17:20:52 2013 +0530"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 31 00:58:44 2014 +0000"
      },
      "message": "fix deadlock issues that arise when there are simultaneous\neffect control interface calls to proxy and to\nnon sub-effect wrappers(eg., bundlewrapper) from audioflinger\nAlso, return NO_ERROR when CMD_OFFLOAD succeeds\n\nWhenever there are parallel calls to proxy and non sub-effects wrappers,\nsome of the calls are not completed. This is due to deadlock arsing out\nof Proxy waiting for the subeffect call to return and subeffect waiting\nfor proxy to release lock.\nThe call flow is changed to a cleaner and simple one - Proxy gets the\naeli(effect library info) of subeffects during the EffectGetSubEffects()\ncall. Therby, proxy will manage the sub effects by itself rather than\ngoing through effects factory.\n\nSigned-off-by: jpadmana \u003cjayashree.r.padmanaban@intel.com\u003e\nBug: 12424044\nChange-Id: I16852222f1d0e94e433a19177729323a4bb1c090\n"
    },
    {
      "commit": "7d6fc5ebc8718ebb5bf505d9bda83ab63741a545",
      "tree": "3dff65731f7dcb75e20974287e8008c7048ca86f",
      "parents": [
        "4ef1dc2d5b5f5df93b173b0b4c4719d4484e031d"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jan 24 21:00:32 2014 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Jan 27 12:39:29 2014 -0800"
      },
      "message": "frameworks/av: convert LOCAL_MODULE_PATH to LOCAL_MODULE_RELATIVE_PATH\n\nLOCAL_MODULE_PATH doesn\u0027t work for multiarch builds, replace it\nwith LOCAL_MODULE_RELATIVE_PATH.\n\nChange-Id: I4e4ceec61d026bbe74ba604554c06104bde42e5e\n"
    },
    {
      "commit": "9803acb6b2c1b9c01444e0c8c0124adbe9a7157a",
      "tree": "45a994000490f3ec7a346c673dfaf21228c8b025",
      "parents": [
        "274cc85dcb255185838705a91dba00efa52bf436"
      ],
      "author": {
        "name": "synergy dev",
        "email": "synergye@codefi.re",
        "time": "Tue Dec 17 17:48:51 2013 -0800"
      },
      "committer": {
        "name": "synergy dev",
        "email": "synergye@codefi.re",
        "time": "Tue Dec 17 17:59:49 2013 -0800"
      },
      "message": "libeffects: do not use GNU old-style field designators\n\nAvoiding the use of GCC extensions improves code portability\n\nChange-Id: I9edbedc5c8ad4aa46ca54bc2e28280441431a530\n"
    },
    {
      "commit": "5bf2560ce9b70bee077e0c264ac06648f0f63acc",
      "tree": "f17ecec5321e8d583d045135f29f14f3c7418e71",
      "parents": [
        "eb76f318e9daf91dbf195bcb74852b3bd736a32a",
        "b2059ff384eee8ffb70a7ec8fc5570405201c734"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Nov 22 10:35:20 2013 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Nov 22 10:35:20 2013 -0800"
      },
      "message": "Merge commit \u0027b2059ff384eee8ffb70a7ec8fc5570405201c734\u0027 into HEAD\n"
    },
    {
      "commit": "c9d8ea7f8f9a1ca8ecd266695e3cac423790b2f9",
      "tree": "ba266ce44ccdc60775b8f91e6b33a05b3c207f89",
      "parents": [
        "0219856e5e45c0bdd20f2199297ec92f11f0875f"
      ],
      "author": {
        "name": "synergydev",
        "email": "synergye@codefi.re",
        "time": "Sat Oct 19 22:51:33 2013 -0700"
      },
      "committer": {
        "name": "synergydev",
        "email": "synergye@codefi.re",
        "time": "Sat Oct 19 22:57:43 2013 -0700"
      },
      "message": "libeffects: do not use GNU old-style field designators\n\nNot using a GNU extension improves portability\n\nChange-Id: I4e8a0376c089828ca4fc7f1aaf3914bfd917d4c5\n"
    },
    {
      "commit": "385e7509eb563c983647e72b1232225c2200435f",
      "tree": "a6648133e77d801f1e686657d5a0f92b3d9e139e",
      "parents": [
        "7bab024867996bec6dc4e3e31ed4570da9afbc25"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 04 08:36:52 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 04 08:42:21 2013 -0700"
      },
      "message": "fix offload audio effect proxy implementation uuid\n\nThe proxy implementation UUID should not be the NULL UUID as\nAudioFlinger will reject effect creation if the AudioEffect\nis constructed by passing the implementation UUID and not the\ntype UUID.\n\nBug: 11070481.\n\nChange-Id: Ia9049d974e76303c5b63a607ee594b7dc1f182d4\n"
    },
    {
      "commit": "5d6d86a4d102704f49b9235eaf282c428d7100b6",
      "tree": "32ef7801b774457edf670fbdde13f423286b646e",
      "parents": [
        "eba9bf72fb5e036bb15ca4a1dc126883a2cb938d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 20 12:27:32 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 16:03:46 2013 -0700"
      },
      "message": "fix oflload effect proxy commmand handling\n\nImplement a more generic command handling in offload effect\nproxy. All commands are sent to both sub effects but only the reply\nfrom the active one is returned to the caller.\n\nBug: 8174034.\nChange-Id: I28aa0f0d806e846332bc29801ee40d34e4ea0c43\n"
    },
    {
      "commit": "eba9bf72fb5e036bb15ca4a1dc126883a2cb938d",
      "tree": "3d0676b2c31251240c6be8a4c0f1255a4e4f0554",
      "parents": [
        "faca05e96744dfaa2f352e3dbb29eead4e55cfa0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 15:04:26 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 16:03:41 2013 -0700"
      },
      "message": "fix command handling in effect offload proxy\n\nFix some issues in effect proxy related to handling of effect\ncommands to offloaded and non offloaded effects.\n\nAlso fixed a bug on capture index in software Visualizer effect.\n\nBug: 8174034.\nChange-Id: I119458fea597cc3acbc0ef9ec315f67aa211cbd9\n"
    },
    {
      "commit": "faca05e96744dfaa2f352e3dbb29eead4e55cfa0",
      "tree": "13fdbf3c9f72d9c1d31d367d58556e45703e70ce",
      "parents": [
        "2eab94f7dfd41a65e13aca379a1aed97447f8884"
      ],
      "author": {
        "name": "jpadmana",
        "email": "jayashree.r.padmanaban@intel.com",
        "time": "Tue Jun 04 16:03:29 2013 +0530"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 16:03:37 2013 -0700"
      },
      "message": "Effect Offload Proxy for effects offload\n\nEffect Proxy abstracts the sub effects to the upper layers.\nIt has the following functionalities:\n- creation and release of sub effects\n- routing the effect commands and process to the appropriate sub effect\n\nBug: 8174034.\n\nChange-Id: Iec34b61104f0bbec4ef67c62f0710a5536dc325b\nSigned-off-by: jpadmana \u003cjayashree.r.padmanaban@intel.com\u003e\n"
    },
    {
      "commit": "2eab94f7dfd41a65e13aca379a1aed97447f8884",
      "tree": "bdd573d7a104c25ad6951dcfd58ee37ff2c03760",
      "parents": [
        "83f400056ac913250f0926326ff78697c68d18a1"
      ],
      "author": {
        "name": "jpadmana",
        "email": "jayashree.r.padmanaban@intel.com",
        "time": "Tue Jun 04 16:08:29 2013 +0530"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 16:03:30 2013 -0700"
      },
      "message": "Effects Factory changes for effects offload\n\naudio_effects.conf - commented changes to illustrate the\naddition of Proxy and sub effects to the conf file\n\nAdded an effectFactoryApi - EffectGetSubEffects for querying the\nsub effect descriptors from the factory. This api is used by the Proxy\nto get the sub effects\n\nAdded functions and data structures in factory code for\nloading the sub effects\n\ngSubEffectList - has the Proxies and their corresponding sub effects\n\n- addSubEffect() - reads a sub effect node and adds to the gSubEffectList\n- findSubEffect() - searches through the gSubEffectList to find a SubEffect\n\nBug: 8174034.\n\nChange-Id: Id7f6aa67c41db370d32beaf43a979ba4ac925928\nSigned-off-by: jpadmana \u003cjayashree.r.padmanaban@intel.com\u003e\n"
    },
    {
      "commit": "83f400056ac913250f0926326ff78697c68d18a1",
      "tree": "4dcd3ee8df9d39701190664ce5d0e9b4bb5b7cc9",
      "parents": [
        "5b8ce24b849f6cd5629b4ba508f7c78d6227d250"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 14:53:24 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 16:03:26 2013 -0700"
      },
      "message": "Revert \"Effects Factory changes for effects offload\"\n\nThis reverts commit 284c17e73bbff51cb5b1adcee98386d47733757a.\n\nChange-Id: I31db21e1ad4758b21356bfe4c4c64f15b2da8737\n"
    },
    {
      "commit": "5b8ce24b849f6cd5629b4ba508f7c78d6227d250",
      "tree": "bdd573d7a104c25ad6951dcfd58ee37ff2c03760",
      "parents": [
        "f2c8b02786c58b98d41d3f7c30e882cacc34e7ab"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 14:50:48 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 27 16:03:21 2013 -0700"
      },
      "message": "Revert \"Effect Offload Proxy for effects offload\"\n\nThis reverts commit 60c60df7db278d2fa5c90b0fa14f99a61d50272b.\n\nChange-Id: Iafba9e02a9f3bfde6248d802e96c4e649686a87d\n"
    },
    {
      "commit": "cd0c4683947231a7d3dc7811bedb75c5a965103c",
      "tree": "3554110faa75566c437e0d4f5bf26cf7b2759f97",
      "parents": [
        "fed6292af65a0b97b583ecbd3c232b3811a3f37b"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Sep 25 18:43:55 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Sep 26 12:55:10 2013 -0700"
      },
      "message": "LoudnessEnhancer compatible with stereo imaging\n\nUse a single compressor for both channels.\nEnvelope of signal is determined by looking at both channels.\n\nBug 8413913\n\nChange-Id: Ia9b6f34923d2977c60a3352500b858dfa1fab33c\n"
    },
    {
      "commit": "d2ac3144e201398340cc5b9bb36e5efe39edd9eb",
      "tree": "3e56f8dca0ddb77df3635ea300bfc76acf0d43a2",
      "parents": [
        "ddfbfaeb00295fff7351711f0f044f17d6c40f3c",
        "6fbc9ef121b081f888163190bb13cbac31599900"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Sep 24 23:37:53 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 24 23:37:53 2013 +0000"
      },
      "message": "Merge \"Fix log typos in Visualizer effect\" into klp-dev"
    },
    {
      "commit": "6fbc9ef121b081f888163190bb13cbac31599900",
      "tree": "588d44fb6e79c974ebbc1004e6ffcedefbc110f8",
      "parents": [
        "664539d25180ab8f77e0521533ea2821cf28985f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Sep 24 15:31:13 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Sep 24 15:37:06 2013 -0700"
      },
      "message": "Fix log typos in Visualizer effect\n\nFix errors in logs for Visualizer.\nSet loop counters on 32 bits\n\nBug 8413913\n\nChange-Id: Iad2140d003d15d45be46826a5e89baff14fe9e77\n"
    },
    {
      "commit": "ddfbfaeb00295fff7351711f0f044f17d6c40f3c",
      "tree": "550cf08c4c8b7d5393512d1a96661009be3e4de9",
      "parents": [
        "1c7f35d1f25eb7160314fdef536463fc34deb1ea"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 20 12:27:32 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 24 15:29:55 2013 -0700"
      },
      "message": "fix oflload effect proxy commmand handling\n\nImplement a more generic command handling in offload effect\nproxy. All commands are sent to both sub effects but only the reply\nfrom the active one is returned to the caller.\n\nBug: 8174034.\nChange-Id: Ia45f9933b3bf338257ec70b37732fa1578d26b9f\n"
    },
    {
      "commit": "09647d29eaf429ce88c9c9709ff63dee62f2147a",
      "tree": "3626eb231080732d92a0b1bdfbd1710b52e36aa6",
      "parents": [
        "4b701cc041d635e5ec56e382043a4c5d01aedd80"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Sep 20 11:58:40 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Sep 23 15:53:53 2013 -0700"
      },
      "message": "Add support for level measurements in Visualizer\n\nNew commands to set a measurement mode and perform peak + RMS\n measurements.\n\nBug 8413913\n\nChange-Id: Ib25254065c79d365ebb34f9dc9caa0490e2d300d\n"
    },
    {
      "commit": "5baf2af52cd186633b7173196c1e4a4cd3435f22",
      "tree": "9c6752456812c4a927574a71e1d2ec2495ff6ce3",
      "parents": [
        "9a98b6de791aeb130192df10744f5b35f8b6ef1a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 12 17:37:00 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 18 11:52:40 2013 -0700"
      },
      "message": "more support for audio effect offload\n\nOffloading of audio effects is now enabled for offloaded\noutput threads. If an effect not supporting offload is enabled,\nthe AudioTrack is invalidated so that it can be recreated in PCM\nmode.\n\nFix some issues in effect proxy related to handling of effect\ncommands to offloaded and non offloaded effects.\n\nAlso fixed a bug on capture index in software Visualizer effect.\n\nBug: 8174034.\n\nChange-Id: Ib23d3c2d5a652361b0aaec7faee09102f2b18fce\n"
    },
    {
      "commit": "6cc3a9948b51193dfdcb0c3527d7f3d1ca38aa3c",
      "tree": "5545a323750c07f0210f43f727e828ec7fa9f918",
      "parents": [
        "18f861404efc054da0a2ea6c582e293940f63bc8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Sep 10 09:15:18 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Sep 17 18:43:01 2013 -0700"
      },
      "message": "LoudnessEnhancer audio effect implementation\n\nImplementation based on DRC effect, controlled by a\n target gain.\n The target gain is used to amplify the signal at\n the input of the DRC, and to compute the knee\n of the DRC.\n\nBug 8413913\n\nChange-Id: I386d64793a9fa3f7218e053d6f0a99f6836c02bd\n"
    },
    {
      "commit": "60c60df7db278d2fa5c90b0fa14f99a61d50272b",
      "tree": "1b687d31467576d5fce79d4646917652fa8ed9dc",
      "parents": [
        "a82975e02ccf78fd9c4dd2f7c1a66c254b52fe3b"
      ],
      "author": {
        "name": "jpadmana",
        "email": "rpadmanaban.jayashree@gmail.com",
        "time": "Tue Jun 04 16:03:29 2013 +0530"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 06 17:36:29 2013 +0000"
      },
      "message": "Effect Offload Proxy for effects offload\n\nEffect Proxy abstracts the sub effects to the upper layers.\nIt has the following functionalities:\n- creation and release of sub effects\n- routing the effect commands and process to the appropriate sub effect\n\nBug: 8174034.\n\nChange-Id: I22d8136636048e7fe8f8807cbc6e348ffa200a22\nSigned-off-by: jpadmana \u003crpadmanaban.jayashree@gmail.com\u003e\n"
    },
    {
      "commit": "284c17e73bbff51cb5b1adcee98386d47733757a",
      "tree": "d400f398fd4f2e8e383256973185b7dae243f92f",
      "parents": [
        "a19912554f3779fac0c341ac702227bf4b5fe399"
      ],
      "author": {
        "name": "jpadmana",
        "email": "rpadmanaban.jayashree@gmail.com",
        "time": "Tue Jun 04 16:08:29 2013 +0530"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 06 10:33:03 2013 -0700"
      },
      "message": "Effects Factory changes for effects offload\n\naudio_effects.conf - commented changes to illustrate the\naddition of Proxy and sub effects to the conf file\n\nAdded an effectFactoryApi - EffectGetSubEffects for querying the\nsub effect descriptors from the factory. This api is used by the Proxy\nto get the sub effects\n\nAdded functions and data structures in factory code for\nloading the sub effects\n\ngSubEffectList - has the Proxies and their corresponding sub effects\n\n- addSubEffect() - reads a sub effect node and adds to the gSubEffectList\n- findSubEffect() - searches through the gSubEffectList to find a SubEffect\n\nBug: 8174034.\n\nChange-Id: I25b0c62b2ad523a52337128b51469e628209ea3e\nSigned-off-by: jpadmana \u003crpadmanaban.jayashree@gmail.com\u003e\n"
    },
    {
      "commit": "b7f08d386f2bddb8f3c87858f9204754b7fdb857",
      "tree": "84600437e114225c05ef7d83b177273b8d157f93",
      "parents": [
        "551ababe67ce31778000d52958e53e1c56e1a294"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jun 18 11:46:28 2013 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 10 15:56:47 2013 -0700"
      },
      "message": "Clean up references to AUDIO_FORMAT_PCM_8_24_BIT\n\nChange-Id: I08771eb2664b7082561a40937218c7f4414e2cce\n"
    },
    {
      "commit": "209bbbcf4190231f9dede758cbe77d109919f9f1",
      "tree": "08e8e07347f3b8dd770685bb34280a0d2c236b73",
      "parents": [
        "e6478de72a8ae1d3abb3e8c20898977c45354a4f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jun 20 16:49:25 2013 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jun 20 16:49:25 2013 -0700"
      },
      "message": "Apply EQ and bass boost first in effect chain\n\nEQ and bass boost can improperly interact with other effects\n (e.g. virtualizer) outside of the bundle. Apply them first\n in an effect chain, which is equivalent to using them to affect\n the content of a track, rather than how a track is presented,\n when additional effects are cascaded behind EQ and BB.\n\nBug 8589316\n\nChange-Id: Ifb34e46bc1969f613cdc90ee2a79af677e2fad92\n"
    },
    {
      "commit": "5875516ea11f77438f2ed23334fc490a706edd56",
      "tree": "64a4066e339bfdd95eb7acf3682fe4ce762c9ebf",
      "parents": [
        "948700612e987b49185f7916befd38f39a2b0a3b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 01 16:15:49 2013 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 01 16:15:49 2013 -0700"
      },
      "message": "Fix reverb at 48kHz\n\nThe LVM reverb wrapper had a test to only accept input\nsampling rate of 44.1 kHz. As the LVM reberb engine\nsupports multiple sampling rate we can remove this test.\n\nThe fix for issue 8512027 (commit 2a9c5cd4) caused a regression\nbecause the framework now checks the return code of the effect\nconfigure command and ignores subsequent commands in case of error.\n\nBug: 8630044\nChange-Id: I3146871f1ad8f7945a2e63ea763dd7b87368337d\n"
    },
    {
      "commit": "ecba7488c5cceaacef95836b1b476433451e7761",
      "tree": "83245c19c2dda5c557531edb19478056034b5db5",
      "parents": [
        "5544c66ba0aa789a997b376df503a5ffae425dc7"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:53:49 2013 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Tue Apr 09 21:53:49 2013 -0700"
      },
      "message": "Add liblog\n\nBug: 8580410\nChange-Id: If493d87d60d71be664ad75b140c62acadb75b0d0\n"
    },
    {
      "commit": "6a5c6ed13e3ea1b19835e08624125c9b1505b32c",
      "tree": "f3a83e08b9a6c526ee1b3cbfe02de1ed09382770",
      "parents": [
        "4f4c2655dc3f6fcef766db6e793b1642ad0fd605"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 19 09:57:29 2013 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Tue Mar 19 09:57:29 2013 -0700"
      },
      "message": "Fix valgrind error\n\nThe volume member of the BundledEffectContext class was not being\ninitialized, resulting in uninitialized data being used for calculations\nand control flow.\n\nChange-Id: I84bf9fd478e5d0479e781323b21c7c03dea958c5\n"
    },
    {
      "commit": "a93c8c9c89ba679cf312c7d082913121bb5543c2",
      "tree": "c70bb3650465a38237dbbe113c4ba71da410280a",
      "parents": [
        "12834fe289e8173e94f31603fa6d313abe56ad70"
      ],
      "author": {
        "name": "Chih-Wei Huang",
        "email": "cwhuang@linux.org.tw",
        "time": "Thu Jan 10 20:52:57 2013 +0800"
      },
      "committer": {
        "name": "Chih-Wei Huang",
        "email": "cwhuang@android-x86.org",
        "time": "Thu Jan 10 21:04:50 2013 +0800"
      },
      "message": "Avoid a building error\n\n\u0026pDwmModule-\u003econfig may equal to pConfig that triggers\na building error using gcc 4.7:\n\nIn file included from bionic/libc/include/signal.h:33:0,\n                 from bionic/libc/include/sys/select.h:34,\n                 from bionic/libc/include/unistd.h:34,\n                 from system/core/include/cutils/log.h:34,\n                 from frameworks/av/media/libeffects/downmix/EffectDownmix.c:19:\nIn function \u0027memcpy\u0027,\n    inlined from \u0027Downmix_Configure\u0027 at frameworks/av/media/libeffects/downmix/EffectDownmix.c:651:11,\n    inlined from \u0027Downmix_Init\u0027 at frameworks/av/media/libeffects/downmix/EffectDownmix.c:605:9,\n    inlined from \u0027DownmixLib_Create\u0027 at frameworks/av/media/libeffects/downmix/EffectDownmix.c:233:9:\nbionic/libc/include/string.h:114:31: error: call to \u0027__memcpy_overlap_error\u0027 declared with attribute error: memcpy called with overlapping regions\n\nChange-Id: Ia6c4aab72e38d00d8d526f3b56fc03b6530b4e44\n"
    },
    {
      "commit": "480421bb48af5df4f15498845447f3fde20a4069",
      "tree": "f9d8a23223b8a5da6528803cb5fcbabae9464037",
      "parents": [
        "fb242fa66643d1bd5362077a44c02c86c8064564"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Oct 26 14:28:05 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Nov 02 15:35:11 2012 -0700"
      },
      "message": "Turn off executable bit on ordinary files\n\nChange-Id: I0abea25b58fb1d03975bed9cca40f826fcd4c5e4\n"
    },
    {
      "commit": "7f16b197c76fbae9399242f055a7ee16dcd0fd6d",
      "tree": "c3ef4aac9bb7cedd1a694a50d4f9be0ec83cc817",
      "parents": [
        "6035cb5a61a7606cc8e4ecddec32b2eb37a9fd56"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Oct 25 16:05:57 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Oct 25 16:05:57 2012 -0700"
      },
      "message": "Only export the symbols that need to be\n\nThe effects libraries were exporting many more symbols than needed.\nThis reduces the exported symbols to just the needed ones (basically\njust \"AELI\"), which happens to also save about 28KB.\n\nChange-Id: I115077e52e8dc845282e6f62a522908d26dd72d6\n"
    },
    {
      "commit": "6035cb5a61a7606cc8e4ecddec32b2eb37a9fd56",
      "tree": "4adad231ee22989258c1d6c6c95ea8c218a9807d",
      "parents": [
        "bd37975395b6517e155f6195d2300872bc26ee70"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Oct 25 11:02:50 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Oct 25 12:16:59 2012 -0700"
      },
      "message": "Switch to new fx library API\n\nChange-Id: I6603aef5e3821a8f911e3f33ef8565d04bd1e2e5\n"
    },
    {
      "commit": "a4fe9a13c432afc5d1e94a4617b75e8f962540e9",
      "tree": "378f10b114a866dbe5feb3eaf7ee35f0a33f3aa2",
      "parents": [
        "bbe11e46faf8f9e3296431993c36d3efc61337b5"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Oct 17 10:57:02 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Oct 17 10:57:02 2012 -0700"
      },
      "message": "Fix valgrind issues\n\nWe were reading some uninitialized memory when creating bass boost and EQ\neffects, and using memcpy() with identical source and destination.\n\nChange-Id: I15ea1b2c52ae05cbf54aef04351e89805e0ebf8e\n"
    },
    {
      "commit": "97bb6e89845cb6d85f4d34a4efcc1de2ce585336",
      "tree": "6b8936f6a6e8d89c3a5a940fb5a48964463f4ea0",
      "parents": [
        "9bccfb551d79a16e23278db7b0e043da79118bf8"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Oct 17 10:57:02 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Oct 17 10:57:02 2012 -0700"
      },
      "message": "Fix valgrind issues\n\nWe were reading some uninitialized memory when creating bass boost and EQ\neffects, and using memcpy() with identical source and destination.\n\nChange-Id: I15ea1b2c52ae05cbf54aef04351e89805e0ebf8e\n"
    },
    {
      "commit": "c5cd686a83c6ea65a68d98023d5527fe4373d4e4",
      "tree": "4496f4c659bea583a12268d59e59ed6d976979bd",
      "parents": [
        "b845c6b0c3066d6791973be830f0953477461a65"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 17 09:02:23 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 17 18:49:09 2012 -0700"
      },
      "message": "Fix THD with max user EQ preset volume again\n\nThere was a problem with previous fix in 1b6c677c where\nthe THD was good for max volume but bad for intermediate\nhigh volume values.\n\nThis fix does not limit the band gains but apply a correction\nto the effect bundle volume to take into account not only the\nmaximum band gain but also the average band gains weighted\nby the proximity of each band to the max gain band.\n\nChange-Id: Ibedd8da7fce1e163117f29b3da332da0e4fe8889\n"
    },
    {
      "commit": "0ee916f1f69c2d69e02a8de1e5cd5a2e9d0a0782",
      "tree": "81a8353326b409393a6d9167ded988affcd1a164",
      "parents": [
        "482136a5f977056eeffe2aa58d31ce395be562a3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 17 09:02:23 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 17 18:49:09 2012 -0700"
      },
      "message": "Fix THD with max user EQ preset volume again\n\nThere was a problem with previous fix in 1b6c677c where\nthe THD was good for max volume but bad for intermediate\nhigh volume values.\n\nThis fix does not limit the band gains but apply a correction\nto the effect bundle volume to take into account not only the\nmaximum band gain but also the average band gains weighted\nby the proximity of each band to the max gain band.\n\nChange-Id: Ibedd8da7fce1e163117f29b3da332da0e4fe8889\n"
    },
    {
      "commit": "8a9e791c0642084c1c6e758b7887b274392f5bb0",
      "tree": "98d16057b23f3e125142987921c736c4855ed60c",
      "parents": [
        "ac19caca75e7268c0a87bfcb2db73df1dd964616",
        "1b6c677c4bad5c1aea4f01277cf5aa234ad4cab4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 11 08:33:52 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 11 08:33:53 2012 -0700"
      },
      "message": "Merge \"Limit maximum equalizer gain.\" into jb-mr1-dev"
    },
    {
      "commit": "fa030e2bde158d357ea92eb10f2206ca76eb7e04",
      "tree": "50b102260b50520b57a0738a0e0876457e6ac49a",
      "parents": [
        "11297ccaa742bc5406a133ddcbf309002f0e7f19",
        "9b3c701bbdbf3e4655758e995d467b325f8f366d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 11 08:33:52 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 11 08:33:53 2012 -0700"
      },
      "message": "Merge \"Limit maximum equalizer gain.\" into jb-mr1-dev"
    },
    {
      "commit": "1b6c677c4bad5c1aea4f01277cf5aa234ad4cab4",
      "tree": "e8fa7869cee2cb02922ea342ef74d03fe6bb3526",
      "parents": [
        "fd48021dfc3278b048ba99ecffe7f996751fb440"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 10 16:27:35 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 10 18:21:27 2012 -0700"
      },
      "message": "Limit maximum equalizer gain.\n\nLimit maximum gain in all EQ bands according to current volume so that\ntotal gain (current volume + band gain) does not exceed a certain limit.\nThe gain difference between bands is preserved.\n\nChange-Id: Ice5a9705a0b3353e8778b4c539a29ca9cdf60390\n"
    },
    {
      "commit": "9b3c701bbdbf3e4655758e995d467b325f8f366d",
      "tree": "7793fdf1d2d1ca9522796a2d5863dae844a3064b",
      "parents": [
        "947be6bf6700d07e148f6fbf6308e86b08d3c926"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 10 16:27:35 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 10 18:21:27 2012 -0700"
      },
      "message": "Limit maximum equalizer gain.\n\nLimit maximum gain in all EQ bands according to current volume so that\ntotal gain (current volume + band gain) does not exceed a certain limit.\nThe gain difference between bands is preserved.\n\nChange-Id: Ice5a9705a0b3353e8778b4c539a29ca9cdf60390\n"
    },
    {
      "commit": "199862ef95e4d768fbf2cc5518fe43e9ed5aa5a2",
      "tree": "c007789298aa55bef0fd888a1d70ee783d4d5f55",
      "parents": [
        "fd48021dfc3278b048ba99ecffe7f996751fb440"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 07 17:31:18 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 10 16:40:21 2012 -0700"
      },
      "message": "audio effects: no audio preprocessing by default\n\nThe audio preprocessings are not included in the default\naudio_effect.conf file anymore as the audio HAL has to provide\nsupport for them.\n\nEach product implementing one or more audio pre processing must\nprovide a specific audio_effects.conf file.\n\nChange-Id: I3b2f636f7a8748829798d4b9057d269db9424d62\n"
    },
    {
      "commit": "c39b9c2305e4527d3caef4cfd3e8f3b574151597",
      "tree": "6e5b2a4dd86c3f45473eaa34ee226bc046687209",
      "parents": [
        "947be6bf6700d07e148f6fbf6308e86b08d3c926"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 07 17:31:18 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 10 16:40:21 2012 -0700"
      },
      "message": "audio effects: no audio preprocessing by default\n\nThe audio preprocessings are not included in the default\naudio_effect.conf file anymore as the audio HAL has to provide\nsupport for them.\n\nEach product implementing one or more audio pre processing must\nprovide a specific audio_effects.conf file.\n\nChange-Id: I3b2f636f7a8748829798d4b9057d269db9424d62\n"
    },
    {
      "commit": "5e54e0898a0110642df126238227eca150f2654a",
      "tree": "3102dd4df0ce3972e0137e59bad49bf958c10129",
      "parents": [
        "10894e509f777c6bd7e408a57f5cf21ee2b36a96",
        "f6c7a40f8cbbd2fa1a4131ef91b30cf7c5c2d0d7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 07 16:46:39 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 07 16:46:40 2012 -0700"
      },
      "message": "Merge \"Fix headroom management in equalizer\" into jb-mr1-dev"
    },
    {
      "commit": "d280f6ff11e110b7435e6e6c7a4075285a76bab6",
      "tree": "37b7424de62809c1ede1494c38ab377c42ce36bc",
      "parents": [
        "fe140e882c578883238a2dd7793159c848a07b49",
        "aa1c402d4ed471dfd0863f73f40a776be258419e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 07 16:46:39 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 07 16:46:40 2012 -0700"
      },
      "message": "Merge \"Fix headroom management in equalizer\" into jb-mr1-dev"
    },
    {
      "commit": "f6c7a40f8cbbd2fa1a4131ef91b30cf7c5c2d0d7",
      "tree": "fd1c6de50d0360adb5e1b35f593eb5e475e116bf",
      "parents": [
        "0b73d4730202fcad53aefc4314a06e7b95f442f0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 07 15:09:57 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 07 15:09:57 2012 -0700"
      },
      "message": "Fix headroom management in equalizer\n\nFix a bug resetting the headroom parameters when\ncalling the bundle process function for the first time.\n\nChange-Id: Ie05f97606f415954340ff2a4e48cd7b0a97a063b\n"
    },
    {
      "commit": "aa1c402d4ed471dfd0863f73f40a776be258419e",
      "tree": "cd73b33e48f2092483ad6f3c2bdf96c04714c271",
      "parents": [
        "28169b107327b5db58877babf6993f0eb109c58a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 07 15:09:57 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 07 15:09:57 2012 -0700"
      },
      "message": "Fix headroom management in equalizer\n\nFix a bug resetting the headroom parameters when\ncalling the bundle process function for the first time.\n\nChange-Id: Ie05f97606f415954340ff2a4e48cd7b0a97a063b\n"
    },
    {
      "commit": "f1c04f952916cf70407051c9f824ab84fb2b6e09",
      "tree": "8dba2d679bf308d534c51ea5067ba6d8f4f81f25",
      "parents": [
        "261fd2119c70fda3af64453881a6346dd48eb956"
      ],
      "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": "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": "cba53fbdaa723322f7157a4890feab776beae13e",
      "tree": "1da03e4a883c903902710c4c7b7d3be39a3a3187",
      "parents": [
        "23466a95b6b66b9f9592148f4252775e16d46e5b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 30 11:16:51 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 30 11:48:41 2012 -0700"
      },
      "message": "audio effects: fix bug in sample rate control.\n\nFix a bug in LVM bundle wrapper preventing audio framework sample rate\nfrom being sent to the effect bundle instance.\n\nChange-Id: I912027f866d3beac91b977bba869ff96a92d2a62\n"
    },
    {
      "commit": "9f6f0a7eb1d7f2c35f3547779364a1a8d6d4a24c",
      "tree": "3961530311f2e88f66d83778f3a2a036f6b64445",
      "parents": [
        "161093230065931260959deb5bffeb98d2c8a7b4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 30 11:16:51 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 30 11:48:41 2012 -0700"
      },
      "message": "audio effects: fix bug in sample rate control.\n\nFix a bug in LVM bundle wrapper preventing audio framework sample rate\nfrom being sent to the effect bundle instance.\n\nChange-Id: I912027f866d3beac91b977bba869ff96a92d2a62\n"
    },
    {
      "commit": "e44615ff6022239850a3ea459ad6e07b44c37544",
      "tree": "67b26af98c6bff960193a642bf0a48181c1cee43",
      "parents": [
        "9a150640a28d3fa5507a590125a6c004681bb221"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 24 14:17:34 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 24 14:17:34 2012 -0700"
      },
      "message": "Reduce THD when equalizer is ON.\n\nIncrease headroom in LVM bundle to reduce THD when equalizer is ON\nwith high band gains.\n\nAlso add a workaround for a bug in headroom parameter control.\n\nChange-Id: I1d67c9ae475f6cf852c2e0e49bacfc82a5e484fd\n"
    },
    {
      "commit": "a189a6883ee55cf62da1d7bf5bf5a8ab501938a4",
      "tree": "7ab4133c0ce507e289baacf76d745de27f9e8136",
      "parents": [
        "28b76b334f92a15a2be3cc9e2f7d229a3275d1ac"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 20 12:16:30 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jul 17 11:35:16 2012 -0700"
      },
      "message": "Use struct assignment instead of explicit memcpy\n\nfor POD structs effect_descriptor_t and effect_config_t\n\nChange-Id: Ib2fc47f85fb65ed91b0abb1f87217c49b5eb571d\n"
    },
    {
      "commit": "3d51d5cb53cc630709a0ba78d0e60501a675f2d5",
      "tree": "c01dc8011b4e0061343c8b60b0da3508c63ae822",
      "parents": [
        "b4ea1ab821d652cb080910d4081f5f1318597a90"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jun 12 18:10:35 2012 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jun 13 15:18:29 2012 -0700"
      },
      "message": "Add NOTICE and MODULE_LICENSE_APACH2 to libs build under /frameworks/av/\n\nChange-Id: I0a3af3e2abdedebd5934f3d941d01c32cfc75e26\nrelated-to-bug: 6647465\n"
    },
    {
      "commit": "f06c2ed50e1db871ae9eb2bd15a196064f8c278c",
      "tree": "a6e809ffab6281359f5c22166113cb2039579f68",
      "parents": [
        "67c0a58e05f4c19d4a6f01fe6f06267d57b49305"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Jun 06 09:52:31 2012 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jun 07 09:16:27 2012 -0700"
      },
      "message": "Take latency and current time into account for visualization\n\nBuffer more data, and return the data that is currently being\noutput from the audio output, to ensure that visualizations are\nsmooth and responsive even when the audio output has a large\nlatency and/or large buffers.\nb/6522728\n\nChange-Id: I401637f01be7600b3c594a55c869036c13b206c0\n"
    },
    {
      "commit": "aea2715e65994e665a3732551880419ba1cecc0d",
      "tree": "062b9c82f8d9ce4303467e46981c40d3b1fc1d8e",
      "parents": [
        "e737cda649acbfa43fc1b74612a83f2fac9aa449"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu May 24 10:11:07 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu May 24 12:12:43 2012 -0700"
      },
      "message": "Prevent occurences of clipping in loud downmixed scenes\n\nThe downmixer effect is a mixer, wich, like the platform mixer,\n  hard-clips. To prevent clipping during loud scenes across multiple\n  chanels, apply a fixed attenuation on the result of the downmix.\n  Note that this attenuation is lower the theoretical required\n  attenuation (except for quad and surround) but is adequate for\n  most content.\n\nBug 4280902\nChange-Id: Iec520e9f1367284d6102633f532429361717692d\n"
    },
    {
      "commit": "6895deeecc8797e6f5b28e7d07ec6bc499355c0c",
      "tree": "9dc5dcdccac3993d0604b69ec08ad2ce75015664",
      "parents": [
        "5d3d12bf58da5b48b1edb7c20b5d1edec0773f75"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue May 15 15:51:16 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed May 16 12:28:45 2012 -0700"
      },
      "message": "Stereo downmixer supports generic configurations. Fix 7.1 downmix\n\nAdded a generic downmixer to stereo function to handle the\n  multichannel configurations not supported by the dedicated\n  downmix functions.\n  It first verifies the mask is supported, and then derives\n  channel indices for the downmix.\nAdded support for forcing the generic downmixer to be always\n  used instead of the format-specific functions (define\n  DOWNMIX_ALWAYS_USE_GENERIC_DOWNMIXER to force it).\n\nFixed 7.1 downmix function where handling of accumulate vs\n  overwrite was inversed.\n\nBug 4280902\n\nChange-Id: I8259b32c4e90f76ef4dcd803592fc71df4ae90c5\n"
    },
    {
      "commit": "db46b48d24e03f5bcb8de6d0ff852ec4153401e7",
      "tree": "4d526d6d7e9b7fd92b46f3a8d48c2adfe7f54a63",
      "parents": [
        "36513e357dfc6c53898d4b4f768c9fd4822f4653"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Apr 23 11:29:26 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Apr 23 14:52:34 2012 -0700"
      },
      "message": "Downmix support for 5.1 and quad with side channels\n\nIn DOWNMIX_TYPE_FOLD mode, add support for variants of quad and\n 5.1 channel masks where the \"side\" channels are used instead of\n the \"back\" channels. These variants have the same channel order,\n so they can share the same downmix function.\n\nChange-Id: I5f9cb7cb120927189de680c2a968d6136dc1fc43\n"
    },
    {
      "commit": "fd9e14bc28f377065e43ec6833d754ca151b3941",
      "tree": "c63aa194d876cc7a971d6099378a9b62a9419dc7",
      "parents": [
        "2d359a85ef5b72f1cb47df227b44fe4f3c5fbd60",
        "f28c8792f64e10c3c477d86bf4804a8566ff524e"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 19 09:09:19 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 09:09:19 2012 -0700"
      },
      "message": "Merge \"Turn off debug in downmix effect\""
    },
    {
      "commit": "f28c8792f64e10c3c477d86bf4804a8566ff524e",
      "tree": "6699a532aeae112ce0be9dcf1bfa3f05493481ab",
      "parents": [
        "9bd23229fdec1657398abc682ccccfce1c95f8aa"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 18 18:38:42 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 18 18:38:42 2012 -0700"
      },
      "message": "Turn off debug in downmix effect\n\nChange-Id: I4eda43166d23b3297cf769056a6db720401799aa\n"
    },
    {
      "commit": "3476de62fb10e76412452ef4c6bd71936c9f7db1",
      "tree": "9c814922fd33670a7cdd23c9597cbd19ad5e1ef9",
      "parents": [
        "fbe308d428e42fe249ec317f76e3d11feb3264d5"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sun Apr 15 17:15:07 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 18 18:27:39 2012 -0700"
      },
      "message": "Add support for scaling mode parameter\n\nSupport VISUALIZER_PARAM__SCALING_MODE parameter.\n\nModify process() function to use new volume scaling parameter,\n used to set whether captured values are maximized by current\n headroom in the buffer (default existing behaviora) or left\n as is and thus affected by volume.\n\nModify AudioEffect to allow subclasses to override the following\n events: control status changed, enable status changed, command\n executed.\nIn Visualizer class (a subclass of AudioEffect), reset the\n scaling mode and capture size on the actual effect\n as cached when control is regained.\n This will allow the effect to be properly\n configured whenever Visualizers with different scaling\n modes or capture sizes are released (e.g. from java\n release() method).\n\nChange-Id: I05cb9f925a296dceca91bafa9fe294ef2b2c2bd5\n"
    },
    {
      "commit": "3f9c84c0a5af83fceb8669390e2d71b75ec7b550",
      "tree": "12f049ef754cdd81c720dbfbed8adfca0808f073",
      "parents": [
        "2d531e1b5865d61d5ca25d77d53017b1ad180efa"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 03 15:36:53 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 11 12:17:59 2012 -0700"
      },
      "message": "audio pre processing: test code for dual mic\n\nAdded functional test code to validate effect API for\nmulti mic simplementations.\n\nAlso fixed warning in AudioFlinger.\n\nChange-Id: I07be4d2e4d17791d3626c804ba3e9f87ff26d05a\n"
    },
    {
      "commit": "7d5b26230a179cd7bcc01f6578cd80d8c15a92a5",
      "tree": "563086c1185e0e54770d8c60c8eec1aefdddb89f",
      "parents": [
        "4b75a9c8b93a90749bc5d22912ad0d96c12f4ecf"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 04 18:54:36 2012 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Apr 09 11:27:14 2012 -0700"
      },
      "message": "AudioMixer uses downmix effect for multichannel content\n\nIn the AudioMixer structure associated with each track, add an object\n  that acts as the buffer provider when the track has more than two\n  channels of input in the mixer. This object, DownmixerBufferProvider,\n  gets audio from the actual buffer provider of the track, and applies\n  a downmix effect on it.\nThe downmix effect is created and configured when the track gets\n  created in AudioFlinger, which causes AudioMixer::getTrackName()\n  to be called with the new track\u0027s channel mask. It is released\n  when the track is disabled in the mixer.\n\nChange-Id: I05281ed5f61bef663a8af7ca7d5ceac3517c82db\n"
    },
    {
      "commit": "183dc7772d7eba127aab63829c7ca0359d817593",
      "tree": "1966c3817b8064f8bf3f30590afba5739ef265f3",
      "parents": [
        "529127450abdeddf5d2467c7973e779a6b1376ea"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 23 15:35:48 2012 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 26 11:05:25 2012 -0700"
      },
      "message": "fix visualizer inactivity detection\n\nCurrent method implemented by the visualizer to detect that audioflinger has\nstopped providing audio buffers does not work if the application\nreads pcm captures too fast.\n\nThe fix consist in implementing a method based on real time measurement only.\nOne drawback is that the new method makes use of system calls that add some\noverhead to the process and capture functions.\n\nChange-Id: I53bd596b856f1cc7f0f47e08413af3335227100b\n"
    },
    {
      "commit": "17a736c3e1d062d7fc916329eb32aef8935614af",
      "tree": "7fb73e48de8641ce6ad7b65fb4204bc60cd3e5f0",
      "parents": [
        "1746929ddc7592ab397c402724a61352e45df093"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 14 08:52:15 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 19 14:12:01 2012 -0700"
      },
      "message": "Update comments\n\nChange-Id: I327663a020670d0a72ff57bd0b682e2ce0528650\n"
    },
    {
      "commit": "ab334fd351ae5a0e18903da123d63e565b536874",
      "tree": "9bcc5a6151326d9ca345f9dfac0d9d68d48e73b4",
      "parents": [
        "3c5bbaee376d235404f267fbe1693d1960bfaaef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 12:56:06 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 15 13:15:27 2012 -0700"
      },
      "message": "audio_channel_in/out_mask_from_count\n\nand avoid ambiguous term \"channels\" where it might be confusing\nas to whether it is a channel mask or channel count\n\nChange-Id: I744fa08ccb6001a98c97bd638d2c9d56836c4234\n"
    },
    {
      "commit": "33b383948e8f270bff30378476f00dce289004eb",
      "tree": "a42eeb76674395b36611da694166ddd4144a0fa8",
      "parents": [
        "dfaf549e3e310bc22444f4404b19f4907b24c286"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 15:59:35 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 14 16:44:34 2012 -0700"
      },
      "message": "Remove dependency on audio_* location\n\nChange-Id: I4bc66115fcb9ba22b057bd72db3f561dcb18a0d8\n"
    }
  ],
  "next": "b4d307481960b6b348fae4b4e8edefd003c3d36c"
}
