)]}'
{
  "log": [
    {
      "commit": "a0fd9ca66a68baefd9d76800fd66823fd654ef45",
      "tree": "c3102c24d002966b7c0038e885296d77136a47c3",
      "parents": [
        "2720c8c45a0040d7007239c100591b9f092b780f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Sep 18 14:07:18 2014 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Sep 18 14:07:18 2014 -0700"
      },
      "message": "AudioEffect acquires session\n\nCurrently, users of audio sessions, AudioTrack and AudioRecord,\n are acquiring and releasing audio sessions according to their\n life-cycle. AudioEffect instances were not counting as users\n of an audio session. This caused an effect used on a session\n to be purged by AudioFlinger::purgeStaleEffects_l() whenever\n the last user of that session went away.\nThis CL makes AudioEffect acquire and release a session when\n created and destroyed.\n\nBug 15432115\n\nChange-Id: I922532150009988d43872f9b5928044a830ae0b3\n"
    },
    {
      "commit": "0f11b51a57bc9062c4fe8af73747319cedabc5d6",
      "tree": "3a9156d700b18a53f856ac8ae51a44604af36fe1",
      "parents": [
        "0520e05f9083cf13fa7062629bc6606f4b39f08a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 31 16:18:54 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 03 07:48:43 2014 -0800"
      },
      "message": "Fix unused parameter warnings in audio\n\nChange-Id: I665ba3358dd9502f0adec70d486e7bf8a2e1b0fe\n"
    },
    {
      "commit": "8d6cc842e8d525405c68e57fdf3bc5da0b4d7e87",
      "tree": "d3296fc4f886ae058cb353cec79576b7e4428897",
      "parents": [
        "53bc0a2fc54330534330118edd5c393f39eff8ab"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 11:06:53 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 18 16:16:30 2012 -0800"
      },
      "message": "Remove unnecessary parameter\n\nJust get the parameter on server side\n\nChange-Id: I433a63104dbb257e0d862be2ab61847cb36d1c15\n"
    },
    {
      "commit": "85ab62c4b433df3f1a9826bed1c9bec07a86c750",
      "tree": "0c5443a20824924cb7403f4cabfee84062489793",
      "parents": [
        "5fe6138bd839297a1eed16885102b3bdfc98c040"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 01 11:11:38 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Nov 01 12:19:25 2012 -0700"
      },
      "message": "Line length 100\n\nChange-Id: Ib28fd7b9ce951a6933f006e7f8812ba617625530\n"
    },
    {
      "commit": "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": "e53b9ead781c36e96d6b6f012ddffc93a3d80f0d",
      "tree": "4bcde0bc9a797851ec1bee4f630c8c4f0735f623",
      "parents": [
        "b87396f9ebabbb7b47683bceca96cbe635a1ca00"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 12 16:29:55 2012 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 13 11:09:47 2012 -0700"
      },
      "message": "Whitespace and indentation\n\nFix indentation to be multiple of 4.\nMake it easier to search:\n  sp\u003c not sp \u003c to\n  \"switch (...)\" instead of \"switch(...)\" (also \"if\" and \"while\")\nRemove redundant blank line at start or EOF.\nRemove whitespace at end of line.\nRemove extra blank lines where they don\u0027t add value.\n\nUse git diff -b or -w to verify.\n\nChange-Id: I966b7ba852faa5474be6907fb212f5e267c2874e\n"
    },
    {
      "commit": "f063b49e95c28d63a58215ebda892a5fee4204cc",
      "tree": "9909300bea158357aa45f1fb64f7b83c15208636",
      "parents": [
        "c33305c5dd4cc06e71eb0c66a7150aa6ab647c99"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 17 16:24:10 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 22 11:46:53 2012 -0800"
      },
      "message": "Fix build warning\n\nwarning: pointer of type \u0027void *\u0027 used in arithmetic\nwarning: enumeral and non-enumeral type in conditional expression\n\nChange-Id: I7b8d626a636145ef648e3b5d0e77068216dd012e\n"
    },
    {
      "commit": "af7d8189f91c45ab919a6c9ac386b268c8d91168",
      "tree": "92619572cd0a03705a5b564ef5749fdd8066d86f",
      "parents": [
        "4ff14bae91075eb274eb1c2975982358946e7e63"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Jan 11 12:23:42 2012 -0800"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Thu Feb 16 13:45:11 2012 -0800"
      },
      "message": "Enhance Visualizer behavior in the case of mediaserver death.\n\nBring the Visualizer class into line with the SDK documentation by\nreturning ERROR_DEAD_OBJECT instead of ERROR_INVALID_OPERATION when\nthe Visualizer loses its binder connection to the mediaserver because\nof a mediaserver restart.\n\nAlso add a new callback interface to allow clients to be\nasynchronously notified in the case of server death.  Right now, the\ninterface definition and the registration method are flagged as hidden\npending API council review/approval.\n\nSee http://b/issue?id\u003d5717519 for details.\n\nChange-Id: Ic15856f27ed5a950a583ac11ca81f79bd7e9b1a0\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "90bebef5669a9385c706b042d146a31dca2e5d9b",
      "tree": "a60c6383825eb3ed02493036605391d015732190",
      "parents": [
        "98ec94c5854daccc3474758524e7f4adfe535ce0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 15:24:38 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 08 17:21:49 2012 -0800"
      },
      "message": "No newline or space at end of ALOG format string\n\nChange-Id: I0bef580cbc818cb7c87aea23919d26f1446cec32\n"
    },
    {
      "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": "f587ba5b991c7cd91e4df093d0d796bd419e5d67",
      "tree": "0fe274cdfa6dcae81617725b5ea376c86245b104",
      "parents": [
        "787bae0578fbaab6219ebf23494866b224d01438"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 26 16:25:10 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 15:40:56 2012 -0800"
      },
      "message": "Declare more IAudioFlinger methods const\n\nThis is just documentation, as C++ method const-ness doesn\u0027t mean anything\nfor a binder API.  Instead, here const means \"no side effects\".\n\nChange-Id: Iaa9cd2fe477db10ae9a40cac4f79f0faa9b4e5e6\n"
    },
    {
      "commit": "a0d68338a88c2ddb4502f95017b546d603ef1ec7",
      "tree": "f052125f4720fde00179d41d4ee04e02934052e4",
      "parents": [
        "87f155d6655b2d3b27e69281a29e85c6407e4d26"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 27 16:47:15 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 03 07:57:01 2012 -0800"
      },
      "message": "Use NULL not 0 for raw pointers\n\nUse if (p !\u003d NULL) instead of if (ptr)\n\nChange-Id: Iaec3413a59ccbf233c98fcd918cc7d70ac5da9fa\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": "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": "57dae99c9fcd6becd2b5ed0c53f277ba4d7dbcfc",
      "tree": "be3ce6819f6a374f914e2c0ec5a837abfe54da5f",
      "parents": [
        "6d240dc8c5e0bc1ba43a2f5e2f4fc3b5f4ae88db"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 24 13:36:09 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 25 14:39:00 2011 -0700"
      },
      "message": "Added APIs for audio preprocessing\n\nAdded APIs to control pre processes applied on captured audio.\nThose APIs are still hidden until reviewed by API council.\n\nThree types of standard pre processes are supported:\n- Automatic Gain Control (AGC) by AutomaticGainControl class\n- Acoustic Echo Cancellation (AEC) by AcousticEchoCanceler class\n- Noise Suppression (NS) by NoiseSuppressor class\n\nA method is added to AudioEffect class to query audio pre processings\napplied by default by the platform on a given AudioRecord session ID.\n\nChange-Id: I0b9fceeb8c704dd06319c3b52b85c96fe871d51d\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": "65580f9adf6c4d98449ad0716488f9fe3869aa5a",
      "tree": "71432ddbf09fcc122be1ef5781bbc2d87f725ad8",
      "parents": [
        "e1315cf0b63b4c14a77046519e6b01f6f60d74b0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 27 17:51:52 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 27 17:51:52 2011 -0700"
      },
      "message": "Removed interface to load audio effects libraries\n\nRemoved unused functions allowing dynamic loading of audio effects libraries\nfrom effects factory API.\n\nChange-Id: I06cc5a51dc10aca87c7a8687bbb874babd711eca\n"
    },
    {
      "commit": "cc8ace7989f663fe6c6c1ed0febca0d9d1f19c7a",
      "tree": "f788a310454b02147ac7669e661cdb9afaf0d92e",
      "parents": [
        "c30268b9d118309a0514bcf280a03ee69f81403f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 07 09:41:46 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 07 09:41:46 2011 -0700"
      },
      "message": "Do not disable effect in AudioEffect destructor.\n\nCurrent implementation of AudioEffect class destructor disables\nthe effect before disconnecting from IAudioEffect interface.\nThis is problematic when more than one client has a handle on the same\neffect engine as destroying one handle will disable the effect which is\nnot the intended behavior.\n\nChange-Id: I10eacf981506469a7ef4eb9a1650813f0848de5d\n"
    },
    {
      "commit": "f5aafb209d01ba2ab6cb55d1a12cfc653e2b4be0",
      "tree": "75b6429a6bb8b78943b770cad6924a7aaa94dc32",
      "parents": [
        "b9ff444a7eaf7ffd43970c0477110c6808bd4a7c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 18 08:40:16 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 19 15:49:42 2010 -0800"
      },
      "message": "Fix issue 3157123.\n\nUse a Mutex wherever atomic operations were used in AudioTrack,\nAudioRecord, AudioFlinger and AudioEffect classes.\n\nChange-Id: I6f55b2cabdcd93d64ef19446735b8f33720f8dbc\n"
    },
    {
      "commit": "0fa449cc475580d995e9d56756c3da5507d2b6f6",
      "tree": "1e344eefa5847ad1e8ea3fc508e0d63ba5334c13",
      "parents": [
        "76e2c7be04aeff55f3e6a473ff1cd6d9ec2d620c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 24 11:52:04 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 24 15:24:54 2010 -0700"
      },
      "message": "Fix error in AudioEffect command status reporting.\n\nAudioEffect::command() should not interpret the status\nreturned in pReplyData unless the command is ENABLE or\nDISABLE.\n\nAlso fixed:\n- bug in Visualizer::getWAveForm() status reporting.\n- wrong initialization value for capture buffer in visualizer engine.\n\nChange-Id: I60fb0011f9dba96ee74661dec1e8ef441edcaf35\n"
    },
    {
      "commit": "8569f0d3bf4c6787707e348a7cf73b9c4199cb32",
      "tree": "6e2ce2c28fe5fba3b8cafd9375244bc6f658632d",
      "parents": [
        "8bf59e735760af0b6a85747fd90bf8cf1e5388d7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 29 23:43:43 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 09 05:48:20 2010 -0700"
      },
      "message": "Fixed several audio effects problems.\n\n- Fixed constant inversions in AudioEffect.java\n- Do not return error when enabling an already enabled effect\n- Update cached effect state in native AudioEffect class when effect is enabled/disabled by command() method\n- Remove click when restarting effect during disable sequence\n- Fixed problem in master mute management when volume control is delegated to effect.\n\nChange-Id: I6df4ce9fcc54fdc7345df858f639d20d802d6712\n"
    },
    {
      "commit": "25f4395b932fa9859a6e91ba77c5d20d009da64a",
      "tree": "01098a211d6c782708b840c28ebd396a6eb72a7b",
      "parents": [
        "23e1de74359f4bb1763aef0adfebe073122b032c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 28 05:40:18 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 28 05:49:21 2010 -0700"
      },
      "message": "Audio effects: modified command() parameter types.\n\nThe type of the cmd, cmdSize and *pReplySize parameters of the effect control interface command()\nfunction have been modified from int to uint32_t. This is more consistent with their role.\n\nChange-Id: I84d289fc262d6753747910f06f485597dfee6591\n"
    },
    {
      "commit": "42a050ff9636b79e4b91297cc41028ffd62240d5",
      "tree": "b21b32fc96b50f197579ee43ec8bee95d1c0bcf4",
      "parents": [
        "6c5c25fae5aa68a52c6fa75649dd559a9ca98932"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jul 09 12:11:49 2010 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jul 09 12:11:49 2010 -0700"
      },
      "message": "Fix swap of sessionId and output in audio effect API.\n\nChange-Id: Idc93415efef92087507401e50cfb235a6f1f7ed7\n"
    },
    {
      "commit": "da7581b7b61b84f15e8d671c86fd117c322b009e",
      "tree": "61fb39ca1eaa0a5b8a71d70683f32d238a8e74e7",
      "parents": [
        "215381ea729086b8359b7f59bdc2bd7cf55a0c45"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 02 08:12:41 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 07 11:00:28 2010 -0700"
      },
      "message": "Added Visualizer effect.\n\nThe visualizer enables application to retrieve part of the currently playing audio for visualization purpose.\nIt is not an audio recording interface and only returns partial and low quality audio content as a waveform or\na frequency representation (FFT).\n\nRemoved temporary hack made in MediaPlayer for animated wall papers based on audio visualization (snoop() method.\n\nThis commit also includes a change in AudioEffect class:\n - the enable()/disable() methods have been replaced bya more standard setEnabled() method.\n - some fixes in javadoc\n\nChange-Id: Id092a1340e9e38dae68646ade7be054e3a36980e\n"
    },
    {
      "commit": "ffe9c25ce85e1af55d58ec025adc6367d70db7e8",
      "tree": "664f0a33a690b4d020417a9ecc81b32f696d0f0e",
      "parents": [
        "2439a8d6d99864ba0c2d94f428e6c9ee258cdd45"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 23 17:38:20 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 25 11:59:35 2010 -0700"
      },
      "message": "Various fixes and improvements in audio effects implementation\n\nEffect API:\n- Use different definitions for audio device, channels, formats... in AudioSystem and EffectApi:\n  Removed media/AudioCommon.h file created for initial version of EffectApi\n- Indicate audio session and output ID to effect library when calling EffectCreate(). Session ID can be useful to optimize\nthe implementation of effect chains in the same audio session. Output ID can be used for effects implemented in audio hardware.\n- Renamed EffectQueryNext() function to EffectQueryEffect() and changed operating mode:\n  now an index is passed for the queried effect instead of implicitly querying the next one.\n- Added CPU load and memory usage indication in effects descriptor\n- Added flags and commands to indicate changes in audio mode (ring tone, in call...) to effect engine\n- Added flag to indicate hardware accelerated effect implementation.\n- Renamed EffectFactoryApi.h to EffectsFactoryApi.h for consistency with EffectsFactory.c/h\n\nEffect libraries:\n- Reflected changes in Effect API\n- Several fixes in reverb implementation\n- Added build option TEST_EFFECT_LIBRARIES in makefile to prepare integration of actual effect library.\n- Replaced pointer by integer identifier for library handle returned by effects factory\n\nAudio effect framework:\n- Added support for audio session -1 in preparation of output stage effects configuration.\n- Reflected changes in Effect API\n- Removed volume ramp up/down when effect is inserted/removed: this has to be taken care of by effect engines.\n- Added some overflow verification on indexes used for deferred parameter updates via shared memory\n- Added hardcoded CPU and memory limit check when creating a new effect instance\n\nChange-Id: I43fee5182ee201384ea3479af6d0acb95092901d\n"
    },
    {
      "commit": "801a1186eb1d2ce195b15222701865932e08f3dc",
      "tree": "1a08ae38cebaddbe6992807f124e6d44c47aeea2",
      "parents": [
        "e71d10e7ad55ccbcb0756c007caef1c959090384"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 09 00:17:29 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 11 06:26:31 2010 -0700"
      },
      "message": "Issue 2667802: [Audio Effect Framework] AudioEffect base class and JNI.\n\nAdded AudioEffect C++ class. AudioEffect is the base class for effect specific implementations,\nOpenSL ES effect interfaces and audio effect JNI.\n\nAdded the AudioEffect JNI and AudioEffect JAVA class. AudioEffect is the base class\nto implement more specific JAVA classes to control audio effects from JAVA applications.\n\nChange-Id: If300a1b708f2e6605891261e67bfb4f8330a4624\n"
    }
  ]
}
