)]}'
{
  "log": [
    {
      "commit": "f9cddbfe7dd95817c26b513ce6b0eecd6ec1bdfa",
      "tree": "d561c698108b245469a558f1266d39154bd54068",
      "parents": [
        "242cf3379de223e0ae5c9ceeba05e6a397b44e2d",
        "0a488938fa1c1b2b0c02b1c101281c01ff8ed103"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 13 02:24:42 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 13 02:24:42 2020 +0000"
      },
      "message": "Merge changes from topics \"devicesRoleForStrategy\", \"useAudioDevicesTypeAddrVector\"\n\n* changes:\n  Introduce device(s) role for strategy.\n  Use AudioDeviceTypeAddrVector instead of Vector\u003cAudioDeviceTypeAddr\u003e\n"
    },
    {
      "commit": "0a488938fa1c1b2b0c02b1c101281c01ff8ed103",
      "tree": "4686aa2bca38cccbbc572bbb75a2bd82d2b9153b",
      "parents": [
        "6a02d53b76d0a3ccb234a3e3d56318883cadd733"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Aug 07 17:32:40 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 12 16:19:35 2020 -0700"
      },
      "message": "Introduce device(s) role for strategy.\n\nAdding interface to get/set/removeDevicesRoleForStrategy. The interfaces\nallows to modify the devices\u0027 role, such as preferred, for strategy.\nGet/set/removePreferredDeviceForStrategy is reimplemented by the new\ninterfaces.\n\nTest: atest AudioHostTest\nTest: atest AudioServiceHostTest\nTest: atest AudioServiceTest\nTest: atest audiopolicy_tests\nBug: 160352965\nChange-Id: I0af737542a8599938cae4e142b733159f21ed5a8\n"
    },
    {
      "commit": "6a02d53b76d0a3ccb234a3e3d56318883cadd733",
      "tree": "4bd9652fccb6530787e8a25292aeb81c1d93c612",
      "parents": [
        "1d2a159395df0767ecb2320aff4dd4db3d26e6b2"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Aug 07 11:56:38 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 12 11:24:46 2020 -0700"
      },
      "message": "Use AudioDeviceTypeAddrVector instead of Vector\u003cAudioDeviceTypeAddr\u003e\n\nAudioDeviceTypeAddrVector is std::vector\u003cAudioDeviceTypeAddr\u003e. In that\ncase, it is not needed to use Vector\u003cAudioDeviceTypeAddr\u003e. It is also\nsuggested to use the std::vector instead of Vector.\n\nTest: atest AudioHostTest\nTest: atest AudioServiceHostTest\nTest: atest audiopolicy_tests\nBug: 160352965\nChange-Id: Ibcd91fcba95c53e3c172ae62fc6f30e70509de51\n"
    },
    {
      "commit": "5ce77ca4aaa406fd3d21b86c82f0d847ad4b39fb",
      "tree": "212b27f783be6c16aa9f73b5a2c5becd863f67b4",
      "parents": [
        "dabaf72cf774fefcd788f9f057214d8bfde3f471",
        "c42df45d4b99c06391bca841638563335d0f59ef"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 10 21:25:55 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 10 21:25:55 2020 +0000"
      },
      "message": "Merge \"audio: add device definitions for BLE Audio\""
    },
    {
      "commit": "dabaf72cf774fefcd788f9f057214d8bfde3f471",
      "tree": "845ec4b18d7077f86ad05705286edb0f5cb65a9b",
      "parents": [
        "fa273c148ccca300dd85135079825573d1869aa4",
        "94c4d97bcdfa068d44d27f5164d5e13ddb07dc7f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 10 19:01:22 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Aug 10 19:01:22 2020 +0000"
      },
      "message": "Merge \"Fix music output to speaker\" am: fc9e26a3e9 am: af034fc9cb am: 23b282c9f9 am: cdf738e373 am: 94c4d97bcd\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1360120\n\nChange-Id: Id5add51825a810ec1038b9baf3441692b39e8ce8\n"
    },
    {
      "commit": "23b282c9f9a7dacb0cc9000940c755a21970f1b6",
      "tree": "601935ac55c38bd96ed660bbeac909d2c8d0f263",
      "parents": [
        "85bf50bfc09cf24d8454015e7553ab31f1946ff2",
        "af034fc9cb1d3de4334bb303d53b5dc8f83aa6f5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 10 17:53:53 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Aug 10 17:53:53 2020 +0000"
      },
      "message": "Merge \"Fix music output to speaker\" am: fc9e26a3e9 am: af034fc9cb\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1360120\n\nChange-Id: I84066fdea62f4ac3f559ddb7c7b1c37f5880e0fb\n"
    },
    {
      "commit": "bd2dcc4d0d6cf0ba6d7663bfb7ccfc60b9292f10",
      "tree": "ff0ee2efcda5b139f75dda189547424b241d633d",
      "parents": [
        "7c44826eaba2e3ff4483b127c6bc091e46d0604c"
      ],
      "author": {
        "name": "cnx421",
        "email": "cnx421@gmail.com",
        "time": "Sat Jul 11 14:58:44 2020 +0800"
      },
      "committer": {
        "name": "恶魔 地狱",
        "email": "cnx421@gmail.com",
        "time": "Mon Aug 10 01:24:35 2020 +0000"
      },
      "message": "Fix music output to speaker\n\nThis CL fixes a bug in audio policy where music switches to speaker when A2DP output mode switches from software encoder to offloaded encoder.\n\nBug: 153895044\n\nChange-Id: I15f707c9e96294b6cd6f21c0821c795d0570c39a\n"
    },
    {
      "commit": "c42df45d4b99c06391bca841638563335d0f59ef",
      "tree": "e5dd396d67122456532e0b9ca6fee8d19871273e",
      "parents": [
        "a524c363821353a541442e3b23449875b797b09d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 07 10:51:53 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 07 11:05:01 2020 -0700"
      },
      "message": "audio: add device definitions for BLE Audio\n\nAdd support for device type enums for BLE Audio.\nThis CL just adds basic support in parsers and voloume curve\ncategories.\nNo policy implemented yet for the new devices.\n\nBug: 161358428\nTest: make flash and boot\nChange-Id: I86134ea8436b24f817a9fe0f856e3489dd22fcc8\n"
    },
    {
      "commit": "d4ae33f6f8860c9011cafc720ffd65ea826b66b0",
      "tree": "23f3882504aa97136b87b24f99e5c14d5b5e5ca6",
      "parents": [
        "610ee6d10b62796a04f94fef253b70e55b27d2e6",
        "571ef96c1d93a19e152e06b8b4c1f1face7496db"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Aug 01 01:33:25 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Aug 01 01:33:25 2020 +0000"
      },
      "message": "Merge \"audio policy: remove log spam for voice and sco volumes\""
    },
    {
      "commit": "571ef96c1d93a19e152e06b8b4c1f1face7496db",
      "tree": "ed7f9ede52ef0957a91967983188aafaa3269588",
      "parents": [
        "04698a346d637e4db1fc400b102f04fdfa9b5835"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 24 11:43:48 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 24 13:51:35 2020 -0700"
      },
      "message": "audio policy: remove log spam for voice and sco volumes\n\nDo not return an error in checkAndSetVolume() when SCO volume is modified\nwhile SCO is not active as AudioService will always set both voice call\nand SCO volumes at the same time regardless of SCO activity.\n\nTest: Use call screening to check downlink mute.\nChange-Id: I7501b28266ec4d591378d7bc4453bb5840e03af1\n"
    },
    {
      "commit": "cdb2b35c0f159a1a244599010ee9210d1e34c71d",
      "tree": "b939b6b611f12a4fa7dffb396fe85bd148d55151",
      "parents": [
        "04698a346d637e4db1fc400b102f04fdfa9b5835"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 23 10:57:02 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 23 10:57:02 2020 -0700"
      },
      "message": "audio policy: fix beacon mute delay\n\nOnly take output latency into account when the output is active\nwhen muting TTS stream. This avoid a systematic long delay the\nfirst time we play audio due to first beacon mute state change.\n\nBug: 37923452\nTest: repro steps in bug\nChange-Id: I10b21a55c0fad28344108b67756f600a29e41fea\n"
    },
    {
      "commit": "2fc9d15ee62c7291c30c33dd82c386bf8e071f07",
      "tree": "7b8034a795fd0cc519d80992c292f1c8e658f1fb",
      "parents": [
        "c19184310b3e24433d23658e4f2e72314b557225",
        "ebb6af45d3741a33259ea6bf8a5fc87881982943"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 07 00:06:16 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 07 00:06:16 2020 +0000"
      },
      "message": "Merge \"Select haptic output when haptic-generating effect exists.\""
    },
    {
      "commit": "7997351bc447cbbff9dc255faf62bc89c1c180c6",
      "tree": "c7c20ace22c488e57290f9f51ea4c599e4acc5c2",
      "parents": [
        "40eb0159372c16376a0755e5b86a3f7586fc3294",
        "e9458106aa39881cfa08673faf752f6ca6ea8e94"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@android.com",
        "time": "Wed Jul 01 23:11:06 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jul 01 23:11:06 2020 +0000"
      },
      "message": "Merge \"Include what you use: \u003ccutils/bitops.h\u003e for popcount\" am: a4d629d311 am: e9458106aa\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1354145\n\nChange-Id: I1613f16bdb589ab57f6d687578b0af9cbc7c664b\n"
    },
    {
      "commit": "76a13443cbfc7af0561522af166937ef370e2b68",
      "tree": "ce5cd8c1203122b61d05e446929977a85856c4b3",
      "parents": [
        "dbb9895007a7ecee6e2cc62705b24ba08b09932d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 01 12:10:59 2020 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jul 01 12:14:19 2020 -0700"
      },
      "message": "Include what you use: \u003ccutils/bitops.h\u003e for popcount\n\nTest: builds OK\nChange-Id: Ie717272df285303a63518f0342e1a4d2f41362c3\n"
    },
    {
      "commit": "456051d0b9f41986e982b07d4b5462e377534bfe",
      "tree": "78cb394b36e0265d54823dff9d826f582951acf6",
      "parents": [
        "04435f6bec3e65c1d4cfd0e356b89a2d025fb696",
        "5f829dead32af6da25656e77203f4ca59e578ba5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 30 16:39:05 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jun 30 16:39:05 2020 +0000"
      },
      "message": "Merge \"Fix direct/offload thread output devices into MSD\" am: 24c46f1741 am: 5f829dead3\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1340017\n\nChange-Id: Ib15f682b137b827cd6d3cdf4ff75803ed06bf17c\n"
    },
    {
      "commit": "514b431cac26626260df703a7b1504717b948e22",
      "tree": "15050e1e0fd465901076dfc1fa8a65b9179bd7cf",
      "parents": [
        "c1d40b64b1ee652f173153fb2520201bbed56679"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Wed Jun 17 21:45:00 2020 +1000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jun 29 23:13:56 2020 +0000"
      },
      "message": "Fix direct/offload thread output devices into MSD\n\nWithout this change, direct/offload threads show\n\"Output devices:  (Empty device types)\". Empty device\ncauses timestamp correction to always be disabled for\noutput threads requiring timestamp correction.\n\nTest: check direct/offload output into MSD dumpsys output devices\n      atest audiopolicy_tests\nBug: 159948389\nChange-Id: I7006c9da2f0a228dd49ce0297c30035fef983090\n"
    },
    {
      "commit": "ebb6af45d3741a33259ea6bf8a5fc87881982943",
      "tree": "f4ce87071a3b0a650d5dc12d9301436417c58e09",
      "parents": [
        "1495d23d7b282a1e9a5d522eafe565a924667351"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Jun 09 17:31:17 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Jun 23 15:25:17 2020 -0700"
      },
      "message": "Select haptic output when haptic-generating effect exists.\n\nHaptic-generating effect must be attached to haptic output thread as it\nrequires writing haptic channels. In that case, when haptic-generating\neffect exist, try to select the output that it is attatched to.\n\nBug: 136490803\nTest: make\nChange-Id: I6be84a3edac1094d6e457b3226c3930f28219167\n"
    },
    {
      "commit": "79ea958e3bedbdfe625fffdd0423a4b94dfc1182",
      "tree": "bf4ff094fd9c8e233c4db2fc9f9bde4cf128ebbf",
      "parents": [
        "3244d0db9d52223d417df71b6343064adbcad957"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 11 18:49:24 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 12 17:26:33 2020 -0700"
      },
      "message": "Audio policy: fix failure to unmute strategy.\n\nWhen setOutputDevices() is called with a device not supported by the\noutput profile, checkDeviceMuteStrategies() was not called.\nIf a strategy was muted by this output because of a previous\ndevice combination, it will never be unmuted.\nA typical repro scenario is:\n1) music plays over A2DP via offload path\n2) incoming call: ringtone plays over speaker + A2DP\n   \u003d\u003e music is paused by audio focus\n3) music manually resumed\n   \u003d\u003e media strategy is muted because it cannot play over\na2dp + speaker\n4) call answered and routed to earpiece\n   a) offload output is routed to earpiece which is not\nsupported by offload output profile\n   \u003d\u003e we fail to unmute media\n   b) music stream is invalidated because earpiece is\n   not supported by offload output\n   \u003d\u003e offload output is closed and we will never unmute media strategy\n\nFixed by calling checkDeviceMuteStrategies() before exiting in\ncase of unsupported device.\n\nBug: 157344812\nTest: repro steps in bug\nTest: audio regression tests\nChange-Id: I0c1c189c038803a584dc222aee50c3a99c572263\n"
    },
    {
      "commit": "c209fe49e74dc30100a6f409c616f04382d48f05",
      "tree": "afa05faf2118a2f09b308341a9d227df57bcb723",
      "parents": [
        "ea5f4133c7c029ffb988f4aa454c45c86294531c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 05 18:11:23 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 08 18:56:15 2020 -0700"
      },
      "message": "audio policy: output selection upon dynamic policy registration\n\nForce reevalution of output selection for AudioTrack clients when a\ndynamic audio policy (DAP) of type RENDER is registered or unregistered.\nFor LOOPBACK policies, this is not needed because the remote submix\ndevice is connected or disconnected triggering output reevaluation.\n\nAlso refactor checkOutputForAttributes to take actual output selection\nfor each client associated to a DAP instead of blindly forcing stream\ninvalidation as soon as an output associated with a DAP is found.\nThis covers direct outputs as the output is not opened when the DAP\nis registered.\n\nBug: 130296239\nTest: AudioHostTest\nTest: AudioServiceHostTest\nTest: audiopolicy_tests\nTest: regression with auto projected mode and live caption\nChange-Id: I07977e7902eb31c59621462a8fe2d7d1a4b1ba36\n"
    },
    {
      "commit": "8e544543add8e4e0e53f6b27a265254e6af2422b",
      "tree": "00175e73755007accffd18f0b48d40a2360bc303",
      "parents": [
        "e0c3d791757109b0302cf74e7027bcada2221b1f"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon May 11 14:12:53 2020 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 02 14:17:13 2020 -0700"
      },
      "message": "AudioPolicy: manager: fix patch list growing up\n\ncommit 3b17354a caused potential stale audio patches\nrecords in audio policy manager for patches associated\nwith audio flinger software patches sharing an output mixer.\n\nBug: 136121584\nTest: dumpsys media.audio_policy \u0026\u0026\nadb shell /data/nativetest64/AudioPolicyEmulatorTests/AudioPolicyEmulatorTests --gtest_filter\u003dAudioPatchTest/AudioModeBridgingTest.\n\u0026\u0026 dumpsys media.audio_policy:\nensure list of patches did not grow up\nTest: atest audiopolicy_tests\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: Ife8035dc2d2d9c0b568d6847ca5eb0d2cba77cea\n"
    },
    {
      "commit": "1c4794bfdee92c9491312432bd966d2439c49179",
      "tree": "0947f6dea04e00753357a87d2ab38cb9d6fd13e4",
      "parents": [
        "eaad70fbfcec64206f42a11071efa683efe0c3ab"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue May 05 10:08:05 2020 -0700"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Fri May 08 00:37:55 2020 +0000"
      },
      "message": "Support query encapsualtion modes and metadata types.\n\nWhen a new device is attached to hardware module, query the HAL to get\nthe supported encapsulation modes and metadata types.\n\nTest: atest EnumDevicesTest, manually\nTest: atest audiofoundation_parcelable_test\nBug: 155799506\nChange-Id: I903e46e35a44416c9f2d206c128face8a6c61dcb\n"
    },
    {
      "commit": "c64e0ab206323877dc4bc6cdefa509c0e8f5e08f",
      "tree": "e52e7cac0bccd47305ab7e571d132c8f9737c8a2",
      "parents": [
        "199012b0c66d555207d81fedb7cce16305c865f8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 15:59:34 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 15:59:34 2020 -0700"
      },
      "message": "audio policy: fix crash if output for DAP is not opened\n\nFix crash in getOutputForAttrInt() if the output corresponding to\nthe mix returned by AudioPolicyMix is not opened and the device\nselected by the mix is not attached.\nBefore commit c529cf6f, a policy mix without opened output would not\nbe retuned by AudioPolicyMix.getOutputForAttr(). With direct\noutput suppoort, this is possible but should be ignored if the device\nselected by the policy mix is not attached.\n\nBug: 155430290\nTest: AudioHostTest\nTest: AudioServiceHostTest\nTest: audiopolicy_tests\nTest: manual mirroring and car projection tests\nChange-Id: I66be4a3c5fb8b9ae0674c0f1e6e39de7f18ed2fb\n"
    },
    {
      "commit": "0e26e3f980a9904f23f24b0390844dcfeedd1418",
      "tree": "537c172187d9dd6bf3155c0a2a9c85c7b0a06669",
      "parents": [
        "ec660f185a1e212b1d22125de81e9bd1d0ff58a3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 29 14:24:16 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 00:15:50 2020 +0000"
      },
      "message": "Audio policy: fix areAllDevicesSupported()\n\nFix areAllDevicesSupported() where HwModules.getDeviceDescriptor()\nmust be called with matchAddress \u003d\u003d true: if the caller does not want to\ndistinguish on address it can leave the address field empty in the\nAudioDeviceTypeAddr passed which has the same effect as using\nmatchAddress \u003d\u003d false.\n\nAlso fix places where device_distinguishes_on_address() was improperly\nused in place of audio_is_remote_submix_device().\n\nBug: 155224229\nTest: build and launch car emulator\nTest: AudioHostTest\nTest: AudioServiceHostTest\nTest: audiopolicy_tests\nTest: manual mirroring and car projection tests\nChange-Id: I74295de95bcd82e7fa439c396ae32749b9c70c05\n"
    },
    {
      "commit": "c529cf6fa9b500506d675ec971909dba18cfb71b",
      "tree": "ebd662d9270ac9ca37849fa7a44b16fe73cd4abd",
      "parents": [
        "02d69c15b683418de39901a74f1eea8ddbfcbf40"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 17 18:19:10 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 27 14:42:06 2020 -0700"
      },
      "message": "audio policy: allow direct outputs for dynamic audio policies\n\nAdd support for direct outputs with RENDER audio policy mixes.\nA mix of type render can be registered even if no corresponding\noutput is opened to reach targeted device provided a direct output\nprofile exist for this device.\n\nAlso:\n- Fix setUidDeviceAffinities(): was not closing direct outputs\nopened by checkOutputsForDevice() and was not re-evaluating routes\n\n- Fix removeUidDeviceAffinities(): was not re-evaluating routes\n\n- Implement consistent sanity checks on selected devices in\nsetUidDeviceAffinities(), setUserIdDeviceAffinities() and\nsetPreferredDeviceForStrategy().\n\n- Fix onNewAudioModulesAvailableInt(): attached devices reachable only\nvia direct outputs were not loaded.\n\nBug: 130296239\nTest: AudioHostTest\nTest: AudioServiceHostTest\nTest: audiopolicy_tests\nTest: manual test: Auto projection over USB, screen mirroring\nChange-Id: I54470b61b4bc7e041e3a295764d368c5ded21268\n"
    },
    {
      "commit": "27cf37ca3ed87077c4beaceb2f7373c98e16737c",
      "tree": "f22fffa28ae98f0bb8319aaa0a5a82f15ed8fb89",
      "parents": [
        "a6127a935639f127db56974851abc2dda360eca2"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Apr 14 14:47:01 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Apr 17 01:54:47 2020 +0000"
      },
      "message": "audio: Centralize audio configuration paths specification\n\nThe list of possible paths for the audio configuration\nfiles is now retrieved using audio_get_configuration_paths()\nfunction. All duplicated lists of known configuration\ndirectories have been removed.\n\nBug: 153680356\nTest: test audio on built image working\n      atest VtsHalAudioV6_0TargetTest VtsHalAudioPolicyV6_0TargetTest\nChange-Id: I8c369442f5ca7baa17df95e6a001396fc9de5681\nMerged-In: I8c369442f5ca7baa17df95e6a001396fc9de5681\n"
    },
    {
      "commit": "a89bd207aad8de70d4376ec7108306f18fcc8133",
      "tree": "75372d956702224c0f0624d2d7ee4e486b493e5a",
      "parents": [
        "a85def6612ade71bd31a0d60e45ee7e0068af638",
        "c0884de8b9a3c7ba3755356717b94bfdfc5eb31d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 16 23:21:24 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Apr 16 23:21:24 2020 +0000"
      },
      "message": "Merge \"audio: Centralize audio configuration paths specification\" am: c0884de8b9\n\nChange-Id: I4efd1b4423efe2734c7ba79a3bac75ceb78f0036\n"
    },
    {
      "commit": "c0884de8b9a3c7ba3755356717b94bfdfc5eb31d",
      "tree": "79fd2da36b706d97e239e988221cfd34069d24d6",
      "parents": [
        "ada7c446d5579a57238a2fd89bcee6ca32c68786",
        "edc0ae1ebc8ec716f327269552ceaf81fbd874a0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 16 23:05:30 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 16 23:05:30 2020 +0000"
      },
      "message": "Merge \"audio: Centralize audio configuration paths specification\""
    },
    {
      "commit": "edc0ae1ebc8ec716f327269552ceaf81fbd874a0",
      "tree": "f393c230c74478be53856618c5169998f0ff71b0",
      "parents": [
        "04f759bfd400f64bd7d17e9e3fd725d1e2cea31e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Apr 14 14:47:01 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Apr 14 14:47:01 2020 -0700"
      },
      "message": "audio: Centralize audio configuration paths specification\n\nThe list of possible paths for the audio configuration\nfiles is now retrieved using audio_get_configuration_paths()\nfunction. All duplicated lists of known configuration\ndirectories have been removed.\n\nBug: 153680356\nTest: test audio on built image working\n      atest VtsHalAudioV5_0TargetTest VtsHalAudioPolicyV1_0TargetTest\nChange-Id: I8c369442f5ca7baa17df95e6a001396fc9de5681\n"
    },
    {
      "commit": "2beb1dedfdc0c7f92fa4dc4628795578291dc7ad",
      "tree": "1332ca819b7e2d3f222a4afbd39d3585320b87aa",
      "parents": [
        "19b1a8e0b729d0fc06518e5c5619950b747aaaab",
        "8607a8bae7da02e77166da6079f4a1ff24261919"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 14 21:16:47 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Apr 14 21:16:47 2020 +0000"
      },
      "message": "Merge \"AudioPolicy: managerdefault: fix onAudioDeviceUpdate callback\" am: 8607a8bae7\n\nChange-Id: Ie17695801cdb5266c8dd8cb816ced979ae2095f5\n"
    },
    {
      "commit": "8607a8bae7da02e77166da6079f4a1ff24261919",
      "tree": "31b3c6faab94e2e0de3c044bcaa177092ef07055",
      "parents": [
        "a224da5c41cc54a526bfed7a2027223557167f89",
        "3b17354a89c230442c81211ccdb64653a4defa12"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 14 21:00:06 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 14 21:00:06 2020 +0000"
      },
      "message": "Merge \"AudioPolicy: managerdefault: fix onAudioDeviceUpdate callback\""
    },
    {
      "commit": "3b17354a89c230442c81211ccdb64653a4defa12",
      "tree": "1898597d4c8bcfcf90acea0ca40ae47575d2cf88",
      "parents": [
        "6861be79547c425ee21370bef55adbdd7bcb54c3"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Apr 06 17:39:47 2020 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 13 20:25:00 2020 +0000"
      },
      "message": "AudioPolicy: managerdefault: fix onAudioDeviceUpdate callback\n\nScenario: startAudioSource (SW bridge) started, then stopped.\nAF patch is released, so PlaybackThread has empty patch.\n\nNext playback using the same sink will not recreate any patch\non AF as same device (and output desc has still valid patch handle)\n\nHence, ioconfichanged will get PORT NONE as sink device, no\nonAudioDeviceUpdate cb can be fired.\n\nThis CL fixes this issue by reset of patch handle on the output\n\nTest: startAudioSource / stopAudioSource then playback on the same\nsink. Ensure onAudioDeviceUpdate is fired\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: Ia9c2570f687166f38335ed7efae28920f7acc474\nMerged-In: Ia9c2570f687166f38335ed7efae28920f7acc474\n"
    },
    {
      "commit": "7feb854e9ff78e8ca64e012af874503569905924",
      "tree": "5fc22308c6ebd0a7f2066a8d7acf19a18e4347a5",
      "parents": [
        "141095dce0006e73b7941367c4b03f64c6ae997d"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Apr 06 17:39:47 2020 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 13 13:21:15 2020 -0700"
      },
      "message": "AudioPolicy: managerdefault: fix onAudioDeviceUpdate callback\n\nScenario: startAudioSource (SW bridge) started, then stopped.\nAF patch is released, so PlaybackThread has empty patch.\n\nNext playback using the same sink will not recreate any patch\non AF as same device (and output desc has still valid patch handle)\n\nHence, ioconfichanged will get PORT NONE as sink device, no\nonAudioDeviceUpdate cb can be fired.\n\nThis CL fixes this issue by reset of patch handle on the output\n\nBug: 136121584\nTest: startAudioSource / stopAudioSource then playback on the same\nsink. Ensure onAudioDeviceUpdate is fired\nTest: atest RoutingTest\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: Ia9c2570f687166f38335ed7efae28920f7acc474\n"
    },
    {
      "commit": "4da6b39d74fb762d06cda16762514b11df098954",
      "tree": "712d62f18fa99438e6669351161327d2ecf62526",
      "parents": [
        "b3358b86368d4b4bd52bf5ab1b9495c39465b435",
        "674ce2363382aced0104f52addf191364aa4e6a5"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Tue Apr 07 11:26:39 2020 -0700"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Tue Apr 07 11:26:39 2020 -0700"
      },
      "message": "DO NOT MERGE - Merge QQ2A.200405.005 into master\n\nBug: 150877681\nMerged-In: I9425baa21c82d5a5edf37c87989adbade0428b67\nChange-Id: I1bb8ab72286578d07cfd23fdad1f0ddc17949db6\n"
    },
    {
      "commit": "2e717a0265d6b95094946fb5ca41035019fa9716",
      "tree": "a6b431d6066a92be07956c3d8808680ed1b856c7",
      "parents": [
        "65328604dedbb0c01937efa0e831e62a191869f8",
        "85732f4121889191410448cfc19c336e0ea69285"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 07 01:15:26 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 07 01:15:26 2020 +0000"
      },
      "message": "Merge \"audio policy: fix mmap stream invalidation logic\" into rvc-dev"
    },
    {
      "commit": "1cb0a63dd903b8548685a99eb4d544890e1fd78f",
      "tree": "e10cbe626fe00665539266f21703fd5a122369d0",
      "parents": [
        "4a23235ad6a7a963982888da882f5292ce30e0b3",
        "242a9f8db150d0fe94c9cb95dde768edaa649a1c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 26 19:16:55 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 26 19:16:55 2020 +0000"
      },
      "message": "Merge changes I5e12b2c7,Ic79effb1 into rvc-dev\n\n* changes:\n  [audiopolicy][managerdefault] Filter unknown stream for volume settings\n  [AudioPolicy][engine][Strategy] fallback on music stream\n"
    },
    {
      "commit": "07b846f69ad071c930e61cbe3817d5b0a73831fe",
      "tree": "42bc469402ca37bd592652251485d0714b94c532",
      "parents": [
        "5b615f346d5ba51d2b3923997e755d3dd590db2d",
        "0ec4c815ac927c4dbd76e1df4761425d771de427"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 26 11:13:14 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Mar 26 11:13:14 2020 +0000"
      },
      "message": "Merge \"APM: Notify the client about new audio ports\" am: 272808c329 am: 0ec4c815ac\n\nChange-Id: I9928116b708a496d29aabf382553e98499335b84\n"
    },
    {
      "commit": "0ec4c815ac927c4dbd76e1df4761425d771de427",
      "tree": "687399b671582aa80caf35a37bbdc1518aa1f15c",
      "parents": [
        "a093f06459bcf7ebc9f73783acab06b1eb2f0c51",
        "272808c329b808adee88d4f1d715b9e209236bff"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 26 10:58:49 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Mar 26 10:58:49 2020 +0000"
      },
      "message": "Merge \"APM: Notify the client about new audio ports\" am: 272808c329\n\nChange-Id: I978e68758ab051dd16354054e9743dc98378dd26\n"
    },
    {
      "commit": "272808c329b808adee88d4f1d715b9e209236bff",
      "tree": "dcc1a2264c4c4b96e79332b91a267c105e6fa728",
      "parents": [
        "1d0e52cf31987ec3f91d46caed992971047ae068",
        "a30ec1468fc8c3779673bb91a338956f26b5d807"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 26 10:47:01 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 26 10:47:01 2020 +0000"
      },
      "message": "Merge \"APM: Notify the client about new audio ports\""
    },
    {
      "commit": "a30ec1468fc8c3779673bb91a338956f26b5d807",
      "tree": "6b42f2d3e4da6be2f8b594bfbeee8991847a854e",
      "parents": [
        "bc0f22e33fa5adc5a8873489a5270ba93f94b5a1"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 24 09:32:34 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Mar 25 20:22:26 2020 -0700"
      },
      "message": "APM: Notify the client about new audio ports\n\nAdded missing notification to the APM client\nabout new audio ports. This should make the\nports provided by the newly discovered HAL\nto be available to apps.\n\nProcess the onNewAudioModulesAvailable notification\non the \"APM Output\" command thread to avoid clashing\nwith outgoing commands from APM during module\ninitialization.\n\nBug: 149854039\nTest: atest audiopolicy_tests\nChange-Id: I3fede7f5a04419b15e15476d8b5ac7dc6d63c98d\nMerged-In: I3fede7f5a04419b15e15476d8b5ac7dc6d63c98d\n"
    },
    {
      "commit": "d0e2c74984f7542cc154a899190bda100ef38671",
      "tree": "ee96ed7f289021026ab9bf29b252cad3240c0c3d",
      "parents": [
        "3006a83565b6863f247bf634faa929b84608026e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Mar 25 15:59:59 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Mar 25 17:04:49 2020 -0700"
      },
      "message": "APM: Notify the client about new audio ports\n\nAdded missing notification to the APM client\nabout new audio ports. This should make the\nports provided by the newly discovered HAL\nto be available to apps.\n\nProcess the onNewAudioModulesAvailable notification\non the \"APM Output\" command thread to avoid clashing\nwith outgoing commands from APM during module\ninitialization.\n\nBug: 149854039\nTest: atest audiopolicy_tests\nChange-Id: I3fede7f5a04419b15e15476d8b5ac7dc6d63c98d\n"
    },
    {
      "commit": "242a9f8db150d0fe94c9cb95dde768edaa649a1c",
      "tree": "c2239970a597d68f9cc03863805a7b54287b9108",
      "parents": [
        "fd5779fa71d1a2fcb9f9e57e7e46137cefb65f5c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 23 15:57:04 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 25 11:59:05 2020 -0700"
      },
      "message": "[audiopolicy][managerdefault] Filter unknown stream for volume settings\n\nStream for which no attributes is associated (aka no strategy supports it)\nwill use default attributes hence it will change the default strategy\nvolume (aka Music).\nIt leads to eroneous volume changes.\nThis bug does not happen on phone / tablets targets as all streams are\nlinked to a strategy with specifc attributes.\nIn case of OEM configuration, some stream types may not be supported\nand associated to any strategy.\n\nBug: 136121584\nTest: dumpsys audio \u0026 dumpsus media.audio_policy.\n    Ensure volumes of stream types and their aliases match.\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: I5e12b2c7248074d10affb6c28d1866d4589cb9e8\nMerged-In: I5e12b2c7248074d10affb6c28d1866d4589cb9e8\n"
    },
    {
      "commit": "d6bd328e22c932348a35c46d6fd4c845a1d414b5",
      "tree": "cf3bf4b06123f4f532f250c54fa4a4f3f191830e",
      "parents": [
        "79270b9121b3c2972a281b42860f853e39663692",
        "ae36a0b59be8af2bd7100a9e3e4433daca7a7a69"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 21 02:41:13 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Mar 21 02:41:13 2020 +0000"
      },
      "message": "Merge changes I5e12b2c7,Ic79effb1 am: 0141bbe644 am: ae36a0b59b\n\nChange-Id: I1ed7d32d85e20cccb461d2f2e7acf1efca7d2539\n"
    },
    {
      "commit": "ae36a0b59be8af2bd7100a9e3e4433daca7a7a69",
      "tree": "f1b64173fdf992a3af4e209aaede73f51fda7e65",
      "parents": [
        "916c6b14ebb05ecdc0a27b4794226dca53001c15",
        "0141bbe644288f980b4448c430e73ff8b5ea9a30"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 21 02:20:05 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Sat Mar 21 02:20:05 2020 +0000"
      },
      "message": "Merge changes I5e12b2c7,Ic79effb1 am: 0141bbe644\n\nChange-Id: I67e68d4b55b6cea51182ba62a549e74f1c89bdbb\n"
    },
    {
      "commit": "5992b18e6196af182c549b9c73d805cbc11bb31a",
      "tree": "dc7aebb76fbce56e90b3d521b0618980a6d36af3",
      "parents": [
        "a69a879deb6523416ef882e4d4d4134ffc786fc5"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Mar 20 14:55:14 2020 +0100"
      },
      "committer": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Mar 20 15:03:01 2020 +0100"
      },
      "message": "[audiopolicy][managerdefault] Filter unknown stream for volume settings\n\nStream for which no attributes is associated (aka no strategy supports it)\nwill use default attributes hence it will change the default strategy\nvolume (aka Music).\nIt leads to eroneous volume changes.\nThis bug does not happen on phone / tablets targets as all streams are\nlinked to a strategy with specifc attributes.\nIn case of OEM configuration, some stream types may not be supported\nand associated to any strategy.\n\nTest: dumpsys audio \u0026 dumpsus media.audio_policy.\n    Ensure volumes of stream types and their aliases match.\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: I5e12b2c7248074d10affb6c28d1866d4589cb9e8\n"
    },
    {
      "commit": "85732f4121889191410448cfc19c336e0ea69285",
      "tree": "95f34d584a0ad4a2695b67ef7de733a5825b357f",
      "parents": [
        "f57740fc311c80bc7e62fde8b03b4f8f4d34ccda"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 19 11:31:10 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 19 17:49:51 2020 -0700"
      },
      "message": "audio policy: fix mmap stream invalidation logic\n\nImplement a MMAP stream invalidation logic consistent with AAudio\ndisconnect callback policy.\n\n- When a MMAP stream is opened with a preferred device selection:\n  Invalidate the stream only when the preferred device becomes unavailable,\n  either because disconnected or not selectable by highest priority use case.\n- When a MMAP stream is opened without explicit device selection:\n  Invalidate the stream when current device selection changes due to the\n  routing rules applicable to the stream\u0027s audio attributes (attributes\n  of first client on that stream).\n\nBug: 144020984\nTest: OboeTester \u003e TEST DISCONNECT\n\nChange-Id: I70fde0bc8ab9d544b8d3badb713e6239d792cbdb\n"
    },
    {
      "commit": "f1dec13713381b1991b9bb8f1988605c9a41bc3c",
      "tree": "a149ed59585509462eb8f06f843a1df36fdf2b8e",
      "parents": [
        "ac2f85bf6b6b5443d1f98b1259beaf5ceda72e0d",
        "22452540c56dfa16b6dad176cddc312d9ba6664d"
      ],
      "author": {
        "name": "Jasmine Cha",
        "email": "chajasmine@google.com",
        "time": "Wed Mar 18 07:09:47 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Mar 18 07:09:47 2020 +0000"
      },
      "message": "audio policy: fix disordered sequence while changing device am: 7f82d1a74e am: 22452540c5\n\nChange-Id: I95fc728e8bb434ff51f495e29f174b682b4798fa\n"
    },
    {
      "commit": "8d386f779d76eb2a87ec570bf6ee3c0ce674085f",
      "tree": "23882c11fc70381e07df23e416d1eb101e1debdc",
      "parents": [
        "c7c50f47ce0998ea6d2ea5f40abc937fbde278e2",
        "7f82d1a74e77e0a89fd8431dbaf68f9b8e8b7118"
      ],
      "author": {
        "name": "Jasmine Cha",
        "email": "chajasmine@google.com",
        "time": "Wed Mar 18 06:51:02 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Mar 18 06:51:02 2020 +0000"
      },
      "message": "audio policy: fix disordered sequence while changing device am: 7f82d1a74e\n\nChange-Id: I8a46ba81d6055e097c7328a79e9d945ad83bda81\n"
    },
    {
      "commit": "7f82d1a74e77e0a89fd8431dbaf68f9b8e8b7118",
      "tree": "2bdca4c4ccac9de11c954108c71c6d2293c66be8",
      "parents": [
        "a5d212cfee978920684ad90f4b9bb3cfb3eeee8a"
      ],
      "author": {
        "name": "Jasmine Cha",
        "email": "chajasmine@google.com",
        "time": "Mon Mar 16 13:21:47 2020 +0800"
      },
      "committer": {
        "name": "Bubble Fang",
        "email": "bubblefang@google.com",
        "time": "Wed Mar 18 01:16:26 2020 +0000"
      },
      "message": "audio policy: fix disordered sequence while changing device\n\n  Disordered sequence will occur when delayMs of muting volume\n  and changing path are the same and no additional delay between\n  both commands (muteWaitMs \u003d\u003d 0).\n  Add half reported latency to delayMs for routing could avoid\n  processing muting stream volume and switching path concurrently.\n\nBug: 149798335\nTest: Make VoIP/voice call and switch device between handset/handsfree.\n      Check if touch tone is truncated in QXDM.\n\nSigned-off-by: Jasmine Cha \u003cchajasmine@google.com\u003e\nChange-Id: Ifa15ba9de330805637cfb20ee96c4293c1c1bd31\n"
    },
    {
      "commit": "560095bfbfb43586c416dbabc33077369293a596",
      "tree": "a797eec3eed5009c238b08168ca19444c86942e0",
      "parents": [
        "40a5d55ea454d8e59b7b65e51be9edd30dd7da92"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 05 16:28:57 2020 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Mar 11 09:37:48 2020 -0700"
      },
      "message": "Allow for late audio module discovery in APM\n\nExtract code that loads hardware modules and fills out\nmAvailable{Input|Output}Devices into a reusable function.\nIt is used both during APM initialization and on\nreceiving a notification that a new HAL service has\nbeen discovered.\n\nBug: 149854039\nBug: 151187299\nTest: atest audiopolicy_tests\nChange-Id: Ifb7f0b61b06a0609802e63dccb26f3472328ef48\nMerged-In: Ifb7f0b61b06a0609802e63dccb26f3472328ef48\n"
    },
    {
      "commit": "21762fa512c3d47bf0a78ffbfe3969ebabed2004",
      "tree": "740678fbbc90985039ec2ec445ab8ec9d93fc8df",
      "parents": [
        "47daf67f562b366a37c11a6b8de12d81840497d0"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 05 16:28:57 2020 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 10 15:36:34 2020 -0700"
      },
      "message": "Allow for late audio module discovery in APM\n\nExtract code that loads hardware modules and fills out\nmAvailable{Input|Output}Devices into a reusable function.\nIt is used both during APM initialization and on\nreceiving a notification that a new HAL service has\nbeen discovered.\n\nBug: 149854039\nTest: atest audiopolicy_tests\nChange-Id: Ifb7f0b61b06a0609802e63dccb26f3472328ef48\nMerged-In: Ifb7f0b61b06a0609802e63dccb26f3472328ef48\n"
    },
    {
      "commit": "c0d04987f6f7bd6e054210b1ca33a827afce650b",
      "tree": "32385a3831d727298a1a766d09183c28a93e2f5d",
      "parents": [
        "c62ad13ad8da6b31168f0d9f3e5f2a770ed0bbee"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Mar 02 21:02:28 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Mar 09 20:19:42 2020 +0000"
      },
      "message": "Allow for late audio module discovery in APM\n\nExtract code that loads hardware modules and fills out\nmAvailable{Input|Output}Devices into a reusable function.\nIt is used both during APM initialization and on\nreceiving a notification that a new HAL service has\nbeen discovered.\n\nBug: 149854039\nTest: atest audiopolicy_tests\nChange-Id: Ifb7f0b61b06a0609802e63dccb26f3472328ef48\n"
    },
    {
      "commit": "09a836a39eaaf7446f04bf72e6cd6ce31f2f0289",
      "tree": "2728ac40e6265e5f577be57cf24b1e76c44557b8",
      "parents": [
        "b2182ac1b80112aae33a0b3edf639397a55a1041",
        "2c00365e4e941badc979b8b0c0d08fc132cb8ec7"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 12 21:34:36 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 12 21:34:36 2020 +0000"
      },
      "message": "Merge \"[AudioPolicyManager] Fix mute/unmute while use DevicePortGain\" am: fc11cf146c am: 17a72c3f55 am: 2c00365e4e\n\nChange-Id: I68ab92a1713f16de70209ecaf087a3a1e3d8f6b2\n"
    },
    {
      "commit": "2c00365e4e941badc979b8b0c0d08fc132cb8ec7",
      "tree": "7f5ee49ad87808bad509a1cc4529f71b4327d2c0",
      "parents": [
        "ab2774489795f99a1bc97e5be0815fe978ee443c",
        "17a72c3f55dfab1564252634e8425fb5195dffe9"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 12 21:20:08 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 12 21:20:08 2020 +0000"
      },
      "message": "Merge \"[AudioPolicyManager] Fix mute/unmute while use DevicePortGain\" am: fc11cf146c am: 17a72c3f55\n\nChange-Id: I0eb4a47d468c013d71ce68abbd995543afb6bb64\n"
    },
    {
      "commit": "ed91f58c8a4aa652bd937fe5af0442cea7aa5959",
      "tree": "8007baa3d2b9e686a1455dff60c0b27f81b4c45b",
      "parents": [
        "c9a69d37969689ab912373b04626e8bd8882ce58"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Jan 31 10:35:37 2020 +0100"
      },
      "committer": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Feb 12 11:21:28 2020 +0100"
      },
      "message": "[AudioPolicyManager] Fix mute/unmute while use DevicePortGain\n\nIn case of using Device Port Gain to control the volume, the logic\nof setVolumeIndexForAttributes for device type check has been bypassed.\n\nHowever, in case of unmuting, the volume will be applied to all streams\nwith requested device then will be set for AUDIO_DEVICE_OUT_DEFAULT_FOR_VOLUME\nwhich is a convention used in case of no volume for device has been set\npreviously.\nAs this logic is bypassed, in case of HwGain, the final gain applied will\nbe the one for AUDIO_DEVICE_OUT_DEFAULT_FOR_VOLUME, which may be completely\ndifferent from the gain of current device.\n\nThis CL fixes this by factorizing the device check logic for both SW/HW gains.\n\nTest: build \u0026 play music \u0026 Vol - until mute then volume +. No gap expected.\nChange-Id: I24c57df84496e404c05c92f08f907131ef79cf3a\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "25134ebcd771b73a7e2048f883eaca11c4fc8472",
      "tree": "5b78d72227f653a2cfeb859d780e5809d9e4e946",
      "parents": [
        "61df392ec23c16caccf800a8d078c683c07863ef"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 10:06:18 2019 +0000"
      },
      "committer": {
        "name": "android-build-team Robot",
        "email": "android-build-team-robot@google.com",
        "time": "Wed Feb 12 01:18:34 2020 +0000"
      },
      "message": "Revert \"audiopolicy: align input and output devices for engine\"\n\nThis reverts commit 4b8d5ce58d98d4a163f63e17735450a7cac4821c.\n\nBug: 132241823\nReason for revert: Breaks Screen Mirroring during Live caption\n\nChange-Id: I4bf711e5c5e4233fcf58bda5477380b488fde2fa\n(cherry picked from commit e0d004fe12fc2535d62d52bea0666b690ba057b0)\n(cherry picked from commit 66d0e72c9da1d5af852556872262a1e928796389)\n"
    },
    {
      "commit": "0d1a1207ce4bfd97ac58701cee0d1822f3f44fab",
      "tree": "cd4efc606bd1acf2c79beec368b6dd633acdad9f",
      "parents": [
        "0848bf51f51992c8f4be8748f209244b96e062c5",
        "d0a8ff659dc9c99383e5dc4eabfeec9c68479b7c"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Feb 06 02:55:07 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Feb 06 02:55:07 2020 +0000"
      },
      "message": "Merge \"Revert \"audiopolicy: align input and output devices for engine\"\" into qt-qpr1-dev am: 6302adca26 am: d0a8ff659d\n\nChange-Id: Ibe604a19c059b0b911730e66ef867099e5328f3f\n"
    },
    {
      "commit": "66d0e72c9da1d5af852556872262a1e928796389",
      "tree": "3be360927a116b19c19f4ee80f75cdf8af987598",
      "parents": [
        "6e51a2630a656c3f7bb3324f40221970832d8a35"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 10:06:18 2019 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Feb 01 00:09:55 2020 +0000"
      },
      "message": "Revert \"audiopolicy: align input and output devices for engine\"\n\nThis reverts commit 4b8d5ce58d98d4a163f63e17735450a7cac4821c.\n\nBug: 132241823\nReason for revert: Breaks Screen Mirroring during Live caption\n\nChange-Id: I4bf711e5c5e4233fcf58bda5477380b488fde2fa\n(cherry picked from commit e0d004fe12fc2535d62d52bea0666b690ba057b0)\n"
    },
    {
      "commit": "ad447b7e7f45d90a3ddf1e181fb4cf9e1d112bde",
      "tree": "f3fb593d38accc9f5f91ce5e584f1d61dc8237cf",
      "parents": [
        "e55b684c7d452fe09c3a224bfd60b495c8f6af14"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Nov 18 15:50:22 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 24 18:52:43 2020 +0000"
      },
      "message": "audiopolicy: apm: factorize internal patch creation/release\n\nThis CL removes duplicated code for patch creation for\n-voice call\n-system API to create patches.\n-system API to start/stop AudioSource\n\nIt creates internal methods to create/release Audio Patches.\n\nThe benefit of this rework is to have startAudioSource now working\nwhatever Sw or HW bridging is used.\n\nTest: Voice Call\nBug:\nChange-Id: I82738d116abd94f7738fce8ca3a1c3466942060a\nMerged-In: I82738d116abd94f7738fce8ca3a1c3466942060a\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "90c5793536026f6f6f0299640321e18870aed761",
      "tree": "cad510a72b42070805b3a27d0336059c267cbabc",
      "parents": [
        "10ef43ff1c024fa9c61d42cc5dca00b6c66de112",
        "e8e0e7a52b4ead4a4eb4e3616e4810994f37966d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 24 02:32:53 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 24 02:32:53 2020 +0000"
      },
      "message": "Merge changes I249d9ef1,I2c75b4bf,I0da109d6,I82738d11\n\n* changes:\n  [AudioPolicyService] Add creation of DeviceEffects\n  [audioeffect] add support of device effect in config parser\n  audioeffect: add missing sources to deserializer config file\n  audiopolicy: apm: factorize internal patch creation/release\n"
    },
    {
      "commit": "afd4cea46c12f55a7ccd47271314d59d833aa5c0",
      "tree": "4d920dc931fe9605f8d5197b38da07bd913816ad",
      "parents": [
        "0bc6f60e1f036380bd48d022631e6561b90f210c"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Nov 18 15:50:22 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 23 15:40:06 2020 -0800"
      },
      "message": "audiopolicy: apm: factorize internal patch creation/release\n\nThis CL removes duplicated code for patch creation for\n-voice call\n-system API to create patches.\n-system API to start/stop AudioSource\n\nIt creates internal methods to create/release Audio Patches.\n\nThe benefit of this rework is to have startAudioSource now working\nwhatever Sw or HW bridging is used.\n\nTest: Voice Call\nBug: 136294538\nChange-Id: I82738d116abd94f7738fce8ca3a1c3466942060a\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "d8a987392d7f5fc8969a62cf34467c39e01f1d91",
      "tree": "b20bf2edf5ab8730fa7854a26f211b12ecb99c2f",
      "parents": [
        "98cbb9d8ba5427fb8095f17050f66d19d532da6f",
        "90e776378afb43385d8759fa1169acab92f8ed94"
      ],
      "author": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Thu Jan 23 13:32:23 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 23 13:32:23 2020 +0000"
      },
      "message": "Merge \"Added audio policy api to do route based on user.\""
    },
    {
      "commit": "90e776378afb43385d8759fa1169acab92f8ed94",
      "tree": "0225cee9d8bcb3c57bd8a49084902c7cade42479",
      "parents": [
        "c55cdbafff6450155d4282a30ef025d6cecf5b3e"
      ],
      "author": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Wed Nov 27 17:12:28 2019 -0800"
      },
      "committer": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Thu Jan 23 00:33:17 2020 +0000"
      },
      "message": "Added audio policy api to do route based on user.\n\nAdded new API to audio policy to route audio output streams based on\nAndroid user id. The routing remains similar to uid rules, with only\nusing USERID_EXCLUDE_USERID to decide on the user id base routing.\nApplication uid and stream usage routing remain the same with the added\ndifference that user id will be taken in to consideration if available.\nBug: 139365417\nTest: atest\ncom.google.android.gts.audio.AudioHostTest#testUserIdDeviceAffinity\nTest: atest AudioPlaybackCaptureTest\nChange-Id: Ib817eb8ae19ed7dea8451e8a8584a20b9b6f5042\n"
    },
    {
      "commit": "f5614e2fa3fa1a38e3a6fa4c058424fc053be651",
      "tree": "826e1d7bad7bc2cb38886621bb2bf79825a5b5b2",
      "parents": [
        "acee494af3d3c22f734cbf4c4d21afa93409f5c7",
        "cd51052e56c18894986d6ec7a2c6e625353c55b1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 22 20:03:10 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 22 20:03:10 2020 +0000"
      },
      "message": "Merge \"Clean up error logging audio device type collection.\""
    },
    {
      "commit": "cd51052e56c18894986d6ec7a2c6e625353c55b1",
      "tree": "02d75de5b045fdac47a04971dcccf5d2bb9c24b7",
      "parents": [
        "2c5b3c2f90acaf233112c7921e4c75a88d7a7227"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jan 22 09:40:55 2020 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jan 22 10:31:17 2020 -0800"
      },
      "message": "Clean up error logging audio device type collection.\n\nThere are some usages of very verbose logging audio device type\ncollection as unsigned int, which is missed in previous refactoring CLs\nsince they are not shown up without enabling very verbose log.\n\nBug: 148110286\nTest: make with enabling very verbose log in AF and AP\nChange-Id: If31b7e3dd7b094e011cb88dcb4a5d0c3e8d81bd4\n"
    },
    {
      "commit": "524159db6d53cecc93de4133e0875be937437883",
      "tree": "37358040ec4d8deacf9486f9312a61ba3e3ebefc",
      "parents": [
        "ff1725382653dfa2db8536edc38a6b1f2c166f2a"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Mon Dec 23 14:41:47 2019 -0800"
      },
      "committer": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Thu Jan 16 15:59:19 2020 -0800"
      },
      "message": "Adding support for new System Usages\n\nAdding system usages to native layer functions including 4 new usages\nand setSupportedSystemUsage API\n\nBug: 141006627\nTest: Built, ran, and verified types showed up in dumpsys\nChange-Id: I282c6b40ed9256ced5efb59b42da95a8fb0a6398\n"
    },
    {
      "commit": "9b2064c3afe14f893afff019bdcd4c4d40ce13ed",
      "tree": "0a49d5049cfd60fb6de3387460f5bb41a58e2ed1",
      "parents": [
        "249dba6eb7b1f71a424290e1c58c3bedb76a0595"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 22 17:25:04 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 13 23:05:34 2020 +0000"
      },
      "message": "AudioFlinger: implement device specific audio effects\n\nAdd management of audio effects applied to a specific input\nor output audio device.\n\nA new class DeviceEffectProxy derived from Effectbase is added\nto represent an effect attached to a particular audio device type and\naddress. This proxy manages one or more actual EffectModule instances\nautomatically added to a playback or capture thread or directly to the\naudio HAL when the targeted audio device is used by an audio patch.\n\nA new DeviceEffectManager class is added to manage creation and release\nof DeviceEffectProxy instances and monitor creation and release of audio\npatches and create or release actual effect instances accordingly.\n\nBug: 136294538\nTest: make\n\nChange-Id: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\nMerged-In: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\n"
    },
    {
      "commit": "2623d365228384ccab82169f65f2c5971cfedf60",
      "tree": "ae5698609bd6d7231958ac53ba16feaff2a2f2b3",
      "parents": [
        "f0a91423d480c4634e647c4e4a1fe760580f7ff2",
        "f41599b115c9b3fc13a5fe00186067885a31c3ba"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 11 03:10:52 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 11 03:10:52 2020 +0000"
      },
      "message": "Merge \"APM: support querying of audio playback routing\""
    },
    {
      "commit": "f41599b115c9b3fc13a5fe00186067885a31c3ba",
      "tree": "b35290ea7ef244758abf9ead2cdce78b1614c4ec",
      "parents": [
        "684e4758669bacea71379735d49bdc74807772f3"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jan 07 14:22:08 2020 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jan 10 12:35:43 2020 -0800"
      },
      "message": "APM: support querying of audio playback routing\n\n  Add support for querying the audio devices used for playback\nrouting for the given audio attributes.\n  Take into account registered dynamic policies but disregard\nsecondary output descriptors as they are used for playback\ncapture.\n\nBug: 144440677\nTest: atest AudioServiceHostTest\nChange-Id: I102c57b432b044dc6b0ead49e0a30d8e9094411d\n"
    },
    {
      "commit": "d1ce689ac43bfd6c75c2f15a349e475396d04dcd",
      "tree": "42c6e27d027844c455405db5124a8086775cfc5e",
      "parents": [
        "d3fb71855d226e12b7d8ed261047619c75895034",
        "b82e6b724e45b1f88ed746c316b445b3bb8036b3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 09 18:23:19 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 09 18:23:19 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: implement device specific audio effects\""
    },
    {
      "commit": "b82e6b724e45b1f88ed746c316b445b3bb8036b3",
      "tree": "4fd55853fe2b97b98bf27bff61142d9b2b92f28f",
      "parents": [
        "9ce5404e8ee6cf247a9004500cb91bf3b8114b14"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 22 17:25:04 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 07 17:05:07 2020 -0800"
      },
      "message": "AudioFlinger: implement device specific audio effects\n\nAdd management of audio effects applied to a specific input\nor output audio device.\n\nA new class DeviceEffectProxy derived from Effectbase is added\nto represent an effect attached to a particular audio device type and\naddress. This proxy manages one or more actual EffectModule instances\nautomatically added to a playback or capture thread or directly to the\naudio HAL when the targeted audio device is used by an audio patch.\n\nA new DeviceEffectManager class is added to manage creation and release\nof DeviceEffectProxy instances and monitor creation and release of audio\npatches and create or release actual effect instances accordingly.\n\nBug: 136294538\nTest: make\n\nChange-Id: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\n"
    },
    {
      "commit": "c222d6e5aba8e7231d7430cabfbb011d664c9add",
      "tree": "9f959b7423f0c9f470704c0fd3614edf4aed0cfb",
      "parents": [
        "5b8039a69f1923a019d2c48b5158bf837df3a11e",
        "d46124d0a1ae2e2ef18aa7ea6ad4090f582b4479"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 07 19:15:09 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 07 19:15:09 2020 +0000"
      },
      "message": "Merge \"Select correct devices when ENFORCED_AUDIBLE is set\" am: 982ecd07f4 am: 0629cc56d0 am: d46124d0a1\n\nChange-Id: Ieb08a772528f1a07dbcfe7b4274dce4f8f4e7909\n"
    },
    {
      "commit": "019c1737ed05c4bff220cd8bc1de5a9991647422",
      "tree": "3f170a37e30d68fbef1f299866071227c21594cc",
      "parents": [
        "3eef87ec4e6413fb49990de06fef2480fc23aeef"
      ],
      "author": {
        "name": "Henrik Backlund",
        "email": "henrik.backlund@sony.com",
        "time": "Mon Sep 30 14:48:38 2019 +0200"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "Tomoharu.Kasahara@sony.com",
        "time": "Mon Jan 06 11:18:47 2020 +0000"
      },
      "message": "Select correct devices when ENFORCED_AUDIBLE is set\n\nIf ENFORCED_AUDIBLE is set for a stream, it should output\nto Speaker and not select output device(s) for VOICE_CALL.\n\nBug: 147209610\n\nChange-Id: I9553efd677979351ed6f7191079da84dac2a7ed1\n"
    },
    {
      "commit": "60e7d69f19d6c80082778dec51b23efbc2ed7e5f",
      "tree": "e214c802427c87c97cde465f0920902ef88e4ad6",
      "parents": [
        "e3fa518b987f7ccfd042f28e9744ec42813d7e34",
        "cd32297572d33978b4395d79f2cce52d71adbe8c"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Jan 03 21:34:57 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Jan 03 21:34:57 2020 +0000"
      },
      "message": "Merge \"Add IEC958_NONAUDIO output flag to MSD patches\" am: 3eef87ec4e am: d224afe849 am: cd32297572\n\nChange-Id: Icf9a1bff6a514890b8603bcacdf8577dd31266a5\n"
    },
    {
      "commit": "5c9f0837b3094923229127ef154507fda311a21b",
      "tree": "419df065009f23d2b5ac89d1dcbf8112c65a54f3",
      "parents": [
        "2638df9bf8fbe3e82c1908b47df206746080fb70"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Thu Nov 21 13:39:31 2019 +1100"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jan 03 11:14:18 2020 -0800"
      },
      "message": "Add IEC958_NONAUDIO output flag to MSD patches\n\nFor the formats compatible with IEC61937 encapsulation, assume\nthat the record thread input from MSD is IEC61937 framed (for\nproportional buffer sizing). Add the\nAUDIO_OUTPUT_FLAG_IEC958_NONAUDIO flag so downstream HAL can\ndistinguish between raw and IEC61937 framed streams.\n\nTest: manual test on BCM TV device\nChange-Id: I8f09f936ccce63985df4ad00433299b063769419\n"
    },
    {
      "commit": "1159384b08c2d1570fe323f3a8a95d7b0e0caf19",
      "tree": "52c45971dad648c4178fa3701692ff613dfc5a5f",
      "parents": [
        "9c7e2a51e2fb24bbf193b46a3f5e892af19cdfe5"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 18 15:50:09 2019 -0800"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Thu Dec 19 00:33:49 2019 +0000"
      },
      "message": "Remove cleanUpEffectsForIo.\n\nWhen closing input/output, it is not needed to unregister effects.\nThe effects will be automatically unregistered when the audio session id\nis released. If the effects are unregistered when closing input/output\nand the audio session id is not released, audio policy manager will lose\nthe visibility of the effects. In that case, it will fail to move the\neffects to new I/O when a track with the same audio session id is\nattached to a new I/O.\n\nBug: 145197421\nTest: repo steps from the bug\nChange-Id: I1bee3a3ee79692c863aa3977df62346ac9dc8946\n"
    },
    {
      "commit": "74cd6b0f6840c9f39b51700fb84420f2a1dc1f8e",
      "tree": "78e558b5d1b2d8b4950498294ceed86680176753",
      "parents": [
        "a32e60121e1cd626f300fb894f4e1bc5715d3d41"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Oct 25 10:06:40 2019 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Dec 12 17:08:59 2019 -0800"
      },
      "message": "Migrate to new sound trigger middleware service\n\nThis change:\n- Removes the old ISoundTriggerHw service and removes its code.\n- Connects AudioPolicyManager to the new service via AIDL RPC (using\n  a new utility, BinderProxy).\n\nChange-Id: I00366e2c5f252708e903b2311816d9eceb132a05\nBug: 142070343\n"
    },
    {
      "commit": "21777f87815a526e4376cf5621040ebbc5b02d05",
      "tree": "eae07307fb1e2507a47e5ebd3211484e045d3eee",
      "parents": [
        "42afea265a65a4d0b22f5d2f2af72cbbb2631c80"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 06 18:12:06 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 11 21:38:35 2019 +0000"
      },
      "message": "audio: add call assistant usage\n\nAdd audio usage for call assistant use cases.\nUsed by apps playing over call uplink path for call\nscreening or other in call assitant features.\nAdd corresponding routing strategy in audio policy manager.\nThe strategy reuses volume group \"PATCH\" as volume is fixed\nfor call uplink audio.\n\nBug: 135213843\nTest: make\nChange-Id: Iad34c058e96fa5c969e825d3ddb0a82a60accc76\n"
    },
    {
      "commit": "2deb47896c1a3604468f9b9144c7114f5d678b33",
      "tree": "5e952f128a421748aa32dc22f16e86ecad15a972",
      "parents": [
        "f6cd76eef99409ea943e995e3c8fae92a787fb36"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Nov 01 11:04:15 2019 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Dec 10 14:21:48 2019 -0800"
      },
      "message": "APM: support product strategy routing\n\n  Audio policy engine supports receiving a preferred device to use\nfor a given strategy (Engine superclass). Use of the preferred\ndevice intervenes at the level of the each engine implementation,\nhere in the default engine in getDevicesForProductStrategy() method\nso it is saved in the routing cache, and respects existing routing\npriorities.\n  Refactor the loops for call and output rerouting into a new\nupdateCallAndOutputRouting() method.\n\nBug: 144440677\nTest: atest AudioServiceHostTest#testPreferredDeviceRouting\n\nChange-Id: Ic4c690e1b0d8020c4335979e40e14e6df5887879\nMerged-In: Ic4c690e1b0d8020c4335979e40e14e6df5887879\n"
    },
    {
      "commit": "30857159e8c143aac18aa1c0db3cffd47d8e207d",
      "tree": "fa694fe4ca82413e2de5cca3066643571d46a611",
      "parents": [
        "a2adc8aa6c06f0e1d06c1bb6535be15f30ba26fd"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Nov 01 11:04:15 2019 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Dec 09 12:22:47 2019 -0800"
      },
      "message": "APM: support product strategy routing\n\n  Audio policy engine supports receiving a preferred device to use\nfor a given strategy (Engine superclass). Use of the preferred\ndevice intervenes at the level of the each engine implementation,\nhere in the default engine in getDevicesForProductStrategy() method\nso it is saved in the routing cache, and respects existing routing\npriorities.\n  Refactor the loops for call and output rerouting into a new\nupdateCallAndOutputRouting() method.\n\nBug: 144440677\nTest: atest AudioServiceHostTest#testPreferredDeviceRouting\n\nChange-Id: Ic4c690e1b0d8020c4335979e40e14e6df5887879\n"
    },
    {
      "commit": "5b78141fb60bb73ee9339497cce5b5111413927e",
      "tree": "4be7b7f377d843dd25f2ce2beef43c34d9908d49",
      "parents": [
        "ea64c67d2c2ecc6921fea5769d66f52301601857"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 04 14:10:42 2019 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 03 17:13:50 2019 -0800"
      },
      "message": "Move AudioDeviceTypeAddr to libaudiofoundation.\n\nMove AudioDeviceTypeAddr from AudioPolicy.h to libaudiofoundation.\nAudioDeviceTypeAddr is a class that contains audio device type and\naddress. It can be used not only in audio policy, but also other places.\n\nBug: 135621476\nTest: make, atest AudioHostTest\nChange-Id: Ib257859891c647c07f22771012efdada438a4ff5\nMerged-In: Ib257859891c647c07f22771012efdada438a4ff5\n"
    },
    {
      "commit": "12dc6b0e9fba8b7a8028d26fe02014fa2efe101e",
      "tree": "b72ebe2d9bd0682eef8613ed8a8cb30359c1a0ff",
      "parents": [
        "4ad3d03f619176464973f04adef235f49255b6ed"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 01 09:38:30 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 03 14:38:42 2019 -0800"
      },
      "message": "Clear up bit mask usage in audio policy.\n\nThis change includes:\n1. Use DeviceTypeSet to represent a combination of audio device types.\n2. Add helper functions for DeviceTypeSet\n3. Stop using audio device type as a bit mask in DeviceVector\n\nTest: atest AudioTrackTest AudioRecordTest AudioPlaybackCaptureTest\nTest: atest AudioHostTest AudioServiceHostTest audiopolicy_tests\nTest: audio smoke test\nChange-Id: If80513b689848bcab6094f70a572f053856afa82\nMerged-In: If80513b689848bcab6094f70a572f053856afa82\n"
    },
    {
      "commit": "6713a38298ccd91ba1718e559f057c705904f865",
      "tree": "a85b701316bf17a62e50376b271778dc6f4d8e96",
      "parents": [
        "2177b121ab8fc29c836719353b898456a671e728"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Sep 12 16:29:15 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Nov 27 11:04:33 2019 -0800"
      },
      "message": "Create DeviceDescriptorBase.\n\nDeviceDescriptorBase is a class that derives from AudioPort and\nAudioPortConfig and contains extensions to describe a audio port that is\na hardware device. DeviceDescriptor derives from DeviceDescriptorBase\nand contains policy related stuff.\n\nTest: atest AudioTrackTest AudioRecordTest AudioManagerTest\nTest: atest AudioPlaybackCaptureTest AudioHostTest audiopolicy_tests\nTest: audio smoke test\nBug: 135621476\nChange-Id: I70ebe6bca70a77bbfc8f6855de3fd4c4ffa1c487\nMerged-In: I70ebe6bca70a77bbfc8f6855de3fd4c4ffa1c487\n"
    },
    {
      "commit": "dd81cc2046346b92dc2c7c92d5a7628471bb5218",
      "tree": "24548543a9d9b63e68299105e8c09b41303fe7d0",
      "parents": [
        "dff2a4f7fcf16ea320684f9ca04bc05b8bf1b5b8"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Sep 11 10:15:46 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Nov 27 11:03:39 2019 -0800"
      },
      "message": "Rename AudioPort and PolicyAudioPort accordingly.\n\nMake the file name consistent as the class name.\n\nTest: make\nBug: 135621476\nChange-Id: Icbde26fe1798e344c3746f4678db098688456654\nMerged-In: Icbde26fe1798e344c3746f4678db098688456654\n"
    },
    {
      "commit": "dff2a4f7fcf16ea320684f9ca04bc05b8bf1b5b8",
      "tree": "7a6363492021a517099fc38a67efcacd377768dc",
      "parents": [
        "c02546150da2b87e71ed6d2df8abf48791ad79cb"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 10 14:29:54 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Nov 27 11:02:54 2019 -0800"
      },
      "message": "Make audio port in policy not derive from audio port base\n\nThis patch aims to make the structure for libaudiofoundation and policy\nstuff simpler, including:\n1. Make AudioPortBase as AudioPort in libaudiofoundation. Create\nPolicyAudioPort that contains policy related stuff, which is used by\naudiopolicy.\n2. Make AudioPortConfigBase as AudioPortConfig in libaudiofoundation.\nCreate PolicyAudioPortConfig that contains policy related stuff.\n3. DeviceDescriptor derives from AudioPort, AudioPortConfig, PolicyAudioPort\nand PolicyAudioPortConfig. IOProfile derives from AudioPort,\nPolicyAudioPort. AudioInputDescriptor/AudioOutputDescriptor derives from\nAudioPortConfig, PolicyAudioPortConfig.\n\nTest: atest AudioTrackTest, AudioRecordTest, AudioManagerTest\nTest: atest audiopolicy_tests, AudioHostTest\nTest: audio smoke test\nBug: 135621476\nChange-Id: I40299d95dda3b3fc0ea88b079f2fe38d8f7e5b31\nMerged-In: I40299d95dda3b3fc0ea88b079f2fe38d8f7e5b31\n"
    },
    {
      "commit": "c02546150da2b87e71ed6d2df8abf48791ad79cb",
      "tree": "88ecb87c7a96f1fa100f3c2133788a093c6a4b57",
      "parents": [
        "b9733bc444e79abf65fd18be3c25cb7e9499b7ad"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 10 14:29:14 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Nov 27 10:51:54 2019 -0800"
      },
      "message": "Rename AudioProfileVector.h as AudioProfileVectorHelper.h\n\nThe file only contains helper functions for AudioProfileVector.\n\nTest: make\nBug: 135621476\nChange-Id: Ifd8eb281cbb7d6395fd5d4b4d6f308d58e6ded3d\nMerged-In: Ifd8eb281cbb7d6395fd5d4b4d6f308d58e6ded3d\n"
    },
    {
      "commit": "b9733bc444e79abf65fd18be3c25cb7e9499b7ad",
      "tree": "fc5fa1bbe0ee8f698e81ac59d5e42c8d613b7fb5",
      "parents": [
        "1e415c058a14bf9ba2683685c40deda1dad6cd9c"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 10 14:27:34 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Nov 27 10:51:25 2019 -0800"
      },
      "message": "Leave AudioProfileVector only in libaudiofoundation.\n\nMake AudioProfileVector only in libaudiofoundation. In policy part,\ninstead of having policy specific AudioProfileVector deriving from\nAudioProfileVector in libaudiofoundation, make all the functions as\nglobal functions. In that case, AudioPortBase does not need to be a\ntemplate class. That helps make the structure clearer.\n\nTest: audio smoke test\nTest: CTS for AudioTrack, AudioRecord, AudioManager\nTest: audiopolicy_tests, AudioHostTest\nBug: 135621476\nChange-Id: I36b12123cf52c3f82cef09a965403791dff74093\nMerged-In: I36b12123cf52c3f82cef09a965403791dff74093\n"
    },
    {
      "commit": "eaf09f089a42f7a7ea39339e93b358b37b58956f",
      "tree": "f91620a31611160cc06ce12a1ba69dd15583e04e",
      "parents": [
        "736ffc105e64398dfa789bec3be880c7a1809761"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Aug 19 15:08:30 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Nov 26 15:26:53 2019 -0800"
      },
      "message": "Add AudioPortFoundation, AudioPortBase and AudioPortConfigBase.\n\nThe purpose of this change is to make a generic AudioPort class that\ncould be used by vendor.\n1. Add AudioPortFoundation and AudioPortBase. AudioPortFoundation\ncontains generic members of an audio port. AudioPortBase is a template\nclass that derives from AudioPortFoundation. It takes audio profile\nvector as a template parameters. That makes it more feasible to use\ncustomized audio profile stuff as needed. In audio policy, AudioPort\nderives from AudioPortBase and contain policy related stuff.\n2. Add AudioPortConfigBase. AudioPortConfigBase contains generic members\nof an audio port config. AudioPortConfig derives from AudioPortConfigBase\nand contains policy related stuff.\n3. Use std::string instead of String8 in AudioPort and AudioPortConfig.\n\nBug: 135621476\nTest: CTS for AudioRecord, AudioTrack, AudioManager, RoutingTest\nTest: audiopolicy_tests, AudioServiceHostTest\naudio smoke test\nTest: dumpsys media.audio_policy\nChange-Id: I05611b7067c18006660de2c678acd56bdd34010a\nMerged-In: I05611b7067c18006660de2c678acd56bdd34010a\n"
    },
    {
      "commit": "59a8759e91d4cd806026fd95e329e9a9d2b14313",
      "tree": "5a706d8c78e114fe1785b53f71fc9763fae5c8fe",
      "parents": [
        "147f5c318877c4fa8afa8e97208c109abf58c1cd"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Aug 13 15:17:08 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Nov 26 15:26:24 2019 -0800"
      },
      "message": "Preparation for moving AudioProfile to libaudiofoundation.\n\nCopy AudioProfile from audio policy to libaudiofoundation. Note that\nAudioProfile in libaudiofoundation has not been added into the make\nfile as it needs some more change to make it work. Doing this just to\nmake a cleaner diff for later change.\nRename AudioProfile in managerdefinitions folder as AudioProfileVector\nsince AudioProfile will be moved to libaudiofoundation.\n\nBug: 135621476\nTest: make\nChange-Id: I13ac067317648bbfd8d3960d16a1ea56ded83011\nMerged-In: I13ac067317648bbfd8d3960d16a1ea56ded83011\n"
    },
    {
      "commit": "4562b3b99b5462bd475325bd19a6047c30ce282a",
      "tree": "2e6200fbf5d873e90bdf6f6ccf45ef0c7a871aa3",
      "parents": [
        "41502b244f6107ed57330eb447d8e29960b9cf4f"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Jul 29 10:13:34 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Nov 26 11:41:08 2019 -0800"
      },
      "message": "Use standard containers for audio stuff in audio framework\n\n1. Add SampleRateSet, FormatSet, ChannelMaskSet, FormatVector\nusing std::vector and std::set in libaudiofoundation.\n2. Use SampleRateSet, FormatSet, ChannelMaskSet, FormatVector in\naudio framework.\n\nBug: 135621476\nTest: make, CTS for AudioRecord, AudioTrack, AudioManagerTest\nTest: play and record audio\nChange-Id: Ic04e637bcc6ba9df84c5e7561ec3c03f18a7d242\nMerged-In: Ic04e637bcc6ba9df84c5e7561ec3c03f18a7d242\n"
    },
    {
      "commit": "41502b244f6107ed57330eb447d8e29960b9cf4f",
      "tree": "63cf7c0b4e160cfd242bfbb603b6568aa89f0815",
      "parents": [
        "b8ec243b5f142edb13102bb76b887496d3a5cd5e"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jul 31 09:59:09 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Nov 26 11:29:16 2019 -0800"
      },
      "message": "Move AudioGain to libaudiofoundation.\n\n1. Create folder for libaudiofoudation.\n2. Move AudioGain to libaudiofoudation. The goal is to make AudioGain\nbe able to use in binder call and be vendor-available later.\n\nBug: 135621476\nTest: make, CTS for AudioTrack, AudioRecord, AudioManagerTest\nChange-Id: Ibf16ad9cb7f2ac657a02632ccbe4f934b5a12731\nMerged-In: Ibf16ad9cb7f2ac657a02632ccbe4f934b5a12731\n"
    },
    {
      "commit": "8a1095a9f240b4ac69e8aa47954a3ceb1bd38e16",
      "tree": "5e498499c94c3fa171a75e8daa55f949b4ea04ce",
      "parents": [
        "484d6119d3ca9140d415dc1841d4c0c500d76a20"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 08 14:44:16 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 08 17:56:01 2019 -0800"
      },
      "message": "audio policy: fix playback permission checks\n\nAlign playback permission checks implementation in getOutputforAttr() on\ncapture checks in getInputForAttr(): use an \"output type\" returned by\naudio policy manager and check permission accordingly.\n- Do not modify but reject request to play to call uplink when permission\nis denied.\n- Add missing permission check for injection to remote submix.\n- Clarify permission check for record from remote submix by using the\nuid/pid of client explicitly.\n\nBug:\nTest: CTS test for AudioTrack and AudioREcord.\nTest: GTS tests for dynamic policies and playback capture\nChange-Id: Ic0eb3b9921a491e97c58fa8f637583059a54b3a2\n"
    },
    {
      "commit": "c80381951593fa1152c2d6b1a1f75e56cfddd194",
      "tree": "fa0dd8ff4ca99aa851e10d49ce0c45a10f8890cd",
      "parents": [
        "0c3ab34456d0fb31f29459bb1a3d24008753b422",
        "74b71519c9ba9d55c4ab4596a90fb5e456acde9f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 08 22:40:38 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 08 22:40:38 2019 +0000"
      },
      "message": "Merge \"audio policy: use call screen mode\""
    },
    {
      "commit": "0c3ab34456d0fb31f29459bb1a3d24008753b422",
      "tree": "368a5533b9f178eb1a230fe35b30ff7d626b3f7d",
      "parents": [
        "dc0e389aac274d94fc3702cf858d0c47fa8ddd43",
        "8340e67185e852b7de1d68eb86ca0c46b1affb98"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 08 22:39:10 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 08 22:39:10 2019 +0000"
      },
      "message": "Merge \"audio policy: Add call screen audio mode.\""
    },
    {
      "commit": "74b71519c9ba9d55c4ab4596a90fb5e456acde9f",
      "tree": "f8c13ad2d2d3e1e1d54cfe5c02d11837fea80ac4",
      "parents": [
        "8340e67185e852b7de1d68eb86ca0c46b1affb98"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 06 17:21:57 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 06 17:25:33 2019 -0800"
      },
      "message": "audio policy: use call screen mode\n\nEnable playback over Call Tx path also when audio mode is CALL_SCREEN.\nWas previously only possilbe when IN_CALL or IN_COMMUNICATION.\n\nAlso generalize use of isStateInCall() method instead of\na mix of isStateInCall() and is_state_in_call().\n\nBug: 140384450\nTest: manual call screen test\nChange-Id: Ifda4ee2f26a30ed8dbe43b172d86b18d906029cf\n"
    },
    {
      "commit": "05b5edd08b0b846f6ffb749805a7b8bce31ce4f8",
      "tree": "49058f5bd3c2f4cf2321713374958ad68b84e19e",
      "parents": [
        "517734d665d69ed36c7a6cf5297452318aa517ec"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 04 14:10:42 2019 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Nov 06 13:52:55 2019 -0800"
      },
      "message": "Move AudioDeviceTypeAddr to libaudiofoundation.\n\nMove AudioDeviceTypeAddr from AudioPolicy.h to libaudiofoundation.\nAudioDeviceTypeAddr is a class that contains audio device type and\naddress. It can be used not only in audio policy, but also other places.\n\nBug: 135621476\nTest: make, atest AudioHostTest\nChange-Id: Ib257859891c647c07f22771012efdada438a4ff5\n"
    },
    {
      "commit": "8340e67185e852b7de1d68eb86ca0c46b1affb98",
      "tree": "fdb9098c48aedf7e3763f6dc2c5122bf16a5bd34",
      "parents": [
        "cd606f3f18e974ad02679ff9a6ffb98e71714b05"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 06 11:01:08 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 06 11:06:34 2019 -0800"
      },
      "message": "audio policy: Add call screen audio mode.\n\nAdd new audio mode AUDIO_MODE_CALL_SCREEN allowing call screening\nto take place while other audio use cases are still active.\n\nAlso add API and audio policy configuration attribute to\nindicate if the platform supports this audio mode.\n\nBug: 140384450\nTest: make\nChange-Id: If2fc56dbbd10aae2cf1498480471b35de0940228\n"
    },
    {
      "commit": "cb137d0ead90f63e9b67bd9af21425b32ebc150d",
      "tree": "aac38fef56e7fc6051426395922088854f4a03ad",
      "parents": [
        "c52243f298aa3e570197831c8c383fdedb8f4ac6"
      ],
      "author": {
        "name": "Nick Desaulniers",
        "email": "ndesaulniers@google.com",
        "time": "Tue Oct 15 18:30:45 2019 -0700"
      },
      "committer": {
        "name": "Nick Desaulniers",
        "email": "ndesaulniers@google.com",
        "time": "Mon Oct 21 10:55:49 2019 -0700"
      },
      "message": "[audiopolicy] fix -Wreorder-init-list\n\nC++20 will require members in a designated initializer to be in order\nunlike C99.\n\nBug: 139945549\nTest: mm\nChange-Id: I610f4e8a8a9d69eb650c354df4bd1438a1408897\nMerged-In: Ie129344a36893adc82e67181012e3af817bda9f4\nSigned-off-by: Nick Desaulniers \u003cndesaulniers@google.com\u003e\n"
    },
    {
      "commit": "a30e320885ccba49bc86f404acfa18729e243473",
      "tree": "84c2499f55d534b8adc7d753415b13cb9d635af5",
      "parents": [
        "7b12996173c219b168af186986349817df5bb5ea"
      ],
      "author": {
        "name": "Nick Desaulniers",
        "email": "ndesaulniers@google.com",
        "time": "Fri Oct 18 13:38:23 2019 -0700"
      },
      "committer": {
        "name": "Nick Desaulniers",
        "email": "ndesaulniers@google.com",
        "time": "Fri Oct 18 13:38:23 2019 -0700"
      },
      "message": "[audiopolicy] fix -Wreorder-init-list\n\nC++20 will require members in a designated initializer to be in order\nunlike C99.\n\nBug: 139945549\nTest: mm\nChange-Id: Ie129344a36893adc82e67181012e3af817bda9f4\nSigned-off-by: Nick Desaulniers \u003cndesaulniers@google.com\u003e\n"
    },
    {
      "commit": "9a3361e4c6bb01db24c135921b0891e917f71419",
      "tree": "3ee2499fd3e267607c9ae56f120687c4bbb5d67b",
      "parents": [
        "1865ec9e8a38506e2c7062793f39113f98da0543"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 01 09:38:30 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Oct 11 17:33:15 2019 -0700"
      },
      "message": "Clear up bit mask usage in audio policy.\n\nThis change includes:\n1. Use DeviceTypeSet to represent a combination of audio device types.\n2. Add helper functions for DeviceTypeSet\n3. Stop using audio device type as a bit mask in DeviceVector\n\nTest: atest AudioTrackTest AudioRecordTest AudioPlaybackCaptureTest\nTest: atest AudioHostTest AudioServiceHostTest audiopolicy_tests\nTest: audio smoke test\nChange-Id: If80513b689848bcab6094f70a572f053856afa82\n"
    },
    {
      "commit": "e0d004fe12fc2535d62d52bea0666b690ba057b0",
      "tree": "a577aaf84c4c00e621d651077127352574dd8aeb",
      "parents": [
        "7db9e2b272f63641a54be1aaedd2e41d9bf0c0e2"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 10:06:18 2019 +0000"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 17:00:19 2019 +0000"
      },
      "message": "Revert \"audiopolicy: align input and output devices for engine\"\n\nThis reverts commit 4b8d5ce58d98d4a163f63e17735450a7cac4821c.\n\nBug: 132241823\nReason for revert: Breaks Screen Mirroring during Live caption\n\nChange-Id: I4bf711e5c5e4233fcf58bda5477380b488fde2fa\n"
    }
  ],
  "next": "a3c03a5bbab39d2ea12281f10534a3ab7bad1a1a"
}
