)]}'
{
  "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "56786ac1035b158c23c150884d2d6415f9fbd1ea",
      "tree": "309e190927e12f9076359905ea5e2258f25700a1",
      "parents": [
        "445b895828747b82170610a75598a0615025918c"
      ],
      "author": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Thu Feb 25 15:24:36 2021 -0800"
      },
      "committer": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Thu Feb 25 15:24:36 2021 -0800"
      },
      "message": "[LSC] Add LOCAL_LICENSE_KINDS to frameworks/av\n\nAdded SPDX-license-identifier-Apache-2.0 to:\n  apex/Android.bp\n  apex/testing/Android.bp\n  camera/cameraserver/Android.bp\n  camera/tests/Android.mk\n  cmds/screenrecord/Android.bp\n  cmds/stagefright/Android.mk\n  drm/common/Android.bp\n  drm/drmserver/Android.bp\n  drm/libdrmframework/Android.bp\n  drm/libdrmframework/plugins/common/util/Android.bp\n  drm/libdrmframework/plugins/forward-lock/FwdLockEngine/Android.bp\n  drm/libdrmframework/plugins/forward-lock/internal-format/common/Android.bp\n  drm/libdrmframework/plugins/forward-lock/internal-format/converter/Android.bp\n  drm/libdrmframework/plugins/forward-lock/internal-format/decoder/Android.bp\n  drm/libdrmframework/plugins/passthru/Android.bp\n  drm/libmediadrm/Android.bp\n  drm/libmediadrm/fuzzer/Android.bp\n  drm/libmediadrm/protos/Android.bp\n  drm/libmediadrm/tests/Android.bp\n  drm/mediacas/plugins/clearkey/Android.bp\n  drm/mediacas/plugins/clearkey/tests/Android.bp\n  drm/mediacas/plugins/mock/Android.bp\n  drm/mediadrm/plugins/clearkey/common/Android.bp\n  drm/mediadrm/plugins/clearkey/default/Android.bp\n  drm/mediadrm/plugins/clearkey/default/tests/Android.bp\n  drm/mediadrm/plugins/mock/Android.bp\n  media/audioserver/Android.bp\n  media/bufferpool/1.0/Android.bp\n  media/bufferpool/1.0/vts/Android.bp\n  media/bufferpool/2.0/Android.bp\n  media/bufferpool/2.0/tests/Android.bp\n  media/codec2/components/aac/Android.bp\n  media/codec2/components/amr_nb_wb/Android.bp\n  media/codec2/components/aom/Android.bp\n  media/codec2/components/avc/Android.bp\n  media/codec2/components/base/Android.bp\n  media/codec2/components/cmds/Android.bp\n  media/codec2/components/flac/Android.bp\n  media/codec2/components/g711/Android.bp\n  media/codec2/components/gav1/Android.bp\n  media/codec2/components/gsm/Android.bp\n  media/codec2/components/hevc/Android.bp\n  media/codec2/components/mp3/Android.bp\n  media/codec2/components/mpeg2/Android.bp\n  media/codec2/components/mpeg4_h263/Android.bp\n  media/codec2/components/opus/Android.bp\n  media/codec2/components/raw/Android.bp\n  media/codec2/components/vorbis/Android.bp\n  media/codec2/components/vpx/Android.bp\n  media/codec2/components/xaac/Android.bp\n  media/codec2/core/Android.bp\n  media/codec2/faultinjection/Android.bp\n  media/codec2/fuzzer/Android.bp\n  media/codec2/hidl/1.0/utils/Android.bp\n  media/codec2/hidl/1.0/vts/functional/Android.bp\n  media/codec2/hidl/1.0/vts/functional/audio/Android.bp\n  media/codec2/hidl/1.0/vts/functional/common/Android.bp\n  media/codec2/hidl/1.0/vts/functional/component/Android.bp\n  media/codec2/hidl/1.0/vts/functional/master/Android.bp\n  media/codec2/hidl/1.0/vts/functional/video/Android.bp\n  media/codec2/hidl/1.1/utils/Android.bp\n  media/codec2/hidl/client/Android.bp\n  media/codec2/hidl/plugin/Android.bp\n  media/codec2/hidl/plugin/samples/Android.bp\n  media/codec2/hidl/services/Android.bp\n  media/codec2/sfplugin/Android.bp\n  media/codec2/sfplugin/tests/Android.bp\n  media/codec2/sfplugin/utils/Android.bp\n  media/codec2/tests/Android.bp\n  media/codec2/vndk/Android.bp\n  media/codecs/amrnb/common/Android.bp\n  media/codecs/amrnb/enc/fuzzer/Android.bp\n  media/codecs/amrnb/fuzzer/Android.bp\n  media/codecs/amrwb/dec/fuzzer/Android.bp\n  media/codecs/amrwb/enc/Android.bp\n  media/codecs/amrwb/enc/SampleCode/Android.bp\n  media/codecs/amrwb/enc/fuzzer/Android.bp\n  media/codecs/amrwb/enc/test/Android.bp\n  media/codecs/g711/decoder/Android.bp\n  media/codecs/g711/fuzzer/Android.bp\n  media/codecs/m4v_h263/dec/Android.bp\n  media/codecs/m4v_h263/dec/test/Android.bp\n  media/codecs/m4v_h263/fuzzer/Android.bp\n  media/codecs/mp3dec/fuzzer/Android.bp\n  media/extractors/Android.bp\n  media/extractors/aac/Android.bp\n  media/extractors/amr/Android.bp\n  media/extractors/flac/Android.bp\n  media/extractors/fuzzers/Android.bp\n  media/extractors/midi/Android.bp\n  media/extractors/mkv/Android.bp\n  media/extractors/mp3/Android.bp\n  media/extractors/mp4/Android.bp\n  media/extractors/mpeg2/Android.bp\n  media/extractors/ogg/Android.bp\n  media/extractors/tests/Android.bp\n  media/extractors/wav/Android.bp\n  media/img_utils/Android.bp\n  media/libaaudio/Android.bp\n  media/libaaudio/examples/Android.bp\n  media/libaaudio/examples/input_monitor/Android.bp\n  media/libaaudio/examples/loopback/Android.bp\n  media/libaaudio/examples/write_sine/Android.bp\n  media/libaaudio/src/Android.bp\n  media/libaaudio/tests/Android.bp\n  media/libaudioclient/Android.bp\n  media/libaudioclient/fuzzer/Android.bp\n  media/libaudioclient/tests/Android.bp\n  media/libaudiofoundation/Android.bp\n  media/libaudiofoundation/tests/Android.bp\n  media/libaudiohal/Android.bp\n  media/libaudiohal/impl/Android.bp\n  media/libaudioprocessing/Android.bp\n  media/libaudioprocessing/audio-resampler/Android.bp\n  media/libaudioprocessing/tests/Android.bp\n  media/libaudioprocessing/tests/fuzzer/Android.bp\n  media/libcpustats/Android.bp\n  media/libdatasource/Android.bp\n  media/libeffects/config/Android.bp\n  media/libeffects/downmix/Android.bp\n  media/libeffects/downmix/tests/Android.bp\n  media/libeffects/dynamicsproc/Android.bp\n  media/libeffects/factory/Android.bp\n  media/libeffects/hapticgenerator/Android.bp\n  media/libeffects/loudness/Android.bp\n  media/libeffects/lvm/benchmarks/Android.bp\n  media/libeffects/lvm/lib/Android.bp\n  media/libeffects/lvm/tests/Android.bp\n  media/libeffects/lvm/wrapper/Android.bp\n  media/libeffects/preprocessing/Android.bp\n  media/libeffects/preprocessing/benchmarks/Android.bp\n  media/libeffects/preprocessing/tests/Android.bp\n  media/libeffects/proxy/Android.bp\n  media/libeffects/visualizer/Android.bp\n  media/libheif/Android.bp\n  media/libmedia/Android.bp\n  media/libmedia/tests/codeclist/Android.bp\n  media/libmedia/tests/mediaplayer/Android.bp\n  media/libmedia/xsd/Android.bp\n  media/libmedia/xsd/vts/Android.bp\n  media/libmediahelper/Android.bp\n  media/libmediahelper/tests/Android.bp\n  media/libmediametrics/Android.bp\n  media/libmediaplayerservice/Android.bp\n  media/libmediaplayerservice/datasource/Android.bp\n  media/libmediaplayerservice/nuplayer/Android.bp\n  media/libmediaplayerservice/tests/Android.bp\n  media/libmediaplayerservice/tests/stagefrightRecorder/Android.bp\n  media/libmediatranscoding/Android.bp\n  media/libmediatranscoding/tests/Android.bp\n  media/libmediatranscoding/transcoder/Android.bp\n  media/libmediatranscoding/transcoder/benchmark/Android.bp\n  media/libmediatranscoding/transcoder/tests/Android.bp\n  media/libmediatranscoding/transcoder/tests/fuzzer/Android.bp\n  media/libnbaio/Android.bp\n  media/libnblog/Android.bp\n  media/libshmem/Android.bp\n  media/libstagefright/Android.bp\n  media/libstagefright/bqhelper/Android.bp\n  media/libstagefright/bqhelper/tests/Android.bp\n  media/libstagefright/codecs/aacdec/Android.bp\n  media/libstagefright/codecs/aacenc/Android.bp\n  media/libstagefright/codecs/amrnb/dec/Android.bp\n  media/libstagefright/codecs/amrnb/enc/Android.bp\n  media/libstagefright/codecs/amrwbenc/Android.bp\n  media/libstagefright/codecs/avcdec/Android.bp\n  media/libstagefright/codecs/avcenc/Android.bp\n  media/libstagefright/codecs/common/Android.bp\n  media/libstagefright/codecs/flac/dec/Android.bp\n  media/libstagefright/codecs/flac/enc/Android.bp\n  media/libstagefright/codecs/g711/dec/Android.bp\n  media/libstagefright/codecs/gsm/dec/Android.bp\n  media/libstagefright/codecs/hevcdec/Android.bp\n  media/libstagefright/codecs/m4v_h263/dec/Android.bp\n  media/libstagefright/codecs/m4v_h263/enc/Android.bp\n  media/libstagefright/codecs/mp3dec/Android.bp\n  media/libstagefright/codecs/mpeg2dec/Android.bp\n  media/libstagefright/codecs/on2/dec/Android.bp\n  media/libstagefright/codecs/on2/enc/Android.bp\n  media/libstagefright/codecs/opus/dec/Android.bp\n  media/libstagefright/codecs/raw/Android.bp\n  media/libstagefright/codecs/vorbis/dec/Android.bp\n  media/libstagefright/codecs/xaacdec/Android.bp\n  media/libstagefright/colorconversion/Android.bp\n  media/libstagefright/data/Android.bp\n  media/libstagefright/filters/Android.bp\n  media/libstagefright/flac/dec/Android.bp\n  media/libstagefright/flac/dec/test/Android.bp\n  media/libstagefright/foundation/Android.bp\n  media/libstagefright/foundation/tests/AVCUtils/Android.bp\n  media/libstagefright/foundation/tests/Android.bp\n  media/libstagefright/foundation/tests/OpusHeader/Android.bp\n  media/libstagefright/foundation/tests/colorutils/Android.bp\n  media/libstagefright/http/Android.bp\n  media/libstagefright/httplive/Android.bp\n  media/libstagefright/id3/Android.bp\n  media/libstagefright/id3/test/Android.bp\n  media/libstagefright/mpeg2ts/Android.bp\n  media/libstagefright/mpeg2ts/test/Android.bp\n  media/libstagefright/omx/Android.bp\n  media/libstagefright/omx/tests/Android.bp\n  media/libstagefright/renderfright/Android.bp\n  media/libstagefright/renderfright/tests/Android.bp\n  media/libstagefright/rtsp/Android.bp\n  media/libstagefright/tests/Android.bp\n  media/libstagefright/tests/ESDS/Android.bp\n  media/libstagefright/tests/HEVC/Android.bp\n  media/libstagefright/tests/extractorFactory/Android.bp\n  media/libstagefright/tests/fuzzers/Android.bp\n  media/libstagefright/tests/mediacodec/Android.bp\n  media/libstagefright/tests/metadatautils/Android.bp\n  media/libstagefright/tests/writer/Android.bp\n  media/libstagefright/timedtext/Android.bp\n  media/libstagefright/timedtext/test/Android.bp\n  media/libstagefright/webm/Android.bp\n  media/libstagefright/webm/tests/Android.bp\n  media/libstagefright/writer_fuzzers/Android.bp\n  media/libstagefright/xmlparser/Android.bp\n  media/libstagefright/xmlparser/test/Android.bp\n  media/libstagefright/xmlparser/vts/Android.bp\n  media/libwatchdog/Android.bp\n  media/mediaserver/Android.bp\n  media/mtp/Android.bp\n  media/mtp/tests/MtpFfsHandleTest/Android.bp\n  media/mtp/tests/MtpFuzzer/Android.bp\n  media/mtp/tests/PosixAsyncIOTest/Android.bp\n  media/tests/benchmark/Android.bp\n  media/tests/benchmark/MediaBenchmarkTest/Android.bp\n  media/tests/benchmark/MediaBenchmarkTest/src/main/cpp/Android.bp\n  media/tests/benchmark/src/native/common/Android.bp\n  media/tests/benchmark/src/native/decoder/Android.bp\n  media/tests/benchmark/src/native/encoder/Android.bp\n  media/tests/benchmark/src/native/extractor/Android.bp\n  media/tests/benchmark/src/native/muxer/Android.bp\n  media/tests/benchmark/tests/Android.bp\n  media/utils/Android.bp\n  media/utils/fuzzers/Android.bp\n  media/utils/tests/Android.bp\n  services/audioflinger/Android.bp\n  services/audiopolicy/Android.bp\n  services/audiopolicy/common/Android.bp\n  services/audiopolicy/common/managerdefinitions/Android.bp\n  services/audiopolicy/config/Android.bp\n  services/audiopolicy/engine/common/Android.bp\n  services/audiopolicy/engine/config/Android.bp\n  services/audiopolicy/engine/config/tests/Android.bp\n  services/audiopolicy/engine/config/tests/resources/Android.bp\n  services/audiopolicy/engine/interface/Android.bp\n  services/audiopolicy/engineconfigurable/Android.bp\n  services/audiopolicy/engineconfigurable/config/Android.bp\n  services/audiopolicy/engineconfigurable/config/example/automotive/Android.bp\n  services/audiopolicy/engineconfigurable/config/example/caremu/Android.bp\n  services/audiopolicy/engineconfigurable/config/example/phone/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/Car/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/CarEmu/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/Phone/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/SettingsNoInput/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/SettingsNoOutput/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/plugin/Android.bp\n  services/audiopolicy/engineconfigurable/tools/Android.bp\n  services/audiopolicy/engineconfigurable/wrapper/Android.bp\n  services/audiopolicy/enginedefault/Android.bp\n  services/audiopolicy/enginedefault/config/example/Android.bp\n  services/audiopolicy/fuzzer/Android.bp\n  services/audiopolicy/fuzzer/resources/Android.bp\n  services/audiopolicy/managerdefault/Android.bp\n  services/audiopolicy/service/Android.bp\n  services/audiopolicy/tests/Android.bp\n  services/audiopolicy/tests/resources/Android.bp\n  services/camera/libcameraservice/Android.bp\n  services/camera/libcameraservice/fuzzer/Android.bp\n  services/camera/libcameraservice/libcameraservice_fuzzer/Android.bp\n  services/camera/libcameraservice/tests/Android.mk\n  services/mediacodec/Android.bp\n  services/mediacodec/registrant/Android.bp\n  services/mediaextractor/Android.bp\n  services/medialog/Android.bp\n  services/medialog/fuzzer/Android.bp\n  services/mediametrics/Android.bp\n  services/mediametrics/benchmarks/Android.bp\n  services/mediametrics/fuzzer/Android.bp\n  services/mediametrics/tests/Android.bp\n  services/mediaresourcemanager/Android.bp\n  services/mediaresourcemanager/fuzzer/Android.bp\n  services/mediaresourcemanager/test/Android.bp\n  services/mediatranscoding/Android.bp\n  services/mediatranscoding/tests/Android.bp\n  services/mediatranscoding/tests/TranscodingUidPolicyTestApp/Android.bp\n  services/minijail/Android.bp\n  services/oboeservice/Android.bp\n  services/tuner/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to:\n  media/codecs/amrnb/dec/Android.bp\n  media/codecs/amrnb/dec/test/Android.bp\n  media/codecs/amrnb/enc/Android.bp\n  media/codecs/amrnb/enc/test/Android.bp\n  media/codecs/amrwb/dec/Android.bp\n  media/codecs/amrwb/dec/test/Android.bp\n  media/codecs/m4v_h263/enc/Android.bp\n  media/codecs/m4v_h263/enc/test/Android.bp\n  media/codecs/mp3dec/Android.bp\n  media/codecs/mp3dec/test/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD\n    SPDX-license-identifier-MIT SPDX-license-identifier-Unicode-DFS\n    legacy_by_exception_only\nto:\n  Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT\n    SPDX-license-identifier-Unicode-DFS\nto:\n  camera/Android.bp\n  camera/ndk/Android.bp\n  media/ndk/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 legacy_by_exception_only\nto:\n  drm/mediadrm/plugins/clearkey/hidl/Android.bp\n\nBug: 68860345\nBug: 151177513\nBug: 151953481\n\nTest: m all\n\nExempt-From-Owner-Approval: janitorial work\nChange-Id: I4e4ecdbb43c90f5c3cd8e5ccec51b39fa0b5ae9b\n"
    },
    {
      "commit": "5739fff71185219a5dcc56a12620948164287608",
      "tree": "8f123bc9e9ad5d3ebc0aee78a2ed7bb3b1dbc07b",
      "parents": [
        "5530dd3df904c1b22ee4098bec1b801c379b8d4f"
      ],
      "author": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Thu Feb 25 11:40:14 2021 -0800"
      },
      "committer": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Thu Feb 25 11:45:35 2021 -0800"
      },
      "message": "Revert \"[LSC] Add LOCAL_LICENSE_KINDS to frameworks/av\"\n\nThis reverts commit 3908e7be0b90e95ffb1f0e3db9274b2cbef57728.\n\nThis reverts commit c837504ed5b9c708896bb97b1ef9225c376816a7.\n\nThis reverts commit 948e6aace91d16acfaa97763c7228029a1c2afe0.\n\nChange-Id: Ib53daa5debdae7062155add5a70a5b3d5fcd1050\n"
    },
    {
      "commit": "3908e7be0b90e95ffb1f0e3db9274b2cbef57728",
      "tree": "25f80f465f44835875bad4819ece00be424aacee",
      "parents": [
        "2ba29909861b3600881468bb5ae9b25f5f30a20e"
      ],
      "author": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Tue Feb 23 14:27:06 2021 -0800"
      },
      "committer": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Tue Feb 23 14:27:06 2021 -0800"
      },
      "message": "[LSC] Add LOCAL_LICENSE_KINDS to frameworks/av\n\nAdded SPDX-license-identifier-Apache-2.0 to:\n  media/audioserver/Android.bp\n  media/codec2/hidl/plugin/Android.bp\n  media/codec2/hidl/plugin/samples/Android.bp\n  media/libaudioclient/fuzzer/Android.bp\n  media/libeffects/hapticgenerator/Android.bp\n  media/libeffects/visualizer/Android.bp\n  media/libmediatranscoding/transcoder/Android.bp\n  media/libmediatranscoding/transcoder/benchmark/Android.bp\n  media/libmediatranscoding/transcoder/tests/Android.bp\n  media/libmediatranscoding/transcoder/tests/fuzzer/Android.bp\n  media/libshmem/Android.bp\n  media/libstagefright/renderfright/Android.bp\n  media/libstagefright/renderfright/tests/Android.bp\n  media/mtp/tests/MtpFuzzer/Android.bp\n  media/mtp/tests/PosixAsyncIOTest/Android.bp\n  media/utils/tests/Android.bp\n  services/audiopolicy/engine/config/tests/Android.bp\n  services/audiopolicy/engine/config/tests/resources/Android.bp\n  services/audiopolicy/fuzzer/Android.bp\n  services/audiopolicy/fuzzer/resources/Android.bp\n  services/audiopolicy/service/Android.bp\n  services/mediatranscoding/tests/TranscodingUidPolicyTestApp/Android.bp\n  services/tuner/Android.bp\n\nBug: 68860345\nBug: 151177513\nBug: 151953481\n\nTest: m all\n\nExempt-From-Owner-Approval: janitorial work\nChange-Id: I3813238d175c97c8a083c737b28fe7c016506c22\n"
    },
    {
      "commit": "948e6aace91d16acfaa97763c7228029a1c2afe0",
      "tree": "e1213aacab8f21fd8bf9dcd02dbc82741013379f",
      "parents": [
        "367398038247b09a3f92e05affac5f9b1f5e2f90"
      ],
      "author": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Fri Feb 12 21:02:31 2021 -0800"
      },
      "committer": {
        "name": "Bob Badour",
        "email": "bbadour@google.com",
        "time": "Tue Feb 16 04:09:57 2021 -0800"
      },
      "message": "[LSC] Add LOCAL_LICENSE_KINDS to frameworks/av\n\nAdded SPDX-license-identifier-Apache-2.0 to:\n  apex/Android.bp\n  camera/cameraserver/Android.bp\n  camera/tests/Android.mk\n  cmds/screenrecord/Android.bp\n  cmds/stagefright/Android.mk\n  drm/common/Android.bp\n  drm/drmserver/Android.bp\n  drm/libdrmframework/Android.bp\n  drm/libdrmframework/plugins/common/util/Android.bp\n  drm/libdrmframework/plugins/forward-lock/FwdLockEngine/Android.bp\n  drm/libdrmframework/plugins/forward-lock/internal-format/common/Android.bp\n  drm/libdrmframework/plugins/forward-lock/internal-format/converter/Android.bp\n  drm/libdrmframework/plugins/forward-lock/internal-format/decoder/Android.bp\n  drm/libdrmframework/plugins/passthru/Android.bp\n  drm/libmediadrm/Android.bp\n  drm/libmediadrm/fuzzer/Android.bp\n  drm/libmediadrm/protos/Android.bp\n  drm/libmediadrm/tests/Android.bp\n  drm/mediacas/plugins/clearkey/Android.bp\n  drm/mediacas/plugins/clearkey/tests/Android.bp\n  drm/mediacas/plugins/mock/Android.bp\n  drm/mediadrm/plugins/clearkey/common/Android.bp\n  drm/mediadrm/plugins/clearkey/default/Android.bp\n  drm/mediadrm/plugins/clearkey/default/tests/Android.bp\n  drm/mediadrm/plugins/mock/Android.bp\n  media/audioserver/Android.mk\n  media/bufferpool/1.0/Android.bp\n  media/bufferpool/1.0/vts/Android.bp\n  media/bufferpool/2.0/Android.bp\n  media/bufferpool/2.0/tests/Android.bp\n  media/codec2/components/aac/Android.bp\n  media/codec2/components/amr_nb_wb/Android.bp\n  media/codec2/components/aom/Android.bp\n  media/codec2/components/avc/Android.bp\n  media/codec2/components/base/Android.bp\n  media/codec2/components/cmds/Android.bp\n  media/codec2/components/flac/Android.bp\n  media/codec2/components/g711/Android.bp\n  media/codec2/components/gav1/Android.bp\n  media/codec2/components/gsm/Android.bp\n  media/codec2/components/hevc/Android.bp\n  media/codec2/components/mp3/Android.bp\n  media/codec2/components/mpeg2/Android.bp\n  media/codec2/components/mpeg4_h263/Android.bp\n  media/codec2/components/opus/Android.bp\n  media/codec2/components/raw/Android.bp\n  media/codec2/components/vorbis/Android.bp\n  media/codec2/components/vpx/Android.bp\n  media/codec2/components/xaac/Android.bp\n  media/codec2/core/Android.bp\n  media/codec2/faultinjection/Android.bp\n  media/codec2/fuzzer/Android.bp\n  media/codec2/hidl/1.0/utils/Android.bp\n  media/codec2/hidl/1.0/vts/functional/Android.bp\n  media/codec2/hidl/1.0/vts/functional/audio/Android.bp\n  media/codec2/hidl/1.0/vts/functional/common/Android.bp\n  media/codec2/hidl/1.0/vts/functional/component/Android.bp\n  media/codec2/hidl/1.0/vts/functional/master/Android.bp\n  media/codec2/hidl/1.0/vts/functional/video/Android.bp\n  media/codec2/hidl/1.1/utils/Android.bp\n  media/codec2/hidl/client/Android.bp\n  media/codec2/hidl/services/Android.bp\n  media/codec2/sfplugin/Android.bp\n  media/codec2/sfplugin/tests/Android.bp\n  media/codec2/sfplugin/utils/Android.bp\n  media/codec2/tests/Android.bp\n  media/codec2/vndk/Android.bp\n  media/codecs/amrnb/common/Android.bp\n  media/codecs/amrnb/enc/fuzzer/Android.bp\n  media/codecs/amrnb/fuzzer/Android.bp\n  media/codecs/amrwb/dec/fuzzer/Android.bp\n  media/codecs/amrwb/enc/Android.bp\n  media/codecs/amrwb/enc/SampleCode/Android.bp\n  media/codecs/amrwb/enc/fuzzer/Android.bp\n  media/codecs/amrwb/enc/test/Android.bp\n  media/codecs/g711/decoder/Android.bp\n  media/codecs/g711/fuzzer/Android.bp\n  media/codecs/m4v_h263/dec/Android.bp\n  media/codecs/m4v_h263/dec/test/Android.bp\n  media/codecs/m4v_h263/fuzzer/Android.bp\n  media/codecs/mp3dec/fuzzer/Android.bp\n  media/extractors/Android.bp\n  media/extractors/aac/Android.bp\n  media/extractors/amr/Android.bp\n  media/extractors/flac/Android.bp\n  media/extractors/fuzzers/Android.bp\n  media/extractors/midi/Android.bp\n  media/extractors/mkv/Android.bp\n  media/extractors/mp3/Android.bp\n  media/extractors/mp4/Android.bp\n  media/extractors/mpeg2/Android.bp\n  media/extractors/ogg/Android.bp\n  media/extractors/tests/Android.bp\n  media/extractors/wav/Android.bp\n  media/img_utils/Android.bp\n  media/libaaudio/Android.bp\n  media/libaaudio/examples/Android.bp\n  media/libaaudio/examples/input_monitor/Android.bp\n  media/libaaudio/examples/loopback/Android.bp\n  media/libaaudio/examples/write_sine/Android.bp\n  media/libaaudio/src/Android.bp\n  media/libaaudio/tests/Android.bp\n  media/libaudioclient/Android.bp\n  media/libaudioclient/tests/Android.bp\n  media/libaudiofoundation/Android.bp\n  media/libaudiofoundation/tests/Android.bp\n  media/libaudiohal/Android.bp\n  media/libaudiohal/impl/Android.bp\n  media/libaudioprocessing/Android.bp\n  media/libaudioprocessing/audio-resampler/Android.bp\n  media/libaudioprocessing/tests/Android.bp\n  media/libaudioprocessing/tests/fuzzer/Android.bp\n  media/libcpustats/Android.bp\n  media/libdatasource/Android.bp\n  media/libeffects/config/Android.bp\n  media/libeffects/downmix/Android.bp\n  media/libeffects/downmix/tests/Android.bp\n  media/libeffects/dynamicsproc/Android.bp\n  media/libeffects/factory/Android.bp\n  media/libeffects/loudness/Android.bp\n  media/libeffects/lvm/benchmarks/Android.bp\n  media/libeffects/lvm/lib/Android.bp\n  media/libeffects/lvm/tests/Android.bp\n  media/libeffects/lvm/wrapper/Android.bp\n  media/libeffects/preprocessing/Android.bp\n  media/libeffects/preprocessing/benchmarks/Android.bp\n  media/libeffects/preprocessing/tests/Android.bp\n  media/libeffects/proxy/Android.bp\n  media/libeffects/visualizer/Android.mk\n  media/libheif/Android.bp\n  media/libmedia/Android.bp\n  media/libmedia/tests/codeclist/Android.bp\n  media/libmedia/xsd/Android.bp\n  media/libmedia/xsd/vts/Android.bp\n  media/libmediahelper/Android.bp\n  media/libmediahelper/tests/Android.bp\n  media/libmediametrics/Android.bp\n  media/libmediaplayerservice/Android.bp\n  media/libmediaplayerservice/datasource/Android.bp\n  media/libmediaplayerservice/nuplayer/Android.bp\n  media/libmediaplayerservice/tests/Android.bp\n  media/libmediaplayerservice/tests/stagefrightRecorder/Android.bp\n  media/libmediatranscoding/Android.bp\n  media/libmediatranscoding/tests/Android.bp\n  media/libnbaio/Android.bp\n  media/libnblog/Android.bp\n  media/libstagefright/Android.bp\n  media/libstagefright/bqhelper/Android.bp\n  media/libstagefright/bqhelper/tests/Android.bp\n  media/libstagefright/codecs/aacdec/Android.bp\n  media/libstagefright/codecs/aacenc/Android.bp\n  media/libstagefright/codecs/amrnb/dec/Android.bp\n  media/libstagefright/codecs/amrnb/enc/Android.bp\n  media/libstagefright/codecs/amrwbenc/Android.bp\n  media/libstagefright/codecs/avcdec/Android.bp\n  media/libstagefright/codecs/avcenc/Android.bp\n  media/libstagefright/codecs/common/Android.bp\n  media/libstagefright/codecs/flac/dec/Android.bp\n  media/libstagefright/codecs/flac/enc/Android.bp\n  media/libstagefright/codecs/g711/dec/Android.bp\n  media/libstagefright/codecs/gsm/dec/Android.bp\n  media/libstagefright/codecs/hevcdec/Android.bp\n  media/libstagefright/codecs/m4v_h263/dec/Android.bp\n  media/libstagefright/codecs/m4v_h263/enc/Android.bp\n  media/libstagefright/codecs/mp3dec/Android.bp\n  media/libstagefright/codecs/mpeg2dec/Android.bp\n  media/libstagefright/codecs/on2/dec/Android.bp\n  media/libstagefright/codecs/on2/enc/Android.bp\n  media/libstagefright/codecs/opus/dec/Android.bp\n  media/libstagefright/codecs/raw/Android.bp\n  media/libstagefright/codecs/vorbis/dec/Android.bp\n  media/libstagefright/codecs/xaacdec/Android.bp\n  media/libstagefright/colorconversion/Android.bp\n  media/libstagefright/data/Android.bp\n  media/libstagefright/filters/Android.bp\n  media/libstagefright/flac/dec/Android.bp\n  media/libstagefright/flac/dec/test/Android.bp\n  media/libstagefright/foundation/Android.bp\n  media/libstagefright/foundation/tests/AVCUtils/Android.bp\n  media/libstagefright/foundation/tests/Android.bp\n  media/libstagefright/foundation/tests/OpusHeader/Android.bp\n  media/libstagefright/foundation/tests/colorutils/Android.bp\n  media/libstagefright/http/Android.bp\n  media/libstagefright/httplive/Android.bp\n  media/libstagefright/id3/Android.bp\n  media/libstagefright/id3/test/Android.bp\n  media/libstagefright/mpeg2ts/Android.bp\n  media/libstagefright/mpeg2ts/test/Android.bp\n  media/libstagefright/omx/Android.bp\n  media/libstagefright/omx/tests/Android.bp\n  media/libstagefright/rtsp/Android.bp\n  media/libstagefright/tests/Android.bp\n  media/libstagefright/tests/ESDS/Android.bp\n  media/libstagefright/tests/HEVC/Android.bp\n  media/libstagefright/tests/extractorFactory/Android.bp\n  media/libstagefright/tests/fuzzers/Android.bp\n  media/libstagefright/tests/mediacodec/Android.bp\n  media/libstagefright/tests/metadatautils/Android.bp\n  media/libstagefright/tests/writer/Android.bp\n  media/libstagefright/timedtext/Android.bp\n  media/libstagefright/timedtext/test/Android.bp\n  media/libstagefright/webm/Android.bp\n  media/libstagefright/webm/tests/Android.bp\n  media/libstagefright/writer_fuzzers/Android.bp\n  media/libstagefright/xmlparser/Android.bp\n  media/libstagefright/xmlparser/test/Android.bp\n  media/libstagefright/xmlparser/vts/Android.bp\n  media/libwatchdog/Android.bp\n  media/mediaserver/Android.bp\n  media/mtp/Android.bp\n  media/mtp/tests/Android.bp\n  media/tests/benchmark/Android.bp\n  media/tests/benchmark/MediaBenchmarkTest/Android.bp\n  media/tests/benchmark/MediaBenchmarkTest/src/main/cpp/Android.bp\n  media/tests/benchmark/src/native/common/Android.bp\n  media/tests/benchmark/src/native/decoder/Android.bp\n  media/tests/benchmark/src/native/encoder/Android.bp\n  media/tests/benchmark/src/native/extractor/Android.bp\n  media/tests/benchmark/src/native/muxer/Android.bp\n  media/tests/benchmark/tests/Android.bp\n  media/utils/Android.bp\n  media/utils/fuzzers/Android.bp\n  services/audioflinger/Android.bp\n  services/audiopolicy/Android.bp\n  services/audiopolicy/common/Android.bp\n  services/audiopolicy/common/managerdefinitions/Android.bp\n  services/audiopolicy/config/Android.bp\n  services/audiopolicy/engine/common/Android.bp\n  services/audiopolicy/engine/config/Android.bp\n  services/audiopolicy/engine/interface/Android.bp\n  services/audiopolicy/engineconfigurable/Android.bp\n  services/audiopolicy/engineconfigurable/config/Android.bp\n  services/audiopolicy/engineconfigurable/config/example/automotive/Android.bp\n  services/audiopolicy/engineconfigurable/config/example/caremu/Android.bp\n  services/audiopolicy/engineconfigurable/config/example/phone/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/plugin/Android.bp\n  services/audiopolicy/engineconfigurable/tools/Android.bp\n  services/audiopolicy/engineconfigurable/wrapper/Android.bp\n  services/audiopolicy/enginedefault/Android.bp\n  services/audiopolicy/enginedefault/config/example/Android.bp\n  services/audiopolicy/manager/Android.mk\n  services/audiopolicy/managerdefault/Android.bp\n  services/audiopolicy/service/Android.mk\n  services/audiopolicy/tests/Android.bp\n  services/camera/libcameraservice/Android.bp\n  services/camera/libcameraservice/fuzzer/Android.bp\n  services/camera/libcameraservice/tests/Android.mk\n  services/mediacodec/Android.bp\n  services/mediacodec/registrant/Android.bp\n  services/mediaextractor/Android.bp\n  services/medialog/Android.bp\n  services/medialog/fuzzer/Android.bp\n  services/mediametrics/Android.bp\n  services/mediametrics/benchmarks/Android.bp\n  services/mediametrics/fuzzer/Android.bp\n  services/mediametrics/tests/Android.bp\n  services/mediaresourcemanager/Android.bp\n  services/mediaresourcemanager/fuzzer/Android.bp\n  services/mediaresourcemanager/test/Android.bp\n  services/mediatranscoding/Android.bp\n  services/mediatranscoding/tests/Android.bp\n  services/minijail/Android.bp\n  services/oboeservice/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD to:\n  media/codecs/amrnb/dec/Android.bp\n  media/codecs/amrnb/dec/test/Android.bp\n  media/codecs/amrnb/enc/Android.bp\n  media/codecs/amrnb/enc/test/Android.bp\n  media/codecs/amrwb/dec/Android.bp\n  media/codecs/amrwb/dec/test/Android.bp\n  media/codecs/m4v_h263/enc/Android.bp\n  media/codecs/m4v_h263/enc/test/Android.bp\n  media/codecs/mp3dec/Android.bp\n  media/codecs/mp3dec/test/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD\n    SPDX-license-identifier-MIT SPDX-license-identifier-Unicode-DFS\n    legacy_by_exception_only\nto:\n  Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-MIT\n    SPDX-license-identifier-Unicode-DFS\nto:\n  apex/testing/Android.bp\n  camera/Android.bp\n  camera/ndk/Android.bp\n  media/ndk/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/Car/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/CarEmu/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/Phone/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/SettingsNoInput/Android.bp\n  services/audiopolicy/engineconfigurable/parameter-framework/examples/SettingsNoOutput/Android.bp\n  services/audiopolicy/tests/resources/Android.bp\n\nAdded SPDX-license-identifier-Apache-2.0 legacy_by_exception_only\nto:\n  drm/mediadrm/plugins/clearkey/hidl/Android.bp\n\nBug: 68860345\nBug: 151177513\nBug: 151953481\n\nTest: m all\n\nExempt-From-Owner-Approval: janitorial work\n\nChange-Id: I8360756b326b891b56629127091540310851c941\nMerged-in: Ic169757d64ad8da7eebd0e1febdcbfb467fe81f4\nMerged-in: Ifa3fefe5dc12229e8043a54ffd1f3958d6b02310\nMerged-in: I1e32081a069c4c1b25aa200dcdb165c0feb07b8a\nMerged-in: Ib2050becaf89b8e4db5867bc601dedeb4eb8ebd2\nMerged-in: I5a4d51fb1244ed49bcd70e446aaa26e2aa8ed7b1\n"
    },
    {
      "commit": "788fa3fdf283c6aae27ea86dac80bcaf0ad9493c",
      "tree": "847696fceabe1387a5c4bccd7e7d2164f7f76655",
      "parents": [
        "1dff892a340323ad53b661a33c32e1c2a3da51b7",
        "11b6592323f9d3f9a68ef557893c90e391e79111"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 15 08:45:19 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 15 08:45:19 2021 +0000"
      },
      "message": "Merge \"audiopolicy: allows to fallback or not on default strategy/group\" into sc-dev"
    },
    {
      "commit": "11b6592323f9d3f9a68ef557893c90e391e79111",
      "tree": "4a68483b3bb1728ed0779f9e53971285321e57db",
      "parents": [
        "25521834a63d67308520da5bced97ed517a30a72"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Sep 24 16:59:08 2020 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 11 09:44:25 2021 +0100"
      },
      "message": "audiopolicy: allows to fallback or not on default strategy/group\n\nWhen attributes does not match a group or strategy, it falls back on\nrespectively default group or strategy.\n\nThis CL allows to control whether fallback shall be done or not.\nIt allows for example to detect orphans attributes and prevent from\noverwritting volume for example.\n\nBug: 179759299\nTest: make\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: Ieeeab48ca3ec2b031b7a99e2e7ab26d2e4d70535\n"
    },
    {
      "commit": "5aa6e1c010f3d4bab1f8db9a2d142bc6a740ab7d",
      "tree": "05765908630da66de745cca0f24317e080fac180",
      "parents": [
        "f543afb203285bf2bbff0a289fa30ed810266827",
        "877b27e1cd14cb20bed90ce95ff5e22b3f77188d"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Tue Feb 09 12:44:10 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 09 12:44:10 2021 +0000"
      },
      "message": "Merge \"Fixing crash in surround sound settings which occurs due to API getSurroundSound.\" into sc-dev"
    },
    {
      "commit": "3e475acc0f72a7325a2505b21baa24bd56bcf841",
      "tree": "1fdbfc45e5ce1e771787403d8c5d1c25e685c69e",
      "parents": [
        "25521834a63d67308520da5bced97ed517a30a72",
        "ba9053b49cd280b59d6db46eac893367f7919a44"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 08 19:09:07 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 08 19:09:07 2021 +0000"
      },
      "message": "Merge \"audiopolicy: add support to load custom audiopolicymanager.\" into sc-dev"
    },
    {
      "commit": "ec53dfa4b599227e4e3663bdcbfb1d1dfacc29a0",
      "tree": "59c8f96f9e0be9d20018bb3f0b957859dae5aeff",
      "parents": [
        "a492bbee4bad65856189a8e7d334aa73d8b1cfa9",
        "7f2285b1e120192e4368e5813b86370c66cfd544"
      ],
      "author": {
        "name": "Jeongik Cha",
        "email": "jeongik@google.com",
        "time": "Mon Feb 08 02:04:16 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 08 02:04:16 2021 +0000"
      },
      "message": "Merge \"Specify version for aidl_interface explicitly\" into sc-dev"
    },
    {
      "commit": "ba9053b49cd280b59d6db46eac893367f7919a44",
      "tree": "1ce17589d7f06544452f73c1a731a22d71b24936",
      "parents": [
        "1570f85e10f4b3565463cb52cf7080b2ead8021b"
      ],
      "author": {
        "name": "Jaideep Sharma",
        "email": "quic_jaidshar@quicinc.com",
        "time": "Mon Jan 25 21:24:26 2021 +0530"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Feb 05 21:30:22 2021 +0000"
      },
      "message": "audiopolicy: add support to load custom audiopolicymanager.\n\nThis change provides a mechanism to load a custom implementation of\nAudioPolicyManager.\nIf custom library is present load that otherwise fallback to default\nAudioPolicyManager.\n\nThis custom implementation should reside under system_ext or product\npartition and should be compliant to xTS test suites.\n\n- To use this create a library viz. libaudiopolicymanagericustom.so by\n  extending AudioPolicyManager in system_ext or product partition,\n  expose createAudioPolicyManager \u0026 destroyAudioPolicyManager methods\n  to return custom AudioPolicyManager instance.\n\nBug: 120198776\nTest: make\n\nChange-Id: I0df7c390fe29f56378d4b90ca5ab559302770419\n"
    },
    {
      "commit": "877b27e1cd14cb20bed90ce95ff5e22b3f77188d",
      "tree": "0f1f7c3eec5053b63b964a8d7e0e34aec7a14695",
      "parents": [
        "c5634ebd5d96a7aec03d726d0a805be9ab07ae02"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Tue Feb 02 12:10:40 2021 +0100"
      },
      "committer": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Wed Feb 03 15:44:48 2021 +0100"
      },
      "message": "Fixing crash in surround sound settings which occurs\ndue to API getSurroundSound.\n\nBug: 178800104\nTest: Tested manually\nChange-Id: Ib0a13dfcdfa177676e8625703e9ddb2ce79e5d0e\n"
    },
    {
      "commit": "83b5d499f239a8fea781447d924df42b14312396",
      "tree": "d2b49db8afe76fd464bdc30d59cf542470a920d0",
      "parents": [
        "c97b5ed706be58994bffc6319bd85106d8fb1af1",
        "f99edd337e7bab6f7b9862203de16408127f9b82"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 02 08:34:52 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 02 08:34:52 2021 +0000"
      },
      "message": "Merge \"audio policy: fix selected device Id in getOutputForAttr\" into sc-dev"
    },
    {
      "commit": "f99edd337e7bab6f7b9862203de16408127f9b82",
      "tree": "27f268733f87e2f34dc93c4103b85ea57af9d35f",
      "parents": [
        "7491da7fe76df7f23224f4b580b65ef0427b7166"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 01 15:57:33 2021 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 01 15:57:33 2021 +0100"
      },
      "message": "audio policy: fix selected device Id in getOutputForAttr\n\nRestore passing of selected device ID to audio policy manager by\ngetOutputForAttr() and getInputForAttr() which was dropped by commit\n0a4904a1.\n\nBug: 178950206\nTest: atest android.media.cts.RoutingTest#test_mediaPlayer_incallMusicRoutingPermissions\nChange-Id: Iebadec1674a838a276cd0c803a978af2c21fa64b\n"
    },
    {
      "commit": "dea7f94cc13c7f05fa5fd74094185be979f40b7a",
      "tree": "9ad20d44c09b6cdfb42016ac64d148dc0dafbec8",
      "parents": [
        "5b473026bd95779abcf5b44e6fed3f9da786ea35"
      ],
      "author": {
        "name": "Bhalchandra Gajare",
        "email": "bgajare@google.com",
        "time": "Wed Jan 27 17:28:30 2021 -0800"
      },
      "committer": {
        "name": "Bhalchandra Gajare",
        "email": "bgajare@google.com",
        "time": "Mon Feb 01 09:54:50 2021 +0000"
      },
      "message": "audio policy: check permissions for AUDIO_INPUT_FLAG_HW_HOTWORD\n\nAllow audio capture with AUDIO_INPUT_FLAG_HW_HOTWORD only if the\ncaller has CAPTURE_AUDIO_HOTWORD permission granted. While at it,\nupdate the return code to PERMISSION_DENIED for other permission\nchecks as well.\n\nBug: 178654411\nTest: tested by setting hotword mode from AGSA application that has the\nrequired permission. Able to see hal opened with correct flag.\nTest: Forced to always return error if flag was set and verified\nAudioRecord starting in application fails.\n\nMerged-In: I827ab5933621bff71a96164e40026ecccf1ba44f\nChange-Id: I827ab5933621bff71a96164e40026ecccf1ba44f\n(cherry picked from commit 499faed90b16ce8a09eff353ab71b6383f8b9908)\n"
    },
    {
      "commit": "7f2285b1e120192e4368e5813b86370c66cfd544",
      "tree": "01cab530a2c4d17a9cf4e6e3401cf0855a554cde",
      "parents": [
        "82aff67588f6c1fc701f8bd36d8e3c57d21886d3"
      ],
      "author": {
        "name": "Jeongik Cha",
        "email": "jeongik@google.com",
        "time": "Thu Jan 28 00:49:46 2021 +0900"
      },
      "committer": {
        "name": "Jeongik Cha",
        "email": "jeongik@google.com",
        "time": "Thu Jan 28 00:49:46 2021 +0900"
      },
      "message": "Specify version for aidl_interface explicitly\n\nBug: 150578172\nTest: m\nChange-Id: I730c407461556fcd49a953b4b6249089af740c6e\n"
    },
    {
      "commit": "07f14e30d102b0a7ab148ba80397bba3e02500de",
      "tree": "7c6d356112d6e10a24542f1ca876734c79a69068",
      "parents": [
        "91f0dfd88bf2ddad5511cae53c432dcf41bf30aa",
        "371c7feab8de2b29d331ad748874cd2ee18b9cbf"
      ],
      "author": {
        "name": "Evan Severson",
        "email": "evanseverson@google.com",
        "time": "Fri Jan 22 20:49:56 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 22 20:49:56 2021 +0000"
      },
      "message": "Merge \"Fix sensor privacy check in audio policy service\""
    },
    {
      "commit": "0a4904a12ded2c89e2cae4a7dc46730726cf9abd",
      "tree": "82da7b9713645ba4970114857119bdf21dc40f54",
      "parents": [
        "08c7d9e6ceb83134b7d6d6b56e686cfb54dd43f3"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Wed Jan 06 12:57:05 2021 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Jan 21 10:44:07 2021 -0800"
      },
      "message": "Convert IAudioPolicyService to AIDL\n\nTest: Audio tests from CtsMediaTests\nTest: Audio smoke tests\nBug: 160253486\n\nChange-Id: I5ecee56f71a959d2fd75714ba95d7653af0c98bc\n"
    },
    {
      "commit": "371c7feab8de2b29d331ad748874cd2ee18b9cbf",
      "tree": "2fe8d810d48f9b87a72dad4d47b9d86044a7f29f",
      "parents": [
        "0e6db8c66642cd978ffc6fe86fdf89373128dee4"
      ],
      "author": {
        "name": "Evan Severson",
        "email": "evanseverson@google.com",
        "time": "Wed Jan 20 12:21:41 2021 -0800"
      },
      "committer": {
        "name": "Evan Severson",
        "email": "evanseverson@google.com",
        "time": "Wed Jan 20 12:54:06 2021 -0800"
      },
      "message": "Fix sensor privacy check in audio policy service\n\nThis change addresses feedback for change\nI6f9c762086cfa3900ec9585aaf68e458c9dadff5.\n\nTest: Manual\nBug: 162549680\nChange-Id: I0b4a318d0d14e545a845e9ac53ef170e4c5cb4c6\n"
    },
    {
      "commit": "241d9592ae212d1ad551bf0792220927bf722f44",
      "tree": "5b5f38a5ec0b4a65878fe55fa3ca93e0ccfaa706",
      "parents": [
        "78b1947ea365fdca2f243657166bc597b2c0081d"
      ],
      "author": {
        "name": "Evan Severson",
        "email": "evanseverson@google.com",
        "time": "Fri Jan 08 12:16:02 2021 -0800"
      },
      "committer": {
        "name": "Evan Severson",
        "email": "evanseverson@google.com",
        "time": "Tue Jan 19 15:09:01 2021 -0800"
      },
      "message": "Wire up the microphone toggle to the audio service\n\nBug: 162549680\nTest: When mic is disabled, test that audio gets muted. Also test that\n          virtual record works so services like captioning still work.\nChange-Id: I6f9c762086cfa3900ec9585aaf68e458c9dadff5\n"
    },
    {
      "commit": "5f9a6459f9157625bd5a661649968eeff4850b71",
      "tree": "23e0a887b11a8f2242a841ba28c748a6474281a1",
      "parents": [
        "d8888d48f512f894182848f3d7076b8c6a68fa95"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 22 20:10:10 2020 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 14 12:25:52 2021 +0100"
      },
      "message": "AudioPolicyMix: fix loopback+render mix match rules\n\nFix matching logic for loopback+render rule and usage VOICE_COMMUNICATION.\nPrevious logic was requesting flag mAllowPrivilegedPlaybackCapture to\nallow capturing playback with usage VOICE_COMMUNICATION.\nThis is not a requirement: only flag mVoiceCommunicationCaptureAllowed\ntogether with a client not having opted out from capture by the system\nis needed for a match.\nAlso rename mAllowPrivilegedPlaybackCapture to mAllowPrivilegedMediaPlaybackCapture\nin AudioMix class to reflect better its actual role.\n\nTest: atest AudioHostTest\nTest: atest AudioPlaybackCaptureTest\nBug: 161569476\nChange-Id: Iad0b7e89e68c9f2e59fabb75071a6425e9a29085\n"
    },
    {
      "commit": "9a6b9adb0de5f6fc3cf39e369c6a6ed447823469",
      "tree": "969cf83987ea9ce0bd5fb9e458af8cc6c8d68267",
      "parents": [
        "27fe43ec5915fd93539c17444102d0c9cfdd6732"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Oct 22 16:46:43 2020 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Dec 23 08:57:48 2020 -0800"
      },
      "message": "Audio policy: notify system_server of routing change\n\nCallback into AudioPolicyClientInterface to notify of routing\nupdate whenever output is re-evaluated.\nAdd native test to verify callback is invoked on device\n(dis)connection and setForceUse.\n\nBug: 162448412\nTest: atest AudioServiceHostTest#testPreferredDeviceRouting\nTest: atest AudioServiceHostTest#testDevicesForAttributes\nTest: atest audiopolicy_tests:AudioPolicyManagerTestDeviceConnection#RoutingUpdate\nChange-Id: Ia1a985b996bf8f2f63e72c4110f62f65f9f42f21\n"
    },
    {
      "commit": "6e46824a30f72400949aa91355dd15be64888b43",
      "tree": "17b7fcd36f0eade201af3550a4869f52b19c42f1",
      "parents": [
        "e8a66c66bad62aa5ab4778ce7ac448d563eae335"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Thu Sep 03 17:54:16 2020 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 22 18:53:55 2020 +0000"
      },
      "message": "Revert^2 \"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\n\nChange-Id: I368d562ec2aae68aa239dce75d54ca2772b30e76\nMerged-In: I368d562ec2aae68aa239dce75d54ca2772b30e76\n"
    },
    {
      "commit": "4e82621821c5adf1dbd3ef1911fc6a2a0becfbc8",
      "tree": "1de376a468b699ac4fe3f97fac00bc2c62052bda",
      "parents": [
        "c1afe3ba438699122aa2c3a66c3c58e87dd5525b"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Aug 07 17:32:40 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 21 16:28:31 2020 +0100"
      },
      "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\nMerged-In: I0af737542a8599938cae4e142b733159f21ed5a8\n"
    },
    {
      "commit": "c1afe3ba438699122aa2c3a66c3c58e87dd5525b",
      "tree": "1c1290b565c6989d90f91b00f6005176e74aa28c",
      "parents": [
        "d295e4b4bdc617ebdeb36deb97cb9597a5e603f1"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Aug 07 11:56:38 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 21 16:28:18 2020 +0100"
      },
      "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\nMerged-In: Ibcd91fcba95c53e3c172ae62fc6f30e70509de51\n"
    },
    {
      "commit": "31f1fc39b3edfc6382dcf817f12fdb9704ef92b6",
      "tree": "f5cbf2a1e0acb55e3e4531079ccbac1fe3c25810",
      "parents": [
        "b83616c5cfffd0600c0712cdf4dffad4ef64fc59",
        "b809a75a56b26f7446521741c022ad42eb04564f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 21 10:57:04 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 21 10:57:04 2020 +0000"
      },
      "message": "Merge changes from topic \"refactor_route_for_comm\"\n\n* changes:\n  Audio policy: fix capture policy for IN_COMMUNICATION mode\n  audio policy: allow USB device for voice comm capture in speakerphone\n  audio policy: phone strategy routing based on preferred device API\n"
    },
    {
      "commit": "bf4b9ee019ea3e51a54b095e25269e90c46a3bfd",
      "tree": "ac117a802aa3a95e8a2d300d3a9397c8cb464df9",
      "parents": [
        "26f3d98fb97c0778bddaba81739e7eab097ea55b",
        "7e7a79d86f9596564562c1977aed241d4dc21154"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 17 23:48:26 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 17 23:48:26 2020 +0000"
      },
      "message": "Merge \"AIDLize IAudioPolicyServiceClient\""
    },
    {
      "commit": "b809a75a56b26f7446521741c022ad42eb04564f",
      "tree": "84e8bdcb107eb9529373a5070bc6f33bd067f496",
      "parents": [
        "6435dd74a14ee1db195f5479147d71df7eb3cf9d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 29 09:53:13 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 17 21:47:58 2020 +0100"
      },
      "message": "Audio policy: fix capture policy for IN_COMMUNICATION mode\n\nIf audio mode is IN_COMMUNICATION, favor audio mode owner over another\napp also capturing with privacy sensitive flag and with foreground UI or\nmore recent capture start time.\nThis avoids silencing both apps in this scenario.\n\nRestore voice communication capture restriction to audio mode owner\nremoved by commit ffabb495.\n\nBug: 160260850\nTest: VoIP call regression\n\nChange-Id: If4737cb7ffa3123537a13319d5857031f0f48932\n"
    },
    {
      "commit": "f12daa4ec147c9ecca68afb9f85480781d769846",
      "tree": "317139f096611e149941aa91bbcb5f11f2419ada",
      "parents": [
        "b27255e84e2ddc5e951739d2238afd6314cf179a",
        "b742992506c1875c29c88498dec555bd7a2b8542"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Thu Dec 17 01:12:08 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 17 01:12:08 2020 +0000"
      },
      "message": "Merge \"Updating MediaRecorderClient to use CAPTURE_TUNER_AUDIO_INPUT\""
    },
    {
      "commit": "7e7a79d86f9596564562c1977aed241d4dc21154",
      "tree": "d6e1fdac0af8f5826cc06d4112972e4f4ea87ada",
      "parents": [
        "1601ba676489b977715b7b16d3b89dccead8554d"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Dec 15 16:48:16 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Wed Dec 16 14:33:59 2020 -0800"
      },
      "message": "AIDLize IAudioPolicyServiceClient\n\nBug: 160253486\nTest: Audio-related tests from CtsMediaTestCases\nChange-Id: Id37fad4028b620620a45dabe8af068f3158e6228\n"
    },
    {
      "commit": "b742992506c1875c29c88498dec555bd7a2b8542",
      "tree": "873b858af21122fa6cd301978188d02f19459611",
      "parents": [
        "9b95dd2f7e88bd1ddaf5b765ffe7845cabe6edbc"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Fri Dec 11 13:59:18 2020 -0800"
      },
      "committer": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Wed Dec 16 12:01:50 2020 -0800"
      },
      "message": "Updating MediaRecorderClient to use CAPTURE_TUNER_AUDIO_INPUT\n\nUpdating recording FM_TUNER to use CAPTURE_TUNER_AUDIO_INPUT\nin addition to CAPTURE_MEDIA_OUTPUT.\n\nBug: 165921316\nTest: atest AudioServiceHostTest#testRadioTunerRecord\nChange-Id: I3e41cab65154835296f9e0d965f9bba4598050d1\n"
    },
    {
      "commit": "5fca50079e1c42b61b569da47382595407e7ee07",
      "tree": "2d0cc23b38436d9e3bed0fce85180a1b48e8aa7e",
      "parents": [
        "b7c71956c0dd2f54a7174c746a8394012a0a686b",
        "e69cada3e096a21b69768e921dd60241238c6b9a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 15 22:42:52 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 15 22:42:52 2020 +0000"
      },
      "message": "Merge \"attribute REMOTE_SUBMIX recording to RECORD_AUDIO_OUTPUT\""
    },
    {
      "commit": "e69cada3e096a21b69768e921dd60241238c6b9a",
      "tree": "bc0d785b192aee94d63f96cf0dd6d4cdf516e1f7",
      "parents": [
        "5dc9ad75a27c19ec5450c57ba08d7e04494b704b"
      ],
      "author": {
        "name": "Nate Myren",
        "email": "ntmyren@google.com",
        "time": "Thu Dec 10 10:00:36 2020 -0800"
      },
      "committer": {
        "name": "Nate Myren",
        "email": "ntmyren@google.com",
        "time": "Mon Dec 14 13:01:52 2020 -0800"
      },
      "message": "attribute REMOTE_SUBMIX recording to RECORD_AUDIO_OUTPUT\n\nREMOTE_SUBMIX audioRecords do not use the microphone, so attribute their\nusage to RECORD_AUDIO_OUTPUT, instead of RECORD_AUDIO\n\nTest: manual\nFixes: 173797503\nChange-Id: Ibc5d09a6b2a90211781076f70516c03ed024cc42\n"
    },
    {
      "commit": "973638a1ca4d4f693a492a13c89240178391e56c",
      "tree": "844cf6ba85c876ff1cc8e93aba1b6a6d990ec5ac",
      "parents": [
        "3f69c16cb65f42892b2ee678d171c98613f16982"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 08 20:47:45 2020 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 11 00:04:32 2020 -0800"
      },
      "message": "Audio Aidl: Unify naming for conversion methods\n\nMost of the naming for aidl2legacy and legacy2aidl\nare consistent, correct the few remaining inconsistencies.\n\nTest: compiles, boots\nBug: 175316373\nChange-Id: I85952846b306a2b5e88db125ccfbe431cc9bd7cd\n"
    },
    {
      "commit": "e13404b67042b964b2f3e8e17ce526bd2a4f8c55",
      "tree": "106b26c67cff2690bf6c3760f1999ff23d7f609d",
      "parents": [
        "5998a63a10bfd79a5e060f9669c40e45752a9e59",
        "90fe31c88aa787c5ab83df2672969cf2ee11f263"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 11 07:09:29 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 11 07:09:29 2020 +0000"
      },
      "message": "Merge \"audio: add reporting of gapless playback support\""
    },
    {
      "commit": "4e2d2a5cf59c0a49cec74b2ba04b416a4861a064",
      "tree": "9a1a7a54f6a181004190d0887b0014f6d33b28a8",
      "parents": [
        "1ce56593ae0a89705027a8c054c4518125bf008a",
        "19cdba55d6d981658dd43e1599e5449f40b4693f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 10 17:17:39 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 10 17:17:39 2020 +0000"
      },
      "message": "Merge \"Use audio_port_v7 in audio policy.\""
    },
    {
      "commit": "bf85d8bc814e661b16b24968a0b16544f4d6329f",
      "tree": "5f1c038d4fb1ac909508c71d458bef7703dfa578",
      "parents": [
        "5834bf6ebe9265c938b2cbb2c1cee1ad3a819a5c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Aug 20 17:19:57 2020 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Dec 09 20:35:39 2020 +0000"
      },
      "message": "Attribute SOURCE_HOTWORD to OP_RECORD_AUDIO_HOTWORD.\n\nWhenever we startRecording / finishRecording with a source\nof SOURCE_HOTWORD, attribute them to OP_RECORD_AUDIO_HOTWORD\ninstead of OP_RECORD_AUDIO. In either case, OP_RECORD_AUDIO\nis checked before the recording commences. Note that we also\ncheck that all recordings with SOURCE_HOTWORD are initiated\nby a uid that holds the privileged CAPTURE_AUDIO_HOTWORD\npermission.\n\nNote that this change will be superseded in the future once\nwe have stronger guarantees around hotword handling.\n\nBug: 162547999\nTest: manual with dumpsys appops on AGSA\n\n(cherry picked from commit d127644025c5820e39a2908a249691284b4447d6)\n\nMerged-In: I70e0b652c357597770a18a5a385d62668a69059a\nChange-Id: I5ba43828efb0654ec2c1f04fb9737d48a8c4f0bf\n"
    },
    {
      "commit": "19cdba55d6d981658dd43e1599e5449f40b4693f",
      "tree": "f174d85a015ede83ae5ce94b6c0109812a48fad1",
      "parents": [
        "b7e454991efc5bb053435d23695bfbedc83be84b"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Nov 24 11:28:58 2020 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 09 11:05:15 2020 -0800"
      },
      "message": "Use audio_port_v7 in audio policy.\n\naudio_port_v7 is a struct that uses audio profile to describe an audio\nport. Compared to audio_port, audio_port_v7 can better describe the\ncapabilities of the audio port. In that case, use audio_port_v7 in audio\npolicy APIs getAudioPort and listAudioPort.\n\nTest: atest audio_health_tests audiopolicy_tests AudioManagerTest\nBug: 160352965\nBug: 25994457\nChange-Id: I16fb024f309e33f48ce2ae8f8d37dd58e74f781d\n"
    },
    {
      "commit": "49a6d9c78aaa07ab83494d628cc6b7a2386a2b55",
      "tree": "70acc7a3307c66d6ac1b7ee5cc59d88ebfacad34",
      "parents": [
        "9fa7856094a8705be2061e532c36e74d103719b8",
        "55f730f7c1a0b5f963f47fdd65c43609a143f18c"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Wed Dec 02 00:41:55 2020 -0800"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Wed Dec 02 00:41:55 2020 -0800"
      },
      "message": "Merge rvc-qpr-dev-plus-aosp-without-vendor@6881855\n\nBug: 172690556\nMerged-In: I72658443fde61aa5f10463fcc42772daf4143ed0\nChange-Id: Ifb9605a1f9407357ddc755551e2d1d51c7f09bfc\n"
    },
    {
      "commit": "90fe31c88aa787c5ab83df2672969cf2ee11f263",
      "tree": "831c146e3ef02a460b13ce977ebd83894c1de920",
      "parents": [
        "5876ab7451acebdd0a772163e913058f6a505fc0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 26 20:06:35 2020 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 01 11:38:48 2020 +0100"
      },
      "message": "audio: add reporting of gapless playback support\n\nAdd reporting of gapless playback support via\ngetOffloadSupport() method which replaces isOffloadSupported().\nThe audio HAL implementation indicates gapless support by setting flag\nAUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD on an output profile in addition to\nflag AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD.\n\nBug: 158191844\nTest: make\nChange-Id: I7a8fa284c2486fd7a74782acb1ac7537d1534e49\n"
    },
    {
      "commit": "50e016a9959c87fd3aaac0084e8d68611e41781a",
      "tree": "7fdfcfb72d99344af023ee3e56023f7cb93a83d0",
      "parents": [
        "1ff75699675b1d642d6f8fe645b5ae46b5432dfb"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Nov 12 14:26:12 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Nov 24 16:40:34 2020 -0800"
      },
      "message": "Prepare openOutput() signature to AIDL conversion\n\nThe purpose is to avoid having more than one primitive output\nargument and to avoid in/out arguments.\nTest: Audio-related CTS tests from CtsMediaTestCases\n\nChange-Id: I827f99755f85bd58f3088c9445add52848763fa0\n"
    },
    {
      "commit": "e3b59ac285356dfe1bd416d46672fe0b1f10dc6f",
      "tree": "cc260c7b2867101599cdba75b53b4e0578c7345f",
      "parents": [
        "7aacb78d8d049af5e9949de9fc34be4650b5b176"
      ],
      "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": "Tue Nov 24 22:56:29 2020 +0000"
      },
      "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\nMerged-In: I42506484b1d0b0482618b7314fad4c8012a06fb4\n"
    },
    {
      "commit": "1ff75699675b1d642d6f8fe645b5ae46b5432dfb",
      "tree": "1a7cd4bd94aac27219940cccaee824abb069c989",
      "parents": [
        "07892869191730375f91ff6f1334006657de8752"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Nov 06 12:16:12 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Nov 23 14:07:28 2020 -0800"
      },
      "message": "Extract VALUE_OR_RETURN_STATUS to AidlConversion\n\nThis seems useful in various places.\n\nTest: Compiles\nChange-Id: Iab9b03f806b4c33da68df89437db5639680ce331\n"
    },
    {
      "commit": "12a0b8459f7aaa531d0b95863c5c6317d474e3ef",
      "tree": "e91b94d0a0aa5395293aef2d6eef263d4c66b65e",
      "parents": [
        "ce18294068568ada960f6610ca0e2cd18c7704c7"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Nov 05 13:47:32 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Nov 23 14:07:28 2020 -0800"
      },
      "message": "Prepare openInput() signature to AIDL conversion\n\nThe purpose is to avoid having more than one primitive output argument\nand to avoid in/out arguments.\n\nTest: Audio-related CTS tests from CtsMediaTestCases\nChange-Id: I6bb5dde7956dcca30ed874397f78658d79433202\n"
    },
    {
      "commit": "b4fed19dd0c7ccbcd476e74ff123165ec315d8dd",
      "tree": "bd9c475e7ab5b6a7d562bf5b98407af0002ccafd",
      "parents": [
        "b1c141b95ac1d2fb14d371e6dae530a841a13cb4"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 22 14:45:40 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Nov 18 08:43:29 2020 -0800"
      },
      "message": "Call getAudioPort to get supported attributes for audio devices.\n\nGetAudioPort API will return the supported attributes for the devices.\nCall getAudioPort to get the supported attributes for the audio\ndevices so that it is no needed to get supported attributes via\ngetParameters API.\n\nBug: 160352965\nTest: make\nTest: atest audiopolicy_tests AudioPlaybackCaptureTest\nChange-Id: Icdfe76e15066bbff10308d6dfd1cf742da33fec9\n"
    },
    {
      "commit": "3a0cf4747666fd0d38c7b95f3cbaee094ce6b9e8",
      "tree": "38537e76b2e160c2041098d6e7854b000ebcf451",
      "parents": [
        "3b4270ecbebad2b5c0d6733eee3fb52e1ddb76aa"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue Nov 03 17:29:35 2020 +0000"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue Nov 03 17:29:35 2020 +0000"
      },
      "message": "Revert \"Call getAudioPort to get supported attributes for audio devices.\"\n\nThis reverts commit 3b4270ecbebad2b5c0d6733eee3fb52e1ddb76aa.\n\nReason for revert: b/172307055\n\nChange-Id: Ic22dad674bbd9eee9d3b24308e2a2e964c6406f2\n"
    },
    {
      "commit": "3b4270ecbebad2b5c0d6733eee3fb52e1ddb76aa",
      "tree": "863c12584b2c54fc3539bfbb85e29e670a41e740",
      "parents": [
        "29ac42b5105591c64454e06bf81b7b6782e54e81"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 22 14:45:40 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Oct 14 18:19:49 2020 -0700"
      },
      "message": "Call getAudioPort to get supported attributes for audio devices.\n\nGetAudioPort API will return the supported attributes for the devices.\nCall getAudioPort to get the supported attributes for the audio\ndevices so that it is no needed to get supported attributes via\ngetParameters API.\n\nBug: 160352965\nTest: make\nTest: atest audiopolicy_tests\nChange-Id: I6bd109fcb6ffb825cbb9cf539d569e9cad44bb37\n"
    },
    {
      "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": "88f8f94606933ec389ea50b07f5394622750819e",
      "tree": "03de782f4f7e84193c84ee6dcb8e8f5462e94f60",
      "parents": [
        "181438e955bac2e0137d991c468f583bdf3de153",
        "d127644025c5820e39a2908a249691284b4447d6"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Sep 11 13:09:19 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Sep 11 13:09:19 2020 +0000"
      },
      "message": "DO NOT MERGE Attribute SOURCE_HOTWORD to OP_RECORD_AUDIO_HOTWORD. am: d127644025\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12468978\n\nChange-Id: I3253b81c324ae91762a54533a2c1708c80026e8e\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": "5294eb92f5e27c9872edcd6a449370a3bf5cd7aa",
      "tree": "789d0b6bdb31ea469f7d645b0194aab3e76a82f3",
      "parents": [
        "738f5ecdaea2af982ba00c4b974a33dbac8f7d0c",
        "35238dd6585645018f7a7a8a32fdece432458ce7"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Wed Sep 02 16:33:33 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Sep 02 16:33:33 2020 +0000"
      },
      "message": "Merge \"audio policy: fix concurrent capture policy for virtual sources\" into rvc-qpr-dev am: 35238dd658\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/12196105\n\nChange-Id: I6029ece39734bea6bdcad7cc1ea5f2b2ab5e593a\n"
    },
    {
      "commit": "2e40c302d6117ec6eb65f25832a71488367b4dfb",
      "tree": "ce2cff004a09076114faabf595b1a116bcb461ff",
      "parents": [
        "054de8d6440fd30238fa9330bcc038cda745b244",
        "924eccfd6f6d3aaed5db627a0bdcfcaaf9b09a18"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Aug 28 08:38:54 2020 -0700"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Aug 28 21:23:54 2020 -0700"
      },
      "message": "Merge Android R (rvc-dev-plus-aosp-without-vendor@6692709)\n\nBug: 166295507\nMerged-In: Ie94127c1e981cb18671d5137ba0d39355d1353da\nChange-Id: Ib22ad33bda8d561af537499b6d31ab6134eeae02\n"
    },
    {
      "commit": "d127644025c5820e39a2908a249691284b4447d6",
      "tree": "e249c7f931d01a69f44f0d42ef99617ed7cc58bc",
      "parents": [
        "0b3f254028404b4772e02f9d1cdfcefba0e264b4"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Aug 20 17:19:57 2020 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Aug 28 16:44:58 2020 +0100"
      },
      "message": "DO NOT MERGE Attribute SOURCE_HOTWORD to OP_RECORD_AUDIO_HOTWORD.\n\nWhenever we startRecording / finishRecording with a source\nof SOURCE_HOTWORD, attribute them to OP_RECORD_AUDIO_HOTWORD\ninstead of OP_RECORD_AUDIO. In either case, OP_RECORD_AUDIO\nis checked before the recording commences. Note that we also\ncheck that all recordings with SOURCE_HOTWORD are initiated\nby a uid that holds the privileged CAPTURE_AUDIO_HOTWORD\npermission.\n\nNote that this change will be superseded in the future once\nwe have stronger guarantees around hotword handling.\n\nBug: 162547999\nTest: manual with dumpsys appops on AGSA\n\nChange-Id: I70e0b652c357597770a18a5a385d62668a69059a\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"
    }
  ],
  "next": "c8e17eebc955749f5dc0fb0a58ad93ff312aef39"
}
