)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "b4d307481960b6b348fae4b4e8edefd003c3d36c",
      "tree": "d357f30c9cf6541cbe3de6de7cc71a860f66c80b",
      "parents": [
        "f67fdc6d8bb31226ffeeecbff6aca610befd0110"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 14:46:23 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 16:14:19 2012 -0700"
      },
      "message": "Use correct syntax for #include \u003c\u003e \"\"\n\nChange-Id: I943137108668ae66f8eba18dafe069a7951bcd8f\n"
    },
    {
      "commit": "04c1e531b5913c09aa9b2e59e2b8ed9b4d8a4cba",
      "tree": "643a1bd10a8e4d0e9a208a3987d41459d6db49d1",
      "parents": [
        "eb7de4504bdb3a0182021ca6f022cccca01dbf1e"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Mar 02 10:59:56 2012 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Mar 07 10:17:19 2012 -0800"
      },
      "message": "Effect for multichannel PCM downmix to stereo\n\nFirst pass at implementing an audio effect whose role is to\n downmix multichannel PCM buffers to stereo.\nThe effect is not handling volume changes.\nThe effect code here handles quad, 4.0, 5.1 and 7.1 input configurations,\n to optimize the most commom configurations, and does not yet handle\n generic multichanel configurations.\n\nChange-Id: I74d04bd961348f3f0e4ae7714b70e620808a0829\n"
    },
    {
      "commit": "e7c795f3300814aa3f26ceb845f29695383c7edc",
      "tree": "bf5b20a09d391161de6e987669a75ddc09f8ce22",
      "parents": [
        "4bce61f407d43b216c288a8d7b26fb5519853dba"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Mar 02 09:58:05 2012 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Mar 02 09:58:05 2012 -0800"
      },
      "message": "Correct GUID errors in audio effect configuration\n\nCorrect erroneous spaces that were present in some audio effect GUIDs.\n\nChange-Id: Ide3a1552b2f8976f96ee980f1341f935555656d9\n"
    },
    {
      "commit": "76533e94500e5d221ec4a1a5d9c97ea3d75860e4",
      "tree": "ee295fa8ce60d86ffa14021809ce6357c5d61d24",
      "parents": [
        "3b81acab52b7140c1b8b20be2d67be3e221637e7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 17 17:52:04 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 17 17:52:04 2012 -0800"
      },
      "message": "audio preprocessing: fix multiple enable problem\n\nDo not set the effect state back to configured when a configuration\ncommand is received while the effect is enabled. Instead just check that\nthe new config is the same as current config.\n\nIt is normal to receive a config command from the framework while enabled\nif a new effect is added on the same session.\n\nChange-Id: I93aa38bf60a3d7cc7729934e87ddd69bf1112cd6\n"
    },
    {
      "commit": "1f5ce8b0941c9c6baadd40d151634145f6d5a35c",
      "tree": "a1e57ab3d0decb8e4748f89e8f7caeab4c5caf80",
      "parents": [
        "44deb053252a3bd2f57a007ab9560f4924f62394",
        "94fef38613962c983c46ab0b97c58f5373412d2d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 13 12:27:27 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 13 12:27:27 2012 -0800"
      },
      "message": "Merge \"Fix audio preprocessing library wrapper\""
    },
    {
      "commit": "5e92a7861196ddae14638d4b7a63fc4892b7ef59",
      "tree": "6772b944a26acb22381a2eb38871b46cff9d856a",
      "parents": [
        "0a20fa9c41c96e31fa20e071074a4b6e7f6c41c3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 30 07:40:52 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 09:21:39 2012 -0800"
      },
      "message": "Effect UUID inputs passed by pointer are const\n\nChange-Id: I1f5c338bcb7368e3dd8cd5f804b2e6d9fbe087f8\n"
    },
    {
      "commit": "94fef38613962c983c46ab0b97c58f5373412d2d",
      "tree": "20240a26a14b49d0863eb80da2645eb62265abb8",
      "parents": [
        "f9289a4ca88d8f72cb0d6b3ca16fbc44ef4a2aeb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 06 14:28:54 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 06 14:51:57 2012 -0800"
      },
      "message": "Fix audio preprocessing library wrapper\n\nFixed bug in EFFECT_CMD_GET_CONFIG command handler in\nwebRTC audio processing library wrapper.\n\nChange-Id: I1d2cefa00930e549607af8dc2cf27555da8d313f\n"
    },
    {
      "commit": "5387696d25bc710f8cd0e6d08079e2aa8d6c1417",
      "tree": "32b5c99149c72f0a7ef23dc17d0ddbb4d810eef4",
      "parents": [
        "bb62819aa34b0e89090ccc50e5915e25bc137583"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 31 12:35:20 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 01 10:59:17 2012 -0800"
      },
      "message": "modifications for new webrtc modules\n\nAdapt include files path in makefile and source to new\ndirectory structure in webrtc library.\n\nAlso changed the default AGC parameters to less extreme settings.\n\nChange-Id: Ia6a41c816dc44645f8f867937b722eede88c06ea\n"
    },
    {
      "commit": "29357bc2c0dd7c43ad3bd0c8e3efa4e6fd9bfd47",
      "tree": "3bdafe4b02fe36f6ee29c3170f0b0d2799bebf86",
      "parents": [
        "d709ca9c6a0fa1c8f40cbe624a119398643c5087"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 19:20:56 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Sun Jan 08 13:19:13 2012 +0000"
      },
      "message": "Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/157220\n\nBug: 5449033\nChange-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c\n"
    },
    {
      "commit": "5ff1dd576bb93c45b44088a51544a18fc43ebf58",
      "tree": "c002dcda87f08329197b01395539bd25f10ca737",
      "parents": [
        "8a08dcc0a5de19a904e77d5f31bed3dff9a59890"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Jan 05 23:22:43 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 10:07:54 2012 +0000"
      },
      "message": "Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157065\n\nBug: 5449033\nChange-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69\n"
    },
    {
      "commit": "f6b1678f8f508b447155a81b44e214475ab634a8",
      "tree": "dabe2858dfed9133c6a270cd6b86877a9d3588b1",
      "parents": [
        "94023fa6744e24f26f0aba1699ec278649bd66df"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 15 09:51:17 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 07:33:45 2012 -0800"
      },
      "message": "Use the standard CC_LIKELY and CC_UNLIKELY macros\n\nSeveral source files privately defined macros LIKELY and UNLIKELY in terms\nof __builtin_expect. But \u003ccutils/compiler.h\u003e already has CC_LIKELY and\nCC_UNLIKELY which are intended for this purpose.  So rename the private\nuses to use the standard names.\n\nIn addition, AudioFlinger was relying on the macro expanding to extra ( ).\n\nChange-Id: I2494e087a0c0cac0ac998335f5e9c8ad02955873\n"
    },
    {
      "commit": "3d5188bd6abe55898f10a0edf3c05aff8aa2ef67",
      "tree": "7dd2eba6d9a65d42628ffe55d12e640776285035",
      "parents": [
        "42968939dfce0954d6540011199045ec4ed7de80"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 16 15:30:36 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 19 17:08:31 2011 -0800"
      },
      "message": "audio effects: rename configure command\n\nRenamed audio effect library interface command for audio format\nconfiguration from EFFECT_CMD_CONFIGURE to EFFECT_CMD_SET_CONFIG.\nThis makes the naming more consistent with other exixsting commands\nand allow adding a new command to get the configuration (EFFECT_CMD_GET_CONFIG).\nSame change for reverse channel configuration renamed from\nEFFECT_CMD_CONFIGURE_REVERSE to EFFECT_CMD_SET_CONFIG_REVERSE.\n\nImplemented EFFECT_CMD_GET_CONFIG in exisitng effect libraries.\n\nChange-Id: Ia7b1c620f13797fe5aceb3b0b4acbacce09fb067\n"
    },
    {
      "commit": "73bb0b9f2922679d057e29e9f502988178554a02",
      "tree": "56efd281b6a1e290a497351270ea7d25d8b35065",
      "parents": [
        "516fb1dad0c434fd89624c418543d35436a5374c",
        "1e809edd9b25e34d9c475ecd2c2e26ddc75cba2c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 11 11:51:14 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 11 11:51:14 2011 -0800"
      },
      "message": "am 2c29a5cf: am 1f8c6212: Merge \"visualizer: reset buffer if playback is idle\" into ics-mr1\n\n* commit \u00272c29a5cf1658532bca4e34f816fa30312241a336\u0027:\n  visualizer: reset buffer if playback is idle\n"
    },
    {
      "commit": "3df40a093d8d3d211f693e0e3ef4076750cabfea",
      "tree": "c26b2befde35a0235263d12d17dd30ad8d98370c",
      "parents": [
        "1dc0ab1d2e2c5f40193556ad1239e304563f3083"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 10 10:02:18 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 10 10:27:05 2011 -0800"
      },
      "message": "visualizer: reset buffer if playback is idle\n\nVisualizer capture buffer must be reset if audio framework has stopped\ncalling process for a given period of time to get read of residual\ndata from previous captures.\n\nIssue 5571920.\n\nChange-Id: I6e73f971bb812cdbb2979a3b5e763abab07634eb\n"
    },
    {
      "commit": "45b92707d851458c73e320d2450cfc246b1167db",
      "tree": "17482eaf257fe07bf909a9726ae86f56b4037d48",
      "parents": [
        "f5a486a54d85ee59f4e9afa18b05c1946d749050",
        "4d954c4ff6ab7110df23f1f3ebfe296beb97f3de"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Nov 05 09:32:35 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Nov 05 09:32:35 2011 -0700"
      },
      "message": "resolved conflicts for merge of 914972be to master\n\nChange-Id: I15adb9040eaa206c31bb5a08ed5ee5b32967ba0a\n"
    },
    {
      "commit": "f5a486a54d85ee59f4e9afa18b05c1946d749050",
      "tree": "3e2b736f57ec861e490f34d76119d2f024e30cc5",
      "parents": [
        "7040b12bb2f83209bbccd0149d365e2d106adc74",
        "047f160561fc7a87fc5794762d36225bfa5d2e89"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Nov 05 08:52:20 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Nov 05 08:52:20 2011 -0700"
      },
      "message": "resolved conflicts for merge of 79178b8b to master\n\nChange-Id: Ia597549a6d159b86063eb3afec5ce7fe98434a65\n"
    },
    {
      "commit": "4d954c4ff6ab7110df23f1f3ebfe296beb97f3de",
      "tree": "08359befbbcfeb0a4e401724e87d277c86a7d7e9",
      "parents": [
        "047f160561fc7a87fc5794762d36225bfa5d2e89",
        "b6431802fc6cff501a4311de288ba469839fbf86"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 04 08:29:30 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 04 08:29:30 2011 -0700"
      },
      "message": "Merge \"Fix device management in lvm effect bundle wrapper.\" into ics-mr1"
    },
    {
      "commit": "5dc65e2ce92c7364da60bdff5f345daf145c2c0f",
      "tree": "90ed0dc7e58b08a673b19a7b72676ba4c9630b70",
      "parents": [
        "09ebde724b2cd224968d1fdba4f5afd81c998c6a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Oct 31 17:36:03 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 02 09:14:13 2011 -0700"
      },
      "message": "Fix problem in lvm effect bundle wrapper.\n\nWhen an effect is disabled, the process function should either\ncopy or accumulate the content of the input buffer to the output buffer\ndepending on the behavior requested by the framework.\nCurrent implementation is copying the input buffer unconditionally.\n\nRelated to issue 5433942.\n\nChange-Id: Ic488ca97eadcc4c763de570d7e6c6f5b7a979415\n"
    },
    {
      "commit": "b6431802fc6cff501a4311de288ba469839fbf86",
      "tree": "596a877457ca1b1a6e1eb6e5c547a4cb0dcbc67d",
      "parents": [
        "841fa37451fb74f3d5978a15aab606bbb67e8c39"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Oct 31 18:48:15 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 01 09:12:19 2011 -0700"
      },
      "message": "Fix device management in lvm effect bundle wrapper.\n\nThe virtualizer and bass boost effects should be disabled when\nnot playing throught headsets or headphones.\n\nThere is a bug in current wrapper implementation that makes that those\neffects are not disabled if the effect is enabled by the user after\nthe headset has been removed (current logic only works if the device selection\noccurs while the effect is enabled).\n\nChange-Id: I7c66b15a0339d95fb9ed13c8320d66379725d3b6\n"
    },
    {
      "commit": "3856b090cd04ba5dd4a59a12430ed724d5995909",
      "tree": "a24e4c98fa6049fd8085826be838000f9a67e39b",
      "parents": [
        "1d2acaffde56ad79e6e96f228d7857863462397c"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Oct 20 11:56:00 2011 +0100"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Oct 26 09:57:54 2011 +0100"
      },
      "message": "Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/143865\n\nBug: 5449033\nChange-Id: I0122812ed6ff6f5b59fe4a43ab8bff0577adde0a\n"
    },
    {
      "commit": "7c7f10bd4fda9a084e5e7f0eb3a040dfcbf01745",
      "tree": "eb67cd14e679d97a9b866a0410d8e582f4639274",
      "parents": [
        "67a124dcac0578aed94aebf451675a5f4c8a1e4e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 17 21:29:58 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 18 09:42:57 2011 -0700"
      },
      "message": "Audio framework: support for audio pre processing\n\nAudio effect framework is extended to suport effects on\noutput and input audio path.\n\nAudioFlinger: Support for audio effects and effect chains is\nmoved from PlaybackThread class to ThreadBase class so that\nRecordThread can manage effects.\nEffects of type pre processing are allowed on record thread\nonly. When a pre processing is enabled, the effect interface handle is\npassed down to the input stream so that the audio HAL can call the\nprocess function. The record thread loop calls the effect chain process\nfunction that will only manage the effect state and commands and skip the\nprocess function.\n\nAudioRecord: The audio session is allocated before calling getInput() into\naudio policy serice so that the session is known before the input theead is\ncreated and pre processings can be created on the correct session.\n\nAudioPolicyService: default pre processing for a given input source are\nloaded from audio_effects.conf file.\nWhen an input is created, corresponding effects are created and enabled.\n\nChange-Id: Id17119e0979b4dcf189b5c7957fec30dc3478790\n"
    },
    {
      "commit": "a9390d4d571817cdb1d659b4b22b04130dc77a48",
      "tree": "39ba390b75da952b52edcad8e7afab12a3803656",
      "parents": [
        "e0b5bb23f0a26d248275d203885b820659da7320"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 17 20:17:17 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 17 14:33:52 2011 -0700"
      },
      "message": "Audio preprocessing wrapper for webrtc.\n\nThis wrapper implements the interworking layer between the audio effect\ninterface defined by the effect framework for audio preprocessing\nand the native interface of webrtc audio processing module.\n\nChange-Id: I3f9319730c102599cdf0dda520a53d90b4165114\n"
    },
    {
      "commit": "63b96e48deb0a4c5b594693922bd9101ffc3ef93",
      "tree": "f4e64e5c62746d337a1b1de063a57c50c9fa3b62",
      "parents": [
        "a5a0cea84cdf116f4de4f812c26be73e70a260e6",
        "5e0067b486c3862316aa1f293cf9690c0cf54bda"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jul 12 12:15:07 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 12 12:15:07 2011 -0700"
      },
      "message": "Merge \"Remove the simulator target from all makefiles. Bug: 5010576\""
    },
    {
      "commit": "5e0067b486c3862316aa1f293cf9690c0cf54bda",
      "tree": "104ac8491b40d6e9d8353322792fb83ce76f4c82",
      "parents": [
        "52f556b976a9caceee183d8af2118ddbee02c70a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 11 22:12:16 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 11 22:12:16 2011 -0700"
      },
      "message": "Remove the simulator target from all makefiles.\nBug: 5010576\n\nChange-Id: I04d722f258951a3078fe07899f5bbe8aac02a8e8\n"
    }
  ],
  "next": "ba7b8f881a9b6b21803752326d2932a3bd42d7cf"
}
