)]}'
{
  "log": [
    {
      "commit": "16ddaf4af8bb617d395ea3d44d153f22d3257cfb",
      "tree": "a88916a21a41bd8cb0344d43cc32b35ef8688132",
      "parents": [
        "f690c468780ceb12554d1277256a24a66d49d149"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 17 15:00:35 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 20 15:52:50 2021 +0200"
      },
      "message": "Spatializer: forward display rotation to engine\n\nForward display rotation to spatializer engine for\nuse by transaural mode.\n\nBug: 188502620\nTest: make\nChange-Id: I15f5c06d52b414600a3370906ac5d66183d4f243\n"
    },
    {
      "commit": "bd1eee2ae0fc2445610ba4a5a3216e1ab65cd45c",
      "tree": "20eb04d440dd776877ec9af3df2a8a6df5503e75",
      "parents": [
        "2abe5191464c2d9cce8c14209ecfc71aec135b9a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 17 14:37:45 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 17 14:59:50 2021 +0200"
      },
      "message": "Spatializer: remove EffectClient nested class\n\nRemove unused nested class EffectClient. It was designed\nto help expose an IEffect interface allowing avanced configuration\nby spatializer implementor but will be replaced by the addition\nof a set/get parameter methods on ISpatializer.\n\nBug: 188502620\nTest: make\nChange-Id: Ia3b4740f1b00cb444b6e4e7e039765421ef0297b\n"
    },
    {
      "commit": "67816e34f3fc7a67ba7438e414c3d4eb9dd3f050",
      "tree": "111cef619fb877a9ce8493eba60d01b16bbeca5c",
      "parents": [
        "780be4ad4707d0b7f4c3a651e55b6d39f922416d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 16 15:18:40 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 16 20:39:52 2021 +0200"
      },
      "message": "Spatializer: Add head tracking callback\n\nSplit head tracking related events from main INativeSpatializerCallback\nto a dedicated callback ISpatializerHeadTrackingCallback that can\nbe registerred and unregistered independently.\n\nBug: 188502620\nTest: manual test with mock spatializer\nChange-Id: I09eefb0911f557a6faa6cf0b6c1afe7eaf71ca84\n"
    },
    {
      "commit": "780be4ad4707d0b7f4c3a651e55b6d39f922416d",
      "tree": "cfdc83de181563fdc9de98541cb21b58d315f146",
      "parents": [
        "8a4259fcc5af809363e74a4f67a791c0cb556574"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 16 10:44:24 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 16 18:51:16 2021 +0200"
      },
      "message": "Spatializer: head tracking optimization\n\nDo not create a head pose controller and accept head\ntracking commands if the engine does not support\nheadtracking.\n\nBug: 188502620\nTest: manual test with mock spatializer\nChange-Id: I9579729588e10d9c3b628266333674caf08022b4\n"
    },
    {
      "commit": "8a4259fcc5af809363e74a4f67a791c0cb556574",
      "tree": "339cb69da32906efa532df2e1396ff6a7209503a",
      "parents": [
        "879f0910c4afe773bce153f90793bfb91ec8224c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Sep 14 16:04:00 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 16 15:56:40 2021 +0200"
      },
      "message": "Spatializer: process callbacks in separate thread\n\nAdd a Looper and Handler to process events from the engine\nand pose controler callback to avoid cross mutex deadlocks.\n\nBug: 188502620\nTest: manual test with mock spatializer\nChange-Id: I1342602259b147727c704ad7bbeb1b3a68c7b231\nMerged-In: I1342602259b147727c704ad7bbeb1b3a68c7b231\n"
    },
    {
      "commit": "8b6fe3a498fe93b58cba283b710f851f5d10070e",
      "tree": "d30713451391da63595739e169a45b99cfe40ae8",
      "parents": [
        "54f075866282357aab2afd5bb207217710fdef57"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Sep 13 15:55:44 2021 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Sep 13 16:46:55 2021 -0700"
      },
      "message": "Fix destruction order in SpatializerPoseController\n\nWe want to make sure the pose provider is destroyed before the\nprocessor, to make sure no pose updates are received with the\nprocessor destroyed.\n\nTest: Manual inspection of logs while running head tracking.\nBug: 188502620\nChange-Id: I7110e8db178e16f4addbfb6a0701a700da976ac7\n"
    },
    {
      "commit": "2be8b29bd9d59497756635ce96ef508c3a0fb48d",
      "tree": "92c5789f7e4951dd36354f49d87da086d2b5299e",
      "parents": [
        "e9b349585d513ec5a6f045e7e2657700680f159e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 23 09:44:33 2021 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 13 18:23:23 2021 +0200"
      },
      "message": "spatializer: integrate pose controller\n\nImplement head tracking functions in Spatializer\nclass based on the SpatializerPoseController class.\n\nAdd new APIs to ISpatializer interface to:\n- set head pose sensor\n- set screen pose sensor\n- set screen orientation\nAdd new APIs to INativeSpatializerCallback to:\n- notify new head to stage pose\n- notify new actual headtracking mode\n\nBug: 188502620\nTest: manual test with mock spatializer\nChange-Id: I4584df055cd91bc124d081861baa2fe83df69fa5\n"
    },
    {
      "commit": "e9b349585d513ec5a6f045e7e2657700680f159e",
      "tree": "36000755c79547f87940ff6a6f0623fad55c62ad",
      "parents": [
        "8b7d53bc1b8b03390fb3057a828bd1738fb01b7b"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Sep 10 12:48:27 2021 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Sep 10 16:01:15 2021 -0700"
      },
      "message": "Fix log tag\n\nTest: m -j\nBug: 188502620\nChange-Id: Iaf926f6ce4f5626a004facdbe74f012d4c4e71e5\n"
    },
    {
      "commit": "8b7d53bc1b8b03390fb3057a828bd1738fb01b7b",
      "tree": "8818a16d7e5908336fe1c589659db426edfb48ab",
      "parents": [
        "9dc68b997439abf24edd8a944a1663953e8a5a5b",
        "7c2acd11fb8dcd9269dd1724c97d385ed1742bde"
      ],
      "author": {
        "name": "Ytai Ben-tsvi",
        "email": "ytai@google.com",
        "time": "Fri Sep 10 21:53:32 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 10 21:53:32 2021 +0000"
      },
      "message": "Merge changes I1b3a4173,I1200c9fd into sc-v2-dev\n\n* changes:\n  Do not hold the lock while invoking callbacks\n  Ensure correct destruction of SensorPoseProviderImpl\n"
    },
    {
      "commit": "7c2acd11fb8dcd9269dd1724c97d385ed1742bde",
      "tree": "e34ac4ab6b039e16508812eb37f522620dac505d",
      "parents": [
        "c29bad6438fa51331a4ca6dd434b2134073d578b"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Sep 09 15:50:00 2021 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Sep 10 10:21:11 2021 -0700"
      },
      "message": "Do not hold the lock while invoking callbacks\n\nHolding the lock creates a burden on the client, so easier to handle\nhere.\n\nTest: Manual verification using logs.\nBug: 188502620\nChange-Id: I1b3a417315bd05bd421b8d643fd15f832faace02\n"
    },
    {
      "commit": "48e5af7adf5559074564bd9280877571c747b520",
      "tree": "6ab1dac45d0d8a791640e69286993b82af21645f",
      "parents": [
        "1f10f72c4143a5aedd9dcaab6db33adb331f735e",
        "4162873eb7d59d3c7a53317b27c291932728d430"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 09 20:49:44 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 09 20:49:44 2021 +0000"
      },
      "message": "Merge \"Audio policy: fix crash in absence of spatializer\" into sc-v2-dev"
    },
    {
      "commit": "4162873eb7d59d3c7a53317b27c291932728d430",
      "tree": "5b05a66f5c3dba5d2f0e3a60ddf536f587ebc48e",
      "parents": [
        "b13c68544c9958d5fd3d67e1d400ac1f495abf11"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Sep 09 12:16:21 2021 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Sep 09 12:16:21 2021 -0700"
      },
      "message": "Audio policy: fix crash in absence of spatializer\n\nCheck for null pointer when registering the callback for\nthe spatializer.\n\nBug: 188502620\nTest: boot w/o crashing on device w/o spatializer support\nChange-Id: I71a1e31e00cf513aafafcb341b79d70859ce7f1b\n"
    },
    {
      "commit": "1f10f72c4143a5aedd9dcaab6db33adb331f735e",
      "tree": "859ad2c9dbec6a10f14c3383517098c191bfe4c2",
      "parents": [
        "4cd7136c4d9b80f0f1478b2f81679e7cf67bcb8e",
        "7901bddf0af4915294af1006befce269dd28e920"
      ],
      "author": {
        "name": "Ytai Ben-tsvi",
        "email": "ytai@google.com",
        "time": "Thu Sep 09 17:23:11 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 09 17:23:11 2021 +0000"
      },
      "message": "Merge changes I58e1c380,I3aa1f225,Ifb73050e into sc-v2-dev\n\n* changes:\n  Fix display orientation handling\n  Better support for head and screen sensors being the same one\n  Refine the recenter operation\n"
    },
    {
      "commit": "9bae7429becbb9f6f6fb66d7b7756a4e486cebaf",
      "tree": "7691c0b6d4dc54a49778167174fbc09fe2c7446c",
      "parents": [
        "95b00c8ce09fbeb51f1a7256cd4913546a44cc1e"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Aug 27 16:13:19 2021 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Wed Sep 08 16:14:07 2021 -0700"
      },
      "message": "Better support for head and screen sensors being the same one\n\nThis is not a super interesting use-case, but for completeness we\nshould make sure it is handled correctly.\n\nFrom the Sensor Framework standpoint, a sensor can only be enabled\nonce at a given time. We mirror this behavior in SensorPoseProvider\nand document it well.\n\nAt the SpatializerPoseController layer we make sure that we don\u0027t\nenable a sensor more than once and that if both sensors are the same\nthat we treat an event as applying to both.\n\nTest: manual verification of this mode.\nBug: 188502620\nChange-Id: I3aa1f225d7100c5d934af9255484caec75375380\n"
    },
    {
      "commit": "95b00c8ce09fbeb51f1a7256cd4913546a44cc1e",
      "tree": "7e8aea8246f289c9e2ccf0c80af9da91233a5648",
      "parents": [
        "b13c68544c9958d5fd3d67e1d400ac1f495abf11"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Aug 27 15:27:08 2021 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Wed Sep 08 16:14:07 2021 -0700"
      },
      "message": "Refine the recenter operation\n\nThis change allows recentering to happen for an individual sensor\nrather than to all at once. This avoids unecessary recentering and\nrate limiting if the sensor being recentered is not being used in the\ncurrent mode.\n\nTest: atest --host libheadtracking-test\nBug: 188502620\nChange-Id: Ifb73050e0072e676b5936a22e0cd1be8d31e9596\n"
    },
    {
      "commit": "390959835b813c11bedd9d25a34d2b0c78a6114b",
      "tree": "b6a803b65871456033147226dd6af7cea09825ca",
      "parents": [
        "5c6514ca32c11e622a11371d46a2bb97e3f1e954"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 24 18:29:27 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 03 17:00:02 2021 +0200"
      },
      "message": "audio policy: update spatializer policy\n\nModify the rules to open and close the spatializer output\nto address more scenarios:\n- more than one spatializer output profile available\n- some devices only reachable via a spatializer output profile\n\nThe spatializer outputs are opened and closed like other outputs\nand a logic evaluates the best output when getSpatializerOutput()\nis called\n\nBug: 188502620\nTest: make\nChange-Id: Id336e5c38a398525b3fab406cedce8a010d6c854\n"
    },
    {
      "commit": "b13c68544c9958d5fd3d67e1d400ac1f495abf11",
      "tree": "2b85399cb5d899fd9ce3901231d194abbe94bde3",
      "parents": [
        "c15cdd377848a1bd6db21f53367fcff9eede12d4",
        "d83c42d6b8f3cb8ec7fabdf33799aa9dd62b8183"
      ],
      "author": {
        "name": "Ytai Ben-tsvi",
        "email": "ytai@google.com",
        "time": "Fri Aug 27 17:34:06 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 27 17:34:06 2021 +0000"
      },
      "message": "Merge \"Add SpatializerPoseController\" into sc-v2-dev"
    },
    {
      "commit": "d83c42d6b8f3cb8ec7fabdf33799aa9dd62b8183",
      "tree": "43b76417cd57c1bad2a205768a689b421982bbd8",
      "parents": [
        "d91256993d66336bd51c0f443650433d19a880ac"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Wed Aug 25 14:19:34 2021 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Aug 26 09:23:13 2021 -0700"
      },
      "message": "Add SpatializerPoseController\n\nThis class encapsulates the logic for pose processing, intended for\ndriving a spatializer effect.\n\nBug: 188502620\nTest: Manual testing of pose processing using logging.\nChange-Id: I84d47926ff469d7c09895aba55aaf2e6c890ec00\n"
    },
    {
      "commit": "ac08f91fd1bb95287c6be735751e6b4312836e6c",
      "tree": "b8832f143c731d52cbfc2397c6d575b93c4ffddd",
      "parents": [
        "f7adf32d2c5a33d2846536ed235948646202c9b9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 25 15:01:05 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 25 15:01:05 2021 +0200"
      },
      "message": "audio: add new flags for spatialization behavior\n\nAdd audio attributes flags specifying the requested spatialization\nbehavior for an audio track.\n\nBug: 188502620\nTest: make\nChange-Id: Ic83b172f6beb643b43be6821fb615aa7528a0b97\n"
    },
    {
      "commit": "f7adf32d2c5a33d2846536ed235948646202c9b9",
      "tree": "284df54e09118e932baa8940a35a1007d8b68f8c",
      "parents": [
        "35a1fcb1c004a3d06a4b8d3b3719e08fb0eae4b3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 20 16:01:00 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 24 12:03:03 2021 +0200"
      },
      "message": "spatializer: fix aidl interface dependency\n\nCreate a separate library for spatializer aidl\ninterfaces to solve double inclusion of some dependencies\nin framework.jar and services.jar\n\nBug: 188502620\nTest: atest StrictJavaPackagesTest#testBootClasspathAndSystemServerClasspath_nonDuplicateClasses\n\nChange-Id: I4c8a2149c650d22e335e73e73baaa361b58cda29\nMerged-In: I4c8a2149c650d22e335e73e73baaa361b58cda29\n"
    },
    {
      "commit": "a16a9df3e30fd753641f57f51dd8a19b61dea12e",
      "tree": "6fc23bb23b3052185234aca3fb9c1876b5ab5275",
      "parents": [
        "b2a87e5dc0bbd496df3addccf4ccd913f132c920"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Aug 05 08:57:06 2021 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Aug 23 10:00:53 2021 -0700"
      },
      "message": "Some syntactic cleanup\n\nMostly, this change renames HeadTrackingMode to\nSpatializerHeadTrackingMode in order to avoid name collision with the\nHeadTrackingMode type from libheadtracking.\n\nOther nits are included.\n\nTest: m -j\nBug: 188502620\nChange-Id: I7f4188c1f401a98044f28c68d9613267d5baa808\n"
    },
    {
      "commit": "1c5e2e3dd2b18067995761eccd4c456bba0f7cef",
      "tree": "a826fc04cecdca9fcc7a4de72928e41d7d63b9b8",
      "parents": [
        "6d60701ee24367f4fa5974a7b1b94925c35c333b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 18 18:50:28 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 19 19:41:02 2021 +0000"
      },
      "message": "audio: rename virtualizer stage to spatializer (2)\n\nUpdate after renaming in system/media includes.\n\nBug: 188502620\nTest: make\nChange-Id: I12ed9fbcf2064190d3c59f8003b2d74c07c09a11\n"
    },
    {
      "commit": "6d60701ee24367f4fa5974a7b1b94925c35c333b",
      "tree": "419425a23a56ba3796acef7715fa57f6e9175216",
      "parents": [
        "3e2957421cba8b5545ed95007781095b471aa382"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 05 11:54:40 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 19 15:05:43 2021 +0000"
      },
      "message": "audio policy: add Spatializer effect control\n\nAdd APIs to discover support for audio spatialization function and control a\nspatializer output mixer and effect creation to Audio Policy Service.\n\nWhen supported, a system service can retrieve a ISpatializer\ninterface to query supported features and set a spatialization mode.\n\nWhen spatialization is enabled, the corresponding specialized output mixer is\ncreated and the effect applied.\n\nThe audio policy manager will attach clients which audio attributes and\nformat qualifying for spatialization to the specialized output mixer.\n\nBug: 188502620\nTest: make\n\nChange-Id: Ie2734fb9bb3ef9b945431c6c9bd110b1434a79cd\nMerged-In: Ie2734fb9bb3ef9b945431c6c9bd110b1434a79cd\n"
    },
    {
      "commit": "3e2957421cba8b5545ed95007781095b471aa382",
      "tree": "7250643f474defedf164988d45746fe72dac2ae8",
      "parents": [
        "2290be4a519b4a60ae722253da7a84cedb894137",
        "fa0f67403875041c739a04cb540c25f770f4ebf4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 18 16:54:35 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 18 16:54:35 2021 +0000"
      },
      "message": "Merge \"audio: rename virtualizer stage to spatializer\" into sc-v2-dev"
    },
    {
      "commit": "fa0f67403875041c739a04cb540c25f770f4ebf4",
      "tree": "99eee9fbf621c6b4b0dbfd485a055852e6d5be14",
      "parents": [
        "eac8ea648ad98617782c61ca4c6689315a1b5eb8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 17 18:39:44 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 18 13:13:43 2021 +0000"
      },
      "message": "audio: rename virtualizer stage to spatializer\n\nUse audio spatializer and spatialization instead of\nvirtualizer stage to reflect the name chosen for public APIs.\n\nBug: 188502620\nTest: make\nChange-Id: I7974c5b159722efd795e0b0b79ddbb0658c52034\n"
    },
    {
      "commit": "2290be4a519b4a60ae722253da7a84cedb894137",
      "tree": "fe8f92825eee7df0464dc7f8ce2e0de318c76a88",
      "parents": [
        "4f08b4f985263dfb2ee00ab26aa267190637acc4",
        "1c3c35c0722e61fc6f09e3350e975f55805a56d6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 18 11:23:54 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Aug 18 11:23:54 2021 +0000"
      },
      "message": "Merge \"audio policy: fix call volume upon speaker to USB transition\" into sc-qpr1-dev am: 1c3c35c072\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/15583325\n\nChange-Id: I2f9bd1b140d9c8bbd47006ff0445ee82ed776eb8\n"
    },
    {
      "commit": "e8f2c0fa66c94eca27d0e0011bf8fc8d6dba9e94",
      "tree": "72d793dbc8954ae9378b25d29d077c904f68e8f9",
      "parents": [
        "f72b417eb9ef47bbe80af2b3b492cdafa95214cd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 17 11:17:19 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 17 11:17:19 2021 +0200"
      },
      "message": "audio policy: fix call volume upon speaker to USB transition\n\nFix voice volume handling in checkAndSetVolume() to only update\nvoice volume when changing volume on the primary output.\nBy convention, call routing and volume is managed by the primary output\nand as other outputs may use a different device than the device selected\nfor calls, a wrong voice volume can be computed and overwrite a correct\nvolume set previously.\n\nBug: 195907034\nTest: repro steps in the bug\nChange-Id: Iafecb4df159db84addc3d802cdd2775cc696e07e\n"
    },
    {
      "commit": "fdd9360ca0b122fd2bd1f2d731bc3254c0c2bcfe",
      "tree": "f1cb885387156ebf93ff69b1e1771e2d9ad8a7ee",
      "parents": [
        "54417f0506d0f3f513055bafa53b9b007f1d8a0b",
        "0c1ce4efc56f3cc3012112e9eb24a141b241e98e"
      ],
      "author": {
        "name": "Ahaan Ugale",
        "email": "augale@google.com",
        "time": "Thu Aug 05 19:29:48 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Aug 05 19:29:48 2021 +0000"
      },
      "message": "Merge \"Apply Assistant AudioPolicy to HotwordDetectionService\" into sc-dev am: 0c1ce4efc5\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/15464022\n\nChange-Id: I1703013f07bbcc714fca1004cefa6b1d86d49adc\n"
    },
    {
      "commit": "f51ce00a3e1d95bf22f85454510f6eca0c32ed68",
      "tree": "addeb6bb58f5d8229b8c9b5bab63877c0fbd6992",
      "parents": [
        "53a58911405f41884178d83ed4f23859398e8879"
      ],
      "author": {
        "name": "Ahaan Ugale",
        "email": "augale@google.com",
        "time": "Wed Aug 04 16:34:20 2021 -0700"
      },
      "committer": {
        "name": "Ahaan Ugale",
        "email": "augale@google.com",
        "time": "Wed Aug 04 21:29:27 2021 -0700"
      },
      "message": "Apply Assistant AudioPolicy to HotwordDetectionService\n\nThe HotwordDetectionService is part of the Assistant package but runs\nwith a separate (isolated) uid.\nThis change follows the pattern of how the Assistant and IME UIDs are\nset.\n\nFix: 194368677\nTest: manual - hotword works when another app is using the mic and in\n Auto projection mode\nTest: atest HotwordDetectionServiceBasicTest\nChange-Id: I76a7930431db226c7e502f8993dfeaa4bc133bea\n"
    },
    {
      "commit": "bbed05511069203828758c265b80d670ece2fb35",
      "tree": "ee18c0f7d20c33e343d6251da37274a083d36a10",
      "parents": [
        "67ddd5c824d395d1caad986ea77315bc82780ce6",
        "cad6c0ddc42faf8dfa6e34010d59451f4ea7a727"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 26 12:28:20 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 26 12:28:20 2021 +0000"
      },
      "message": "Merge changes from topic \"virtualizer_stage\" into sc-v2-dev\n\n* changes:\n  audio policy: add support for virtualizer stage output\n  audioflinger: add virtualizer stage mixer thread\n  audio flinger: pass mixer configuration when opening an audio output\n"
    },
    {
      "commit": "cad6c0ddc42faf8dfa6e34010d59451f4ea7a727",
      "tree": "c9c640289b0aa9a6d3c4c0a1267a9f40420050af",
      "parents": [
        "b3f315a7d29954b1ef98045b9a15f9d5446fbd50"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 13 15:12:39 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 24 11:20:40 2021 +0200"
      },
      "message": "audio policy: add support for virtualizer stage output\n\nAdd support for specialized output stream supporting virtualizer stage\neffect with headtracking.\n\nThe HAL implementation indicates support for this feature with a\nspecific audio profile with flag AUDIO_OUTPUT_FLAG_VIRTUALIZER_STAGE\nlisted in the audio policy configuration file.\n\nNote: the flag combination DEEP_BUFFER + FAST is used until a new audio\nHAL version is introduced with this flag defined.\n\nThe audio policy manager implements methods to query if virtualization\nis supported for a particular combination of audio attrbutes, audio\nconfiguration and audio devices.\nMethods are also available for the audio policy service to open and close\na specialized virtualization output stream and create the corresponding\naudio mixer in audio flinger.\n\nBug: 188502620\nTest: atest audiopolicy_tests\n\nChange-Id: I3b1faf22290775dc7d13953a24098d22cb3790de\n"
    },
    {
      "commit": "f1f22e7720456d52dc3cc844a51a21216c7be4e6",
      "tree": "81a6485e3775421b8dbde93180d6dde40647fbaa",
      "parents": [
        "dd2978489dda2bc8d13f67f8de3abba8b7ae84a7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 13 14:04:14 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 24 11:20:03 2021 +0200"
      },
      "message": "audio flinger: pass mixer configuration when opening an audio output\n\nAdd the possibility for audio policy manager to indicate a mixer\naudio configuration (channel mask, format, sampling rate)\ndifferent from the audio HAL stream configuration when opening an\noutput stream with IAudioflinger::openOutput().\n\nBug: 188502620\nTest: atest audiopolicy_tests\n\nChange-Id: I0b4eaa9cd3e5574b75e3b914c854f97c104ca07e\n"
    },
    {
      "commit": "e0b5f98da9224ac0ffa41e6cee64c0989bd63c89",
      "tree": "dd1621c81b9eb6deeda7531ecc8204ce8b3efaa2",
      "parents": [
        "02001213a1fd044e5a0a67bc5683a2df85a0b76c",
        "b3e5ecec1aa52bd4656b1061e70980551ed1b3c6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 23 16:48:24 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Jul 23 16:48:24 2021 +0000"
      },
      "message": "Merge \"le_audio: Correct typo for BLE headset output communication device\" into sc-dev am: b3e5ecec1a\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/15371892\n\nChange-Id: I7345864aecae5d26677e7ebc4d2fa1e785f11e0d\n"
    },
    {
      "commit": "2e4e3e6ff463f426599931f992f42d9361361029",
      "tree": "0748c9a905bb390c8f6ff36c7f93a18dd59228b8",
      "parents": [
        "74dcdac0ad6f92cd7f1a24d307261986cb6d4e03"
      ],
      "author": {
        "name": "Grzegorz Kołodziejczyk",
        "email": "grzegorz.kolodziejczyk@codecoup.pl",
        "time": "Wed Jul 21 15:35:03 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 23 16:07:25 2021 +0000"
      },
      "message": "le_audio: Correct typo for BLE headset output communication device\n\nPatch corrects typo for pairing output BLE headset device with input\ndevice.\n\nTag: #feature\nTest: Select BLE output headset as communication device\nSponsor: jpawlowski@\nBug: 150670922\nBug: 194470230\nChange-Id: I7b0f41cb3f90096d9e19337ed1e3952a3dcdff3f\n"
    },
    {
      "commit": "c3ce59fe8680853b9c3dd4a71fa86e4e23696206",
      "tree": "7b4dbc4ff677a991717180ed04a6a8e568a91475",
      "parents": [
        "99a69930c02406f5cce2f141b08dce4e3695e9f8",
        "74dcdac0ad6f92cd7f1a24d307261986cb6d4e03"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Thu Jul 22 08:47:26 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jul 22 08:47:26 2021 +0000"
      },
      "message": "Merge \"Revert \"audio: prefer STRATEGY_SONIFICATION when ringotne is active\"\" into sc-dev am: 74dcdac0ad\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/15336410\n\nChange-Id: I635884509623aa1a313f802927a3031fe6a70cdf\n"
    },
    {
      "commit": "99a69930c02406f5cce2f141b08dce4e3695e9f8",
      "tree": "68df9195b6c44c271dc5227d8d94be0e10ec41ed",
      "parents": [
        "4728fd204ce6248b377cc4f10355753af7faf843",
        "34891dbf948ff4f5e85d4bc359855ce8218c749a"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Thu Jul 22 08:47:26 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Jul 22 08:47:26 2021 +0000"
      },
      "message": "Merge \"audio: replace speaker to speaker safe if ring is active\" into sc-dev am: 34891dbf94\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/15329393\n\nChange-Id: I58249f5a8a94dd00ca352ec2015a7b4dec71c40a\n"
    },
    {
      "commit": "74dcdac0ad6f92cd7f1a24d307261986cb6d4e03",
      "tree": "c9d3783d855a75acdb0a140c86b3f9c0e60d434c",
      "parents": [
        "34891dbf948ff4f5e85d4bc359855ce8218c749a",
        "cc58a6bdb440dd30850d2a01f148e0204353bf00"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Thu Jul 22 08:29:59 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 22 08:29:59 2021 +0000"
      },
      "message": "Merge \"Revert \"audio: prefer STRATEGY_SONIFICATION when ringotne is active\"\" into sc-dev"
    },
    {
      "commit": "34891dbf948ff4f5e85d4bc359855ce8218c749a",
      "tree": "ed6890874e557884a2953711e9a8da73ed678e97",
      "parents": [
        "04a9a42976f026efdc2543a6a18d3bfdaf0c598e",
        "524ee46e1582e4dee870cba0d343512710e654da"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Thu Jul 22 08:29:59 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 22 08:29:59 2021 +0000"
      },
      "message": "Merge \"audio: replace speaker to speaker safe if ring is active\" into sc-dev"
    },
    {
      "commit": "9b3c5bee35326a5f0225c6515644d447d0c8c4b6",
      "tree": "586f1a77b2d6375b6c5f95a85dc3f613730b414a",
      "parents": [
        "600a2b88176efda38039a013fe7efe3411d1c584",
        "16c1516e5ea58a05c1a1e2b53fd39b284fe585a6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 20 18:26:38 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jul 20 18:26:38 2021 +0000"
      },
      "message": "Merge \"audio policy: fix record op monitor use of wrong command thread\" into sc-dev am: 16c1516e5e\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/15337530\n\nChange-Id: I8044d61a9ba1f4e524d334256f3d3bb0e7467e28\n"
    },
    {
      "commit": "9925db5e80d91fcb6a7b34fd5aeefc7cf8276edb",
      "tree": "adb373302a2bb33d9a2be98913d158ad6ff2f82f",
      "parents": [
        "fc1e97b97b6d7f5ddb25acb7479455a2262121c0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 20 16:03:34 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 20 16:09:02 2021 +0200"
      },
      "message": "audio policy: fix record op monitor use of wrong command thread\n\ncommit ed726ccd introduced a potential deadlock in the audio policy\ncommnand thread dedicated to commands going from audio policy manager\nto audioflinger. The thread was used by mistake when posting a command\nto update the UID states which requires to take the audio policy service\nlock. This type of commands should never be run in the audio command\nthread but in the output command thread instead.\n\nBug: 193164403\nTest: atest AudioPlaybackCaptureTest#testStopMediaProjectionDuringCapture\nChange-Id: I150c768dd562f2658eaf4a31b837cf677136a3af\n"
    },
    {
      "commit": "d66d7a155b9a90463d3e4b8ef6a5cd900b087846",
      "tree": "f159e1b243893e217d88a034543c74ebf6de57ec",
      "parents": [
        "0ac7f8c5c31cc01df727bca4415a9460d5a1fc7c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 13 13:35:32 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 20 13:40:54 2021 +0000"
      },
      "message": "audio policy: add audio policy ready flag.\n\nThe audio policy ready flag indicates that audio policy manager\nintialization is done and that audioflinger can call back\ninto audio policy service without risk of deadlocking because the\nservice is not published yet.\n\nBug: 188502620\nTest: boot and kill native audioserver process.\n\nChange-Id: I671ed0aadd0c51342be5b57d1afb7577da6a7fa9\n"
    },
    {
      "commit": "524ee46e1582e4dee870cba0d343512710e654da",
      "tree": "6e3e6c5e5609bbb5c27133b8fd1cd0ec229cc224",
      "parents": [
        "fc1e97b97b6d7f5ddb25acb7479455a2262121c0"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Tue Jul 20 08:47:31 2021 +0800"
      },
      "committer": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Tue Jul 20 09:13:46 2021 +0000"
      },
      "message": "audio: replace speaker to speaker safe if ring is active\n\nBug: 192918626\nBug: 191220137\nTest: incoming ring + music\nb/194149364 to verify the solution\nSigned-off-by: Carter Hsu \u003ccarterhsu@google.com\u003e\nChange-Id: I9cfaebe3ee6363e534eff1408d824b8c45a37d04\n"
    },
    {
      "commit": "cc58a6bdb440dd30850d2a01f148e0204353bf00",
      "tree": "48beb4083c9dbd840159d994059eabef974ade2e",
      "parents": [
        "f20f2d4dadcc7700d425430887c8b2a45cafff88"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Tue Jul 20 08:44:50 2021 +0000"
      },
      "committer": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Tue Jul 20 09:09:03 2021 +0000"
      },
      "message": "Revert \"audio: prefer STRATEGY_SONIFICATION when ringotne is active\"\n\nThis reverts commit f20f2d4dadcc7700d425430887c8b2a45cafff88.\n\nReason for revert: \u003cregression on b/192918626\u003e\n\nBug: 191220137\nBug: 192918626\nChange-Id: I57f65d81e03e2f4d565acef774128006a8ff30c7\n"
    },
    {
      "commit": "e6139d5c32aaa95c7c9e4f657bf1f0235e218115",
      "tree": "2721fa8e901e2ee90751180e47e13f78594ba0e9",
      "parents": [
        "987ce1059f50efe9754c705046c8fe2887b0d41c"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Thu Jul 08 10:30:20 2021 +0800"
      },
      "committer": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Mon Jul 12 00:31:04 2021 +0000"
      },
      "message": "audio: create audio patch when the highest input soruce change\n\nBug: 193361443\nTest: Audio capture\n1. Start MIC source on primary input\n2. Start CAMCORDER source on primary input\n3. Stop CAMCORDER source on primary input\n4. Stop MIC source on primary input\nSigned-off-by: Carter Hsu \u003ccarterhsu@google.com\u003e\nChange-Id: Id6adcd4deb1e62e6ed9275d3a6cf7f7656da6946\n"
    },
    {
      "commit": "987ce1059f50efe9754c705046c8fe2887b0d41c",
      "tree": "ed2671d13f14802dcaee171b78a00904d67e3988",
      "parents": [
        "0ff42938e28ebbdf2ec57a4874a4b0f530be7597"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 05 12:11:51 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 05 12:11:51 2021 +0200"
      },
      "message": "audio policy: add recording app ops monitoring for system services\n\nAllow audio recording app ops monitoring for system services.\nOnly audioserver UID and shell should be exempt from being silenced by\napp ops.\n\nBug: 192638296\nTest: run app that records audio, then $adb shell appops set \u003cUID\u003e 27 2\nTest: atest GtsSuspendAppsTestCases:SuspendPackagesTest\nChange-Id: Ibbe79add05e8f31175c2db7d43fe48af4ebd9d29\n"
    },
    {
      "commit": "429eade119133d4a43ce6cadd2b127f39aabaa40",
      "tree": "8ab9655f4d04547f5df4bf9a36510c9e158abe1b",
      "parents": [
        "2c5c60cf5b53b43148848c06efec29cdaee62084",
        "f20f2d4dadcc7700d425430887c8b2a45cafff88"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Fri Jul 02 11:13:07 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 02 11:13:07 2021 +0000"
      },
      "message": "Merge \"audio: prefer STRATEGY_SONIFICATION when ringotne is active\" into sc-dev"
    },
    {
      "commit": "f20f2d4dadcc7700d425430887c8b2a45cafff88",
      "tree": "da5662d5a56d0c3d1d160fed9eab05455d6be8ac",
      "parents": [
        "22de95f3142fcdfbb665b30c6d28edd6f90759c3"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Mon Jun 28 16:53:14 2021 +0800"
      },
      "committer": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Fri Jul 02 08:08:40 2021 +0000"
      },
      "message": "audio: prefer STRATEGY_SONIFICATION when ringotne is active\n\nUse the STRATEGY_SONIFICATION as the major routing\nwhen ringtone is concurrency with touch/system/media playback\n\nBug: 191220137\nTest:\nb/192304579 to test\n1. incoming ring on haptic audio + touch/media on BT/USB/Speaker Safe\n2. incoming ring on primary + touch/media on BT/USB/Speaker Safe\nSigned-off-by: Carter Hsu \u003ccarterhsu@google.com\u003e\nChange-Id: Id7da4e66cf8533798f5098c02aaacbbe574e3290\n"
    },
    {
      "commit": "ed726ccd073bbffe0e2b11624cec3ae8c4e2a1a4",
      "tree": "cd429f53b3118e814032d664da1ae1082822e86f",
      "parents": [
        "c47a784d7faf155f56a36dd1eed88e23c5dad247"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 01 14:26:41 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 01 14:26:41 2021 +0200"
      },
      "message": "audio policy: report app ops silencing audio recordings\n\nMove audio recording app op monitoring from audio flinger to audio\npolicy service.\nThis groups all recording silencing logic in one place and allows for\nproper reporting of the audio record silencing via RecordingActivityMonitor.\n\nBug: 191040756\nTest: run app that records audio, then $adb shell appops set \u003cUID\u003e 27 2\nTest: atest GtsSuspendAppsTestCases:SuspendPackagesTest\nChange-Id: I12c30b1764b5e3d74612c6727a780026295cd367\n"
    },
    {
      "commit": "1303f8ea798fe779b6b3dd223c3466aca0effd5a",
      "tree": "662e07447bff0c5d851f30158a51014224e0d68e",
      "parents": [
        "bae92c2b766d0612155c84113a7c4f3cb30256e1"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jun 10 22:28:44 2021 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jun 14 15:16:52 2021 +0000"
      },
      "message": "Fix memory leaks in audioserver\n\nThe code for parsing the volumes configuration\nwas not freeing libxml2 resources. The code updated\nto use the same parametrizations of std::unique_ptr\nas the main de-serializer for the APM config.\n\nBug: 190683126\nTest: see the repro steps in the bug\nChange-Id: I660c5b22654a68c21bf14175520ee6b7f40d026e\n"
    },
    {
      "commit": "8c7ef891a0fefa2c18c8f65d38487dd92d236223",
      "tree": "119ebda00e1ab099e31b26bd32de6d01b27a9a80",
      "parents": [
        "a69e5ddedc37233b8943019fab44c46c5c1ee434"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 10 13:32:16 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 10 13:37:43 2021 +0200"
      },
      "message": "audio policy: finish audio record op when silencing recording\n\nIn order to correctly reflect microphone access, the permission\nservice must be notified of operation finish/start when an AudioRecord\nis silenced/unsilenced by the concurrent capture policy.\n\nBug: 190517602\nTest: smoke audio tests for audio capture\nChange-Id: Ia4a09111735356d11c6c8c794048e32dbc29bdcd\n"
    },
    {
      "commit": "936845ad4f13a099a565b9724335d30dabe3acde",
      "tree": "a630ee6bf2278074cdde530381a0f37128d07707",
      "parents": [
        "cee4d3db3b1dafc5a43fcc4c0b603858c24cfd72"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jun 08 00:09:06 2021 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Jun 08 15:09:37 2021 -0700"
      },
      "message": "Audio: Support FCC_LIMIT for 22.2 testing\n\nTest: Basic audio checks\nBug: 189325443\nChange-Id: Ie49f077e5deb7dcbc6acc32502d9ce82bcb85c04\n"
    },
    {
      "commit": "337611324fb7b22600d588493f938e7df4789e3d",
      "tree": "cd187ef9b4d8a9161004df0f6a74342207f7b553",
      "parents": [
        "c52f8f4eaae1d4495b992be01c488c52f699ac31"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu May 13 22:51:08 2021 +0000"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Jun 02 00:46:14 2021 +0000"
      },
      "message": "Switch media fw permissions checks to AttributionSource (av)\n\nAttribution source is the abstraction to capture the data\nflows for private data across apps. Checking permissions\nfor an attribution source does this for all apps in the\nchain that would receive the data as well as the relevant\napp ops are checked/noted/started as needed.\n\nbug: 158792096\n\nTest: atest CtsMediaTestCases\n      atest CtsPermissionTestCases\n      atest CtsPermission2TestCases\n      atest CtsPermission3TestCases\n      atest CtsPermission4TestCases\n      atest CtsPermission5TestCases\n      atest CtsAppOpsTestCases\n      atest CtsAppOps2TestCases\n\nMerged-In: I1c5a4321dd3b2d458372058c99604a6ec208717c\n\nChange-Id: I1c5a4321dd3b2d458372058c99604a6ec208717c\n"
    },
    {
      "commit": "f042b9bea0a09e7fac309160250aadd72af0f348",
      "tree": "9f3565992c2c8fe86116d152e5c232a9f78a4421",
      "parents": [
        "844ef1becccc13508ce9209ea358a9477d7cb29f"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri May 07 23:46:28 2021 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 27 07:54:34 2021 +0000"
      },
      "message": "Do not invalidate stream when the secondary outputs are changed.\n\nWhen a dynamic policy is registered, the secondary outputs may be\nchanged. Instead of tearing down the tracks, only tracks whose secondary\noutputs are changed will be updated with the new secondary outputs.\n\nBug: 181582467\nBug: 174123397\nTest: atest AudioPlaybackCaptureTest audiopolicy_tests\nTest: repo steps in the bug\nChange-Id: I9a47a0a4b37ad3f4a1d554dd726ebffb27325141\n(cherry picked from commit 10a03f1713e29eadfa862087e504f9e14964387e)\n"
    },
    {
      "commit": "ccb74ec0a55ba633fb6ba36b8d43025ee71e51c4",
      "tree": "e67a5fc675a44ffa74e6b52a52a6c3d4e09b40cc",
      "parents": [
        "bea1375791c40e742a4b3dba85ed1179c6f327f5"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri May 21 08:21:01 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 25 21:09:44 2021 +0200"
      },
      "message": "AudioPolicy: engineconfigurable: WA to 32bits limit criterion\n\n32bit limit has been reached for output devices criterion type.\nThis WA filters new devices (BLE_xxx).\n\nTODO: common file used to filter\n\nBug: 168065706\nBug: 184939103\nTest: make\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: I14baf6e6d66adaf5de040c143523bde72a32ed9c\nMerged-In: I14baf6e6d66adaf5de040c143523bde72a32ed9c\n"
    },
    {
      "commit": "28ba8f4416222e6a09a444459006886e98d35c58",
      "tree": "219026c5a562454d24f76052f3c8f8e1a865a9b1",
      "parents": [
        "1ba66b4fd7bad40913c593798e93244cd4404977",
        "45e16b905172b5a656c4edff7afe6a518df3000c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 21 07:17:01 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 21 07:17:01 2021 +0000"
      },
      "message": "Merge \"audio flinger: match app op monitoring to audio source\" into sc-dev"
    },
    {
      "commit": "45e16b905172b5a656c4edff7afe6a518df3000c",
      "tree": "0d350d04e194355525b822940ca8994441a0fe97",
      "parents": [
        "26a0e1a6b9fc34945e5d392f9b996a746004fd17"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 20 11:10:47 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 20 15:22:32 2021 +0200"
      },
      "message": "audio flinger: match app op monitoring to audio source\n\nWhen monitoring app op to silence audio recording when app op\nis lost, it must be done for the specific app op corresponding\nto selected audio source.\n\nBug: 186582878\nTest: music playback to head unit simulator\n\nChange-Id: I86d8b6eecf480d70dc9c0e974a92e6407ee73041\n"
    },
    {
      "commit": "97cec6f8dbbab92beee2ad56c7165296b7f6d4a8",
      "tree": "7e4e1b1291de2dfdcf347dad93275d92c6157f80",
      "parents": [
        "26a0e1a6b9fc34945e5d392f9b996a746004fd17"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 20 13:52:47 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 20 13:52:47 2021 +0200"
      },
      "message": "audio policy: fix VoIP audio switching from BT SCO to earpiece\n\ncommit 8f2f4e913 fixed b/188020987 but just for Cell calls.\nThis CL completes the fix for VoIP calls.\n\nBug: 188752649\nTest: Cell and VoIP calls over earpiece and Bluetooth\nChange-Id: I6a5563d9e802e664d4824b8f3c19a187529a17d7\n"
    },
    {
      "commit": "8f2f4e913d6cf4332d75ce808feb818cf73cdc8d",
      "tree": "7e435fda8a14b7645145a189bb8cff2748f95407",
      "parents": [
        "8462a0749eaf7d799b5d36e8c0858a7da789881a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 17 14:42:27 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 17 14:42:27 2021 +0200"
      },
      "message": "audio policy: fix call audio switching from BT SCO to earpiece\n\ncommit c0697594 made that A2DP is unconditionally used for phone\nstrategy when connected. This creates a problem when disabling SCO\nas the call is now routed to A2DP instead of earpiece by default which\nchanges from the expected route and does not work if the system suspends\nA2DP audio when a call starts.\n\nRestore previous policy by removing A2DP devices from eligible\ndevices for phone strategy when in call. This preserves the fix for\nb/184771057 by still routing voice mails to A2DP when connected.\n\nBug: 188020987\nBug: 184771057\n\nTest: manual call audio regression.\nChange-Id: Ibab19c6150b84f8e8a46e4389b66f20cff205c10\n"
    },
    {
      "commit": "7b6385c740c0a5e8917a9cb48a7eb4b1d66daf20",
      "tree": "57afd688745546c8d06f8ebc17caf90d2f79e0e1",
      "parents": [
        "ba72d94e9b0b4a8b1fb13cfd3b28296eedbfaaf0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 12 17:55:36 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 12 17:55:36 2021 +0200"
      },
      "message": "audio policy: fix wrong ring volume after music stops.\n\nIn computeVolume() only apply the special rule boosting\nringtone and notification volumes when music is playing over A2DP\nif the selected devices do not included the speaker: In this case, the\nnotification volume applied is the volume for speaker, not A2DP anyway.\n\nBug: 187481909\nTest: repro steps in bug\nChange-Id: I1b419e6681f771c25f61092edbb3acbf946b8ba6\n"
    },
    {
      "commit": "c0697594505dc2a8ad645d0bc31b5e0554af0357",
      "tree": "bb0203a7492dde87744dadb36b9fea0c415a3dec",
      "parents": [
        "5f526b5816287f17f2898ab02488289e54667fb0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 10 11:45:22 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 10 11:45:22 2021 +0200"
      },
      "message": "audio policy: add back use of A2DP for phone strategy\n\nRefactoring to use preferred device for srategy instead of forced\nusage introduced a regression where A2DP device is not used any more for\nphone strategy when not in a call.\n\nFixed this by using the same list of removable devices for phone\nstrategy as for media strategy. The preferred device will still be\napplied before this default list to honor SCO or speaker phone modes.\n\nBug: 184771057\nTest: Play VOICE_COMMUNICATION audio with A2DP only headphones\nChange-Id: I032d962d6ebc311b055bb35fb34d5310fc308bc7\n"
    },
    {
      "commit": "269acb4c605fc60a59fc9b935b51cfd5dbb496fe",
      "tree": "14c3f916e4a6f55c4241d1295eb402164b549126",
      "parents": [
        "6fea7f005c004bae852c66b148f14adfc60ff872"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 23 16:53:22 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 23 16:53:22 2021 +0200"
      },
      "message": "audio: add command to purge permission cache\n\nAdd a media_audio_policy service command and helper function\nin ServiceUtilities to purge permission cache.\n\nThis permists to restore the use of permission cache for\nCAPTURE_AUDIO_HOTWORD permission while still  allowing CTS tests to\nadopt shell permission.\n\nBug: 185972521\nTest: atest AudioRecordSharedAudioTest\nChange-Id: Ib8963053d6d7734e474174f572762abe1a4be13b\n"
    },
    {
      "commit": "2742709aa316ee114c6591e978e4abd6788e6a09",
      "tree": "54ef16a8abe43a166c103cddf5f5d5433151805f",
      "parents": [
        "b5f5cc5daab7f12235e320b7a469ddc70e517187",
        "ec376dcd36947485b1400a828f320507dba974b8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 21 17:03:30 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 21 17:03:30 2021 +0000"
      },
      "message": "Merge \"AudioRecord: Allow to share capture history.\" into sc-dev"
    },
    {
      "commit": "ec376dcd36947485b1400a828f320507dba974b8",
      "tree": "7ffca65d77e519d0e629497d73ec5a586752ab32",
      "parents": [
        "c8a1676adf1f7fee3c542a1e568a5fc4920dfba4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 08 20:41:22 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 21 12:13:57 2021 +0200"
      },
      "message": "AudioRecord: Allow to share capture history.\n\nAdd the possibility for privileged applications to\nshare part of their audio capture history with another app.\n\nBug: 183705547\nTest: regression on capture use cases\n\nChange-Id: I2b6547eee1dcd840e06090f42f40beafa3facb46\n"
    },
    {
      "commit": "e72957e05e9d244beaa19ca4770b4350ac5d2ffb",
      "tree": "779957a59e22481ebc9ae99303f24d3ae8829b99",
      "parents": [
        "c8a1676adf1f7fee3c542a1e568a5fc4920dfba4",
        "4069d5dcbe17ad70389730041b3f6503d3ae2697"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 19 09:43:04 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 19 09:43:04 2021 +0000"
      },
      "message": "Merge \"Add nullptr check before printing found device type\" into sc-dev"
    },
    {
      "commit": "4069d5dcbe17ad70389730041b3f6503d3ae2697",
      "tree": "5d024baa77e66e3aaead1153d1011be9ee9bed18",
      "parents": [
        "ff81743e3165f9a22a3858ea9f7d41851db5d358"
      ],
      "author": {
        "name": "yuanjiahsu",
        "email": "yuanjiahsu@google.com",
        "time": "Mon Apr 19 07:54:27 2021 +0800"
      },
      "committer": {
        "name": "yuanjiahsu",
        "email": "yuanjiahsu@google.com",
        "time": "Mon Apr 19 16:03:07 2021 +0800"
      },
      "message": "Add nullptr check before printing found device type\n\nBug: 185106633\nTest: manually\nChange-Id: I5ed272cf29b207c2ccaaff468345dcf5c615b912\n"
    },
    {
      "commit": "91d50bbf8997068449a8265bd2b6265bfdd8b9f2",
      "tree": "4a9fa09c32cba9687311c36d2cfa04ae0e3b3e9a",
      "parents": [
        "17879bb4df024e9aec307a70db6347922f00199c"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Apr 16 17:38:23 2021 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Apr 16 17:38:23 2021 -0700"
      },
      "message": "Serializer: fix allocator / deallocator mismatch\n\nUse of unique_ptr\u003cchar[]\u003e for pointers to C strings is invalid\nas it calls \u0027delete[]\u0027 on a heap block allocated via \u0027malloc\u0027.\nUse a specialization of unique_ptr which calls \u0027free\u0027 instead.\n\nBug: 184845897\nTest: see PoC in the bug\nChange-Id: Ib9264bebb9753d19965095ccd904aeaf54d84636\n"
    },
    {
      "commit": "ef24fda0bd7217feb373ae0902976829244182ed",
      "tree": "c47497b114dfc93531bf092033bead88310a565c",
      "parents": [
        "b5c421e396de79bd1d310a2af9e1f4f265082f47",
        "1f700cd0617743dc27b083d12e560960cd623a2d"
      ],
      "author": {
        "name": "Evan Severson",
        "email": "evanseverson@google.com",
        "time": "Thu Apr 15 17:04:19 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 15 17:04:19 2021 +0000"
      },
      "message": "Merge \"AudioService Remove direct check to sensor privacy service\" into sc-dev"
    },
    {
      "commit": "d07c19bb68266f8fef497a7363ee5003c0bf501f",
      "tree": "dd5c6ae23dd85d88e013695016219689e10fbe8f",
      "parents": [
        "1d0f36c18d628eb43b3ef531e8b6e063f08ee7a9"
      ],
      "author": {
        "name": "Mingshu Pang",
        "email": "mpang@codeaurora.org",
        "time": "Thu Feb 25 11:40:32 2021 +0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 14 09:57:56 2021 +0200"
      },
      "message": "audiopolicy: add update uid state after the change of phone mode\n\nThe capture data will be silenced during voice call, but it can\u0027t\nbe resumed instantly if setting mode back to normal is later than\nrestarting input and updating uid state when hanging up voice call\nuntil next time uid state changing.\n\nAdd uid state update when phone state is changing.\n\nBug: 184920496\nTest: make\n\nChange-Id: I54276af1ab89821b681250c8c68ef2d21fb45a6f\n"
    },
    {
      "commit": "6da2c5a89e1d1ed21d1966b51e9db33f055cf995",
      "tree": "74f9eba4b40d2bfee2e003282720b73638118686",
      "parents": [
        "19bd4526375ae45eb7ebbf037432b8ed6a098263",
        "01a686b6e2f1ebf906352160e62e9c878da2383b"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Apr 13 00:01:50 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 13 00:01:50 2021 +0000"
      },
      "message": "Merge \"audio: add device constants for HDMI EARC\" into sc-dev"
    },
    {
      "commit": "cd1028a6a7cd6c1e93e09b1e19040f044f5309f8",
      "tree": "311b49c0e9c7a2e7691be3dee2ff8e25ba5d25df",
      "parents": [
        "6f14345a980231fb51e65befb7f4adf43f092d7a",
        "0735bf35abb70d4ed16adada6b3e3b40da5c35e4"
      ],
      "author": {
        "name": "Yuanjia Hsu",
        "email": "yuanjiahsu@google.com",
        "time": "Fri Apr 09 19:01:45 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 09 19:01:45 2021 +0000"
      },
      "message": "Merge \"Dynamic audio policies input on UID\" into sc-dev"
    },
    {
      "commit": "01a686b6e2f1ebf906352160e62e9c878da2383b",
      "tree": "a279a70be97aff6d1ccce890e211dba94abf3fc9",
      "parents": [
        "6f14345a980231fb51e65befb7f4adf43f092d7a"
      ],
      "author": {
        "name": "Kuowei Li",
        "email": "kuowei.li@mediatek.com",
        "time": "Tue Oct 27 16:54:39 2020 +0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 09 19:00:27 2021 +0000"
      },
      "message": "audio: add device constants for HDMI EARC\n\nImplementation check by grep -E -r  \"HDMI_ARC|HDMI_EARC\" .\n\nTest: atest AudioDeviceInfoTest\nBug: 131385398\nBug: 151781316\nChange-Id: I79231162ed168a7e8b04e703466cf4a79a99ed30\n"
    },
    {
      "commit": "0735bf35abb70d4ed16adada6b3e3b40da5c35e4",
      "tree": "78c51666abd0843876fe93c4d3258b02c38bc406",
      "parents": [
        "7de107c919f5958c0d27db684106fc9b64f93441"
      ],
      "author": {
        "name": "yuanjiahsu",
        "email": "yuanjiahsu@google.com",
        "time": "Thu Mar 18 08:12:54 2021 +0800"
      },
      "committer": {
        "name": "yuanjiahsu",
        "email": "yuanjiahsu@google.com",
        "time": "Sat Apr 10 00:23:58 2021 +0800"
      },
      "message": "Dynamic audio policies input on UID\n\nWhen looking for an input, take attributes and UID into account.\n\nBug: 169964607\nTest: atest com.google.android.gts.audio.AudioHostTest, manual testing\nChange-Id: Icbbef77a57e4b39782bd1e56d723473f370a8504\n"
    },
    {
      "commit": "d8aa090df2f49ead646f7c759cb1f9f592f777ef",
      "tree": "214ecd6308ed9fbda1dcad6ee41f6b10a35f403c",
      "parents": [
        "2fd0a98eea754633d63b8a7da32a3d151ee8885a"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 09 03:03:11 2021 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 09 08:06:17 2021 -0700"
      },
      "message": "Configurable AudioPolicyEngine: Skip device count assert\n\nAs new multi-bit device masks (see also b/167745916) are ignored\nby workaround go/aog/1421703, the number of devices with a\nsingle bit set cannot exceed 32.\n\nHence, there is no need for the device count assert in\nbuildCommonTypesStructureFile.py. Identical generated\nfiles are verified by the testOutput.xml generated (all multi-bit\ndevice masks skipped).\n\nSee the log below on exactly which devices are ignored.\n\nBefore CL (and adding hdmi_earc):\n  INFO:root:Checking Android Header file \u003c_io.TextIOWrapper name\u003d\u0027system/media/audio/include/system/audio-hal-enums.h\u0027 mode\u003d\u0027r\u0027 encoding\u003d\u0027UTF-8\u0027\u003e\n  INFO:root:added stub output device mask\n  INFO:root:added stub input device mask\n  CRITICAL:root:OutputDevicesMask incompatible with criterion representation on 32 bits\n  INFO:root:EXIT ON FAILURE\n\nAfter CL:\n  INFO:root:Checking Android Header file \u003c_io.TextIOWrapper name\u003d\u0027system/media/audio/include/system/audio-hal-enums.h\u0027 mode\u003d\u0027r\u0027 encoding\u003d\u0027UTF-8\u0027\u003e\n  INFO:root:added stub output device mask\n  INFO:root:added stub input device mask\n  INFO:root:VolumeProfileType: \u003c0:voice_call,1:system,2:ring,3:music,4:alarm,5:notification,6:bluetooth_sco,7:enforced_audible,8:dtmf,9:tts,10:accessibility,11:assistant,12:rerouting,13:patch,14:call_assistant\u003e\n  INFO:root:OutputDevicesMask: \u003c1:earpiece,2:speaker,4:wired_headset,8:wired_headphone,16:bluetooth_sco,32:bluetooth_sco_headset,64:bluetooth_sco_carkit,128:bluetooth_a2dp,256:bluetooth_a2dp_headphones,512:bluetooth_a2dp_speaker,1024:hdmi,2048:anlg_dock_headset,4096:dgtl_dock_headset,8192:usb_accessory,16384:usb_device,32768:remote_submix,65536:telephony_tx,131072:line,262144:hdmi_arc,262145:hdmi_earc,524288:spdif,1048576:fm,2097152:aux_line,4194304:speaker_safe,8388608:ip,16777216:bus,33554432:proxy,67108864:usb_headset,134217728:hearing_aid,268435456:echo_canceller,536870912:ble_headset,536870913:ble_speaker,1073741824:stub\u003e\n  INFO:root:InputDevicesMask: \u003c1:communication,2:ambient,4:builtin_mic,8:bluetooth_sco_headset,16:wired_headset,32:hdmi,64:telephony_rx,128:back_mic,256:remote_submix,512:anlg_dock_headset,1024:dgtl_dock_headset,2048:usb_accessory,4096:usb_device,8192:fm_tuner,16384:tv_tuner,32768:line,65536:spdif,131072:bluetooth_a2dp,262144:loopback,524288:ip,1048576:bus,16777216:proxy,33554432:usb_headset,67108864:bluetooth_ble,134217728:hdmi_arc,134217729:hdmi_earc,268435456:echo_reference,536870912:ble_headset,1073741824:stub\u003e\n  INFO:root:Importing structureTypesFile \u003c_io.TextIOWrapper name\u003d\u0027frameworks/av/services/audiopolicy/engineconfigurable/parameter-framework/examples/common/Structure/PolicySubsystem-CommonTypes.xml.in\u0027 mode\u003d\u0027r\u0027 encoding\u003d\u0027UTF-8\u0027\u003e\n  INFO:root:Device:262145 which has multiple bits set is skipped. b/168065706\n  INFO:root:Device:536870913 which has multiple bits set is skipped. b/168065706\n  INFO:root:Device:134217729 which has multiple bits set is skipped. b/168065706\n\nTest: frameworks/av/services/audiopolicy/engineconfigurable/tools/buildCommonTypesStructureFile.py \\\n      --androidaudiobaseheader system/media/audio/include/system/audio-hal-enums.h \\\n      --commontypesstructure frameworks/av/services/audiopolicy/engineconfigurable/parameter-framework/examples/common/Structure/PolicySubsystem-CommonTypes.xml.in \\\n      --outputfile testOutput.xml\nTest: Check INFO and compare testOutput.xml is identical\nBug: 168065706\nBug: 184939103\nChange-Id: Iaab1baaa89b45e7f3380721629413c987e329132\n"
    },
    {
      "commit": "04e3155367e27568c46864af3e76b8231ce41c63",
      "tree": "5f303ab379343bde27801a833faa6ed84c4702f2",
      "parents": [
        "3e0ed6a0bbdaa6de303c95285dbc8697c1e347d2",
        "2336de89071768b8db6bb6a77e2e80cb12cd0bfb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 08 20:48:50 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 08 20:48:50 2021 +0000"
      },
      "message": "Merge \"Allow to set/get/remove disabled devices for strategy/capture preset.\" into sc-dev"
    },
    {
      "commit": "2336de89071768b8db6bb6a77e2e80cb12cd0bfb",
      "tree": "df87e3011244e61dc0c967eb6681c8dab42fdce5",
      "parents": [
        "a4bfdc340a86310d90b237949e2b2648836615cf"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Apr 01 23:52:18 2021 +0000"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Apr 08 19:06:08 2021 +0000"
      },
      "message": "Allow to set/get/remove disabled devices for strategy/capture preset.\n\nCache the disabled devices as a list for strategy/capture preset. The\npreferred devices list and disabled devices list are mutually exclusive.\nOnce a device is in a list, it must be removed from the other list.\n\nBug: 184065221\nTest: atest AudioServiceHostTest, audiopolicy_tests\nChange-Id: I3477c089f8a1c89f82c692637295c1cf25a91593\n"
    },
    {
      "commit": "721f69a8a27a29f5b6aa6ccce4204acea4b8368a",
      "tree": "d497ef6b1921cc30999029b5f0215b48f0dab002",
      "parents": [
        "0def08948a5f6da0ae0f3447baceb6b6d2a9c7a4",
        "afc5884747cff05a71f99531a5652c143b8bc703"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 08 14:17:37 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Apr 08 14:17:37 2021 +0000"
      },
      "message": "Merge \"audio:fix incomplete devices of duplicated output\" am: 5b346dea1d am: 1b6639650b am: afc5884747\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1666382\n\nChange-Id: Idb401a5346318db3af4c743e2a88f45d8a5b45ba\n"
    },
    {
      "commit": "0d6505c06d4bc19426e1d3e03c1c455a1028733c",
      "tree": "7d5281ae6ae2023de348cac2e2da68fee4acd1bb",
      "parents": [
        "5b68d9c182af29adf441639cdde555adbd68cbd6"
      ],
      "author": {
        "name": "wudongzhe",
        "email": "wudongzhe@xiaomi.com",
        "time": "Wed Apr 07 10:48:20 2021 +0800"
      },
      "committer": {
        "name": "吴东哲",
        "email": "wudongzhe@xiaomi.com",
        "time": "Thu Apr 08 02:33:28 2021 +0000"
      },
      "message": "audio:fix incomplete devices of duplicated output\n\nWhen we get the devices of duplicated output by\ndesc-\u003edevices().types(),it will only return the\ndevices of suboutput1.This is because that the private\nmember mDeviceTypes of DeviceVector are not refreshed,\nwhen merging two device vectors of suboutput1 and suboutput2.\nThis will cause some unexpected volume problems.\n\nChange-Id: I9bc7551b3692d21ed7b49e2e93a685a75fef7fc5\nSigned-off-by: wudongzhe \u003cwudongzhe@xiaomi.com\u003e\n"
    },
    {
      "commit": "2d22d571d8083f5c4b68ff3752613e8c631b9996",
      "tree": "7bd5319b4908ad94a81ec8f85a5dfa21112e5875",
      "parents": [
        "38a0290ce0f04e47fc29e042f104bb3534e847db",
        "b6e26f61a9888161db7c7c995657af845df86ee3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 06 22:06:28 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 06 22:06:28 2021 +0000"
      },
      "message": "Merge \"audiopolicy: reflect libbinder/am split\" into sc-dev"
    },
    {
      "commit": "b6e26f61a9888161db7c7c995657af845df86ee3",
      "tree": "d9f56e4898c031e8f3791e7c68d9735c312a882c",
      "parents": [
        "0b6816f2448f1d2568409b26ff105c8608383485"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Apr 05 22:05:06 2021 +0000"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Apr 05 22:39:01 2021 +0000"
      },
      "message": "audiopolicy: reflect libbinder/am split\n\nSplitting out extra classes from libbinder so that it takes less memory\nto use (many processes don\u0027t use activity manager). Currently, this\nlibrary is empty, and this CL is being merged to add the dependency\nbefore activity manager code is moved into this library, because this\nfile was only converted to Android.bp on internal branches.\n\nBug: 183654927\nTest: N/A\nChange-Id: Idd20f64a2bb54c1364aa996d6e4ec4fe9e27d732\n"
    },
    {
      "commit": "8f9d99dc8e794b52e024e7d1410e5e852a5e1cd3",
      "tree": "59274fb3e6defa7b926e4fe0a765b84ee0b6691d",
      "parents": [
        "bf12e453b4e8d6363afadf432604042d3047ac40",
        "498d21515c2b590908bc3dd976bc6a745d446145"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 02 18:06:24 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 02 18:06:24 2021 +0000"
      },
      "message": "Merge \"No need to reopen output when the active media devices is empty.\" into sc-dev"
    },
    {
      "commit": "207f2dbb2c8453566dc7c50b09ed868d21e4da73",
      "tree": "89aa0564514233feb2887fb15f002f8a3681c7ca",
      "parents": [
        "c05fa930cb3b62a4e120e23faac2d58050d5aa69",
        "79fdb177b998bbf97125034211ce78ad8020b66a"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Apr 02 01:58:41 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Apr 02 01:58:41 2021 +0000"
      },
      "message": "Merge \"audiopolicy: Avoid logspam about engine config parsing error\" am: 45b3754120 am: 52ba0c5ff6 am: 79fdb177b9\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1661180\n\nChange-Id: I747457bbfe641b5bcccfa0e6ad9d43c8c6bbb668\n"
    },
    {
      "commit": "498d21515c2b590908bc3dd976bc6a745d446145",
      "tree": "200699355ef9afd1699597e863c5e329f381384d",
      "parents": [
        "dfca1ce852e8223656c7883d3b32d61cc091ac59"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Apr 02 00:26:46 2021 +0000"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Apr 02 00:26:46 2021 +0000"
      },
      "message": "No need to reopen output when the active media devices is empty.\n\nThe active media devices will be used to reopen outputs to use the best\nprofile. When the active media devices is empty, there is no need to\nreopen the outputs.\n\nBug: 183980515\nTest: connect/disconnect BT device\nChange-Id: I483bb001d6e196bf448d039230cc36a5b4cdbdfe\n"
    },
    {
      "commit": "5f1fadf0b3cb25744f0c8b764622163f8fe11d33",
      "tree": "bb3476493558e3be1289e2845413c2c1c9fff213",
      "parents": [
        "91f9f7d34d3c8baf1c3db35eb0f0c28721f48856"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Mar 31 20:40:04 2021 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Apr 01 17:37:57 2021 +0000"
      },
      "message": "audiopolicy: Avoid logspam about engine config parsing error\n\nSkip calling into libxml2 parsing when the engine config\nfile does not exist (this is allowed). This removes a misleading\nerror message from libxml2 in the syslog.\n\nBug: 181269159\nTest: adb shell logcat | grep libxml2\n      during phone boot\nChange-Id: I9159a458ce68146271c3b22ea452194c4cabc79f\n"
    },
    {
      "commit": "c1cb663beda1eb9d913b0daa425906839b01670f",
      "tree": "e4ff256fb43655f2b847c001714ab1b7eaa1978e",
      "parents": [
        "c5a55dea47bc63911654385f1b13cb10b62bcc0f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 30 21:31:43 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 30 21:36:04 2021 +0200"
      },
      "message": "audio policy engine: fix improper error log in getDevicesForRoleAndStrategy\n\nAdd missing case for role DEVICE_ROLE_DISABLED\nin getDevicesForRoleAndStrategy().\nAlthough setting the role as DEVICE_ROLE_DISABLED is not\nimplemented we should not log an error when the getter is called.\n\nBug: 181269159\nBug: 184065221\nTest: make, flash and boot.\nChange-Id: I7283d1bcc13b2cbffdb5040e35b5804d2c2e66b4\n"
    },
    {
      "commit": "c5a55dea47bc63911654385f1b13cb10b62bcc0f",
      "tree": "e647d18491636fa1be4466533bf160de5369dd90",
      "parents": [
        "341f4d5c40859983a5f2ceb2a7003a51e2b06e4c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 30 21:10:57 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 30 21:10:57 2021 +0200"
      },
      "message": "audio policy: remove unnecessary error log\n\nRemove unnecessary error log when the optional engine\nconfig file is not found.\n\nBug: 181269159\nTest: make, flash and reboot.\nChange-Id: If30792c59fa0e392861317c40aa00464ff6fae00\n"
    },
    {
      "commit": "6cd5f9014f3c38ffcecef7a25828c62b10c355fb",
      "tree": "30662d424633c0794ed84804a378c9fc5c0f2477",
      "parents": [
        "c19929662c204393d7a7e423275824bae858b394"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 23 18:29:58 2021 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 25 11:25:56 2021 +0100"
      },
      "message": "Audio Policy Engine: fix in call routing (and other)\n\nRouting rules for a given strategy can be adapted depending on the\ncontext (e.g when in call or not) in order to make sure that concurrent\nuse cases do not use conflicting routes and that the highest priority\nstrategy prevails.\n\nThis strategy \"remapping\" must be done before we check possible\noverrides of default routing for a given strategy by\nsetDevicesRoleForStrategy().\n\nCommit cca11ce4 did partially address this but some cases were left aside.\nThis commit generalizes the behavior and moves all the strategy\nremappings out of getDevicesForStrategyInt()\n\nBug: 183380877\nTest: audio smoke tests\nChange-Id: Ia272dd28ffd39441b62c9a262c38bf47dc44e7f0\n"
    },
    {
      "commit": "534685fc5465a0e7ef544396641fc1f73e651207",
      "tree": "b01fe8ff87667c25cdc413f7859865ea1f43ec2a",
      "parents": [
        "18511ee70722da8850b57ad8588671f5ee24ef7c"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Wed Mar 17 10:32:35 2021 -0700"
      },
      "committer": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Wed Mar 17 11:47:30 2021 -0700"
      },
      "message": "Add NULL check for srcPort in supportsPatch\n\nBug: 182812093\nTest: Ran on device that was previously failing and placed phone call\nChange-Id: Ia371c915565052fcd2094c0b21694ef2d9fa6a68\n"
    },
    {
      "commit": "1f700cd0617743dc27b083d12e560960cd623a2d",
      "tree": "8168968906f2c4b83c90cf002268fa5628832fcd",
      "parents": [
        "2a09a3ec5e026f493f3e494444a1beb740166de1"
      ],
      "author": {
        "name": "Evan Severson",
        "email": "evanseverson@google.com",
        "time": "Wed Feb 10 13:10:37 2021 -0800"
      },
      "committer": {
        "name": "Evan Severson",
        "email": "evanseverson@google.com",
        "time": "Wed Mar 17 10:15:14 2021 -0700"
      },
      "message": "AudioService Remove direct check to sensor privacy service\n\nThe microphone privacy toggle will set the app op so the audio server\ndoesn\u0027t need to check the state directly anymore.\n\nTest: Use the feature\nBug: 162549680\nChange-Id: I757de02cf92535dd00091ce2ae7a5bf45ce47306\n"
    },
    {
      "commit": "00191e208e6794fe09a98da7433a69897e869b21",
      "tree": "040f23f973f223caa6a5de331dedd1519f7a6a6f",
      "parents": [
        "95650cfab65a3229c0cff9415baf57781ef9a3db",
        "bda4575c36ad11b0870ccdb50dcb3a04573d6782"
      ],
      "author": {
        "name": "Nate Myren",
        "email": "ntmyren@google.com",
        "time": "Thu Mar 11 23:48:48 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 11 23:48:48 2021 +0000"
      },
      "message": "Merge \"Add attributionTag to audio-recordings\" into sc-dev"
    },
    {
      "commit": "bda4575c36ad11b0870ccdb50dcb3a04573d6782",
      "tree": "9e5e3ed6228395c814e390c464e09b3d5922cf29",
      "parents": [
        "6d988df316533c7e189b266ad01e66356b6992d1"
      ],
      "author": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Fri Jul 17 16:41:18 2020 -0700"
      },
      "committer": {
        "name": "Nate Myren",
        "email": "ntmyren@google.com",
        "time": "Thu Mar 11 08:35:04 2021 -0800"
      },
      "message": "Add attributionTag to audio-recordings\n\n... by replacing packageName/uid/pid by the Identity class.\n\nThis allows us to track which parts of the app trigger audio-recordings.\n90% of the code is just sending around the additional parameters.\n\nThis adds it for the Java and native API.\n\nTest: atest CtsAppOpsTestCases\n            CtsNativeMediaAAudioTestCases\nFixes: 160150145\nChange-Id: Ibd7b884f7fcd4668a4e27f997e59cfc3217a9e89\n"
    },
    {
      "commit": "914c4f6fa355285a48aa08e40c6d2cd5f06431dd",
      "tree": "87c832fd892b54650992e2ae9f28820aef60e010",
      "parents": [
        "020bad28891e95877faf38ebb6a9197d0baa608e",
        "6537defa5f37719396964ba5e0fac5d53cf8f6fd"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Thu Mar 11 10:12:28 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 11 10:12:28 2021 +0000"
      },
      "message": "Merge \"Split getSurroundSound method in 2 methods.\" into sc-dev"
    },
    {
      "commit": "0361312f054b7680002a6a00a4471e4d4f24feb6",
      "tree": "928064a39192abab4133a278db69c2dc1a094070",
      "parents": [
        "676ad0ec681475a2fa69a7e6ef893706420cd246",
        "9da281d1007267dcd023fb2c405e5320e8bd8bb7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 10 07:45:23 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 10 07:45:23 2021 +0000"
      },
      "message": "Merge \"[AudioPolicyManager] Voice Downlink Sink device selection\""
    },
    {
      "commit": "a2631db38efdb2f7674e44f12eed00ca3d11ca26",
      "tree": "2db94a6b90bfaf497a8111c96c1759dbf581fc47",
      "parents": [
        "e51446c7a06e808a92bffee0830c5f3b0309d396",
        "c0d6981294c455ca2184696822fd76b24088060d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 09 10:50:24 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Mar 09 10:50:24 2021 +0000"
      },
      "message": "Merge \"use sp\u003cAudioEffect\u003e instead of unique_ptr\u003cAudioEffect\u003e\" am: 2b8b3f8f1e am: 5d1986329e am: c0d6981294\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1622460\n\nMUST ONLY BE SUBMITTED BY AUTOMERGER\n\nChange-Id: I34e465a652b06c0861c872e43ec4488f10678164\n"
    },
    {
      "commit": "2c90a4a4f35bbd6084372a337da4f3a85bd087a4",
      "tree": "c8835ee433f0c6b4416e333ad9ac2219842a3a3a",
      "parents": [
        "42a578a3b59e1af639c64e38f921f96593369d8b",
        "19fd6c584e86ea62f8ba43265361151bbbdfcb71"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 08 16:07:22 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 08 16:07:22 2021 +0000"
      },
      "message": "Merge \"[AudioPolicyManager] Voice Downlink Sink device selection\" into sc-dev"
    },
    {
      "commit": "19fd6c584e86ea62f8ba43265361151bbbdfcb71",
      "tree": "28f1da6a5fd453d70c0936794638213de825358e",
      "parents": [
        "4c8abb48d820d3e4012c81f2b297079f0cd317c3"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Feb 04 17:02:59 2021 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 08 14:06:14 2021 +0000"
      },
      "message": "[AudioPolicyManager] Voice Downlink Sink device selection\n\nAudio Policy selects the downlink sink device through the primary\noutput of the primary module.\nIt uses getNewOutputDevices on this output. If any routing strategy is\nactive on this output with an higher priority than voice call (it may\nhappen as order is defined in engine configuration file), downlink may\nbe temporarilly routed on this sink until the other client stops.\n\nThis CL changes the downlink sink device selection by\n-checking if a HW bridge is possible between the selected sink device\nfor voice call strategy and telephony RX device\n-falling back on \"legacy\" behavior if no HW bridge possible.\n\nBug: 182148766\nTest: call with and without music active.\n\nChange-Id: I8b6a6648a72f6f69abdf4d49c205ccbd0efeb082\n"
    },
    {
      "commit": "e7cd45de1fc548ffec7f010cb95f073bd810533b",
      "tree": "6765ed9211f5f457dd3d9300b89b23375178281e",
      "parents": [
        "66951b611984874303507124f482697e3818cef8",
        "2802b8693ac0db947517f1dbf91c76b9a1e3b592"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sun Mar 07 20:22:39 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Mar 07 20:22:39 2021 +0000"
      },
      "message": "Merge \"audio policy: fix STRATEGY_PHONE routing when not in call\" into sc-dev"
    },
    {
      "commit": "230397eff58f231cfcfa07b4409f222288212a7a",
      "tree": "b27ad92e766b45b073def4c9ad549b839024f110",
      "parents": [
        "93aed30ec74a4bec2805a2d05459042f1f427108"
      ],
      "author": {
        "name": "Jintao Zhu",
        "email": "zhujtcsieee@gmail.com",
        "time": "Sun Mar 07 14:15:10 2021 +0800"
      },
      "committer": {
        "name": "Jintao Zhu",
        "email": "zhujtcsieee@gmail.com",
        "time": "Sun Mar 07 22:14:57 2021 +0800"
      },
      "message": "use sp\u003cAudioEffect\u003e instead of unique_ptr\u003cAudioEffect\u003e\n\nAs a child class of RefBase, an AudioEffect object should be held by sp\u003c\u003e rather than by unique_ptr\u003c\u003e.\n\nIf you use unique_ptr\u003c\u003e to hold it, then later, someone else, on the other hand, may probably use sp\u003c\u003e to hold it, then in the future, the AudioEffect object may be deleted two times: one is from sp\u003c\u003e, the other from unique_ptr\u003c\u003e.\n\nThis may be detected by the destructor of class RefBase, with the log complaint \"RefBase: Explicit destruction,...\"\n\nTest: monkey test for one day and one night\n\nSigned-off-by: Jintao Zhu \u003czhujtcsieee@gmail.com\u003e\nChange-Id: I52e1df86899dfd8265aa80b4d3423936f66fcd47\n"
    },
    {
      "commit": "6fe794eff6281e027b62cb85d98c09ab6fab1a51",
      "tree": "9e11f7aa875b2180e0bdd236ab2f81d9290722a2",
      "parents": [
        "99e9d191421124e96565db27a2c46690e5b85cf5"
      ],
      "author": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Fri Mar 05 13:37:44 2021 -0800"
      },
      "committer": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Fri Mar 05 13:37:44 2021 -0800"
      },
      "message": "[LSC] Add LOCAL_LICENSE_KINDS to frameworks/av\n\nAdded SPDX-license-identifier-Apache-2.0 to:\n  services/audiopolicy/engine/config/tests/Android.bp\n  services/audiopolicy/engine/config/tests/resources/Android.bp\n\nBug: 68860345\nBug: 151177513\nBug: 151953481\n\nTest: m all\n\nExempt-From-Owner-Approval: janitorial work\nChange-Id: I2429c280b08a396d768974b0f23a73ea34538661\n"
    },
    {
      "commit": "6537defa5f37719396964ba5e0fac5d53cf8f6fd",
      "tree": "3fe4c420b6416176c84ea637fa8690804e55c949",
      "parents": [
        "c74fd5f5f0477cf2b2304c44969e7028fdb19096"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Tue Mar 02 13:46:59 2021 +0100"
      },
      "committer": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Thu Mar 04 12:03:15 2021 +0100"
      },
      "message": "Split getSurroundSound method in 2 methods.\n\nSplit getSurroundSound in:\ngetSurroundSound for formats supported by source android device\ngetReportedSurroundSound for formats reported by any connected sound\ndevice like soundbar etc.\n\nBug: 177990551\nTest: atest AudioPolicyManagerTestForHdmi\nChange-Id: Iac811315049f0598c930afd75f069f058080dad4\n"
    },
    {
      "commit": "d6f849e05b89f340dd7791784493737dd88f7d60",
      "tree": "f9eb5be0d275cbd69850fa8734629dd8323ffd3c",
      "parents": [
        "ef006238861be1549b96a66f6816e5a22bab220a",
        "80e5a4c67caac674c33040a4038b5129af6457e5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 03 22:04:43 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Mar 03 22:04:43 2021 +0000"
      },
      "message": "Merge changes from topic \"fix-b-36733185-vx-in-vts\" am: 3e28d78f8c am: 7fe0dbbf91 am: 80e5a4c67c\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1612779\n\nMUST ONLY BE SUBMITTED BY AUTOMERGER\n\nChange-Id: Ib3a61de3373710410d41f0015abbaa54738ba7de\n"
    }
  ],
  "next": "726677e6cc937fa6d8bcd93959a0d73853dc582c"
}
