)]}'
{
  "log": [
    {
      "commit": "142f519aa1acd5804d111e60d100f170fed28405",
      "tree": "aaffc4a234a4b0a5e719374056edf12eb2333b29",
      "parents": [
        "ecdca392ed40e89a6ef14b86446e952c35497ac4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 25 17:44:59 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 14:56:54 2014 -0700"
      },
      "message": "Use symbol AUDIO_IO_HANDLE_NONE from \u003csystem/audio.h\u003e\n\nChange-Id: Id6b1aa17558eb73e17f22b8eab6cd02e00a96dff\n"
    },
    {
      "commit": "684d47301aeddd137fb1ba2e42f9fb8b9e8a6a16",
      "tree": "04262744950d16d8ed607f73c0c67cd087fde93a",
      "parents": [
        "1392eb3d1802e9f894f87d7a7387207d1b6faca1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 25 17:41:42 2014 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Mar 26 07:32:08 2014 -0700"
      },
      "message": "Use symbol AUDIO_SESSION_OUTPUT_MIX from \u003csystem/audio.h\u003e\n\nChange-Id: I4e48bb7edcc9f9407ee63bb33d029aca02211d74\n"
    },
    {
      "commit": "01d3acba9de861cb2b718338e787cff3566fc5ec",
      "tree": "597410f74cf8cc6e3103a5f6b209c3f40cd388c6",
      "parents": [
        "ec95f0e82a680931e9c7c9011dbbd68d5ab484c8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 06 08:24:07 2014 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Feb 10 08:22:42 2014 -0800"
      },
      "message": "Fix clang warnings in AudioFlinger\n\nChange-Id: I0fa61025c979709ad7d655bc717df5f194b6089e\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": "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": "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": "e1315cf0b63b4c14a77046519e6b01f6f60d74b0",
      "tree": "c10fd288fd0d0d85c619e7e635a249765202fabc",
      "parents": [
        "a3e73df3b402f1ebdbef7c8a8e3111d852e7bd35"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 17 19:16:02 2011 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 27 15:15:00 2011 -0700"
      },
      "message": "New effect library API\n\nMoved and renamed media/EffectApi.h to hardware/audio_effect.h\nModified the effect library API to expose a library info structure\ncontaining an interface functions table.\nAlso removed enums for audio channels, audio format and devices\nfrom effect API and use values from system/audio.h instead.\n\nModified effects factory to support new library interface format and\nload libraries and efffects listed in audio_effects.conf file.\nThe file audio_effects.conf is first loaded from /vendor/etc and\nthen from /system/etc/audio_effects.conf if not found.\n\nModified existing effect libraries to implement the new library interface.\n\nChange-Id: Ie52351e071b6d352fa2fbc06c3846686f8c45df9\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": "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": "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"
    }
  ]
}
