)]}'
{
  "log": [
    {
      "commit": "55773033ed1f23c4e8f3d2704002fbd0cedbf7a5",
      "tree": "54bc894243fa3c52e611c85aed75ee6677056c13",
      "parents": [
        "7aed66e788c8955ddd22a1235856bb9dac34d82a"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 01 15:08:13 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 08 18:12:55 2020 -0700"
      },
      "message": "Convert mask types from uint32_t to enum type\n\nThis applies to the following types:\n\n- audio_gain_mode_t;\n- audio_flags_mask_t;\n- audio_channel_representation_t;\n- audio_channel_mask_t;\n- audio_devices_t.\n\nEnum types are distinct thus proper overloading on the type\nis possible in C++. Also, assignments to enum types are\nless prone to errors.\n\nBug: 169889714\nTest: basic audio functionality\n      m stagefright\n      atest audiopolicy_tests\nChange-Id: I42506484b1d0b0482618b7314fad4c8012a06fb4\n"
    },
    {
      "commit": "3b98d3208183a6a2ec4d3eb2b24a1cd53cf15c46",
      "tree": "40d78318ee59cb23fa5cfbd53fdff57035fe8b32",
      "parents": [
        "bcfb2ce24a4eb736d701197293d4337f23ba59c4"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Thu Sep 03 17:54:16 2020 +0000"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Thu Sep 03 17:54:16 2020 +0000"
      },
      "message": "Revert^2 \"Support device role for capture preset.\"\n\nbcfb2ce24a4eb736d701197293d4337f23ba59c4\n\nChange-Id: I368d562ec2aae68aa239dce75d54ca2772b30e76\n"
    },
    {
      "commit": "bcfb2ce24a4eb736d701197293d4337f23ba59c4",
      "tree": "e4a01d8d1e3c5ccbd3ab7db611315a1b5ea97239",
      "parents": [
        "dddc2aef4e5f9f27a79909f475c31c96eb688200"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Thu Sep 03 02:45:05 2020 +0000"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Thu Sep 03 02:45:05 2020 +0000"
      },
      "message": "Revert \"Support device role for capture preset.\"\n\nRevert \"Support set/clear/get preferred device for capture preset.\"\n\nRevert submission 12409575-devicesRoleForCapturePreset\n\nReason for revert: break CarAudioZonesHelperTest\nReverted Changes:\nI92fdb2cbd:Support set/clear/get preferred device for capture...\nI44e67d5b0:Add a helper function of checking if an audio sour...\nIb16ab2ec8:Support device role for capture preset.\nI46bd8dfb5:Add tests for set/get/clearPreferredDeviceForCaptu...\n\nChange-Id: I80f5267a01b48d01681a2d97cf3eb9de573ca6b5\n"
    },
    {
      "commit": "dddc2aef4e5f9f27a79909f475c31c96eb688200",
      "tree": "40d78318ee59cb23fa5cfbd53fdff57035fe8b32",
      "parents": [
        "4a603cd0594d22d1a3a2bae5bb22009343d4b5bb"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 19 11:20:48 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Aug 25 09:42:58 2020 -0700"
      },
      "message": "Support device role for capture preset.\n\nSupport set/add/remove/clear/get device role for capture preset. The\ndevice role can be DEVICE_ROLE_PREFERRED and DEVICE_ROLE_DISABLED. The\npreferred and disabled devices can be multiple devices. In this CL,\nonly cache preferred devices in engine but not use for audio routing.\n\nBug: 160352965\nTest: atest AudioServiceHostTest\nTest: atest audiopolicy_tests\nChange-Id: Ib16ab2ec82bc288421c20df9470ac3835c71b1e8\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": "6a02d53b76d0a3ccb234a3e3d56318883cadd733",
      "tree": "4bd9652fccb6530787e8a25292aeb81c1d93c612",
      "parents": [
        "1d2a159395df0767ecb2320aff4dd4db3d26e6b2"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Aug 07 11:56:38 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 12 11:24:46 2020 -0700"
      },
      "message": "Use AudioDeviceTypeAddrVector instead of Vector\u003cAudioDeviceTypeAddr\u003e\n\nAudioDeviceTypeAddrVector is std::vector\u003cAudioDeviceTypeAddr\u003e. In that\ncase, it is not needed to use Vector\u003cAudioDeviceTypeAddr\u003e. It is also\nsuggested to use the std::vector instead of Vector.\n\nTest: atest AudioHostTest\nTest: atest AudioServiceHostTest\nTest: atest audiopolicy_tests\nBug: 160352965\nChange-Id: Ibcd91fcba95c53e3c172ae62fc6f30e70509de51\n"
    },
    {
      "commit": "416fffe5fa7037171ead858f702accfb990fd3bc",
      "tree": "dd54d20f53388b16848e8451eea76435df01427c",
      "parents": [
        "aacaf2d4cdf898109d8027e39dbd0befc87251e9"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jul 31 17:36:08 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jul 31 17:36:08 2020 -0700"
      },
      "message": "Avoid storing \u0027this\u0027 in a wp\u003cAudioEffect\u003e while in constructor\n\nStoring \u0027this\u0027 into wp\u003cAudioEffect\u003e while running the constructor\nof an AudioEffect can lead to premature instance destruction\nbecause the owner of this weak pointer may promote to sp\u003c\u003e\non a thread running in parallel to the constructor.\n\nFixed by removing a call to AudioEffect::set from the constructor\nand moving the responsibility for calling it to client code.\n\nBug: 162323621\nTest: repro steps from the bug\n      atest android.media.cts.VisualizerTest\nChange-Id: Ice5f510b1c9020b5ba73bd6223c1669ab8eae24c\n"
    },
    {
      "commit": "14a88630162b96d0d52354261ee09216c0bed0d7",
      "tree": "da882f8626cba6ccc46b975d7e7b49a04e6ce4de",
      "parents": [
        "36cd068a02066558ea5884d33c5623f639436eb0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 16 12:28:30 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 16 12:28:30 2020 -0700"
      },
      "message": "audio policy: fix concurrent capture policy for virtual sources\n\nDo not consider virtual sources when determining\nlastest active capture client. As a virtual source\ncapturing does not silence other captures, it should not\nprevent another client from being selected as the latest active.\n\nBug: 160820363\nTest: Verify capture with Solotester in background and projecting to\nDHU.\n\nChange-Id: I2f28026dbecfa72b5d44f52b95538fc13996627b\n"
    },
    {
      "commit": "3f16cb3b9a95dd2bdf8befbca8fb56c82777e787",
      "tree": "329d738c55703880b5b3cf9be0b0057a8f42f5ee",
      "parents": [
        "cf2952bc08a776596cc90b580d3747278c603c25",
        "0d144c8163b0745ff96be2e2f1908e3bbd8f6103"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 01 00:23:48 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jul 01 00:23:48 2020 +0000"
      },
      "message": "Merge \"audio policy: remove capture restrictions for IN_COMMUNICATION mode\" into rvc-dev am: cdde799ce5 am: 3b2563bde8 am: 872274c05f am: 0d144c8163\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12048628\n\nChange-Id: Ifa7968821fa603d2bce09af541c50dc1b7d372fa\n"
    },
    {
      "commit": "ffabb49539cfa682feb9f77c93e050b27e0fa151",
      "tree": "8aa81baece273a4c6dcab48cdcf544791a294836",
      "parents": [
        "498c4ed2faa20036408a8790a90a3b2575976f6a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 30 14:06:37 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 30 14:06:37 2020 -0700"
      },
      "message": "audio policy: remove capture restrictions for IN_COMMUNICATION mode\n\nRemove capture restrictions added to prevent apps from capturing\nwhen audio mode is IN_COMMUNICATION if they are not the audio mode\nowner.\n\nBug: 153934174\nBug: 160260850\nTest: repro steps in bug.\nTest: regression for VoIP calls\nTest: atest AudioManagerTest#testAccessMode\nTest: atest AudioRecordTest\nChange-Id: Iba423e0aceec7e07089440ad1efb9e1325953305\n"
    },
    {
      "commit": "906ab3315352998c9119695b9733042f070fa43e",
      "tree": "5faf744901a25c0767e4223e9d4c82c9740c0eb4",
      "parents": [
        "01e02c1ad1d838eb678733d246793d582d603b00",
        "8c7669e999929b2f8dac92706dfc32e6d83cfa99"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 17 03:33:31 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jun 17 03:33:31 2020 +0000"
      },
      "message": "Merge \"Rename \"Westworld\" to \"Statsd\"\" into rvc-dev am: e28883fe1b am: 48658f8a11 am: ec407509b5 am: 8c7669e999\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/11887808\n\nChange-Id: I8a8562f9492a9d59b7afc59d6caed3a79fbaface\n"
    },
    {
      "commit": "087b37c360200e3e97935efd958ce4384a6675cd",
      "tree": "72d22173c3730582683e078d8e1a7192e3c8d94c",
      "parents": [
        "19d51164324653a7312c6d7bc0fd0ac43d581503"
      ],
      "author": {
        "name": "Muhammad Qureshi",
        "email": "muhammadq@google.com",
        "time": "Tue Jun 16 16:37:36 2020 -0700"
      },
      "committer": {
        "name": "Muhammad Qureshi",
        "email": "muhammadq@google.com",
        "time": "Tue Jun 16 18:05:47 2020 -0700"
      },
      "message": "Rename \"Westworld\" to \"Statsd\"\n\nBug: 158725651\nTest: N/A; trivial name change\nChange-Id: I39f8847059c6decac070aaea901b7d0d418c75e9\n"
    },
    {
      "commit": "67cb88ee8eb01b5d745afec056a3b8873267be2a",
      "tree": "b0bc018e3804a64a7f87c0c17c2b4ce303735527",
      "parents": [
        "5c083cb35bcbe9d35bc474e85d69496aa15ee2b4",
        "661da84ff79d93fd0b1352c815656196fc96ea9c"
      ],
      "author": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Wed May 06 17:29:28 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed May 06 17:29:28 2020 +0000"
      },
      "message": "Merge \"Revert \"Add isUidActiveOrForeground() for camera/audio to use.\"\" into rvc-dev am: cc79094c69 am: 2b5794206e am: f8f28e9d83 am: 661da84ff7\n\nChange-Id: I3a457152c32537a4b2a6aff2df226db09bed508b\n"
    },
    {
      "commit": "cc79094c69bdc85c7c8f52247a00bae1dff68473",
      "tree": "ae20e4e48fc2ccda1611c3010b378e4dc34b2e63",
      "parents": [
        "b3cedfdf595bbb3538a7a6e36b70de5e62a58fa1",
        "12c7ec759a2629c2b11861ec89fd8a3bef778d39"
      ],
      "author": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Wed May 06 16:59:34 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 06 16:59:34 2020 +0000"
      },
      "message": "Merge \"Revert \"Add isUidActiveOrForeground() for camera/audio to use.\"\" into rvc-dev"
    },
    {
      "commit": "12c7ec759a2629c2b11861ec89fd8a3bef778d39",
      "tree": "f6761f74625adddd3853d93fd8d5e92a7f388950",
      "parents": [
        "ffffffc42242cf06c433e4e4958d7991a7e2848c"
      ],
      "author": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Mon May 04 17:40:52 2020 +0000"
      },
      "committer": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Mon May 04 18:06:32 2020 +0000"
      },
      "message": "Revert \"Add isUidActiveOrForeground() for camera/audio to use.\"\n\nRevert \"Add isUidActiveOrForeground() for camera/audio to use.\"\n\nRevert \"Add isUidActiveOrForeground for camera/audio to use.\"\n\nRevert submission 10829580-isUidForeground\n\nReason for revert: In CameraService.cpp, before this change, around \"am.isUidActive\", there was up to 300 ms retry. After this change, the code could move forward fast without retry, but at \"mAppOpsManager-\u003estartOpNoThrow\" call, for the same reason as uid is not updated fast enough, \"mAppOpsManager-\u003estartOpNoThrow\" could also fail.\n\nThis CL does not really fix the root cause, but it changes the timing and now the code fails at \"mAppOpsManager-\u003estartOpNoThrow\" call.\n\nAlso the timing change may also cause recent multiple CTS test failures.\n\n\nBug: 154570809, 155032617, 154849083\n\nReverted Changes:\nIffed63293:Add isUidActiveOrForeground() for camera/audio to ...\nI3685e0c8d:Add isUidActiveOrForeground() for camera/audio to ...\nI51ed1fe78:Add isUidActiveOrForeground for camera/audio to us...\n\nChange-Id: I8acde2524201b6c6d0d5c0ff9cfb2053ffbcb8ef\n"
    },
    {
      "commit": "6ffc516235c5bdda22b06afc7f840ce2a60dc79e",
      "tree": "5929e758151a2343edc6f867873d7023ee7c88e4",
      "parents": [
        "2fc997ef3107415ba111cbe64d4355059830d85f",
        "12b716ce09943cc7b427f192d986e6830822c166"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon May 04 16:30:09 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 04 16:30:09 2020 +0000"
      },
      "message": "Merge \"Enforce basic thread safety in Audio Policy Service\" into rvc-dev"
    },
    {
      "commit": "12b716ce09943cc7b427f192d986e6830822c166",
      "tree": "9c3d2d8e77a1db06766593f620e37b9e3686d48d",
      "parents": [
        "929c3645336dd0e01d3f61ffaedc95fe417ab1bb"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Apr 30 22:37:43 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri May 01 23:29:38 2020 +0000"
      },
      "message": "Enforce basic thread safety in Audio Policy Service\n\nEnable clang thread safety analysis. Convert comments on TS\ninto directives. Fix missing lock acquisitions. Add missing\ndefault initializers for the fields of UidPolicy and\nSensorPrivacyPolicy\n\nAlso remove unused fields mpAudioPolicyDev and mpAudioPolicy\nfrom AudioPolicyService.\n\nTODO: Consider protecting pointers to command threads,\nAPM instance and the client, and system usages with a separate\nlock.\n\nBug: 70398235\nBug: 155336464\nTest: make, flash, and test audio on device\n      execute \"adb shell cmd media.audio_policy\" commands\nChange-Id: I47b132c8b5c977812fad5c89fa57882a37779c18\nMerged-In: I47b132c8b5c977812fad5c89fa57882a37779c18\n"
    },
    {
      "commit": "197d50a057100d12997099b8dc73e988e7fcea21",
      "tree": "07682097b9b7f1319b90223a4a8ca23f9d6aea5c",
      "parents": [
        "da6850898bbd65edc388cc4f1d536f5d3a6ecc86"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Apr 30 22:37:43 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri May 01 16:27:08 2020 -0700"
      },
      "message": "Enforce basic thread safety in Audio Policy Service\n\nEnable clang thread safety analysis. Convert comments on TS\ninto directives. Fix missing lock acquisitions. Add missing\ndefault initializers for the fields of UidPolicy and\nSensorPrivacyPolicy\n\nAlso remove unused fields mpAudioPolicyDev and mpAudioPolicy\nfrom AudioPolicyService.\n\nTODO: Consider protecting pointers to command threads,\nAPM instance and the client, and system usages with a separate\nlock.\n\nBug: 70398235\nBug: 155336464\nTest: make, flash, and test audio on device\n      execute \"adb shell cmd media.audio_policy\" commands\nChange-Id: I47b132c8b5c977812fad5c89fa57882a37779c18\n"
    },
    {
      "commit": "6a9361e43b95d7459da48a1ea063af2fe0df2f6f",
      "tree": "df92db30a8c335f02d9fb8902a737c807ca53954",
      "parents": [
        "22940f18712d52711b443521863fc85082ef5624",
        "94554b659246f0ead851a7cac687f6535bc6d85a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 01 03:23:33 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri May 01 03:23:33 2020 +0000"
      },
      "message": "Merge \"audio policy: add ECHO_REFERENCE to virtual audio sources\" into rvc-dev am: 74dc21be33 am: cd80999e21 am: 472933acf2 am: 94554b6592\n\nChange-Id: I2b265c96306b2c5b4ab78894ae84012e93ccfa10\n"
    },
    {
      "commit": "68eb212b74e31e43ffa112586cd056a6cf402bfb",
      "tree": "31cf2d726a1727955093c7a543e3a745cfcc7875",
      "parents": [
        "199012b0c66d555207d81fedb7cce16305c865f8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 17:40:57 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 17:40:57 2020 -0700"
      },
      "message": "audio policy: add ECHO_REFERENCE to virtual audio sources\n\nWhen ECHO_REFERENCE audio source was added, it was omitted\nfrom the list of virtual audio sources (sources protected by privileged\npermission not accessing the mic). This prevents from capturing echo\nreference at the same time as the input from mic.\n\nBug: 154639757\nTest: test app on yukawa\nChange-Id: Ib12e8c817dec7c3f4d3f3f7e7403330c88cead52\n"
    },
    {
      "commit": "0530fa71b35120bc35950e7336466fec846296b2",
      "tree": "8ac37e2d53d99be32fbe6761977a5fbbe1e27ef2",
      "parents": [
        "1864510be34a1efc927f6687d470b211aa2ee099",
        "aa44687be83d4bcf0803e3952381605e893f7dbd"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Apr 03 05:57:22 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Apr 03 05:57:22 2020 +0000"
      },
      "message": "Keep the death recipient alive am: 95ec1b8ea4 am: 0c25f72779 am: d3a6e6fc5e am: aa44687be8\n\nChange-Id: I9f91daff364733732f117b54134ebf861b139cae\n"
    },
    {
      "commit": "95ec1b8ea487abbf4ef50d53c227338f559e9599",
      "tree": "59fbb841d724d8012ae7b46e9b9c58c77760dbb5",
      "parents": [
        "944e25516ee01715c74e4e65a2d69ef5b7398d06"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Apr 02 18:08:36 2020 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Apr 02 19:34:08 2020 -0700"
      },
      "message": "Keep the death recipient alive\n\nBinder doesn\u0027t hold on to the death recipient.\nThis caused audio server to miss notifications about system server\ndeath.\n\nFixes: 153080001\nTest: Manual verification of killing the system process.\nChange-Id: Iad1b2d4c5348d3d9917efc6838e86b736fa33094\n"
    },
    {
      "commit": "85093d5efc28216f8e091f5163092b2a800f8773",
      "tree": "eaab1d0d25dd312af33eee8d6b062e2c19437efe",
      "parents": [
        "987d12c425ba681fb93af150ccb537eac8c683fa"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Mar 26 09:41:15 2020 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Wed Apr 01 09:59:50 2020 -0700"
      },
      "message": "Invert how sound trigger capture is notified\n\nPreviously, audio policy client would call an method on the sound\ntrigger middleware service. This has been replaced by the sound\ntrigger service registering a callback, in order to avoid a cyclic\ndependency between the services.\n\nBug: 146157104\nMerged-In: I876461a7650d337d6dd05fbe80efaf08f8ef20dd\nChange-Id: Ia8f674d7dd50f6dcdd6595bcbadec2f25fdb3561\n"
    },
    {
      "commit": "987d12c425ba681fb93af150ccb537eac8c683fa",
      "tree": "c4eb387678f39425bd49a219cce9981c8ea46720",
      "parents": [
        "f698ff2d177d62a714d452ce63430606738a4190"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Mar 24 17:35:44 2020 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Wed Apr 01 09:59:43 2020 -0700"
      },
      "message": "Introduce CaptureStateNotifier\n\nThis is a helper class for notifying a client of capture\nstate changes.\n\nBug: 146157104\nTest: Compiles (further testing as part of the topic).\nMerged-In: Ie27bc404805d319a6969290a6369d59fb68c1f38\nChange-Id: I2902468c4692ba68e4bc9be0e5038d5505da7154\n"
    },
    {
      "commit": "1ef846b2d6850621f77f74ad024fb11fdc8bbee4",
      "tree": "42fba4ae8410848725cdcc456514a817ab161cd4",
      "parents": [
        "e3b67fb179dc36582f27ca442d00c553ec4c2556"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Mar 26 09:41:15 2020 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Mar 31 15:15:46 2020 -0700"
      },
      "message": "Invert how sound trigger capture is notified\n\nPreviously, audio policy client would call an method on the sound\ntrigger middleware service. This has been replaced by the sound\ntrigger service registering a callback, in order to avoid a cyclic\ndependency between the services.\n\nBug: 146157104\nChange-Id: I876461a7650d337d6dd05fbe80efaf08f8ef20dd\nMerged-In: I876461a7650d337d6dd05fbe80efaf08f8ef20dd\n"
    },
    {
      "commit": "e3b67fb179dc36582f27ca442d00c553ec4c2556",
      "tree": "178f4f55051eef164bc96b5ae7535239930cac78",
      "parents": [
        "6084f64b13c6e9b974896a3961728b46e0a6dfbf"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Mar 24 17:35:44 2020 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Mar 31 15:00:54 2020 -0700"
      },
      "message": "Introduce CaptureStateNotifier\n\nThis is a helper class for notifying a client of capture\nstate changes.\n\nBug: 146157104\nTest: Compiles (further testing as part of the topic).\nChange-Id: Ie27bc404805d319a6969290a6369d59fb68c1f38\nMerged-In: Ie27bc404805d319a6969290a6369d59fb68c1f38\n"
    },
    {
      "commit": "6c63ced46d7919aa4dc9facd08c2bae6cd66e6ca",
      "tree": "3656deb91913d550e8e25bbf00ee8fbe6488a674",
      "parents": [
        "9b42926cbac917f80be0e626d1fd50cd8e8e8d47",
        "23597d8d6a91ab12c53efb5adb50f2f572d2ff4e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 31 06:01:42 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Mar 31 06:01:42 2020 +0000"
      },
      "message": "Merge \"Allow DEFAULT_INPUT_METHOD to capture audio during RTT call\" into rvc-dev am: e2074d7b4f am: e1aaf52bbd am: ca072af1e3 am: 23597d8d6a\n\nChange-Id: I532268ededa872440de47c8ac74a0879a61ced53\n"
    },
    {
      "commit": "a623a1350d58a0648d6f57829887b04c04ba6782",
      "tree": "bac00f33a30c4f426120836cee511de1bef9d881",
      "parents": [
        "0bf91a9596eba0c4ea2217506370f0f21655e740"
      ],
      "author": {
        "name": "Kohsuke Yatoh",
        "email": "kyatoh@google.com",
        "time": "Tue Mar 24 20:10:26 2020 -0700"
      },
      "committer": {
        "name": "Kohsuke Yatoh",
        "email": "kyatoh@google.com",
        "time": "Mon Mar 30 21:44:46 2020 +0000"
      },
      "message": "Allow DEFAULT_INPUT_METHOD to capture audio during RTT call\n\nThe UID of the current InputMethodService (DEFAULT_INPUT_METHOD) is\npushed from AudioService to AudioPolicyService via AudioSystem.\nAllow capture audio if:\n- the UID is the current InputMethodService\u0027s UID,\n- AND a RTT call is active,\n- AND the source is AUDIO_SOURCE_VOICE_RECOGNITION.\n\nBug: 147037345\nTest: use voice input with Gboard 9.1.4 during a simulated RTT call.\nChange-Id: Ib32ec25e962833eddd0320742e177e3c1e0e5c05\n"
    },
    {
      "commit": "dbad2e30cc7e45f2e8eb7131aac4c225acaaf1e9",
      "tree": "57286f507311fcde3e3ad6fd82eb1f01c6efd786",
      "parents": [
        "2977fa7730a89d1673946ee39c3ecc65e95368b6",
        "dcd133194e05e73a5818059cb78208304e2ea04f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 26 04:18:27 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Mar 26 04:18:27 2020 +0000"
      },
      "message": "Merge \"APM: Notify the client about new audio ports\" into rvc-dev am: 7bb5d6abf9 am: 5ba2d37681 am: 7d95f4cd67 am: dcd133194e\n\nChange-Id: If9492d2478eb4f2ae34ad3bab63617ca9baf8c8b\n"
    },
    {
      "commit": "7bb5d6abf90125a7eacdd98f1201a694258f9bea",
      "tree": "0cb0bc1d4e01ce78aa4671f7a856f755ecb55bc4",
      "parents": [
        "e3ccb65e2d1f2d99537de0cbf4ce24271a6f7fd1",
        "d0e2c74984f7542cc154a899190bda100ef38671"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 26 03:15:34 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 26 03:15:34 2020 +0000"
      },
      "message": "Merge \"APM: Notify the client about new audio ports\" into rvc-dev"
    },
    {
      "commit": "df9b330f3f0d64962832ec445bbecbd4849d238b",
      "tree": "8ffaec75c099308019654581cc831d3806040d43",
      "parents": [
        "18f0495e723bc7edb8ef0c1abe96876a2f57152c",
        "7c1d7fd0420f189cecef5c605e349a4c90f88d87"
      ],
      "author": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Thu Mar 26 01:21:51 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Mar 26 01:21:51 2020 +0000"
      },
      "message": "Merge \"Add isUidActiveOrForeground() for camera/audio to use.\" into rvc-dev am: 5a280ea723 am: fa925f944b am: 8f7a45a9b2 am: e6fce4ef69 am: 7c1d7fd042\n\nChange-Id: I0ab2cab6980640d9f667816da1f91c698319c552\n"
    },
    {
      "commit": "d0e2c74984f7542cc154a899190bda100ef38671",
      "tree": "ee96ed7f289021026ab9bf29b252cad3240c0c3d",
      "parents": [
        "3006a83565b6863f247bf634faa929b84608026e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Mar 25 15:59:59 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Mar 25 17:04:49 2020 -0700"
      },
      "message": "APM: Notify the client about new audio ports\n\nAdded missing notification to the APM client\nabout new audio ports. This should make the\nports provided by the newly discovered HAL\nto be available to apps.\n\nProcess the onNewAudioModulesAvailable notification\non the \"APM Output\" command thread to avoid clashing\nwith outgoing commands from APM during module\ninitialization.\n\nBug: 149854039\nTest: atest audiopolicy_tests\nChange-Id: I3fede7f5a04419b15e15476d8b5ac7dc6d63c98d\n"
    },
    {
      "commit": "5a280ea72324ff62472c619c39dd955bd3bcd7d3",
      "tree": "de45b40602dc5fdbe03c245bda68f5aef4737f53",
      "parents": [
        "322300408f13880ff9f1d758a645869e7d19b60e",
        "ffffffc42242cf06c433e4e4958d7991a7e2848c"
      ],
      "author": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Wed Mar 25 23:47:51 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 25 23:47:51 2020 +0000"
      },
      "message": "Merge \"Add isUidActiveOrForeground() for camera/audio to use.\" into rvc-dev"
    },
    {
      "commit": "ffffffc42242cf06c433e4e4958d7991a7e2848c",
      "tree": "d2ef2ad6334135cd2fde6ae172e163623739da0c",
      "parents": [
        "1939a00071ce5dc757566c7af24a1f5589ea22f7"
      ],
      "author": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Tue Mar 24 16:13:59 2020 -0700"
      },
      "committer": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Tue Mar 24 18:22:49 2020 -0700"
      },
      "message": "Add isUidActiveOrForeground() for camera/audio to use.\n\nWhen start/resume activity, WindowManagerService start/resume the\nactivity, then post a runnable to DiaplayThread and\nActivityManagerService to update UidRecord\u0027s\nproc state, because the thread switch, the latency before proc\nstate update is undetermined.\n\nWhen CameraService calls ActivityManagerService.isUidActive(), the proc\nstate may not have been updated and camera access is denied.\n\nisUidActiveOrForeground() will check isUidActive() first, if false,\ncheck isUidForeground() which is actually to check with WindowManagerService if\nthe uid is foreground, which is equivalent to ActivityManagerService\u0027s uid\nactive, just updated earlier.\n\nBug: 151185692, 151777097, 109950150\nTest: manual test.\nChange-Id: I3685e0c8d2e69ca7ff3c4de4bef4ec754c400015\n"
    },
    {
      "commit": "fff2ea98e95dc376ee638161a84654a43cbac15c",
      "tree": "bf99140de522520d439e2ebb52334b6822969956",
      "parents": [
        "dd1a25309802d4e8c181ba6268144aa864845f61",
        "8ad7bb9a89016a307ccb82841261e9bbdb5c874d"
      ],
      "author": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Tue Mar 24 17:31:05 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Mar 24 17:31:05 2020 +0000"
      },
      "message": "Merge \"Revert \"Allow call audio access for default dialer application\"\" into rvc-dev am: bb044fc8c8 am: a3accf7375 am: 44272be68e am: 8ad7bb9a89\n\nChange-Id: Ia851ff25fa609c161a4d029bd7069d701a6523a3\n"
    },
    {
      "commit": "57a3769fb12dc8b2df457e0919850bd976716706",
      "tree": "f170ceb064b6be5d9443af5f2f95ac55c612c270",
      "parents": [
        "3006a83565b6863f247bf634faa929b84608026e"
      ],
      "author": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Mon Mar 23 17:27:25 2020 -0700"
      },
      "committer": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Tue Mar 24 16:20:36 2020 +0000"
      },
      "message": "Revert \"Allow call audio access for default dialer application\"\n\nThis reverts commit ac26cf749f457e12a3d8d7456bbcd58a3e028d69.\n\nReason for revert: Feature has been postponed\nBug: 151761909\n\nChange-Id: I90a977a23c5b97ddf95976cf2c4d517165f8e8c2\n"
    },
    {
      "commit": "6b9a639aa86cbccb488c4b27d34ece12e89af459",
      "tree": "f27cebd602d834609f90c6c14d2507ce0df011d1",
      "parents": [
        "1aa6feb6dd236c8ed6566570700d7a7d37270238",
        "5605cb2d6952da14f32c2bb234913bd337e917fd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Mar 23 16:58:56 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 23 16:58:56 2020 +0000"
      },
      "message": "Merge \"Convert libaudiopolicyservice from Android.mk to Android.bp\""
    },
    {
      "commit": "5605cb2d6952da14f32c2bb234913bd337e917fd",
      "tree": "6e4ace9bc1ba0f82c975b86aea989d004a244ac7",
      "parents": [
        "796e3afcea6c1e421a808eb543e5bb97106387d9"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 13 17:19:59 2020 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 20 15:34:37 2020 -0700"
      },
      "message": "Convert libaudiopolicyservice from Android.mk to Android.bp\n\nTest: builds OK\nChange-Id: I65da44493079443f1016288842d6d77e6190a7ce\n"
    },
    {
      "commit": "3a023cbbdae66dc1d55a97ae430613308e4aa8af",
      "tree": "774e16b6fb67ae4f0efb2d930e0629c844fb4efd",
      "parents": [
        "060807e3fb8a0817630024f367a61b3de87ec781",
        "88b30d2c1520112670472ae879b20cc33a1b6eb0"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Mar 10 21:02:17 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Mar 10 21:02:17 2020 +0000"
      },
      "message": "Plumb the notification about audio HAL services update to APM am: 88b30d2c15\n\nChange-Id: If3509fd115b0734e6699eb170e28105a76bd9aa3\n"
    },
    {
      "commit": "7dfc94a0eac6070791f663b9fdb7121b740271e3",
      "tree": "dd5ed47203fc640ffcb81313ed992148c78bc775",
      "parents": [
        "1cd41d5ce183e92a84ba79da0016cb3eef545822",
        "88b30d2c1520112670472ae879b20cc33a1b6eb0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 10 19:07:24 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 10 19:07:24 2020 +0000"
      },
      "message": "Merge changes from topic \"fix-b-149854039-dynamic-hal-modules\" into rvc-dev\n\n* changes:\n  Plumb the notification about audio HAL services update to APM\n  libaudiohal: Allow late registration of HIDL HAL services\n  Allow for late audio module discovery in APM\n"
    },
    {
      "commit": "88b30d2c1520112670472ae879b20cc33a1b6eb0",
      "tree": "a3afdce3d25d97385bd4a29d8223cffe0fc2203a",
      "parents": [
        "88de22ff76578985801dd7662acb07a5641298c1"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Mar 09 19:43:13 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 10 16:17:26 2020 +0000"
      },
      "message": "Plumb the notification about audio HAL services update to APM\n\nAudioFlinger registers a callback with libaudiohal to receive\nnotifications when new HAL services get registered. It relays\nthe notification to AudioPolicyManager via AudioSystem /\nIAudioPolicyService interface.\n\nBecause AF / APM only interact via Binder interfaces and APM\u0027s\ninterface gets registered later than AF\u0027s, the notification\nfrom AF is made asynchronous.\n\nBug: 149854039\nTest: audio test on a regular phone configuration\n      audio test on a phone with MSD audio HAL module\nChange-Id: I158e941b8f75e2a4614b9d84ca798b0f1f47aa6a\n"
    },
    {
      "commit": "c21d5699004beed1b406178beff2da7e7fd5aaa7",
      "tree": "63b986cc55aa64279d22cc6b4f91f667c5dd36ce",
      "parents": [
        "b31dab4d2d261f42dffb064a89402e3e941c6928"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 25 10:24:36 2020 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 05 14:51:08 2020 -0800"
      },
      "message": "audio policy: more concurrent capture fixes\n\nFix two concurrent capture scenarii when VoIP call is active:\n1) when the audio mode is IN_COMMUNICATION, only allow capture\nfrom the app owning the audio mode.\n2) fix capture by a privileged app when a privacy sensitive capture is\nactive: capture was silecend if the privacy sensitive capture was\nstarted after the privileged capture.\n\nBug: 148368476\nTest: Manual test of various VoIP apps and phone calls scenarii\nTest: cts AudioRecordTest\nChange-Id: I166f91c43ce86bb23c2f171700ece634091caaad\n"
    },
    {
      "commit": "ac26cf749f457e12a3d8d7456bbcd58a3e028d69",
      "tree": "0d3ba6751d1bee73ac1d6bf5c50771a2bfede68f",
      "parents": [
        "0f97ee5a52d697e31e9c6dc3c9e7aa941168b571"
      ],
      "author": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Mon Jan 06 14:43:38 2020 -0800"
      },
      "committer": {
        "name": "Ricardo Correa",
        "email": "rgcorrea@google.com",
        "time": "Tue Feb 18 22:54:20 2020 +0000"
      },
      "message": "Allow call audio access for default dialer application\n\nThe access to call audio (record and play) will be granted only to the app associated with Dialer role, who also includes a new system permission.\n\nTest: Compilation and manual tests\nBug: 135197853\n\nChange-Id: I65ca823c235d4d3420630837427103783ad1d1b0\n"
    },
    {
      "commit": "9b6ff73fd6dc5a73cfc9e337d466037250754a63",
      "tree": "cc89b869f3e83f83b3dbb25d6943275c3dd830a4",
      "parents": [
        "abbf20142385d5439f70be768e217b8e20e6c491",
        "00dba06ec1d940e935ca1faaf29e1d8f511f4883"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 14 18:40:55 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 14 18:40:55 2020 +0000"
      },
      "message": "Merge \"AudioSystem: add owner UID to setPhoneState API.\""
    },
    {
      "commit": "287d330c85bc67d0b985eb8c927945ffd541d4e2",
      "tree": "8b4ab663c0a998028d874c4917743c28ee10a79a",
      "parents": [
        "93fb84c8d59eb3db95dd90bc34573b7c6c5b5b67"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Wed Feb 05 14:55:38 2020 +0200"
      },
      "committer": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Wed Feb 12 16:20:16 2020 +0200"
      },
      "message": "Fix voice communication audio playback capture\n\nThis change fixes the CTS failure in AudioPlaybackCaptureTest caused\nby ag/10111312 and ag/10111311.\nIt contains the following fixes/changes:\n  - Mix match for playback capture of USAGE_VOICE_COMMUNICATION now\n    also respects a new flag (AudioMix\u0027s mVoiceCommunicationCaptureAllowed)\n    which is set by AudioService only if the caller explicitly asked\n    to capture USAGE_VOICE_COMMUNICATION and have the\n    CAPTURE_VOICE_COMMUNICATION_OUTPUT.\n  - A permission check on the native side in case\n    mVoiceCommunicationCaptureAllowed is set.\n  - Code cleanup, mainly in AudioPolicy.h and AudioPolicy.cpp.\n\nThis change is accompanied by ag/10242955 on the Java side.\n\nBug: 148559127\nTest: manual\nTest: atest PlaybackCaptureTest (with the version prior to ag/10220852)\nTest: atest com.google.android.gts.audio.AudioHostTest\nChange-Id: I8ae6249f4da1de35e962c838d91f690eb906570e\n"
    },
    {
      "commit": "00dba06ec1d940e935ca1faaf29e1d8f511f4883",
      "tree": "5b7d34546aa89ea68dce0795387792a1e084d910",
      "parents": [
        "b5ed8797b084e9888a22d1533051d3599c483b2e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 11 15:52:09 2020 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 11 15:52:09 2020 -0800"
      },
      "message": "AudioSystem: add owner UID to setPhoneState API.\n\nCommunicate current audio mode owner UID to native service\nwhen changing audio mode via setPhoneState.\n\nThis will be used by call audio capture restriction rules.\n\nBug: 148368476\nTest: manual phone call tests\nChange-Id: Icf6f168bb431b5232f6127877c40789c0c537bde\n"
    },
    {
      "commit": "de8e67bc32a4c1494ed59a36c222b6ec7ad594c6",
      "tree": "c51143f7d4d0ac8aab2bee7af653698d69e1e87e",
      "parents": [
        "b6a1bc586c2f3864fe30d7fbded32ee357eca9fc",
        "140a34fbfe829542c2c3651656d5c595201b3b4a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 03 18:17:42 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 03 18:17:42 2020 +0000"
      },
      "message": "Merge \"Check if calling uid is system uid for setAllowedPolicyCapture.\""
    },
    {
      "commit": "90c5793536026f6f6f0299640321e18870aed761",
      "tree": "cad510a72b42070805b3a27d0336059c267cbabc",
      "parents": [
        "10ef43ff1c024fa9c61d42cc5dca00b6c66de112",
        "e8e0e7a52b4ead4a4eb4e3616e4810994f37966d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 24 02:32:53 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 24 02:32:53 2020 +0000"
      },
      "message": "Merge changes I249d9ef1,I2c75b4bf,I0da109d6,I82738d11\n\n* changes:\n  [AudioPolicyService] Add creation of DeviceEffects\n  [audioeffect] add support of device effect in config parser\n  audioeffect: add missing sources to deserializer config file\n  audiopolicy: apm: factorize internal patch creation/release\n"
    },
    {
      "commit": "e8e0e7a52b4ead4a4eb4e3616e4810994f37966d",
      "tree": "fd44e42a293538f44d5435c20978ccebbf9ffcfb",
      "parents": [
        "1204baa633678d1f522747dcf2d01e2361b419f4"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Jan 07 15:16:14 2020 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 23 15:40:19 2020 -0800"
      },
      "message": "[AudioPolicyService] Add creation of DeviceEffects\n\nTodo: use new AudioEffect systemAPI\n\nBug: 136294538\nTest: build\n\nChange-Id: I249d9ef112a8a8c7947a099e5937bf0a8b05014c\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "d8a987392d7f5fc8969a62cf34467c39e01f1d91",
      "tree": "b20bf2edf5ab8730fa7854a26f211b12ecb99c2f",
      "parents": [
        "98cbb9d8ba5427fb8095f17050f66d19d532da6f",
        "90e776378afb43385d8759fa1169acab92f8ed94"
      ],
      "author": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Thu Jan 23 13:32:23 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 23 13:32:23 2020 +0000"
      },
      "message": "Merge \"Added audio policy api to do route based on user.\""
    },
    {
      "commit": "90e776378afb43385d8759fa1169acab92f8ed94",
      "tree": "0225cee9d8bcb3c57bd8a49084902c7cade42479",
      "parents": [
        "c55cdbafff6450155d4282a30ef025d6cecf5b3e"
      ],
      "author": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Wed Nov 27 17:12:28 2019 -0800"
      },
      "committer": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Thu Jan 23 00:33:17 2020 +0000"
      },
      "message": "Added audio policy api to do route based on user.\n\nAdded new API to audio policy to route audio output streams based on\nAndroid user id. The routing remains similar to uid rules, with only\nusing USERID_EXCLUDE_USERID to decide on the user id base routing.\nApplication uid and stream usage routing remain the same with the added\ndifference that user id will be taken in to consideration if available.\nBug: 139365417\nTest: atest\ncom.google.android.gts.audio.AudioHostTest#testUserIdDeviceAffinity\nTest: atest AudioPlaybackCaptureTest\nChange-Id: Ib817eb8ae19ed7dea8451e8a8584a20b9b6f5042\n"
    },
    {
      "commit": "dbf0a2ee3492723913e898b6aa23e314056c8b86",
      "tree": "67d67ec62f95862b44aef7bc885a9840681671d1",
      "parents": [
        "0bc6f60e1f036380bd48d022631e6561b90f210c"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Thu Jan 16 23:09:25 2020 +0200"
      },
      "committer": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Wed Jan 22 21:47:01 2020 +0000"
      },
      "message": "Add support for USAGE_VOICE_COMMUNICATION playback capture\n\nAllow audio playback capture for the USAGE_VOICE_COMMUNICATION usage\nonly for priveliged apps that are granted with  the CAPTURE_VOICE_COMMUNICATION_OUTPUT\npermission.\n\nTest: atest android.media.cts.AudioPlaybackCaptureTest\nTest: Manually\nBug: 124653474\nChange-Id: Ib568ca590ea534837c396536f5e31cf60a5caf52\n"
    },
    {
      "commit": "140a34fbfe829542c2c3651656d5c595201b3b4a",
      "tree": "b4496dd05e26b9d4b51dd48fb1a37f76ae9e71e9",
      "parents": [
        "31f98910412ed7e023ffb240c49de63f958fd226"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Dec 23 11:17:25 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 17 10:35:53 2020 -0800"
      },
      "message": "Check if calling uid is system uid for setAllowedPolicyCapture.\n\nAudioSystem.setAllowedPolicyCapture is only called from audio service.\nIn that case, checking if the calling uid is system uid to before taking\naction.\n\nBug: 145115448\nTest: dumpsys audio, query active playback configuration\nChange-Id: I614ac881ecde6bad13f22f1382de701f314a7ada\n"
    },
    {
      "commit": "3e8bbb91f15d1d14a2339bbec8a39c5f1a66a6af",
      "tree": "8ca1499304992e9ffdbc41787073629bac71e824",
      "parents": [
        "524159db6d53cecc93de4133e0875be937437883"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Fri Jan 10 13:37:05 2020 -0800"
      },
      "committer": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Thu Jan 16 15:59:25 2020 -0800"
      },
      "message": "Adding system usages to AAudio\n\nBug: 141006627\nTest: atest CtsNativeMediaAAudioTestCases:AAudioTests\nChange-Id: I64247a3f64f4f7cc32f6c85c2ff790f96831f707\n"
    },
    {
      "commit": "524159db6d53cecc93de4133e0875be937437883",
      "tree": "37358040ec4d8deacf9486f9312a61ba3e3ebefc",
      "parents": [
        "ff1725382653dfa2db8536edc38a6b1f2c166f2a"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Mon Dec 23 14:41:47 2019 -0800"
      },
      "committer": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Thu Jan 16 15:59:19 2020 -0800"
      },
      "message": "Adding support for new System Usages\n\nAdding system usages to native layer functions including 4 new usages\nand setSupportedSystemUsage API\n\nBug: 141006627\nTest: Built, ran, and verified types showed up in dumpsys\nChange-Id: I282c6b40ed9256ced5efb59b42da95a8fb0a6398\n"
    },
    {
      "commit": "2623d365228384ccab82169f65f2c5971cfedf60",
      "tree": "ae5698609bd6d7231958ac53ba16feaff2a2f2b3",
      "parents": [
        "f0a91423d480c4634e647c4e4a1fe760580f7ff2",
        "f41599b115c9b3fc13a5fe00186067885a31c3ba"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 11 03:10:52 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 11 03:10:52 2020 +0000"
      },
      "message": "Merge \"APM: support querying of audio playback routing\""
    },
    {
      "commit": "f41599b115c9b3fc13a5fe00186067885a31c3ba",
      "tree": "b35290ea7ef244758abf9ead2cdce78b1614c4ec",
      "parents": [
        "684e4758669bacea71379735d49bdc74807772f3"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jan 07 14:22:08 2020 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jan 10 12:35:43 2020 -0800"
      },
      "message": "APM: support querying of audio playback routing\n\n  Add support for querying the audio devices used for playback\nrouting for the given audio attributes.\n  Take into account registered dynamic policies but disregard\nsecondary output descriptors as they are used for playback\ncapture.\n\nBug: 144440677\nTest: atest AudioServiceHostTest\nChange-Id: I102c57b432b044dc6b0ead49e0a30d8e9094411d\n"
    },
    {
      "commit": "4de0b451e831a195573082b749554546023c2f75",
      "tree": "5f35f4b67accc9c2dc63a51c39856053cfde6705",
      "parents": [
        "9ce5404e8ee6cf247a9004500cb91bf3b8114b14"
      ],
      "author": {
        "name": "Hiroaki Hayashi",
        "email": "hiroaki.hayashi@sonymobile.com",
        "time": "Thu Jul 18 19:50:47 2019 +0900"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 07 10:38:16 2020 -0800"
      },
      "message": "Treat AUDIO_SOURCE_DEFAULT as AUDIO_SOURCE_MIC\n\nAUDIO_SOURCE_DEFAULT is translated to AUDIO_SOURCE_MIC in\nAudioPolicyManager. That means AUDIO_SOURCE_DEFAULT should behave\nas same as AUDIO_SOURCE_MIC.\n\nIn this commit, argument for addInputEffects() is translated for\navoid different behavior between AUDIO_SOURCE_DEFAULT and\nAUDIO_SOURCE_MIC.\nThis means same preprocessing effects are applied for both Sources.\n\nBug: 137898521\nTest: Add pre-processing effect for AUDIO_SOURCE_MIC then check if\nit works for AUDIO_SOURCE_DEFAULT as well\n\nChange-Id: I3df1bcc7309dc535a721113cc4465b20733b4058\n"
    },
    {
      "commit": "60f0f304bcd573581e7c6bf1cbd05cad36f97c67",
      "tree": "f5e0ef3960517dfd5922ebba2150886fc33d93ee",
      "parents": [
        "80df98d695e715e2434a7649667bf3eaf6ab9c37",
        "47ea671e71c000a3103ecc15dbc25cac007dd51e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 20 00:08:22 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 20 00:08:22 2019 +0000"
      },
      "message": "Merge \"Add audio stream and usage for virtual assistant\""
    },
    {
      "commit": "94e872e6894dce7d89954d0515c140ec626d20ba",
      "tree": "3b8a0acc0c514e139b767f255e77a23fbf7d55c2",
      "parents": [
        "990cc725040484dfd233280eedeb7de2da4f72e4",
        "f27e987d277c186010e8bdd1d5e781158b31f9af"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Dec 17 22:52:33 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 17 22:52:33 2019 +0000"
      },
      "message": "Merge \"Naming consistency: MediaAnalytics to MediaMetrics\""
    },
    {
      "commit": "f27e987d277c186010e8bdd1d5e781158b31f9af",
      "tree": "87703f33fe40f06c2faa78daa4105bb6cb8db79d",
      "parents": [
        "b7b870db0c6cc0c6375b154400a813b84f5056b4"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Sat Dec 07 06:28:46 2019 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Tue Dec 17 11:20:57 2019 -0800"
      },
      "message": "Naming consistency: MediaAnalytics to MediaMetrics\n\nBug: 145780674\nTest: build, boot, dumpsys media.metrics\nTest: atest mediametrics_tests CtsNativeMediaMetricsTestCases\nChange-Id: Icbfa98da9e61702aee9a1d807b5e126b4b9c6458\n"
    },
    {
      "commit": "47ea671e71c000a3103ecc15dbc25cac007dd51e",
      "tree": "f4bd5460779df1e785244ba663be58b8bce3d379",
      "parents": [
        "231698afc6bec6524029a558e20d8386be0cc0a9"
      ],
      "author": {
        "name": "Baekgyeong Kim",
        "email": "baek.kim@samsung.com",
        "time": "Wed Oct 30 20:29:41 2019 +0900"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Dec 16 10:56:05 2019 -0800"
      },
      "message": "Add audio stream and usage for virtual assistant\n\nNew stream type: AUDIO_STREAM_ASSISTANT\nThis is intended to be used by a virtual assistant like\nGoogle Assistant, Bixby, etc.\n\nThe audio stream has own volume alias and the volume\ndoes not change by volume changes of other streams.\n\nBug: 123745215\nTest: make\nChange-Id: I17ec0480cad4c3507a97454ccb832255adda9897\nSigned-off-by: Baekgyeong Kim \u003cbaek.kim@samsung.com\u003e\n"
    },
    {
      "commit": "74cd6b0f6840c9f39b51700fb84420f2a1dc1f8e",
      "tree": "78e558b5d1b2d8b4950498294ceed86680176753",
      "parents": [
        "a32e60121e1cd626f300fb894f4e1bc5715d3d41"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Oct 25 10:06:40 2019 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Dec 12 17:08:59 2019 -0800"
      },
      "message": "Migrate to new sound trigger middleware service\n\nThis change:\n- Removes the old ISoundTriggerHw service and removes its code.\n- Connects AudioPolicyManager to the new service via AIDL RPC (using\n  a new utility, BinderProxy).\n\nChange-Id: I00366e2c5f252708e903b2311816d9eceb132a05\nBug: 142070343\n"
    },
    {
      "commit": "0c56c527ca7a3f92b6d09842720995f0ca1b913e",
      "tree": "b0b58dd2c3578b8544f441ca7a2d7597c42960be",
      "parents": [
        "a473e074ffcf55fb1a8dfcdbbc0bc625970cc2ce",
        "94876034876afd6f642dd1a0ad7c60aee05504d9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 11 21:25:53 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 11 21:25:53 2019 +0000"
      },
      "message": "Merge \"AudioEffect: add device descriptor to AudioEffect constructor\""
    },
    {
      "commit": "6d9f56dd70cd0d98b3477c86d27f31b40550dfbf",
      "tree": "8afc9b6653ff3ee405b9972cd5a8360e7e03e949",
      "parents": [
        "24003dc83687516cebd38153e318c2b1b6c37729",
        "30857159e8c143aac18aa1c0db3cffd47d8e207d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Dec 10 19:49:59 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 10 19:49:59 2019 +0000"
      },
      "message": "Merge \"APM: support product strategy routing\""
    },
    {
      "commit": "30857159e8c143aac18aa1c0db3cffd47d8e207d",
      "tree": "fa694fe4ca82413e2de5cca3066643571d46a611",
      "parents": [
        "a2adc8aa6c06f0e1d06c1bb6535be15f30ba26fd"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Nov 01 11:04:15 2019 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Dec 09 12:22:47 2019 -0800"
      },
      "message": "APM: support product strategy routing\n\n  Audio policy engine supports receiving a preferred device to use\nfor a given strategy (Engine superclass). Use of the preferred\ndevice intervenes at the level of the each engine implementation,\nhere in the default engine in getDevicesForProductStrategy() method\nso it is saved in the routing cache, and respects existing routing\npriorities.\n  Refactor the loops for call and output rerouting into a new\nupdateCallAndOutputRouting() method.\n\nBug: 144440677\nTest: atest AudioServiceHostTest#testPreferredDeviceRouting\n\nChange-Id: Ic4c690e1b0d8020c4335979e40e14e6df5887879\n"
    },
    {
      "commit": "94876034876afd6f642dd1a0ad7c60aee05504d9",
      "tree": "f695fedbfa6e930d034dfdb0f61e485b5292a67c",
      "parents": [
        "b7a56c52e001d2e361140b07ee1baad4c56e5b2c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 13 12:45:28 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 09 09:46:17 2019 -0800"
      },
      "message": "AudioEffect: add device descriptor to AudioEffect constructor\n\nAdd the possibility to specify a target audio device when\ncreating an audio effect by passing its type and address to\nAudioEffect constructor.\nWhen doing so, the session ID must be AUDIO_SESSION_DEVICE.\n\nBug: 136294538\nTest: make\nChange-Id: I2a2eba340d3c2537285c091e9a53f305ff161a2b\n"
    },
    {
      "commit": "00c50ac8dca4113921822dce1511e6e153197d34",
      "tree": "7c6b8d03b3d853dfa0b0d3ea9e1abf8343f72192",
      "parents": [
        "39260a69ca1f66f29f250f30fde07fd628785708"
      ],
      "author": {
        "name": "Sasha Smundak",
        "email": "asmundak@google.com",
        "time": "Fri Dec 06 17:46:26 2019 -0800"
      },
      "committer": {
        "name": "Sasha Smundak",
        "email": "asmundak@google.com",
        "time": "Mon Dec 09 09:41:57 2019 -0800"
      },
      "message": "Do not assign LOCAL_MULTILIB to AUDIOSERVER_MULTILIB\n\nBug: 121208203\nTest: treehugger\nChange-Id: I263b6b302f7220e4b712924d2df2fd2548af03b1\n"
    },
    {
      "commit": "d17c85023ac2058233121b8a94603687c855c997",
      "tree": "39fc63d6f1037eafb71dc8046aefedfadfee9b53",
      "parents": [
        "d203cb92c9c9628b3bead45ec08f826544c1d649"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 24 15:58:35 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 04 17:58:34 2019 -0800"
      },
      "message": "Add explicit private audio recording request\n\nAdd the possibility for apps to indicate that their\ncapture use case is private and that a privileged Assistant\nshould not be able to capture concurrently.\nThis allows to override the default behavior tied to the audio\nsource (e.g VOICE_COMMUNICATION is private by default but\nUNPROCESSED is not).\n\n- Add AAudio API to set and get privacy sensitive mode on input stream\n- Add MediaRecorder API to set and get privacy sensitive mode\n- Modify AudioSource constructor to accept audio attributes instead of an\naudio source to specify the use case.\n- Modify audio policy concurrent capture logic to use audio attributes\nflag instead of audio source to decide of a capture client has\nrequested privacy mode or not.\n\nBug: 137850106\nTest: CTS AudioRecordTest and MediaRecorderTest, manual audio smoke tests\n\nChange-Id: I250ea5da4c1da809ceac0da22ae9bee15b937001\n"
    },
    {
      "commit": "8a1095a9f240b4ac69e8aa47954a3ceb1bd38e16",
      "tree": "5e498499c94c3fa171a75e8daa55f949b4ea04ce",
      "parents": [
        "484d6119d3ca9140d415dc1841d4c0c500d76a20"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 08 14:44:16 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 08 17:56:01 2019 -0800"
      },
      "message": "audio policy: fix playback permission checks\n\nAlign playback permission checks implementation in getOutputforAttr() on\ncapture checks in getInputForAttr(): use an \"output type\" returned by\naudio policy manager and check permission accordingly.\n- Do not modify but reject request to play to call uplink when permission\nis denied.\n- Add missing permission check for injection to remote submix.\n- Clarify permission check for record from remote submix by using the\nuid/pid of client explicitly.\n\nBug:\nTest: CTS test for AudioTrack and AudioREcord.\nTest: GTS tests for dynamic policies and playback capture\nChange-Id: Ic0eb3b9921a491e97c58fa8f637583059a54b3a2\n"
    },
    {
      "commit": "8340e67185e852b7de1d68eb86ca0c46b1affb98",
      "tree": "fdb9098c48aedf7e3763f6dc2c5122bf16a5bd34",
      "parents": [
        "cd606f3f18e974ad02679ff9a6ffb98e71714b05"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 06 11:01:08 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 06 11:06:34 2019 -0800"
      },
      "message": "audio policy: Add call screen audio mode.\n\nAdd new audio mode AUDIO_MODE_CALL_SCREEN allowing call screening\nto take place while other audio use cases are still active.\n\nAlso add API and audio policy configuration attribute to\nindicate if the platform supports this audio mode.\n\nBug: 140384450\nTest: make\nChange-Id: If2fc56dbbd10aae2cf1498480471b35de0940228\n"
    },
    {
      "commit": "eb7e13873fe59343412efbcd560fac2a2a2d9f71",
      "tree": "543f3b2cad2919fb1c0f298f4e53542bd1460c4f",
      "parents": [
        "86a313bc172914766df88420079de7fb0826a450",
        "13ad0eb5e16cb42690595f291306eaa437e952b6"
      ],
      "author": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Thu Oct 31 23:11:21 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 31 23:11:21 2019 +0000"
      },
      "message": "Merge \"Add new parameter capability to onUidStateChanged()\""
    },
    {
      "commit": "7480dcc47c1e96a7692a6c7301ac93c875a9e90b",
      "tree": "8e9728f448f16698cf0485f3d42857503b761ce2",
      "parents": [
        "d82222ee2ffb430e0874e7912771c8d40b57797a",
        "58a0dd832177e58a53fc428ab3e9ab86156b576d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Oct 29 15:48:55 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 29 15:48:55 2019 +0000"
      },
      "message": "Merge \"Audio policy: modify permission needed to capture from source FM_TUNER\""
    },
    {
      "commit": "4381040f77c2907c9a0ba27ece2e00241daadf0e",
      "tree": "b559f2cf74926949bd9f846c627ede38b734158f",
      "parents": [
        "c6fe9c424669d640d8bbe0fc7e130a34bab0b4bd"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Oct 24 14:58:31 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Oct 28 10:38:13 2019 -0700"
      },
      "message": "Refactor opening output interface between AF and AP.\n\nRefactor interface between audio flinger and audio policy. Use device\ndescriptor instead of audio device type and address. DeviceDescriptor\ncan contain more information that may be useful when opening an output\nstream.\nIn audio policy, if multiple audio devices are passed in when opening\nan output stream, one device is extracted using the same strategy as\nwhen selecting a device for volume application. When starting source,\naudio policy manager will call audio flinger to create audio patch. In\nthat case, multiple devices will still be patched to the output stream.\n\nTest: atest AudioTrackTest AudioPlaybackCaptureTest\nTest: atest audiopolicy_tests, audio smoke test\nChange-Id: I46dc2da621614f8716c6c73cf807fe7d2d672cda\n"
    },
    {
      "commit": "58a0dd832177e58a53fc428ab3e9ab86156b576d",
      "tree": "d4db6d477b38b251b9a1a14031791daa4cf2cebe",
      "parents": [
        "9f03917ce011e4c860306d42c3f3cc70d2061190"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 24 12:42:17 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Oct 25 09:35:47 2019 -0700"
      },
      "message": "Audio policy: modify permission needed to capture from source FM_TUNER\n\nCapturing from source AUDIO_SOURCE_FM_TUNER is possible only via @SystemApi\non one end and does not capture from an actual on the other end.\nAccordingly, do not check android.permission.RECORD_AUDIO anymore but\ncheck privileged permission android.permission.CAPTURE_AUDIO_OUTPUT instead.\nAlso bypass App Ops OP_RECORD_AUDIO check which is applicable only to capture from\nmicrophones.\n\nAlso fix audio recording permission check in MediaRecordClient to use\nrecordingAllowed() from ServiceUtilities\n\nBug: 135717621\nTest: CTS tests for AudioRecord\nChange-Id: Ibb1d72f018d2e3ceee195338f2e262183eee2a23\n"
    },
    {
      "commit": "4e947da3e6e5abb27b1bf604ae13a31bc5d564af",
      "tree": "0eeea65b3ecb5b2c94a39f67dc6fc8f32e0a8c9f",
      "parents": [
        "d373b0efa176f1639a860d688d0dcca3460acdb5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 17 15:24:06 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 17 18:00:57 2019 -0700"
      },
      "message": "audio policy: update capture policy for HOTWORD source\n\nRestore pre Q behavior for HOTWORD capture for non\nAssistant applications. This allows non Assistant privileged\napplications to capture audio with source HOTWORD and no visible\nforeground UI as long as no other app is capturing. This capture\nwill be silenced as soon as another app starts capturing and will not\nprevent other apps from capturing.\n\nBug: 140799148\nTest: manual OK Google and Now Playing tests\nTest: CTS AudioRecordTest, GTS HotwordTest\nChange-Id: I9473851e2949e42abc02fb5974be21d351810854\n"
    },
    {
      "commit": "13ad0eb5e16cb42690595f291306eaa437e952b6",
      "tree": "5d57b63721155026085927b5260aee104c9e0365",
      "parents": [
        "6d0d51507a2ee618daa4b0e35604d8a693306256"
      ],
      "author": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Mon Sep 09 10:27:07 2019 -0700"
      },
      "committer": {
        "name": "Hui Yu",
        "email": "huiyu@google.com",
        "time": "Mon Sep 09 10:27:58 2019 -0700"
      },
      "message": "Add new parameter capability to onUidStateChanged()\n\nBug: 136274596\nTest: NA.\nChange-Id: I40868ec27bd34cf91549ce9a28d1683c31558942\n"
    },
    {
      "commit": "1e00b66086511f28eb8ad44196a3556f542a1ec1",
      "tree": "787f0a7349d343247eba02a89a9d414cb1f03816",
      "parents": [
        "0fcd4f7b624b5a47d001cb323805873f953346f7",
        "be066e1a9aa613f4e7e56fbd16b35d8ad377b68f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 04 19:25:26 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 04 19:25:26 2019 +0000"
      },
      "message": "Merge \"Allow --user parameter for audio service commands.\""
    },
    {
      "commit": "be066e1a9aa613f4e7e56fbd16b35d8ad377b68f",
      "tree": "19053479cea25b9ed11f525fb30f3bb97aa1d143",
      "parents": [
        "4ba358197d49e926a0c18e64f295005debbaa911"
      ],
      "author": {
        "name": "jovanak",
        "email": "jovanak@google.com",
        "time": "Mon Sep 02 11:54:39 2019 -0700"
      },
      "committer": {
        "name": "jovanak",
        "email": "jovanak@google.com",
        "time": "Tue Sep 03 19:37:52 2019 -0700"
      },
      "message": "Allow --user parameter for audio service commands.\n\nThis allows testing on secondary users.\n\nChange similar to ag/7022195 and ag/6936694.\n\nFixes: 139301368\nTest: cts-tradefed run cts -m CtsMediaTestCases -t android.media.cts.AudioRecordTest#testRecordNoDataForIdleUids\n\nand ...\n$ adb install testcases/CtsMediaTestCases.apk\nSuccess\n$ adb shell cmd media.audio_policy set-uid-state android.media.cts active\n$ adb shell cmd media.audio_policy get-uid-state android.media.cts --user 0\nactive\n$ adb shell cmd media.audio_policy get-uid-state android.media.cts --user 10\nidle\n$ adb shell cmd media.audio_policy set-uid-state android.media.cts --user 10 active\n$ adb shell cmd media.audio_policy get-uid-state android.media.cts --user 10\nidle\n$ adb shell cmd media.audio_policy set-uid-state android.media.cts active --user 10\n$ adb shell cmd media.audio_policy get-uid-state android.media.cts --user 10\nactive\n$ adb shell cmd media.audio_policy set-uid-state android.media.cts idle --user 0\n$ adb shell cmd media.audio_policy get-uid-state android.media.cts --user 0\nidle\n$ adb shell cmd media.audio_policy reset-uid-state android.media.cts --user 10\n$ adb shell cmd media.audio_policy get-uid-state android.media.cts --user 10\nidle\n\nChange-Id: I17774efa6aca7c9b9d0af9bf9c1e75474e90d990\n"
    },
    {
      "commit": "ef61973b8c4af80ccdf2309561ae68869f50bf68",
      "tree": "6685977f06af7f288e885bb346163367786bca0e",
      "parents": [
        "4ba358197d49e926a0c18e64f295005debbaa911",
        "8ed73c1c531162664f23947af05ae7739c2feb46"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 04 01:03:36 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 04 01:03:36 2019 +0000"
      },
      "message": "Merge changes I533b7460,Ic472045c\n\n* changes:\n  audio policy: improve capture policy for clients with same UID\n  audio policy: allow silencing capture per port\n"
    },
    {
      "commit": "8ed73c1c531162664f23947af05ae7739c2feb46",
      "tree": "995bc52d89d3aeaf0623280b7fc07a18a3ffb09a",
      "parents": [
        "5ada82ee2511a31c6846c67e455ffb2c9989b623"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 30 17:25:19 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 02 16:35:32 2019 -0700"
      },
      "message": "audio policy: improve capture policy for clients with same UID\n\nModify concurrent capture logic to allow different policies\napplied to record clients sharing the same UID.\nPreviously, because the control granularity was the UID, we had to\nenforce the same decision for all clients with the same UID.\nNow that audio flinger and audio policy manager APIs to silence capture\nare per port ID, we can apply a different policy for each record instance.\n\nBug: 139370731\nTest: AudioRecordTest#testRecordNoDataForIdleUids\n\nChange-Id: I533b74602fa465fd5df7f848eca48dfd49b424c8\n"
    },
    {
      "commit": "5ada82ee2511a31c6846c67e455ffb2c9989b623",
      "tree": "38845fc352b781bb00cfe7bf56cf1cfc23c2af37",
      "parents": [
        "dba03231c2fb2c54c8a7b313786c7bc7d3471908"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 29 17:53:54 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 30 18:07:18 2019 -0700"
      },
      "message": "audio policy: allow silencing capture per port\n\nAdd the possibility to silence a particular AudioRecord\nclient rather than silencing all clients sharing the same UID.\n\nTest: AudioRecordTest#testRecordNoDataForIdleUids\n\nChange-Id: Ic472045cd45c7222ca3a88ccf131435fd1e26475\n"
    },
    {
      "commit": "47670c9e77e3ad135bfcf7c32b92f5808d357b18",
      "tree": "a22c40d40af35821422934ad806458db55102613",
      "parents": [
        "33d7ab050e3dd07ad3fa2aaab4ee4d8d309b6287"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 28 16:59:05 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 30 08:33:50 2019 -0700"
      },
      "message": "audiopolicy: fix accessibility service capture\n\nCommit 589171c8 introduced a regression when an accessibility service\nis capturing with UI on top and using an audio source different from\nVOICE_RECOGNITION or HOTWORD.\n\nBug: 140072679\nTest: repro steps in bug\nChange-Id: Ia322f801066b9ec0cc4afa8d6c5e8296e9ecb1cc\n"
    },
    {
      "commit": "2f214d956b0378ab2439b5f3e8b76529c26df35e",
      "tree": "d8d9e54d298d9f6f8e002eb8f71a07b263213699",
      "parents": [
        "fd4da0e171e440407031f71e46e03178ac4ca0ee",
        "4a4961dbf003cc4ae245f701075dfae08db8fac1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 30 14:02:14 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 30 14:02:14 2019 -0700"
      },
      "message": "Merge \"audio policy: fix capture policy for accessibility\" into qt-r1-dev am: 44302851c3\nam: 4a4961dbf0\n\nChange-Id: I42e8f64600fb812ad4109176c940f8d4404046c3\n"
    },
    {
      "commit": "589171c80afab0f515e99044aca15be9ee24d16b",
      "tree": "651759d6970794163cc7b7f91a8f6466ffb2ee71",
      "parents": [
        "1c74123afb488b39c850e3b897fc921a9396bfb1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 25 18:04:29 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 26 09:45:29 2019 -0700"
      },
      "message": "audio policy: fix capture policy for accessibility\n\nDo not consider Accessibility services when determining\nlastest active capture client. As an Accessibility service\ncapturing does not silence other captures, it should not\nprevent another client from being selected as the latest active.\n\nBug: 135806801\nTest: Start capture with Recorder app, activate Voice Access\nChange-Id: I864be785752f27201d45ce24f95013de6391dbd6\n"
    },
    {
      "commit": "e5293b84213b33133a4da4f45e798dd5c96e9ba8",
      "tree": "5bd553201b97d4583f564d13bd84e631c3187d20",
      "parents": [
        "c8d8dc9a3d65d9622834ea4cb3ee04db2c38b93b",
        "1c74123afb488b39c850e3b897fc921a9396bfb1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 22 08:22:46 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 22 08:22:46 2019 -0700"
      },
      "message": "Merge \"audio policy: fix capture policy for HOTWORD source\" into qt-r1-dev\nam: 1c74123afb\n\nChange-Id: Ib2f61802ebe2dc7899ef42ff6aefc1035478a087\n"
    },
    {
      "commit": "c6af90d5efad45b652bbd40d63324efe01da4341",
      "tree": "4616bcade90442d7e589973a853a966688477324",
      "parents": [
        "c2a3a82419327c6ffbad9711ed07415341eca00d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 19 10:31:39 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 19 10:48:09 2019 -0700"
      },
      "message": "audio policy: fix capture policy for HOTWORD source\n\nDo not consider Assistant capturing with HOTWORD source\nwhen determining lastest active capture client. As assistant\ncapturing for HOTWORD does not silence other captures, it should not\nprevent another client from being selected as the latest active.\n\nBug: 135806801\nTest: Start capture with Recorder app, place in background and trigger\nfalse OK G detection\n\nChange-Id: Ic17bfd70675ef749d6a678d067112b1dbd205746\n"
    },
    {
      "commit": "2f34814d1b8f1e62a4f22511c7cb93016d213bff",
      "tree": "f117fac9b7834dba35e32b22788d75c0c2482588",
      "parents": [
        "964a74820baeb013430730f8f852690bc5a9183c"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 02 15:59:07 2019 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Jul 08 21:36:57 2019 +0000"
      },
      "message": "Hold onto linked binder.\n\nunlinkToDeath is no longer required, (this change in behavior is to\navoid leaks) so holding onto ActivityManager here (still calling\nunlinkToDeath to avoid a log, but may for instance remove all\nunlinkToDeath calls in the future).\n\nExempt-From-Owner-Approval: approval received on AOSP CL, only\n    whitespace difference here.\n\nBug: 134576445\nTest: boot\nChange-Id: I273f77aac2b80ba9be70197cc3842f83a11bbd1c\n"
    },
    {
      "commit": "6ede98f9b3e3e1988f401d79b625ead653027ccc",
      "tree": "2306e3b551752f70ec01a6d8ed87824743c2ef81",
      "parents": [
        "e0092766d214720c1fd22b8c08ccc7ceeaf4a700"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 11 14:50:30 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 11 14:55:25 2019 -0700"
      },
      "message": "audioservice: add RTT mode observer\n\nEnable audio capture by the Assistant when RTT is ON during a call\nsimilarly to when an accessibility service is in the foreground.\n\nAlso remove log when permission checked for hotword\nand audio output capture fail as those checks are now done\nsystematically.\n\nAlso do not check permission to bypass interruption policy if\nbypass flags are not set.\n\nBug: 132976361\nTest: use voice input during a call with RTT enabled.\nChange-Id: Iff45b0816dac889262ec29ea115f74dea4dc6b6d\n"
    },
    {
      "commit": "68f7b18e8edaabf6c6c67b350d3126c11ba590ff",
      "tree": "d4e8c5fe2157ef8843fb31baa6b49744ca294254",
      "parents": [
        "d4e2ab1785d813aa336479a57de634f30fb13a92",
        "429844193f7149f3b642f1f260a7f20398eb3778"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat May 11 02:47:56 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat May 11 02:47:56 2019 +0000"
      },
      "message": "Merge \"audio policy: add permission check for privileged attributes flags\" into qt-dev"
    },
    {
      "commit": "429844193f7149f3b642f1f260a7f20398eb3778",
      "tree": "96fc240567b6c528242f4a88582b587e7ba09c48",
      "parents": [
        "459e59820f8914a10c1d015fb4fa09b723cacaca"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 09 17:57:03 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 10 15:38:12 2019 -0700"
      },
      "message": "audio policy: add permission check for privileged attributes flags\n\nAdd check for privileged permission if attributes\nflags BYPASS_INTERRUPTION_POLICY or BYPASS_MUTE are set.\n\nBug: 131873101\nTest: Manual smoke tests for audio playback.\nTest: Emergency cell broadcast in\nChange-Id: I073cf669f606f0d081ff5c8d19f39b5e12efe297\n"
    },
    {
      "commit": "2b7127f46d5987907cbb1edaf26d20f305b685fa",
      "tree": "1a8d0f0606fa1fff13811ce75d6afe05bc7c5405",
      "parents": [
        "ceb7cc1f61d7475a2eeba807dfb5272fa0f5c035",
        "6ce27e5ffa056948b506bf7320a9f9c961150684"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu May 09 23:37:35 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 09 23:37:35 2019 +0000"
      },
      "message": "Merge \"connect mediametrics service to statsd\" into qt-dev"
    },
    {
      "commit": "a171e359408050194cbc68f3fa37f2b8d8ca361c",
      "tree": "8d4f6529347d0b6d155b731340603b87002ca821",
      "parents": [
        "af0b1c1b5cd67cafa81dbcd1ccb7eb68821173f9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 07 13:04:45 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 07 13:04:45 2019 -0700"
      },
      "message": "audio policy: fix concurrent capture policy\n\nRestrict concurrent capture scenarii by not allowing 3rd party\napplications to capture concurrently\n\nBug: 131758164\nTest: manual test of main capture use cases\nTest: CTS tests for audio recording\nChange-Id: Ica17d6eea81671eeb872fe55c1e7e06ec9ad279b\n"
    },
    {
      "commit": "6ce27e5ffa056948b506bf7320a9f9c961150684",
      "tree": "d3c75842dba2db375a7b3b4413e902ecccbbb5ef",
      "parents": [
        "ef7eaaf8d873e9d832673fd0a8e07371fa47a0a0"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Fri Feb 15 10:58:05 2019 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon May 06 11:35:11 2019 -0700"
      },
      "message": "connect mediametrics service to statsd\n\ntake the collected media.metrics (as they arrive) and push a copy over\nto statsd, the statistics logging subsystem.\ngather data, wrap in protobufs apppropriately, and submit it to statsd.\n\nBug: 118782504\nTest: statsd\u0027s test_drive app\nChange-Id: Ieb82c43633851075e9eaf65d2a95c8cba87441ea\n"
    },
    {
      "commit": "66ea39290308e4851a5c6fe149e576b7d6249e5f",
      "tree": "f0fe4950c8d77207be8ce281623f9345e448e478",
      "parents": [
        "09940bbc0e7eb687c1b08c1ba0252852752f68ab",
        "2996f67767ff90617cc5f7801c7bd8dc67c9dd66"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 25 18:01:03 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 25 18:01:03 2019 +0000"
      },
      "message": "Merge \"AudioPolicy/AudioFlinger: Track AudioRecords via Record IDs\" into qt-dev"
    },
    {
      "commit": "2996f67767ff90617cc5f7801c7bd8dc67c9dd66",
      "tree": "d20af841b6537ca44a0b1bf7a839e0ba3f9c7a91",
      "parents": [
        "3208826f676b1be78e1c04692d7f17249e45c3ea"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Apr 18 12:29:59 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Apr 24 14:49:52 2019 -0700"
      },
      "message": "AudioPolicy/AudioFlinger: Track AudioRecords via Record IDs\n\nThe client must provide a unique Record ID (RIID) when creating\nan AudioRecord. This RIID is passed down to AudioInputDescriptor\nin AudioPolicyManager which sends configuration updates\nvia IAudioPolicyServiceClient callback.\n\nBy supplying RIID, the Audio Service can coalesce start / stop\nevents coming from clients (apps) with recording configuration\nupdate events.\n\nFor AAudio MMap clients everything is handled at the server\nside because they correspond directly to audioserver objects.\n\nBug: 123312504\nTest: android.media.cts.AudioRecordingConfigurationTest\n      AudioRecordTest#testAudioRecordInfoCallback\n      MediaRecorderTest#testAudioRecordInfoCallback\n      manual testing using Oboe and Solo test apps\n\nChange-Id: I3d32241752d9a747736606dc4cb1e068e6b7aa3b\n"
    },
    {
      "commit": "962ba215fbffcf27b3c69827a9221e0a82108ff0",
      "tree": "e0ef04ba1857443ef150e35e146522c84fcbb41f",
      "parents": [
        "48601f013a60c916187591e6e05dfaf76a87b698"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Apr 03 16:21:39 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 24 09:03:17 2019 -0700"
      },
      "message": "audiopolicy: fix build issue by going on switching to bp\n\nBug: 130284799\nTest: make\n\nChange-Id: I60d41eaa41564fecdeef6d4cb223a8367883db50\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\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": "bcfe5be7cd16530269aaa204d25013d2df18b9e2",
      "tree": "913858590a1da882c3454e2c27b281c872a0f6cf",
      "parents": [
        "d21b6de7181840e14300e94284db48172e24004b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 09 19:56:39 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 10 09:28:44 2019 -0700"
      },
      "message": "audio policy: fix output session effect leak\n\nClean up session effects in releaseOutput in case stopOutput\nis not received before release.\n\nBug: 124689305\nTest: start/stop cast screen while playing music\nChange-Id: Ie0588dd3336d56d34c2d717268fcd0918cbf5717\n"
    }
  ],
  "next": "68e0df70cdd57dbe32f11b5de50dd83c6492d075"
}
