)]}'
{
  "log": [
    {
      "commit": "aa8b2aae0c59c40a629e1cd7fa0237d5034a41d6",
      "tree": "16ae59a774c5719bd1d398e9ce36a95c63d4c557",
      "parents": [
        "f266417b07eb474887b3b9cdb6f45631764305ee",
        "d4d9157853bf7516c778060702646b482d1c7e86"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 18 23:55:58 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Aug 18 23:55:58 2020 +0000"
      },
      "message": "Merge \"audioflinger: Remove effect from hal before closing.\" am: c961cd4d0c am: 7e5965b810 am: 52148b83c5 am: 0cc7be8802 am: d4d9157853\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1403449\n\nChange-Id: I1ef5f4e1600eda4f5ec0c92c4c24525f7de755ce\n"
    },
    {
      "commit": "52148b83c5c6e7b038b9a35d690f49e1ca0b4a3c",
      "tree": "7b0dcffd8bb82151eda2b9372381dfe31da7ad63",
      "parents": [
        "f34e99d5c0042c53ce21435e5800c33beec333a3",
        "7e5965b8103dff4297bcdb4b294db7cbcf8b2fe1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 18 23:12:20 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Aug 18 23:12:20 2020 +0000"
      },
      "message": "Merge \"audioflinger: Remove effect from hal before closing.\" am: c961cd4d0c am: 7e5965b810\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1403449\n\nChange-Id: I912ba6b721ff8495566b8ba177a3eaa883f771a3\n"
    },
    {
      "commit": "ed8688022959f9ef137be1b476fb8730be82a7dc",
      "tree": "8c0baddb4e3430d2b4e9b64f25d2c5d9cb00d50a",
      "parents": [
        "7a0123c6e62870f3a3e4ae9daa625e1a2a78d30c"
      ],
      "author": {
        "name": "Jaideep Sharma",
        "email": "jaidshar@codeaurora.org",
        "time": "Fri Aug 07 14:09:16 2020 +0530"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Aug 18 20:44:57 2020 +0000"
      },
      "message": "audioflinger: Remove effect from hal before closing.\n\n- For non pinned effects, when the handle is removed the effect interface\n  is closed, but this leads to not resetting the state of hal effects.\n  Don\u0027t close the interface from here, as it will be handled in\n  subsequent removeEffect_l.\n\n- Clean up code related to removeHandle_l.\n\nCRs-Fixed: 2746289\nBug: 163285058\nTest: Solo tester with effects\nChange-Id: I2a9b35f5f73e535afd4fe77823b9a8ba16271685\n"
    },
    {
      "commit": "9cd898172de61db05bc49b93d5d8f822bc2fa6f5",
      "tree": "6e84e9f40da4f9d9c4a6e3517d7c6b951fd83492",
      "parents": [
        "37934a22fc6159c2cae85fc5b877424d5bf38628"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Wed Jul 01 17:12:06 2020 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Aug 17 11:19:20 2020 -0700"
      },
      "message": "Convert IEffect and IEffectClient to AIDL\n\nThis change replaces the manually-parceled IEffect and IEffectClient\nwith AIDL definitions.\n\nIn addition, this includes a small library that facilitates shared\nmemory regions over AIDL.\n\nBug: 160253486\nTest: Ran effects-related CTS tests. Manual verification of basic\n      audio functionality on Sargo.\n\nChange-Id: I5a9c5f2f24c10072ad5067acc71aa30581af41c1\n"
    },
    {
      "commit": "0a488938fa1c1b2b0c02b1c101281c01ff8ed103",
      "tree": "4686aa2bca38cccbbc572bbb75a2bd82d2b9153b",
      "parents": [
        "6a02d53b76d0a3ccb234a3e3d56318883cadd733"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Aug 07 17:32:40 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 12 16:19:35 2020 -0700"
      },
      "message": "Introduce device(s) role for strategy.\n\nAdding interface to get/set/removeDevicesRoleForStrategy. The interfaces\nallows to modify the devices\u0027 role, such as preferred, for strategy.\nGet/set/removePreferredDeviceForStrategy is reimplemented by the new\ninterfaces.\n\nTest: atest AudioHostTest\nTest: atest AudioServiceHostTest\nTest: atest AudioServiceTest\nTest: atest audiopolicy_tests\nBug: 160352965\nChange-Id: I0af737542a8599938cae4e142b733159f21ed5a8\n"
    },
    {
      "commit": "e70bc7fc5910583a4495e3c7f96cf5cad4b947a2",
      "tree": "a86c77b36f12df749cc41a4b9ebc3e8cc12a8b02",
      "parents": [
        "eb3bda06752f9539db64f289039968f8395bf9f5"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Jun 30 22:07:55 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jul 17 14:52:16 2020 -0700"
      },
      "message": "Support scaling haptic data in HapticGenerator\n\nMove function of scaling haptic data from AudioMixer to vibrator\nlibrary. Scaling haptic data in HapticGenerator according to the haptic\nintensity.\n\nBug: 136490803\nTest: play audio-coupled-haptic files\nTest: play audio with HapticGenerator effect\nChange-Id: I6bac63c085332ea87cc6612a8f2f368ad7ef7826\n"
    },
    {
      "commit": "eb3bda06752f9539db64f289039968f8395bf9f5",
      "tree": "5140c44fa37f9a7f6063c72db17624d4289c3e31",
      "parents": [
        "98b8a370059a1e142f3eed4bafdcc9b1e0b230fd"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Jun 30 14:07:03 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jul 17 14:34:29 2020 -0700"
      },
      "message": "Force selecting haptic supported thread when creating HapticGenerator.\n\nHapticGenerator is the haptic-generating effect, which will generate\nhaptic data based on audio data. As haptic data will be truncated on\nnon-haptic supported thread, HapticGenerator makes sense only on haptic\nsupported thread. In that case, force selecting haptic supported thread\nwhen creating HapticGenerator. If there is no thread supporting haptics\nchannel, return a failure.\n\nBug: 136490803\nTest: make, manually\nChange-Id: I865d211c613c793d75d23f5d10c9a01d294fdc36\n"
    },
    {
      "commit": "ea84038803580b4c35ce4cb60918c0c384127417",
      "tree": "d8c91402af2f630e4f1c36f7798d161767d01301",
      "parents": [
        "38e65911a65a51edf2efd5ca63c4e00daac24852"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 05 21:50:17 2020 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 13 11:15:49 2020 -0700"
      },
      "message": "MediaMetrics: Prepare statistics for protos\n\n1) Add AudioRecord to Analytics trigger.\n2) Log RecordThread statistics.\n3) Rename DURATIONNS to EXECUTETIMENS to avoid confusion.\n4) Use streamType from server not client.\n5) Split MMAP types to MMAP_PLAYBACK and MMAP_CAPTURE.\n6) Use string flags for AudioTrack and AudioRecord.\n7) Compute underrun frames for MixerThread.\n8) Log BT connection state.\n\nTest: adb shell dumpsys media.metrics\nTest: atest mediametrics_tests\nTest: adb shell dumpsys stats --metadata\nBug: 149850236\nChange-Id: Iacf3f117c00ec9f377e62862080252aef9dc084f\n"
    },
    {
      "commit": "f698ff2d177d62a714d452ce63430606738a4190",
      "tree": "e53e0cbf41ce80cc85b73f6495323207899c86c9",
      "parents": [
        "1cfbd0a8a1083af1a7afeb19b2bdc0d757d9daf5"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 31 10:07:29 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 31 22:06:58 2020 +0000"
      },
      "message": "Fix uninitialized variable use in Effects.cpp\n\nInitialize variable \u0027strategy\u0027 in\nAudioFlinger::EffectBase::updatePolicyState.\nFound by clang-tidy.\n\nBug: 152526318\nTest: m\nChange-Id: I5aad916a9873122eed0bb8e40bb26d677f338b16\n"
    },
    {
      "commit": "379d687ba8c831cedf406d95309c4e7a6f66639d",
      "tree": "543cda1db6f2044e1e2f699c54c42f680e04e219",
      "parents": [
        "7bb5d6abf90125a7eacdd98f1201a694258f9bea"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 26 13:04:11 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 26 13:04:11 2020 -0700"
      },
      "message": "Fix uninitialized variable use in Effects.cpp\n\nInitialize variable \u0027io\u0027 in\nAudioFlinger::EffectBase::updatePolicyState.\nFound by clang-tidy.\n\nBug: 152526318\nTest: m\nChange-Id: Ib8c71eaf83dc140874d3e65a094e52e36918160f\n"
    },
    {
      "commit": "2fe0acd07f9fb2d0eefbe0fa9d25fbaf0f672596",
      "tree": "10a5a6ceaee79473c53b3dacb08b58172bcd14f2",
      "parents": [
        "90334d0f03f4bee709969433898025fc16863f01"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 13 14:30:46 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 16 13:49:20 2020 -0700"
      },
      "message": "audioflinger: add effect creation probe mode\n\nAdd an argument to IAudioFlinger::createEffect() API to\nask AudioFlinger to just run the pre flight checks but not\ncreate the actual audio effect instance and allocate resources.\nThis is the basis of an API for apps to query if a given\neffect can be created without having to allocate the resources\nand risk an exception when calling the constructor.\n\nBug: 150699608\nTest: CTS and GTS Tests for audio effects\nChange-Id: Ibdda22fd945c88c33e3c7342a7a5ed3e02d399ac\n"
    },
    {
      "commit": "d505c647c527b45b8b1c157504d57df247fee8b6",
      "tree": "ec18a301b74cb8928faa3e427457ea929abe89aa",
      "parents": [
        "831ed185aa1dd8211bc37a05c9af8ed6941bf809"
      ],
      "author": {
        "name": "Zhou Song",
        "email": "zhous@codeaurora.org",
        "time": "Thu Feb 20 16:35:37 2020 +0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Mar 06 16:01:52 2020 -0800"
      },
      "message": "Effects: set hw volume if effect chain doesn\u0027t have volume control\n\nIf effect chain has non-offloaded effect, and is enabled for direct\noutput, when there\u0027s no volume control for all the effect modules\nwithin this chain, volume should still be set to HAL.\n\nTest: Play Music, Videos with effects\nBug: 149899134\nCRs-Fixed: 2625597\nChange-Id: I77bd0d456d5fa4e88afb283002a5eb1e2b704ca8\n"
    },
    {
      "commit": "3de1bbfde9623ca4bf6d3a281d93857ae06e39a2",
      "tree": "6ef063e1db869e5a7e54cf6bebe7392ac64ae3e8",
      "parents": [
        "31f98910412ed7e023ffb240c49de63f958fd226"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Jan 21 16:41:17 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Jan 21 17:43:14 2020 -0800"
      },
      "message": "Fix race condition in Effects\n\nMain problem was in AudioFlinger::EffectChain::EffectChain(), where\nthe thread* argument could possibly have been destroyed before the\ncreation of the weak pointer\n(AudioFlinger::EffectChain::EffectCallback::mThread) around it.\n\nWhile here, cleaned up a bunch of other pointer-related operations\nin order to avoid trafficking in raw pointers to RefBase subclasses.\n\nBug: 147770363\nChange-Id: I508ca94dd38a04e13f1a1c413f548001b961c721\n"
    },
    {
      "commit": "9b2064c3afe14f893afff019bdcd4c4d40ce13ed",
      "tree": "0a49d5049cfd60fb6de3387460f5bb41a58e2ed1",
      "parents": [
        "249dba6eb7b1f71a424290e1c58c3bedb76a0595"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 22 17:25:04 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 13 23:05:34 2020 +0000"
      },
      "message": "AudioFlinger: implement device specific audio effects\n\nAdd management of audio effects applied to a specific input\nor output audio device.\n\nA new class DeviceEffectProxy derived from Effectbase is added\nto represent an effect attached to a particular audio device type and\naddress. This proxy manages one or more actual EffectModule instances\nautomatically added to a playback or capture thread or directly to the\naudio HAL when the targeted audio device is used by an audio patch.\n\nA new DeviceEffectManager class is added to manage creation and release\nof DeviceEffectProxy instances and monitor creation and release of audio\npatches and create or release actual effect instances accordingly.\n\nBug: 136294538\nTest: make\n\nChange-Id: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\nMerged-In: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\n"
    },
    {
      "commit": "e0b9a360c32f8ab2238b4b3779659e565b221946",
      "tree": "aafbd84d809aa976554c4de7597db1234560ee8e",
      "parents": [
        "5d88539848f2416e327da743f0c38ed597f8f089"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 16 19:34:05 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 10 11:12:23 2020 -0800"
      },
      "message": "audioflinger: refactor EffectModule class\n\nIntroduce a class EffecBase as a parent class of\nEffectModule with default implementation for handles management,\nbasic properties storage and state management.\n\nBug: 146177259\nTest: CTS: AudioEffectTest, EqualizerTest, VisualizerTest,\nAudioPreProcessingTest\nTest: manual test: Play Music EQ settings, Duo EAC and NS\nChange-Id: Id91cef9db6b4f6be0d2e77a8b4afcbdc7234e519\nMerged-In: Id91cef9db6b4f6be0d2e77a8b4afcbdc7234e519\n"
    },
    {
      "commit": "5d88539848f2416e327da743f0c38ed597f8f089",
      "tree": "416773cefe0ae261b15f850bff1c35bedead9680",
      "parents": [
        "d700529501d45ab3d0a0b506b2b76cb0212cf5ce"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 10:56:31 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 10 11:12:13 2020 -0800"
      },
      "message": "Revert \"Revert \"Audio effects: define interface between EffectModule and audio framework\"\"\n\nThis reverts commit 3fd6a2ccfd9305619289e2cd514fdfa803210f9e.\n\nAlso fixes native coverage build.\n\nBug: 146177259\nTest: build/soong/soong_ui.bash --make-mode TARGET_PRODUCT\u003dcf_x86_phone TARGET_BUILD_VARIANT\u003duserdebug NATIVE_COVERAGE\u003dtrue\nChange-Id: Ib78a22619123cd1848b047931b02d4061def3a23\nMerged-In: Ib78a22619123cd1848b047931b02d4061def3a23\n"
    },
    {
      "commit": "d700529501d45ab3d0a0b506b2b76cb0212cf5ce",
      "tree": "7537a0aec018dd1b76c662bfa8a3c2cddb79e5c0",
      "parents": [
        "fefebb5c9692a57aade8955996d7dee7748eb1ec"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 13 12:57:33 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 10 11:11:58 2020 -0800"
      },
      "message": "Audio effect HAL: Add device ID to createEffect API\n\nAdd the possibility to specify a target audio device when\ncreating an audio effect by passing its audio port handle\nto createEffect API.\n\nBug: 136294538\nTest: make\nChange-Id: I32a6400278496653b4204175cd8a16d81f9724a0\nMerged-In: I32a6400278496653b4204175cd8a16d81f9724a0\n"
    },
    {
      "commit": "a20c4e9c9239d751d688d9a9fe5d92a8c613dd13",
      "tree": "9d5ccc5886dbf0cede2c4b63265f51f8f77eb283",
      "parents": [
        "e5f01a7d5edd517c3a52ca11e6908aead47ba916"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 12 15:55:51 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 10 11:11:27 2020 -0800"
      },
      "message": "AudioFlinger: add audio session for device effects\n\nAdd specific audio session ID for effects applied to a\nparticular audio device.\nDevice specific effects will be attached to a particular audio sink or\nsource device identified by its unique audio port ID and will all use\nthis same session ID.\nOnly one session of this type exists on a given playback or record\nthread.\nAll effects in this session apply to the same device ID and are created/released\nwhen the routing (audio patch) of this thread output or input stream is updated.\n\nBug: 136294538\nTest: make\n\nChange-Id: I4e3a55ed1244b918429dd9e217b6efecc1ec6449\nMerged-In: I4e3a55ed1244b918429dd9e217b6efecc1ec6449\n"
    },
    {
      "commit": "d1ce689ac43bfd6c75c2f15a349e475396d04dcd",
      "tree": "42c6e27d027844c455405db5124a8086775cfc5e",
      "parents": [
        "d3fb71855d226e12b7d8ed261047619c75895034",
        "b82e6b724e45b1f88ed746c316b445b3bb8036b3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 09 18:23:19 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 09 18:23:19 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: implement device specific audio effects\""
    },
    {
      "commit": "b82e6b724e45b1f88ed746c316b445b3bb8036b3",
      "tree": "4fd55853fe2b97b98bf27bff61142d9b2b92f28f",
      "parents": [
        "9ce5404e8ee6cf247a9004500cb91bf3b8114b14"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 22 17:25:04 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 07 17:05:07 2020 -0800"
      },
      "message": "AudioFlinger: implement device specific audio effects\n\nAdd management of audio effects applied to a specific input\nor output audio device.\n\nA new class DeviceEffectProxy derived from Effectbase is added\nto represent an effect attached to a particular audio device type and\naddress. This proxy manages one or more actual EffectModule instances\nautomatically added to a playback or capture thread or directly to the\naudio HAL when the targeted audio device is used by an audio patch.\n\nA new DeviceEffectManager class is added to manage creation and release\nof DeviceEffectProxy instances and monitor creation and release of audio\npatches and create or release actual effect instances accordingly.\n\nBug: 136294538\nTest: make\n\nChange-Id: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\n"
    },
    {
      "commit": "4c47d3196d70c6aaaaaea4b472aa7e33357e1fab",
      "tree": "f1ebe2c0bc0729f595cd34675063f55c9264309e",
      "parents": [
        "982ecd07f4da2f93704aa84a3b4f61fa79466b8b",
        "46850e03418431679da337394a7d343701ff2485"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 07 23:20:14 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 07 23:20:14 2020 +0000"
      },
      "message": "Merge \"Use default sample rate for DIRECT Audio thread\""
    },
    {
      "commit": "46850e03418431679da337394a7d343701ff2485",
      "tree": "480d06e1809dbcf9f7e6a4d9105dc170a73ac87f",
      "parents": [
        "3eef87ec4e6413fb49990de06fef2480fc23aeef"
      ],
      "author": {
        "name": "Daniel Bonnevier",
        "email": "daniel.bonnevier@sonymobile.com",
        "time": "Fri Dec 06 09:14:56 2019 +0100"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 07 21:54:17 2020 +0000"
      },
      "message": "Use default sample rate for DIRECT Audio thread\n\nDIRECT and OFFLOAD Audio threads use the mixer when using SW effects.\nThis requires them to use the default sample rate.\n\nTest: vendor specific, see bug\nBug: 147209612\nMerged-In: I553fe43695d64160dd64808e18299699a4047225\nChange-Id: I553fe43695d64160dd64808e18299699a4047225\n"
    },
    {
      "commit": "ab2ff056ad282cb9b8198a0dc7089d41d86c1f6e",
      "tree": "1014cf8fda7716d6ff922dba4495d4688af90319",
      "parents": [
        "c222d6e5aba8e7231d7430cabfbb011d664c9add",
        "6bc62094e593a91172d94c145ded0036e9f84e6d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 07 21:52:52 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 07 21:52:52 2020 +0000"
      },
      "message": "Merge \"Use default sample rate for DIRECT Audio thread\""
    },
    {
      "commit": "6bc62094e593a91172d94c145ded0036e9f84e6d",
      "tree": "f03aa1ed01ed156250404c5ff78fb33822be166b",
      "parents": [
        "9468f951e6b85446ddde11f2dfce060caaa5f261"
      ],
      "author": {
        "name": "Daniel Bonnevier",
        "email": "daniel.bonnevier@sonymobile.com",
        "time": "Fri Dec 06 09:14:56 2019 +0100"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jan 07 12:32:17 2020 -0800"
      },
      "message": "Use default sample rate for DIRECT Audio thread\n\nDIRECT and OFFLOAD Audio threads use the mixer when using SW effects.\nThis requires them to use the default sample rate.\n\nTest: vendor specific, see bug\nBug: 147209612\nChange-Id: I553fe43695d64160dd64808e18299699a4047225\n"
    },
    {
      "commit": "5b8039a69f1923a019d2c48b5158bf837df3a11e",
      "tree": "56f6f54abf1eb08a13301b22891d09e6d5d0043a",
      "parents": [
        "9ce5404e8ee6cf247a9004500cb91bf3b8114b14",
        "a2c8dc480a7d71a53c6d0ffb32189f04ad739522"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 07 18:30:38 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 07 18:30:38 2020 +0000"
      },
      "message": "Merge \"effects: fix a theoretical memory leak\" am: 7f4beda2de am: 139b5728e2 am: a2c8dc480a\n\nChange-Id: I75906bf23cf7f6fcc1d48a106a5926714e1103dc\n"
    },
    {
      "commit": "80a22163606b1b3319743fb58387c67aafcbc2da",
      "tree": "baec51f9cdcae5eeb43618ca984a03ac51278c91",
      "parents": [
        "3eef87ec4e6413fb49990de06fef2480fc23aeef"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Sun Jan 05 20:06:15 2020 -0800"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Sun Jan 05 20:09:50 2020 -0800"
      },
      "message": "effects: fix a theoretical memory leak\n\n`realloc` doesn\u0027t deallocate `param` if it fails. Since the loop ends in\na `free`, we just need to avoid overwriting `param` until after the\ncheck.\n\nCaught by the static analyzer:\n\nframeworks/av/services/audioflinger/Effects.cpp:1868:9: warning:\nPotential leak of memory pointed to by \u0027param\u0027\n[clang-analyzer-unix.Malloc]\n\nBug: None\nTest: TreeHugger\n\nChange-Id: I58fe4319927b3ea99989e1fb1dc2dabe89c72ef8\n"
    },
    {
      "commit": "41709559999108cce9b1d725779fc513cc19138d",
      "tree": "edb0537f270f40e04de64f608824bf7d9d782bcd",
      "parents": [
        "c43423a6c6b6b0506d7b38f8062012a91fbef050"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 16 19:34:05 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 18 09:34:08 2019 -0800"
      },
      "message": "audioflinger: refactor EffectModule class\n\nIntroduce a class EffecBase as a parent class of\nEffectModule with default implementation for handles management,\nbasic properties storage and state management.\n\nBug: 146177259\nTest: CTS: AudioEffectTest, EqualizerTest, VisualizerTest,\nAudioPreProcessingTest\nTest: manual test: Play Music EQ settings, Duo EAC and NS\nChange-Id: Id91cef9db6b4f6be0d2e77a8b4afcbdc7234e519\n"
    },
    {
      "commit": "6b446ce95d99373c9b1210336fa66d8c4f2d7409",
      "tree": "f67c7be3149340c3066970d3e33125ae7c26d00b",
      "parents": [
        "b7b870db0c6cc0c6375b154400a813b84f5056b4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 10:56:31 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 15:43:24 2019 -0800"
      },
      "message": "Revert \"Revert \"Audio effects: define interface between EffectModule and audio framework\"\"\n\nThis reverts commit 3fd6a2ccfd9305619289e2cd514fdfa803210f9e.\n\nAlso fixes native coverage build.\n\nBug: 146177259\nTest: build/soong/soong_ui.bash --make-mode TARGET_PRODUCT\u003dcf_x86_phone TARGET_BUILD_VARIANT\u003duserdebug NATIVE_COVERAGE\u003dtrue\nChange-Id: Ib78a22619123cd1848b047931b02d4061def3a23\n"
    },
    {
      "commit": "3fd6a2ccfd9305619289e2cd514fdfa803210f9e",
      "tree": "d0290d31cf14167bad8ce9e769eb8e873dfc1cd3",
      "parents": [
        "c0abc6239e1134ed224a10aa66a364baff71cd07"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 00:33:32 2019 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 13 00:33:32 2019 +0000"
      },
      "message": "Revert \"Audio effects: define interface between EffectModule and audio framework\"\n\nThis reverts commit c0abc6239e1134ed224a10aa66a364baff71cd07.\n\nReason for revert: broken build on target cf_x86_phone-userdebug_coverage\n\nChange-Id: Ic6808bfd31bedfa85b7d7a120e4c6f6273678f73\n"
    },
    {
      "commit": "c0abc6239e1134ed224a10aa66a364baff71cd07",
      "tree": "4471ea4e788da6d7909121a289fe692438d26f28",
      "parents": [
        "880971c8f204ae755f1d4d3be7287aeb1041c42d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 15 17:53:33 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 11 21:33:05 2019 +0000"
      },
      "message": "Audio effects: define interface between EffectModule and audio framework\n\nThis is in preparation of the addition of audio effects attached to a\nspecific audio device that will not be attached to a particular\nThreadBase or Effectchain.\n\nCreate an clean callback interface used by the EffectModule to interact\nwith the rest of the audio framework. This callback must be implemented\nby the EffectModule parent (e.g an EfffectChain).\n\nAls refactor EffectHandle enabled(), disable() and disconnect methods()\nto avoid dealing with the ThreadBase directly.\n\nBug: 136294538\nTest: make\nChange-Id: I9160f88f7fbb0447b5e679260bf0401d3af591d2\n"
    },
    {
      "commit": "3b7f51b5fc7ee72f920ee6b749e7aa12a03e37d6",
      "tree": "a8cc15826720d0c409b51f01422c7d69c285f298",
      "parents": [
        "94876034876afd6f642dd1a0ad7c60aee05504d9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 13 12:57:33 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 09 09:46:17 2019 -0800"
      },
      "message": "Audio effect HAL: Add device ID to createEffect API\n\nAdd the possibility to specify a target audio device when\ncreating an audio effect by passing its audio port handle\nto createEffect API.\n\nBug: 136294538\nTest: make\nChange-Id: I32a6400278496653b4204175cd8a16d81f9724a0\n"
    },
    {
      "commit": "3f75a5bc38894cb6635837c49247c3fa50ed6c47",
      "tree": "a6a256606f82ae742012ec1532ef22009ab0ab25",
      "parents": [
        "602e1ae3a3d4e2ffe158dacfd268547d94a06b38"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 12 15:55:51 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 06 17:22:42 2019 -0800"
      },
      "message": "AudioFlinger: add audio session for device effects\n\nAdd specific audio session ID for effects applied to a\nparticular audio device.\nDevice specific effects will be attached to a particular audio sink or\nsource device identified by its unique audio port ID and will all use\nthis same session ID.\nOnly one session of this type exists on a given playback or record\nthread.\nAll effects in this session apply to the same device ID and are created/released\nwhen the routing (audio patch) of this thread output or input stream is updated.\n\nBug: 136294538\nTest: make\n\nChange-Id: I4e3a55ed1244b918429dd9e217b6efecc1ec6449\n"
    },
    {
      "commit": "b8269fd0946976cc820b0abb815f0fb67fc88b76",
      "tree": "1b65e96a5a38d1f9f37675c7e7e16f6f8389cd43",
      "parents": [
        "7946fbe6782ce25599d917d9357389ad1729f2db"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 11 12:16:27 2019 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Dec 05 10:09:03 2019 -0800"
      },
      "message": "Use AudioDeviceTypeAddr when setting device for effects.\n\nSeparate SET_DEVICE and SET_INPUT_DEVICE command in effects as it can\nbe multiple devices for output case, but only single device for input\ncase.\nUse AudioDeviceTypeAddr instead of just audio device type as address\ncan be useful to identify audio device if there are multiple devices\nwith the same device type connected.\n\nBug: 135621476\nTest: atest AudioEffectTest BassBoostTest DynamicsProcessingTest\nTest: atest EqualizerTest VirtualizerTest VisualizerTest\nChange-Id: Ie9df88e3338730392abbc3efae5daadc70398ff7\nMerged-In: Ie9df88e3338730392abbc3efae5daadc70398ff7\n"
    },
    {
      "commit": "8f278eea9deff0d368e1b770cb8c58e4ccb4b359",
      "tree": "f8c22c1f4657e45860da41320aaf86ee6b6400a8",
      "parents": [
        "e6cbccaef91a63e0a739f084fdc94a216a08efd6"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 11 12:16:27 2019 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 11 15:32:54 2019 -0800"
      },
      "message": "Use AudioDeviceTypeAddr when setting device for effects.\n\nSeparate SET_DEVICE and SET_INPUT_DEVICE command in effects as it can\nbe multiple devices for output case, but only single device for input\ncase.\nUse AudioDeviceTypeAddr instead of just audio device type as address\ncan be useful to identify audio device if there are multiple devices\nwith the same device type connected.\n\nBug: 135621476\nTest: atest AudioEffectTest BassBoostTest DynamicsProcessingTest\nTest: atest EqualizerTest VirtualizerTest VisualizerTest\nChange-Id: Ie9df88e3338730392abbc3efae5daadc70398ff7\n"
    },
    {
      "commit": "7dd39723b34c8378fc5eabb4d4ccacf32f55ffe2",
      "tree": "222de47bcb84931d714d250fe51d3249771edc18",
      "parents": [
        "61d4a093f4b4041b145fbd7a3ab5ec04679f87d9"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Sep 05 15:14:30 2019 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Sep 13 10:59:51 2019 -0700"
      },
      "message": "Improve visibility of IMemory security risks\n\nThis change renames the IMemory raw pointer accessors to\nunsecure*() to make it apparent to coders and code reviewers\nthat the returned buffer may potentially be shared with\nuntrusted processes, who may, after the fact, attempt to\nread and/or modify the contents. This may lead to hard to\nfind security bugs and hopefully the rename makes it harder\nto forget.\n\nThe change also attempts to fix all the callsites to make\neverything build correctly, but in the processes, wherever the\ncallsite code was not obviously secure, I added a TODO requesting\nthe owners to either document why it\u0027s secure or to change the\ncode. Apologies in advance to the owners if there are some false\npositives here - I don\u0027t have enough context to reason about all\nthe different callsites.\n\nTest: Completely syntactic change. Made sure code still builds.\nChange-Id: I5fb99aa797c488406083178a6b05355d98710d3b\n"
    },
    {
      "commit": "c2a3a82419327c6ffbad9711ed07415341eca00d",
      "tree": "005a3560290a9682742136605f02b1250ccfbb30",
      "parents": [
        "d2d66abd1aa5fcb2fad9cc43e397015d5580f058"
      ],
      "author": {
        "name": "Ricardo Garcia",
        "email": "rago@google.com",
        "time": "Wed Jul 17 14:29:12 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 17 23:17:10 2019 +0000"
      },
      "message": "Fix for untimely suspension of Dynamics Processing\n\nAdded exception to avoid suspending Dynamics Processing Effect.\n\nTest: Manual testing with popular apps\nBug: 134852575\nChange-Id: I1ffee570984897304169b30b7af417f61f762ffa\n"
    },
    {
      "commit": "b20cf7db9e669169bbae5f0da97018a866c3f634",
      "tree": "96e88e1850e1fb27fcc0bad53cc575e837d86c60",
      "parents": [
        "aceea8bddd0324df4414673bc39a3f38fe16e8a1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 05 19:37:34 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 17 19:27:20 2019 -0700"
      },
      "message": "audio policy: concurrent capture effects\n\nAdd pre processing effect management for concurrent capture scenarii.\nWhen several clients on the same input stream have enabled audio effects,\nonly the effects attached to the top priotity client are active.\nOther effects are suspended.\n\nAdd AudioFlinger API to suspend/restore audio effects build on top\nof exisiting internal effect suspend mechanism.\n\nRecordThread now supports more than one effect chain.\n\nAOSP pre processing implementation supports more than one effect session\nper input.\n\nRefactor AudioPolicyManager::closeAllInputs() to call closeInput() on\nall inputs instead of partially duplicated code.\n\nBug: 128419018\nTest: make\nChange-Id: I685286da4c2905a8894a4354679f9787b1400621\n"
    },
    {
      "commit": "6c79632bbece71f7af0c2453bb62a5d6f0cca664",
      "tree": "a70a17d1f723b7e0241bb762bf5478e3c9947348",
      "parents": [
        "2cb1a8ccbd402d74a06ee34721f5dd787ecb396f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 09 14:13:17 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 17 10:29:30 2019 -0700"
      },
      "message": "refactor mutexes for audio effects in audio flinger and audio policy\n\nRemove effect specific mutex (mEffectLock) in AudioPolicyService: Due to\nconcurrent capture (among other reasons), it is necessary that the audio\npolicy manager state preserved by mLock includes audio effects\nregistration and enabling.\n\nMoved all audio policy API calls from audio flinger out of locked regions\nfor audio flinger, thread and effects mutexes to avoid cross deadlocks\nbetween audioflinger and audio policy manager:\n- centralized audio policy API calls in EffectModule::updatePolicyState()\n- the enabled state now reflects the state requested by the controlling\nhandle, not the actual effect processing state: a suspended effect is\nnow considered enabled.\n\nA new audio policy manager API moveEffectsToIo() is added to atomically\nhandle moving effects to a new input or output without having to call\nunregister \u003e register \u003e enable sequence.\n\nAlso fix assert in setStreamVolume to match volume group refactoring\nin audio policy manager.\n\nBug: 128419018\nTest: CTS tests for audio effects.\nTest: manual tests with Duo calls, Play Music, Youtube, notifications\n with and without Bluetooth and wired headset.\n\nChange-Id: I8bd3af81026c55b6be283b3a9b41fe4998e060fd\n"
    },
    {
      "commit": "19740cae5b12dadd5edb221d2aab678fc88bbaee",
      "tree": "7be1f70002541d1f7444cc577fc637c339acfb57",
      "parents": [
        "c70268aa433e7d307819184ae5c2ec96a3e5b6af"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 28 12:25:01 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 28 12:25:01 2019 -0700"
      },
      "message": "audioflinger: Fix EffectChain::dump\n\nFix missing log line in the case when there are no effects in\nthe chain.\n\nBug: 118842894\nTest: adb shell dumpsys media.audio_flinger\nChange-Id: I31fe4760caa61610de4f143b3a6ae185efb55baa\n"
    },
    {
      "commit": "4d54767b7dad323de5f747096f5cdeea0d7691e5",
      "tree": "3c00980eb567404023bdd03bdc00ed2b906c684f",
      "parents": [
        "16be62ccbfa98508b375c9594728a951ada0021c"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Feb 22 14:19:19 2019 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Feb 22 14:19:19 2019 -0800"
      },
      "message": "audio: Add support for dumping info from effect HAL modules\n\nThe implementation uses IBase::debug() method which can write\ndebugging info into the provided file descriptor (same model\nas used for devices and streams).\n\nBug: 69939533\nTest: adb shell dumpsys media.audio_flinger\nChange-Id: I02a74b51977d105edf6f7e624ea26f866c965708\n"
    },
    {
      "commit": "934ecfbdd877f4f1fdfaa23710eb3164ab6e7715",
      "tree": "812551d4ce8968a516e7bd4b1b9121efe6caa58f",
      "parents": [
        "70eb2960026daced74a70411404dfd98800fe719"
      ],
      "author": {
        "name": "Jasmine Cha",
        "email": "chajasmine@google.com",
        "time": "Wed Jan 23 18:19:14 2019 +0800"
      },
      "committer": {
        "name": "Jasmine Cha",
        "email": "chajasmine@google.com",
        "time": "Mon Jan 28 11:22:46 2019 +0800"
      },
      "message": "Effects: add new effect volume flag\n\nAdd new effect flag to monitor requested volume from\naudio framework.\nPass requested volume directly if effect is volume monitor,\nand others still follow an original rule by volume controller.\n\nBug: 123251705\nTest: On/off equalizer on spotify/google music.\n      Switch songs with equalizer\n      Attach an effect with EFFECT_FLAG_INSERT_ANY,\n                            EFFECT_FLAG_INSERT_FIRST,\n\t\t\t    EFFECT_FLAG_INSERT_LAST\n      and check received volume.\n\nChange-Id: I01632bebb32aa6f921c964536039d43859ae3632\nSigned-off-by: Jasmine Cha \u003cchajasmine@google.com\u003e\n"
    },
    {
      "commit": "e8ac1b2f52dc760bd1abd3dc720a5d9b59df51ad",
      "tree": "ad1f018ca3eaf10f7394f059831826b00540c2ef",
      "parents": [
        "dd2e7a8ec3894faa66776f058355b1acff2b7e31"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Oct 31 14:22:35 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Oct 31 15:47:58 2018 -0700"
      },
      "message": "Effects: Fix write mode for disabled effects\n\nThis case is generally not encountered; we are fixing this\nto ensure correctness for future code.\n\nTest: No regression with MP3 effects and solo tester\nBug:118775810\nChange-Id: I016e23101d42ffeee1e66102b6f6276f17c47684\n"
    },
    {
      "commit": "dd2e7a8ec3894faa66776f058355b1acff2b7e31",
      "tree": "cd8e83299ec9f2700d73ab1346c72b23bbff8484",
      "parents": [
        "fec151edf5e525c8d8f2a448d1e080d90b63e3a6"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Oct 31 14:19:13 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Oct 31 14:56:21 2018 -0700"
      },
      "message": "Effects: Fix multichannel accumulate when disabled\n\nEnsure all channels are accumulated.\n\nTest: Use 4ch USB device, play MP3 with effects, see bug\nBug: 115693755\nChange-Id: Ic1eb04dcff34284b3fff67266874eca41a43e523\n"
    },
    {
      "commit": "17a4a0feba513a721b23edeb9a915e4ce87b58a8",
      "tree": "8def40ef260d85ecf5414654a2af5cc1a7e3a94c",
      "parents": [
        "bd9b5935fdbd67d3eaf124e3e80470b8cae1ecd1",
        "d06ae78ee7169fc80c8a29390b2156e33c846c08"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Sep 17 16:44:40 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 17 16:44:40 2018 -0700"
      },
      "message": "Merge \"Suppress implicit-fallthrough warnings in audioflinger etc.\" am: a494bb1527 am: 8662f3b9a2\nam: d06ae78ee7\n\nChange-Id: Iee095b6e1278d372b3a7c171f926bd730dbc388b\n"
    },
    {
      "commit": "2b48703770efab81143d389d7389166eb1a6c8db",
      "tree": "f309a4bbfbb4f716dee1af20f82ca95aa04b907e",
      "parents": [
        "f8d13dee65d3708ea527e9f565be85031d7021ba"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 13 14:16:02 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Sep 17 12:50:12 2018 -0700"
      },
      "message": "Suppress implicit-fallthrough warnings in audioflinger etc.\n\nAdd FALLTHROUGH_INTENDED for clang compiler.\n\nBug: 112564944\nTest: build with global -Wimplicit-fallthrough.\nChange-Id: I8875bc7ed073aae84d5df97eb39c8c745ca627ef\n"
    },
    {
      "commit": "752c7cfc96f1a6ca0f16e0b4d9962c35cbe0e88a",
      "tree": "eacdd2f96287b41aeacad3fbc975cb260e46abcc",
      "parents": [
        "d4a9ce4ba72280b7f3833446925f0bf6e42e1112",
        "f4942d7989993b8d82010dd1047a4c68d625b324"
      ],
      "author": {
        "name": "Shingo Kitajima",
        "email": "shingo.x.kitajima@sony.com",
        "time": "Wed Sep 05 23:42:52 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 05 23:42:52 2018 -0700"
      },
      "message": "Merge \"Allow volume setting only for offloadable effect for Offload\" am: 311d0133a4 am: cdca8b4205\nam: f4942d7989\n\nChange-Id: I47468b938913f77e68a7bde41105b4c92a57f58d\n"
    },
    {
      "commit": "1f8df9ae201bc4405aed068c910b08dc5458864f",
      "tree": "e8be06c94252e28e024523d1c71f4160ba5b1977",
      "parents": [
        "db44c5d13b9972a0d0dd177c31259b74bc2e4376"
      ],
      "author": {
        "name": "Shingo Kitajima",
        "email": "shingo.x.kitajima@sony.com",
        "time": "Tue May 29 11:35:06 2018 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Tue Aug 28 17:02:28 2018 +0900"
      },
      "message": "Allow volume setting only for offloadable effect for Offload\n\nMusic volume is set to max for an instant\nwhen enabling non-offloadable effect during compress offload playback.\n\nNon-offloadable effect module having volume control is created\nand linked to Offload thread.\nAfter that,  when enabling it during playback,\nvolume is set max to Offload thread to switch volume control module\nbefore switching Playback thread from Offload to Mixer.\nThen, until completing thread switch,\nOffload Thread works with max volume.\n\nTo avoid this issue, check effect capability\nso that only offloadable effect can set volume on Offload Thread.\n\nBug: 113311497\nTest: Enable non-offloadble effect during offload playback\n\nChange-Id: I91b7313d55ca7cfcde206f158ce553432499e992\n"
    },
    {
      "commit": "21e21510fad00408998cba4dc58b181d0503407c",
      "tree": "cccf6c4ca566d953f28bc8af8a647d0291e814cf",
      "parents": [
        "68360cc2d2d7d6a02e02c7f20257c3e5fc88e241",
        "25942ed63017a57212ac81e5ab2862c71c8cdc6d"
      ],
      "author": {
        "name": "Yuuki Yokoyama",
        "email": "yuuki.x.yokoyama@sonymobile.com",
        "time": "Thu Aug 16 22:47:41 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 16 22:47:41 2018 -0700"
      },
      "message": "Merge \"Use default sample rate for only sw effect\" am: 71a2d52f19 am: 4fd142e2b4\nam: 25942ed630\n\nChange-Id: Ibfff6dfeda67a6248f271a3c5b6394e00e33cb90\n"
    },
    {
      "commit": "0c167267e1dd521a1288bd1746c42b0680ab5b88",
      "tree": "24f78cc75a992dd5a2865408f26591326769cc3a",
      "parents": [
        "88d5a224a3727ae03ff1bed629912435620fbc39",
        "97f00044dc1553b4baa0f94d5e6acbf1a552c115"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Thu Aug 16 20:44:07 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 16 20:44:07 2018 -0700"
      },
      "message": "Merge \"Set volume for output when effect is enabled/disabled.\" am: e778547997 am: e414f58cf5\nam: 97f00044dc\n\nChange-Id: I5430650ffe90b7f4f38ba97d85df91a2262420c7\n"
    },
    {
      "commit": "71a2d52f19d868751413e7664f208757b9214907",
      "tree": "ac2ec89bc1cfe46c8f517325401087a7e626a1c7",
      "parents": [
        "ec40ae247d125af958489a3067030575fe4c9f52",
        "e17f831ef1ba0844e04826bb85455f7ca9c971c4"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 16 22:32:42 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 16 22:32:42 2018 +0000"
      },
      "message": "Merge \"Use default sample rate for only sw effect\""
    },
    {
      "commit": "e17f831ef1ba0844e04826bb85455f7ca9c971c4",
      "tree": "d8d97743c5be994cc75b367db9cccb93ba63e494",
      "parents": [
        "34affaed9cc6374e979e3bd29ccfe1671694bfe9"
      ],
      "author": {
        "name": "Yuuki Yokoyama",
        "email": "yuuki.x.yokoyama@sonymobile.com",
        "time": "Fri May 26 19:06:33 2017 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Thu Aug 16 18:37:14 2018 +0900"
      },
      "message": "Use default sample rate for only sw effect\n\nShould not configure effect by thread sample rate\nif effect is not offloadable.\nBecause of offload output may be different from\nthe sample rate supported by sw effect.\n\nBug: 70912361\nTest: Create AudioEffect during 24kHz mp3 playback\n\nChange-Id: Ie5bf264a9790d936c24476ea127bc6da9eefde73\n"
    },
    {
      "commit": "1990bd40ebb6fcbb876fae42e43792b9dc6d308b",
      "tree": "533950b805a77a744c2100b9c286059406ace779",
      "parents": [
        "34affaed9cc6374e979e3bd29ccfe1671694bfe9"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Fri Dec 12 14:04:11 2014 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Thu Aug 16 17:42:13 2018 +0900"
      },
      "message": "Set volume for output when effect is enabled/disabled.\n\nEven though effect module has \"EFFECT_FLAG_VOLUME_CTRL\" flag,\nthere is some case where volume setting is not sent to offload thread.\nThat leads to sudden increase of audio volume or too low volume.\nThis change is to support delegation of volume control completely\nfor offload audio effect.\n\nBug: 37443095\nTest: Enable/Disable Audio effects during offload playback\nChange-Id: I7033071edc99fadc519efd7adc895dc10f7b9d86\n"
    },
    {
      "commit": "298e1b3db0f94396249933c823b6ff55cf8fc1cc",
      "tree": "8deeed6f3a7001d40440a130e9f377ec3fb59a89",
      "parents": [
        "868c0a9e91df17dcad52b5a0dcacc51205dd8f46",
        "4ef19fa450e8b523741a22fabee8f62691abec37"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 22 20:47:54 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 22 20:47:54 2018 +0000"
      },
      "message": "Merge \"Update audio permission checking\""
    },
    {
      "commit": "7a1c913eb9fb9279baad1b1bb7c2e311e75abb57",
      "tree": "2e053b917f1b8fc887cd6172bb1824f08d27c8fc",
      "parents": [
        "3e0db91be9a81ea6d9b132c636e683a6b4f9bb8d",
        "a63f07bfcf6ca82d985634a2548e05de0f03fc81"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 18 17:16:56 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri May 18 17:16:56 2018 -0700"
      },
      "message": "Effects: Aux effect input is always mono, do not retry as stereo am: 01b32723fb\nam: a63f07bfcf\n\nChange-Id: Ib4c80c48512cfc36c552499d0ebbdb27f87b1898\n"
    },
    {
      "commit": "01b32723fb154dce487e20e980a5daff0764badf",
      "tree": "92612c694eb9ae9365202b9c85b0f3918e4c35eb",
      "parents": [
        "1ea2c0f91cb97b17cc8849cf14848b05684b63b7"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 18 13:52:02 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri May 18 13:52:02 2018 -0700"
      },
      "message": "Effects: Aux effect input is always mono, do not retry as stereo\n\nTest: Solotester on multichannel usb with aux effect\nBug: 79950246\nChange-Id: I6e2c3be88d657a5df547dc1034be0e0eecc4b7c2\n"
    },
    {
      "commit": "4ef19fa450e8b523741a22fabee8f62691abec37",
      "tree": "5d0eaaf73cebe029d1d8dd935d5c6fddb12ee70f",
      "parents": [
        "ab7ef300b74904bce6c5c810d9e5679abfa582e6"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 15 19:35:29 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 17 18:11:55 2018 -0700"
      },
      "message": "Update audio permission checking\n\nChange captureAudioOutputAllowed to check client pid.\n\nCheck calling uid with AID_AUDIOSERVER instead of calling pid with\nown pid. This is consistent, and works if AudioFlinger and\nAudioPolicyManager exist as different processes.\n\nRemove getpid_cached since getpid() is very fast. This removes\nany initialization issues.\n\nReplace getuid() with AID_AUDIOSERVER to remove ambiguity of\nmultiple native audio services for multiple users. Only\none exists regardless of users.\n\nDo not use multiuser UID checks for certain native services\nthat do not spawn for multiple users to prevent accidently exposure.\n\nMove permission checks to use ServiceUtilities for control and\nconsistency.\n\nRename isTrustedCallingUid to isAudioServerOrMediaServerUid\nso that permission check is explicitly known to caller.\n\nUpdate MediaLogService to use ServiceUtilities.\n\nTest: Basic sanity\nTest: AudioTrackTest, AudioRecordTest, SoundPool, SoundTrigger\nBug: 79485140\nChange-Id: Ib8ccb36929a9b4806c01626f32fa023a046d6020\n"
    },
    {
      "commit": "ab7ef300b74904bce6c5c810d9e5679abfa582e6",
      "tree": "dadb05ba8da176c046139ca43c3fae48a14191c3",
      "parents": [
        "1f2bfd3ac9d61982acb348d2c78f95c7d4b0bf05"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 15 19:35:29 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed May 16 18:49:09 2018 -0700"
      },
      "message": "Move ServiceUtilities from audioflinger to libmediautils\n\nTest: Play Music, Play Movies, Camera, Photos\nBug: 79485140\nChange-Id: Ib8382547828e386024145c416321d24e4af182db\n"
    },
    {
      "commit": "e6a61a5bac21727365b0ad99232df0a7a4dc6810",
      "tree": "a59c623ef7448fc44d9eaf29e589977b679d52b3",
      "parents": [
        "fa33327eb3b81bf1f2173bef0d13ced98b1221c1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 06 18:55:26 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 09 15:15:06 2018 -0700"
      },
      "message": "Effects: Only retry stereo config for legacy playback effects\n\nTest: Compiles, SoloTester Regression\nBug: 76445198\nChange-Id: I49b159e0ab73b17cc1d27a777da388b7a1cb3b87\n"
    },
    {
      "commit": "7840c30d04a749da9817682339f97b4ab128dffd",
      "tree": "f9dd3c1b47b99a5bb720fb51ca061625aa2a6306",
      "parents": [
        "cfb681346730d9d0cf849f44e234f79c1622f209"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Feb 24 01:33:26 2018 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Feb 24 01:39:39 2018 +0000"
      },
      "message": "Revert \"Ignore config error if non-offloadable effect is on offload thread\"\n\nThis reverts commit cfb681346730d9d0cf849f44e234f79c1622f209.\n\nReason for revert: Crashes in Play Music b/73624638\nTest: Play Music with cleared app data, check equalizer settings\nBug: 73624638\nBug: 70912361\nChange-Id: I6d4eec2fda57a60c2c6949937752d8f1e50bb8ab\n"
    },
    {
      "commit": "cfb681346730d9d0cf849f44e234f79c1622f209",
      "tree": "b1643895484134c0acc43e2db3ee88e787028643",
      "parents": [
        "e54461ae132a79d0ffa9d3ec4631df13eb5c7809"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Fri May 26 19:06:33 2017 +0900"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Feb 16 11:40:10 2018 -0800"
      },
      "message": "Ignore config error if non-offloadable effect is on offload thread\n\nReturn NO_ERROR if a non-offloadable effect is created on an offload thread\n(since the sampling rate of offload output can be different from\nthe one supported by a software effect). Enabling the non-offloadable\neffect will cause the track to move to a non-offload thread.\n\nBug: 70912361\nTest: Create AudioEffect during 24kHz mp3 playback\nChange-Id: Ie5bf264a9790d936c24476ea127bc6da9eefde73\n"
    },
    {
      "commit": "7588ff418aca63b1dc43a85afc1e86c40dd889a3",
      "tree": "bdb7ba0ca788a16d48d8e9945aa76f52f1683245",
      "parents": [
        "51ac542df4beb18dc1cf0285826124644f189c3b"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Jan 08 11:11:30 2018 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Sat Jan 20 10:49:56 2018 -0800"
      },
      "message": "Audio V4: Split HAL wrapper for versioning\n\nBoth core and effect Hal now have one single point of entry.\nThis point of entry is their respective factories:\n - DevicesFactoryHalInterface::create\n - EffectsFactoryHalInterface::create\n\nEach entry point looks for their respective services supported\nversion, starting from the highest (currently only 2.0) and\nreturning the subclass wrapping this version to the most recent audio.h\nframework api.\n\nNote that EffectBufferHalInterface were previously created from static\nmethods (mirror and allocate) which broke the single point of entry\nrequirement.\nAs a result, buffers have now to be created from the factory like the\nother classes.\n\nNote that the death handler also need to be its own library as it is\nused by versioned code and is version independent.\n\nBug: 38184704\nTest: compile\nChange-Id: Iac9b1fda561bb486193d5b9e025a870f50cda530\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "9aad48c31ee3557eddbcaf301539f7d19673f018",
      "tree": "c71508bb62282b7775d6abea630910eadb9f1194",
      "parents": [
        "13fca0cd377d56823f944f21716128dd5ac4bbf1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Nov 29 10:29:19 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 18 14:32:10 2018 -0800"
      },
      "message": "Allow multichannel effects\n\nTest: Solo Tester with mutichannel file\nBug: 70038539\nChange-Id: Id2e47eef62e55710bb6eda54c1f737aa3a3ce6bc\n"
    },
    {
      "commit": "9718d660697b8d7574efd11863b2f0cbd7637dbe",
      "tree": "d9f568d4b1b413cc5e00f80650781de2ff91107c",
      "parents": [
        "d466435670d1beb80beeeb1a140ebe6a5bfd0d9f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 22 17:57:39 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 22 17:59:37 2017 -0800"
      },
      "message": "Effects: Add debug float logging\n\nTest: audioflinger dumpsys\nBug: 70993567\nChange-Id: I510ab3557ee4b229078d552b7e7085ad3d386e6e\n"
    },
    {
      "commit": "d466435670d1beb80beeeb1a140ebe6a5bfd0d9f",
      "tree": "d6f22c53e3603b0b69a54ec9bad1a733c46b6785",
      "parents": [
        "61e916dd6b0c8701b42f3f392e51e5b52ca38e65",
        "116a49881b35f561f6ee316990d425fad56e7487"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 21 21:54:59 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 21 21:54:59 2017 +0000"
      },
      "message": "Merge \"AudioEffect: Convert aux buffer format from q4.27 to float\""
    },
    {
      "commit": "05083ac19249d90af77a23c46f4229a7a002320a",
      "tree": "515a40fd7ca344de258cb5bec3afe2623d217880",
      "parents": [
        "62aef7d364670c9c255f8470b0ea874ac2cca293"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 14 15:00:28 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 14 16:19:20 2017 -0800"
      },
      "message": "EffectModule: robust computation of mMaxDisableWaitCnt\n\nTo compensate for overflow / underflow.\n\nTest: Solo Tester and CTS effects\nBug: 70684279\nChange-Id: I7ac3d74c43320a2c6427ba2b424c8edb5a0250b1\n"
    },
    {
      "commit": "62aef7d364670c9c255f8470b0ea874ac2cca293",
      "tree": "a3a0a713b480a85ea4fbaae85dbbb7b80f211808",
      "parents": [
        "ab30516bf9e5f371b720f9cdcd6adfc11e278648"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 14 14:50:40 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 14 16:15:39 2017 -0800"
      },
      "message": "EffectModule: initialize all member variables in constructor\n\nTest: Solo Tester and CTS effect tests\nBug: 70674145\nChange-Id: I9a9e137b8c612f0ea8862da3973d142636fad34d\n"
    },
    {
      "commit": "ab30516bf9e5f371b720f9cdcd6adfc11e278648",
      "tree": "181303738783e64189fc9933cb3265338fff4101",
      "parents": [
        "d5de81458b829504237b8e044adb3808e96ebe10"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 14 12:42:22 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Dec 14 12:56:31 2017 -0800"
      },
      "message": "EffectModule: Update mConfig initialization\n\nUse aggregate-initialization of mConfig to zero.\n\nTest: instrumented memcmp with static decltype(mConfig) ZERO\nBug: 70674145\nChange-Id: Ifdc8780b5da4e0e959f144a1b927ed9bd48edddf\n"
    },
    {
      "commit": "6f88dc4f4e71b6d54359ffa01c7521a384483810",
      "tree": "b8baa538f64f993b3ad1e4d6488e28c1bf973eb0",
      "parents": [
        "8bdef6aa8c5a0eda695259cad75be24bfd402aaf"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 13 16:19:39 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 13 17:01:52 2017 -0800"
      },
      "message": "AudioEffect: initialize configuration in constructor\n\nTo avoid uninitialized use in setInBuffer() and setOutBuffer().\n\nTest: simulate high uninitialized frame counts and check memory usage.\nBug: 69927864\nChange-Id: I8aa68a70596bb3eaca2d4c90915f17272d90fe82\n"
    },
    {
      "commit": "116a49881b35f561f6ee316990d425fad56e7487",
      "tree": "26d80d6e59138bcf42902cfee61713817cc06c09",
      "parents": [
        "fa69ca3012fb4065dd892f363957a4f9a6d24757"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Nov 30 10:15:08 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 06 19:48:37 2017 -0800"
      },
      "message": "AudioEffect: Convert aux buffer format from q4.27 to float\n\nTest: Solo Tester aux reverb\nBug: 69853407\nChange-Id: I72ca2377036e5ccfd5f4631ac6cc5e86d2e40433\n"
    },
    {
      "commit": "fa69ca3012fb4065dd892f363957a4f9a6d24757",
      "tree": "f016b2927a782e3d0355a01622823bd3647eb835",
      "parents": [
        "14093dd03ceec781072b8c53693fcb5d631cddea"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Nov 30 10:07:53 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Dec 06 19:19:31 2017 -0800"
      },
      "message": "AudioEffect: clean up format conversion in EffectModule::process()\n\nEditing for clarity, no change in operation.\n\nTest: Solo Tester\nBug: 69984406\nChange-Id: I683fd9b83417c3d1c6d63339537d03c55625ac13\n"
    },
    {
      "commit": "bded9c8bd20c6cc55d4e4f73b56fdfe86e6fbc69",
      "tree": "fd7748b3e070bb6760a2b3e662e0b5ad84dedcbe",
      "parents": [
        "cc25a713d9c3ea87299324d0f44864e78710020e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Nov 30 18:47:35 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 05 17:05:21 2017 -0800"
      },
      "message": "AudioEffect: rename m(In|Out)Buffer16 to m(In|Out)ConversionBuffer\n\nThese buffers will be used later for channel conversion as well.\n\nTest: Solo Tester\nBug: 69984406\nChange-Id: I551a256d79793b4137b2689be1140d1d6e35ef71\n"
    },
    {
      "commit": "c15aaeec42f2b14cff0f29bb84e58f4388975d91",
      "tree": "05370ca87ddc350edc876e351f82938f29a172c2",
      "parents": [
        "664d6012afe348c6fe906cb05fb981d1a4dbd593"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 27 17:02:40 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 28 12:48:08 2017 -0800"
      },
      "message": "Allow clearing effect hal buffers\n\nTest: SoloTest with int effects\nBug: 69855634\nChange-Id: I273c9da600f3ab04890a7a1cb74b606cc28bea53\n"
    },
    {
      "commit": "5effdf6d9ed17b4ff67a7e1adc56996c01c43383",
      "tree": "06e5f064d6dc9b5aea55cf9a12c39d9e68091a85",
      "parents": [
        "cd742b9174eac9f8b6a108512818f2d3a2392ea8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 27 13:51:40 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 27 14:47:19 2017 -0800"
      },
      "message": "Deprecate ditherAndClamp with memcpy_to_i16_from_q4_27\n\nTest: test-mixer and SoloTester\nBug: 69636805\nChange-Id: I5cc04d82f3e46fbfc8188a63eb2a90fb70634c90\n"
    },
    {
      "commit": "94a1ee822686e920a33e312f4032f991731aea07",
      "tree": "5a8e84b19269529153e94fa2f0a6b927823f6848",
      "parents": [
        "c275189ccbfe8ca29437a24256195c61de2f2a6d"
      ],
      "author": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Fri Jul 21 15:11:02 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Nov 21 20:39:19 2017 -0800"
      },
      "message": "Converting effect chains to float point by default.\n\nRemoved additional conversions from/to int16/float.\nFixed config file restrictions.\nDetection of native format (int16/float) of effects.\nOn-the-fly conversion to/from 16 bit effects if necessary.\nWIP: testing effects in all possible configurations.\n\nBug: 63935479\nTest: Bufflog dumps, frequency analysis comparison, SoloTester\nChange-Id: Id4cabc5c5698befc90a5d68b0b996a9b9adebfc4\n"
    },
    {
      "commit": "424c4f5b76a6ed11f2c713b42246a7220cfbb240",
      "tree": "4e99cdf9a79663ff3820a0a5ab7893afd54daeee",
      "parents": [
        "71e4dfef2cd7a43cd61f376311911ea7563a2418"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jul 19 17:54:29 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jul 21 13:55:45 2017 -0700"
      },
      "message": "audio effects: Eliminate the cause warning logs about unreleased interface\n\nThe cause of frequent \"EffectModule 0xxx destructor called with unreleased\ninterface\" messages was due to not releasing the effects when purging\nstale effects.\n\nThe cause of \"Effect handle 0xxx disconnected after thread destruction\"\nmessage was due to late binder call for disconnecting already purged\neffect handle.\n\nAlso improved logging to communicate uuids of the effects causing\nthese issues.\n\nBug: 62267926\nTest: no aforementioned warnings in the log when opening the Effects\n      panel in Play Music\n\nChange-Id: I6ec6f60c46dc704226931fb59a641e4cd74c2fd1\n"
    },
    {
      "commit": "d8365c54d049aade9e02ccae722f311f846cad9a",
      "tree": "b0678982480e7a46b21fd0a855fd1cfd242ffdb1",
      "parents": [
        "30bf42ca7242f5f7849cbe7ce61fc994b88c5b56"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 16 15:27:05 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 17 15:26:56 2017 -0700"
      },
      "message": "audio flinger: fix AEC and NS suspend logic\n\nMake sure we suspend/restore AEC and NS only when the suspend condition\nactually changes to avoid mismatch in number of suspends/restores\ncausing the ref counting mechanism to leave the effects in suspend mode\nwhile they should not.\n\nAlso clear the suspend state on an effect session before parking it in\nthe orphan chains list so that it is in default state whne attached to a\nnew record thread.\n\nBug: 63015903\nTest: verify that switching BT SCO on/off with Duo enables or disables\nAEC and NS accordingly\n\nChange-Id: I4d0f0bf818deca3952da3c67bb7e83cb500429c7\n"
    },
    {
      "commit": "80e7e68dbf734da1c387152f1757aa70e88ddf5a",
      "tree": "bd7a2d12878881c57ff715393a49a8dfdbad1110",
      "parents": [
        "42ab59fcd8b54ef206ea4bdcd1299cce11bac355",
        "dd36008b782ec1da0ded327dc51292d102c690d4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 15 01:00:07 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jul 15 01:00:07 2017 +0000"
      },
      "message": "Merge \"audio effects: filter reserved effect commands\" into nyc-mr1-dev am: 125fc63d73 am: a5d728cce1 am: ccd8680538\nam: dd36008b78\n\nChange-Id: Icd196218ebeaa40b2463b1a35eb2cb9e27d76b0c\n"
    },
    {
      "commit": "dd36008b782ec1da0ded327dc51292d102c690d4",
      "tree": "62688bd7c8ba2a2e0f770cd8fb7550293abbe5c8",
      "parents": [
        "024216f32b482c9a9609263f9c1711fc08f86087",
        "ccd8680538d3bc3b3c0ef201b3511ee065eca12f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 15 00:56:06 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jul 15 00:56:06 2017 +0000"
      },
      "message": "Merge \"audio effects: filter reserved effect commands\" into nyc-mr1-dev am: 125fc63d73 am: a5d728cce1\nam: ccd8680538\n\nChange-Id: I0af69333bcb67ef6534175ce986fc05e5a26ffa6\n"
    },
    {
      "commit": "c7ab309ecbb289cd1296430f724166a26bd45afe",
      "tree": "499766fbb5598e74f874966bfad6a56bea4e8e0b",
      "parents": [
        "25c4535f04eb2229eca4dfa0da04b13c004f3446"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 15 18:43:46 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 11 02:11:00 2017 +0000"
      },
      "message": "audio effects: filter reserved effect commands\n\nBlock effect commands reserved for framework use when\nreceived on server side IAudioEffect. Applications have no reason\nto use these commands and they present a unnecessary attack surface.\n\nBug: 62019992\nTest: run CTS tests for audio effects\nChange-Id: Ie680d5d5650f99dbabf93891703e1cde2c2e852d\n"
    },
    {
      "commit": "444841ffd7f56f7eadc3cccd59e62738626f0c33",
      "tree": "aa221059eeba7e4b10174a565a27d61a6ea2ba40",
      "parents": [
        "fbd7e12c373435c77aa5b20bdf321a0589521746"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 16 15:36:43 2016 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Apr 13 12:52:05 2017 -0700"
      },
      "message": "Get declarations from the proper header file\n\nTest: builds OK\nChange-Id: I759e49570cd00b3e5101f38164fcac5ac53faa6c\n"
    },
    {
      "commit": "869fab171971f350d5adf4680608ff39049270c3",
      "tree": "39f4990725b81c5d837db554c3e55d260108d453",
      "parents": [
        "a45c300fcad38e23107b3ad8dd1d3935f5127f9c"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Feb 27 18:44:19 2017 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Mon Feb 27 18:44:19 2017 -0800"
      },
      "message": "AudioFlinger: fix Effects handling for MMapThread\n\nTest: CTS test_aaudio.cpp in Exclusive mode\nChange-Id: Iac63d901822255028b16c5b90ca07a72ceec372a\nSigned-off-by: Phil Burk \u003cphilburk@google.com\u003e\n"
    },
    {
      "commit": "7863c791dba8c4e5e9591b6837d410e580be0a25",
      "tree": "5199273fa3bac5303b0aa8dcdfd984f49f75e30f",
      "parents": [
        "94a20830fc0768efc138ab7f746f80e8b3d60c15",
        "6acd1d432f526ae9a055ddaece28bf93b474a776"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 10 20:24:21 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 10 20:24:22 2017 +0000"
      },
      "message": "Merge changes from topic \u0027mmap_no_irq\u0027\n\n* changes:\n  Add support for mmap stream\n  audioflinger: define MMAP HAL Stream control interface\n"
    },
    {
      "commit": "c778e59330a01a9aee6ad354c1e53462df4c88af",
      "tree": "1a1e994236e73f2088f84b710c0d5a189f56f177",
      "parents": [
        "c0461f5b18eb6d5516804810f315e6c23879a09d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 25 10:35:30 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 25 10:35:30 2017 -0800"
      },
      "message": "audioflinger: Fix crash in EffectChain::dump\n\nCheck for null buffer in dumpInOutBuffer\n\nBug: 34691158\nChange-Id: I5d11fcb1ce0170da7a742fdbe42a7eaeba4370fe\nTest: try bug repro steps\n"
    },
    {
      "commit": "0688880d2862e6cddfea1fceca24e8a081a6be60",
      "tree": "0ddffd4d8d70f0fad63e6c1738fdd55d86b3db08",
      "parents": [
        "dffb51f4e35fe93215b025bdf4216f3b411c734b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jan 19 12:47:55 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jan 19 14:06:37 2017 -0800"
      },
      "message": "audioflinger and hal: Compatibility fixes for Treble\n\n 1. Treat both reply size being 0 and reply buffer being NULL\n    as an indication that the reply isn\u0027t needed.\n\n 2. Synchronize both input and output effect chain buffers,\n    and avoid excessive copies when the input buffer is the same as\n    the output buffer.\n\n 3. Improve effect chain debug dump by showing both\n    \"external\" and \"allocated\" pointers for effect audio data buffers.\n\nBug: 34368451\nChange-Id: I56aba6908408b5fce3f15c8d29138555101e8720\nTest: volume controls works when both Bass Boost and EQ effects enabled\n"
    },
    {
      "commit": "6acd1d432f526ae9a055ddaece28bf93b474a776",
      "tree": "5035b942396a0e907e0c23f803a349d17dc50ad5",
      "parents": [
        "fc23520d9c3f15e28baa81de5f7dfa6c1b0af426"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 04 14:23:29 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 11 12:59:06 2017 -0800"
      },
      "message": "Add support for mmap stream\n\nAdd support for MMAP streams created by Oboe service.\n- A new audio thread class MmapThread deriving from ThreadBase\nis added to manage permissions, volume, routing and wakelocks for activity\non MMAP streams.\n- Requests received over MmapStreamInterface to open, start and stop\na MMAP stream are forwarded to audio policy manager so that activity\non MMAP capture and playback streams is visible to audio policy and\ntaken into account in volume and routing management.\n`\n\nBug: Bug: 33398120\nTest: manual test\nChange-Id: I957906495fe9277d2972d810b633f50cd1e14ec3\n"
    },
    {
      "commit": "022b9953153bdb1984f0abb17d21ef8c1826ad49",
      "tree": "aff19a7663d75cbb16bc003424bacb6f97b738cd",
      "parents": [
        "e61f9e57e61cbf4d86d6385dd3cddb41e245f749"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 04 16:36:51 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jan 09 18:18:18 2017 -0800"
      },
      "message": "Re-implement HIDL effect processing using FMQ and IMemory\n\nResult: no hwbinder calls due music processing.\n\nTest: make, use Play Music with effects, check traces\nBug: 30222631\nChange-Id: I06d0e94e603688874b31824427f3b0878b5f7c8e\n"
    },
    {
      "commit": "0ce91633d8a4f5dcb3706a7734c02ddb5099eefd",
      "tree": "c0a9e958f38ded2ed3f15609f860204ee0916b32",
      "parents": [
        "32a5f5d53f9fe2ba584d2ecdf3edd487fb4146a7"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Dec 27 10:50:15 2016 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Dec 27 10:50:15 2016 -0800"
      },
      "message": "audioflinger: Fix deletion of input buffer in EffectChain\n\nmInBuffer, when it is owned by EffectChain, comes from\nAudioFlinger::PlaybackThread::addEffectChain_l where it is\nallocated using \"new[]\", and thus needs to be deleted\nusing \"delete[]\".\n\nChange-Id: Ib16bab59f9e00627f8ef52f7232ebdd74a6c9a74\nTest: make\n"
    },
    {
      "commit": "31a4598a1908b3ccac7ddb33c511ce66840aa911",
      "tree": "32c59ae8474727beb681f6bb8710ec60a7d0c92b",
      "parents": [
        "b378b73dd7480b584340b8028802c9ca2d625123"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 15 14:46:09 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 15 16:36:33 2016 -0800"
      },
      "message": "DO NOT MERGE - audioflinger: fix recursive mutex lock in EffectHandle.\n\nBug: 33661708\nBug: 32707507\nBug: 32095713\n\nTest: run CTS AudioEffectTest#test5_0Command, Custom binder test\n\nChange-Id: I03f674f126c191143bd8bdfe236f793e975826a5\n"
    },
    {
      "commit": "1ffc585aaaa236806bc0464566ea51189ad2d36e",
      "tree": "d2635c92c15cfefad96eb44cdf5e2f2aac185464",
      "parents": [
        "dcc65c73953d885d8d7433da2a8153f6d3c494a1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 15 14:46:09 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 15 15:04:27 2016 -0800"
      },
      "message": "audioflinger: fix recursive mutex lock in EffectHandle.\n\nBug: 33661708\nBug: 32707507\nBug: 32095713\n\nTest: run CTS AudioEffectTest#test5_0Command, Custom binder test\n\nChange-Id: I03f674f126c191143bd8bdfe236f793e975826a5\n"
    },
    {
      "commit": "b378b73dd7480b584340b8028802c9ca2d625123",
      "tree": "00439baacf771d5439c6ec1747cfcdff13eeb4e5",
      "parents": [
        "5ed0c9ffdae597a023bdcade0868566832a01c2b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 01 15:28:29 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 09 10:25:06 2016 -0800"
      },
      "message": "DO NOT MERGE - improve audio effect framwework thread safety\n\n- Reorganize handle effect creation code to make sure the effect engine\nis created with both thread and effect chain mutex held.\n- Reorganize handle disconnect code to make sure the effect engine\nis released with both thread and effect chain mutex held.\n- Protect IEffect interface methods in EffectHande with a Mutex.\n- Only pin effect if the session was acquired first.\n- Do not use strong pointer to EffectModule in EffectHandles:\nonly the EffectChain has a single strong reference to the EffectModule.\n\nBug: 32707507\nChange-Id: Ia1098cba2cd32cc2d1c9dfdff4adc2388dfed80e\n"
    },
    {
      "commit": "f10c709fda87d971a206eebd5df47356e7f2aa39",
      "tree": "98b1a47d6a12c11a4b5a02e2a7fb5129b2a6680f",
      "parents": [
        "7cdef381717e3a96acc6c5786c88bf1eaf03d2f2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 06 17:09:56 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 07 09:40:43 2016 -0800"
      },
      "message": "audio policy: remove effects before releasing input\n\nmodify releaseInput() implementation so that effects added by policy\nrules are removed before closing the input stream to avoid\nfailure to destroy the effect chain\n\nmake sure that orphan effect chains are checked when an EffectHandle is\ndisconnected after thread destruction.\n\nTest: make and run Hangouts\nBug: 32707507\n\nChange-Id: I7833b4c5e42c0057a4477eb4485a20dd26ca2f90\n"
    },
    {
      "commit": "79366efacc2da6e531bf4e2f44776288feab44dd",
      "tree": "b6d1cab10aa9afae5691b9a0fef09a3349150083",
      "parents": [
        "f1e829a54ec8c5e28063366d378a110e14b98811",
        "2fd05aa3f0d2a22e1b4625aa2a9a384ac4691d91"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Dec 03 01:00:35 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Dec 03 01:00:35 2016 +0000"
      },
      "message": "Effect: Use local cached data for Effect commit am: dd79ccda92 am: 82c8c7656f am: 9851dee7da am: 4242950061 am: a661c82829 am: b45c856249 am: 39ca98f547 am: 9ea4b8abdf am: 25813f0a7a am: 1155d119b4 am: 70dc13599d\nam: 2fd05aa3f0\n\nChange-Id: Ic3a3443d71ac628d5727970b75d65c4e29813a14\n"
    },
    {
      "commit": "2fd05aa3f0d2a22e1b4625aa2a9a384ac4691d91",
      "tree": "61e33a415425f622e2175c7e4c4e8e1d76b1f522",
      "parents": [
        "f50635bdc4613bfd8f4a3a76dc0e5c6fc752c77a",
        "70dc13599db3519108bccd0f3d7f8c3e2e37b572"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Dec 03 00:58:05 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Dec 03 00:58:05 2016 +0000"
      },
      "message": "Effect: Use local cached data for Effect commit am: dd79ccda92 am: 82c8c7656f am: 9851dee7da am: 4242950061 am: a661c82829 am: b45c856249 am: 39ca98f547 am: 9ea4b8abdf am: 25813f0a7a am: 1155d119b4\nam: 70dc13599d\n\nChange-Id: I0cb9e61f3bad85c85f433ae0bd7dbd5ef74afa34\n"
    },
    {
      "commit": "70dc13599db3519108bccd0f3d7f8c3e2e37b572",
      "tree": "139dccb7a78b9a7bba77e4b1a974024247af93b9",
      "parents": [
        "ec601622f852cd1710bb92023d318a28dd03c56d",
        "1155d119b4265d52e45eada6d5c4895af22ff12a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Dec 03 00:56:04 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Dec 03 00:56:04 2016 +0000"
      },
      "message": "Effect: Use local cached data for Effect commit am: dd79ccda92 am: 82c8c7656f am: 9851dee7da am: 4242950061 am: a661c82829 am: b45c856249 am: 39ca98f547 am: 9ea4b8abdf am: 25813f0a7a\nam: 1155d119b4\n\nChange-Id: Ia29bfe12f493e94b451b973e8e027007630b4c55\n"
    },
    {
      "commit": "39ca98f547e786a6c0258f17bd496a206f4a0ac3",
      "tree": "bcc9d473e7ddb2eb8fef08a62a4d0e21e87d3c66",
      "parents": [
        "72729c449d9f7a6f217be629066cb683ad27b37b",
        "b45c856249d678df55d609e734fee66fa0b333e1"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Dec 03 00:47:04 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Dec 03 00:47:04 2016 +0000"
      },
      "message": "Effect: Use local cached data for Effect commit am: dd79ccda92 am: 82c8c7656f am: 9851dee7da am: 4242950061 am: a661c82829\nam: b45c856249\n\nChange-Id: I6cb0c8e2dbaa2ebe3d4fd4f283a2028ac099f3c3\n"
    },
    {
      "commit": "42429500612b768902442c9fe594327511462cc5",
      "tree": "db679b7d174cfb79cc290af0ecedea5c38306946",
      "parents": [
        "9161586309fd018a1503dc5227f2cb329b935213",
        "9851dee7da476848ae9ef5e8fe07d3634d50c208"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Dec 03 00:40:33 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Dec 03 00:40:33 2016 +0000"
      },
      "message": "Effect: Use local cached data for Effect commit am: dd79ccda92 am: 82c8c7656f\nam: 9851dee7da\n\nChange-Id: I3d375c671122e61cf0b530457c37c1cd5c06e563\n"
    },
    {
      "commit": "82c8c7656f7c7b7269fd7f7a9f1e657109824123",
      "tree": "656627902f4f2db291620bee9b17c251b9fa164f",
      "parents": [
        "01e854056a73ee914bbac079389c720e813e4c57",
        "dd79ccda92c1e9b982b2d0f8877d98e5258fbb73"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Dec 03 00:36:01 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Dec 03 00:36:01 2016 +0000"
      },
      "message": "Effect: Use local cached data for Effect commit\nam: dd79ccda92\n\nChange-Id: Ide8165907e03b9d400eaa33a222ceeae782d6509\n"
    },
    {
      "commit": "0d5a2ed0a05a2bf337c68edb54f24c60e18032c1",
      "tree": "6b8dac8ec17119ad5b661b85cff30bffe1d4a645",
      "parents": [
        "0d96fa05bf3f22942c372ecc93a7f6a44ecda30a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 01 15:28:29 2016 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 02 12:21:39 2016 -0800"
      },
      "message": "improve audio effect framwework thread safety\n\n- Reorganize handle effect creation code to make sure the effect engine\nis created with both thread and effect chain mutex held.\n- Reorganize handle disconnect code to make sure the effect engine\nis released with both thread and effect chain mutex held.\n- Protect IEffect interface methods in EffectHande with a Mutex.\n- Only pin effect if the session was acquired first.\n- Do not use strong pointer to EffectModule in EffectHandles:\nonly the EffectChain has a single strong reference to the EffectModule.\n\nTest: Tested with EffectTest app. Regression tests in main audio use cases.\n\nBug: 32707507\nChange-Id: Ia1098cba2cd32cc2d1c9dfdff4adc2388dfed80e\n"
    },
    {
      "commit": "c64e124bca8b7813ecea19d38452dd55fee4082f",
      "tree": "de5e16718fefa194781ee1a7c57c4844fc953e97",
      "parents": [
        "559dcf59ff136768b97a7bffa10b128d06caef01",
        "cbc7183fbbb30af5611795740e0db5affb7c9e29"
      ],
      "author": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Wed Nov 30 20:58:28 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Nov 30 20:58:28 2016 +0000"
      },
      "message": "Fix security vulnerability: potential OOB write in audioserver am: e275907e57 am: 01e854056a am: 3e8ab60b7f am: 9161586309 am: ad29b47d91 am: 8b9b199891 am: 72729c449d am: 97bb7fe084 am: 3d6aada999 am: ffe82a3b4a am: ec601622f8 am: f50635bdc4 am: f1e829a54e am: a2e95f5c9b am: c6239b0d4d\nam: cbc7183fbb\n\nChange-Id: I7a13718ab24d1c4c9c64d83e148031af046921e1\n"
    },
    {
      "commit": "c6239b0d4dfa730c122f2de214dfd2e62f7f8eea",
      "tree": "8ee8f273638f8058d32d2d9bcaf9b704b82f557c",
      "parents": [
        "379254d561700c55fae6292428aefa20e45b26f6",
        "a2e95f5c9b1613cce1d2bf0f0e35b0addd137906"
      ],
      "author": {
        "name": "rago",
        "email": "rago@google.com",
        "time": "Wed Nov 30 20:21:25 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Nov 30 20:21:25 2016 +0000"
      },
      "message": "Fix security vulnerability: potential OOB write in audioserver am: e275907e57 am: 01e854056a am: 3e8ab60b7f am: 9161586309 am: ad29b47d91 am: 8b9b199891 am: 72729c449d am: 97bb7fe084 am: 3d6aada999 am: ffe82a3b4a am: ec601622f8 am: f50635bdc4 am: f1e829a54e\nam: a2e95f5c9b\n\nChange-Id: Ic25053a111913dfd4490633b9f0eff1e7fe1d359\n"
    }
  ],
  "next": "f1e829a54ec8c5e28063366d378a110e14b98811"
}
