)]}'
{
  "log": [
    {
      "commit": "ffd9771bb809c24867702e4848b5f5b286c4e2f0",
      "tree": "db54750d7b05f3ccaae8f541b92c533626eb6576",
      "parents": [
        "1c7a89196ac65d310e31272e2a28fa591334a998"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed May 03 17:45:36 2023 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu May 04 10:02:59 2023 -0700"
      },
      "message": "Plumb APM configuration retrieval from HAL\n\nAdd \u0027AudioHwModule\u0027 and \u0027AudioPolicyConfig\u0027 AIDL types\nto represent the APM configuration. Add \u0027getAudioPolicyConfig\u0027\nmethod to \u0027IAudioFlinger\u0027 interface. Implement it for\nthe AIDL HAL case. Add missing method to \u0027DeviceHalInterface\u0027.\n\nRemove \u0027isSpeakerDrcEnabled\u0027 from \u0027AudioPolicyConfig\u0027\nas it is not used anywhere in the framework.\n\nBug: 205884982\nTest: atest audiopolicy_tests\nTest: atest audiosystem_tests\nTest: atest audio_health_tests\nTest: m audiopolicy_fuzzer\nChange-Id: Icaf043085373ec661be37d4a7a5ed4356aeb4bbe\n"
    },
    {
      "commit": "b1ddbb0c33bf65629babbaf922da73417f026177",
      "tree": "1d7bb664e3118cbfec61e4997582e22d29914960",
      "parents": [
        "5edc5ed2afa2ceff19420e8d26a1b6113f8f8564"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Mar 15 17:06:59 2023 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 30 15:23:23 2023 -0700"
      },
      "message": "libaudiohal@aidl: Implement setConnectedState\n\nImplement the following methods in DeviceHalAidl:\n - getAudioPort (both overloads)\n - setAudioPortConfig\n - setConnectedState\n\nAdd DeviceHalInterface::setSimulateDeviceConnections.\nThis method only works for the AIDL HAL and allows\ntesting external device connections in unit tests.\nPlumb setSimulateDeviceConnections via the audio\nframework to expose to libaudioclient tests.\n\nMake conversions to/from AudioDevice and legacy\nto use a corresponding variant for the address.\nFix invalid addresses in audiopolicy_tests.\n\nBug: 273252382\nTest: atest audiopolicy_tests\nTest: atest audiosystem_tests\nTest: atest audio_aidl_conversion_tests\nChange-Id: I9ed13b3a464496740f00a6553b1e03a3f884db74\n"
    },
    {
      "commit": "5edc5ed2afa2ceff19420e8d26a1b6113f8f8564",
      "tree": "10d2c301eb98972afac3829b4519d759fa278254",
      "parents": [
        "7dd4c76232939e595726f460efd9e11aa69b5b35"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 23 14:52:15 2023 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 30 15:23:23 2023 -0700"
      },
      "message": "Add AudioSystem.listDeclaredDevicePorts method\n\nThis is useful for tests that exercise external device\nconnection/disconnection scenarios. \u0027listAudioPorts\u0027\nreturns ports for currently connected devices only.\n\nBug: 273252382\nTest: atest audiopolicymanager_tests\nChange-Id: I7d235d993235e21696002448ebf09b27ad6955a6\n"
    },
    {
      "commit": "8d7fd5a337d1bf68064c3fb172251468c5a6f76d",
      "tree": "c064ec7b3f01a10bc42e9c0a8d455cf201b6dc6d",
      "parents": [
        "a554a7923d9b5f95d2dd02378cbd1017cec5c419"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Jan 17 17:28:09 2023 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 21 20:35:23 2023 +0100"
      },
      "message": "[AOSP_IMPR] AudioPolicy: engine: add matching score API\n\nBug: 260298113\nTest: build\n\nChange-Id: I72ff69abc09d8017564bf8f811b5586aab9ebdec\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "d5d9de728caed24ee35cf55ea78b6031d5282324",
      "tree": "20fa88d1de4813ac8b4d6647185dc7bf7d5546a7",
      "parents": [
        "34080f272f88e8b4fb2f55875b5db4508a4511e6"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Feb 13 11:45:03 2023 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Feb 14 17:33:25 2023 -0800"
      },
      "message": "audio: Use auto-generated MicrophoneInfoFw class\n\nReplace use of manually written MicrophoneInfo class\nwith MicrophoneInfoFw which is generated automatically\nfrom the AIDL definition.\n\nRename MicrophoneInfoData AIDL to MicrophoneInfoFw for\nconsistency with other framework-side AIDL types.\nMicrophoneInfoFw is defined using stable shared data\ntypes.\n\nBug: 263964254\nTest: atest audio_aidl_conversion_tests\nChange-Id: I93e4fe08fc294350c9b06f2959f84b24f31f6881\n"
    },
    {
      "commit": "6e0fb1c60f1d58971b2ec6ebdfd2e9840c5f7baf",
      "tree": "ee028a44e3dc90e352d8f3f966795f9cd757abc9",
      "parents": [
        "77c63f4fcebff2d42144c8b24c15383478b2ae4a",
        "e1e22286e63525018df5ed3b5753c1c4886e1609"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 16 23:44:25 2023 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Jan 16 23:44:25 2023 +0000"
      },
      "message": "Merge changes I10b52b1e,I22ffe28a,I4587e350,I3f1ad6e8 am: d97d37cb03 am: 342b76f25c am: e1e22286e6\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/2388399\n\nChange-Id: I837b2465983811f2010b9e020c276d005658b7b3\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "87227251dab9ee541f17cc93369a1c9acbede08d",
      "tree": "a3eef76df9ac3828bb0dd8e1b6cf27ec6f9d1046",
      "parents": [
        "b6c50a3bc16cfc795abf7821a6c012f8590b3091"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jan 13 17:38:10 2023 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Sat Jan 14 18:49:56 2023 +0000"
      },
      "message": "Match conversion function names to type names\n\nUpdate the names of conversion functions for AudioPatchFw,\nAudioPortFw, and AudioPortConfigFw to reflect changes in\nthe names of these types. Besides consistenty, this allows\navoiding ambiguity when providing converters for vintf-stable\ntypes.\n\nBug: 205884982\nTest: m\nChange-Id: I10b52b1e454ba0f763db83a28657be2a08c7a50f\n"
    },
    {
      "commit": "b6c50a3bc16cfc795abf7821a6c012f8590b3091",
      "tree": "a77f807323e9e5800a843fdc043b51f29ee7850f",
      "parents": [
        "c18e9a10af774bce4a6525b7c883daab03fa4756"
      ],
      "author": {
        "name": "Atneya Nair",
        "email": "atneya@google.com",
        "time": "Sun Dec 18 16:14:18 2022 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Sat Jan 14 18:49:47 2023 +0000"
      },
      "message": "Rename AudioPatch to AudioPatchFw\n\nThere is a namespace conflict between the AIDL generated\nandroid.media.AudioPatch, and the android.media.AudioPatch included\nin the SDK. Renaming to avoid.\n\nTest: Compiles\nBug: 262989508\nChange-Id: I22ffe28ade6bed754556145567dc4919e868547d\nMerged-In: I22ffe28ade6bed754556145567dc4919e868547d\n"
    },
    {
      "commit": "c18e9a10af774bce4a6525b7c883daab03fa4756",
      "tree": "5decf0e21a2f3e2a09dfadc4ce2bbf4e7e6a462e",
      "parents": [
        "b8de69bcfd5b5dc6728f269406c7afb4e9b0417a"
      ],
      "author": {
        "name": "Atneya Nair",
        "email": "atneya@google.com",
        "time": "Sun Dec 18 16:45:15 2022 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Sat Jan 14 18:49:40 2023 +0000"
      },
      "message": "Rename AudioPort to AudioPortFw\n\nThere is a namespace conflict between the AIDL generated\nandroid.media.AudioPort, and the android.media.AudioPort included\nin the SDK. Renaming to avoid.\n\nTest: Compiles\nBug: 262989508\nChange-Id: I4587e350f47abe33c6978ff3332ca17d63b4f3ab\nMerged-In: I4587e350f47abe33c6978ff3332ca17d63b4f3ab\n"
    },
    {
      "commit": "b8de69bcfd5b5dc6728f269406c7afb4e9b0417a",
      "tree": "bc0566bcabe272fee14f481938229c17e0be40f7",
      "parents": [
        "4608dacab41023f7c2ec97e6f7b60738809173d3"
      ],
      "author": {
        "name": "Atneya Nair",
        "email": "atneya@google.com",
        "time": "Sun Dec 18 17:26:26 2022 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Sat Jan 14 18:49:31 2023 +0000"
      },
      "message": "Rename AudioPortConfig to AudioPortConfigFw\n\nThere is a namespace conflict between the AIDL generated\nandroid.media.AudioPortConfig, and the android.media.AudioPortConfig\nincluded in the SDK. Renaming to avoid.\n\nTest: Compiles\nBug: 262989508\nChange-Id: I3f1ad6e887d96e1724a6ccd1eef6747ba153c036\nMerged-In: I3f1ad6e887d96e1724a6ccd1eef6747ba153c036\n"
    },
    {
      "commit": "66fc0bd58b9d79b539f61869722a798e7f00701a",
      "tree": "806470434f2f619d0e07f1074d714ae77302efc3",
      "parents": [
        "1d312b975483e6fc4f4b50c09707c49b60b19414"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Jan 04 11:45:50 2023 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jan 05 17:59:27 2023 -0800"
      },
      "message": "audioserver: Bypass AIDL translation for in-proc AudioFlinger calls\n\nTest: boots, kill audioserver.\nBug: 264463471\nChange-Id: Ie755c7c29fb73c97f815b1f6f0056c5a116e7965\n"
    },
    {
      "commit": "49879b768e559201b86e78190df1fdd57687fb30",
      "tree": "aa5a8876d4f7f18509e14c77ac4bd739e77dacc9",
      "parents": [
        "01eb164076a1bd90e1f22a91eb6643eec1c6455d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 20 20:20:23 2022 +0100"
      },
      "committer": {
        "name": "Shunkai Yao",
        "email": "yaoshunkai@google.com",
        "time": "Wed Jan 04 19:53:28 2023 +0000"
      },
      "message": "audio flinger: rename Bluetooth latency mode APIs\n\nRename APIs controlling Bluetooth variable latency\nafter API review suggestions.\n\nBug: 257922898\nTest: make\n\nMerged-In: I517ad9c6aef14975c9e0a1a2703d1b17d638ea0e\nChange-Id: I517ad9c6aef14975c9e0a1a2703d1b17d638ea0e\n"
    },
    {
      "commit": "01eb164076a1bd90e1f22a91eb6643eec1c6455d",
      "tree": "b7fea5d2d99d8cc4e1eac468d4093349c3b83a72",
      "parents": [
        "ce46680753f2fe95bbccb04aaa79b8dfa08d7c72"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 16 11:45:07 2022 +0100"
      },
      "committer": {
        "name": "Shunkai Yao",
        "email": "yaoshunkai@google.com",
        "time": "Wed Jan 04 19:53:13 2023 +0000"
      },
      "message": "audio flinger: Bluetooth latency mode control\n\nAdd APIs to discover support and control the use\nof latency mode control over Bluetooth link.\n\nBug: 257922898\nTest: make\n\nMerged-In: I8d23a40f21465d566f0adc553cfc77e64571395e\nChange-Id: I8d23a40f21465d566f0adc553cfc77e64571395e\n"
    },
    {
      "commit": "b1a075bd8f1c6dfb7e07e7d6383ce17e6255f43a",
      "tree": "5ff7f504403fdda75eae754575c64f32159c2d95",
      "parents": [
        "50520aa539532d328b98fc4e63f72a0f32c19676"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Sun Dec 18 02:48:14 2022 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 23 02:58:41 2022 +0000"
      },
      "message": "Stabilize audio playback types used by the HAL\n\nThe following types used to be framework-only (belonging\nto android.media package). Since they need to be used\nby the HAL, move them to stable android.media.audio.common\ntypes package:\n  - AudioDualMonoMode\n  - LatencyMode -\u003e AudioLatencyMode\n  - AudioPlaybackRate\n\nBug: 175167149\nBug: 205884982\nTest: m\nChange-Id: I6cbe34d3b343fbefb0ae56e00dbf8360184e7b72\nMerged-In: I6cbe34d3b343fbefb0ae56e00dbf8360184e7b72\n"
    },
    {
      "commit": "5d7cdb566c21c852d8507b1495f107edc9711f3d",
      "tree": "e3a67a417eaeb6bc3694bb129029b411c41d7616",
      "parents": [
        "0c96fc8853d8ebaa5045b96bbe76163feb9fb604"
      ],
      "author": {
        "name": "Paul Wang",
        "email": "tzupengwang@google.com",
        "time": "Tue Nov 22 09:45:06 2022 +0000"
      },
      "committer": {
        "name": "Paul Wang",
        "email": "tzupengwang@google.com",
        "time": "Thu Dec 22 15:27:02 2022 +0000"
      },
      "message": "Expose API to set audio device as non-default playback\n\nBug: 259094683\nTest: atest AudioServiceHostTest AudioHostTest\nChange-Id: I3120a7b46675925497187614db8fbeb4d24572a8\n"
    },
    {
      "commit": "f53e182bbe5dee6d63527e31be8656a29d5058ae",
      "tree": "4459548e95ef6747f4a9ecfa4c6b91eaff25edc0",
      "parents": [
        "bf1780614f681f8a79955abd406a242d2330dc15"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Sun Dec 18 02:48:14 2022 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Dec 21 17:53:04 2022 +0000"
      },
      "message": "Stabilize audio playback types used by the HAL\n\nThe following types used to be framework-only (belonging\nto android.media package). Since they need to be used\nby the HAL, move them to stable android.media.audio.common\ntypes package:\n  - AudioDualMonoMode\n  - LatencyMode -\u003e AudioLatencyMode\n  - AudioPlaybackRate\n\nBug: 175167149\nBug: 205884982\nTest: m\nChange-Id: I6cbe34d3b343fbefb0ae56e00dbf8360184e7b72\n"
    },
    {
      "commit": "50d7258ff44c57790d795ac5c15fda6778ba5daf",
      "tree": "eef4065fd435f5e0a54e0ae3ff920d06e34abd71",
      "parents": [
        "0dddd24bc8d04bbb96c5b45fa490bffca514013b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 20 20:20:23 2022 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 20 20:20:23 2022 +0100"
      },
      "message": "audio flinger: rename Bluetooth latency mode APIs\n\nRename APIs controlling Bluetooth variable latency\nafter API review suggestions.\n\nBug: 257922898\nTest: make\nChange-Id: I517ad9c6aef14975c9e0a1a2703d1b17d638ea0e\n"
    },
    {
      "commit": "520576412c9beb2675e9a743d86f2033fa8d0bf9",
      "tree": "390503f25a450433d042f2091671087fd66260ed",
      "parents": [
        "249f9147d0d994cb1c2e3522bb36bbab0147dc37"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 16 11:45:07 2022 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 20 14:34:51 2022 +0100"
      },
      "message": "audio flinger: Bluetooth latency mode control\n\nAdd APIs to discover support and control the use\nof latency mode control over Bluetooth link.\n\nBug: 257922898\nTest: make\n\nChange-Id: I8d23a40f21465d566f0adc553cfc77e64571395e\n"
    },
    {
      "commit": "f5a3c7c4e531f694c7f944d7cab716bfaa5f4284",
      "tree": "01328556d888dc6a08aa6c01c575c04038d11a99",
      "parents": [
        "546a04440f31a00c0ac48bef4b5d0153dc27c57c",
        "3afdbd14a93808e20677d6d0c889a8834f85e823"
      ],
      "author": {
        "name": "Atneya Nair",
        "email": "atneya@google.com",
        "time": "Mon Dec 19 17:15:44 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 19 17:15:44 2022 +0000"
      },
      "message": "Merge changes I22ffe28a,I4587e350,I3f1ad6e8\n\n* changes:\n  Rename AudioPatch to AudioPatchFw\n  Rename AudioPort to AudioPortFw\n  Rename AudioPortConfig to AudioPortConfigFw\n"
    },
    {
      "commit": "3afdbd14a93808e20677d6d0c889a8834f85e823",
      "tree": "b0b5c275cc1adb4e21579bb24f75fbf7c6ef2c8e",
      "parents": [
        "638a6e408f6d6df47a828e32822be74fcad82cc4"
      ],
      "author": {
        "name": "Atneya Nair",
        "email": "atneya@google.com",
        "time": "Sun Dec 18 16:14:18 2022 -0800"
      },
      "committer": {
        "name": "Atneya Nair",
        "email": "atneya@google.com",
        "time": "Sun Dec 18 18:45:41 2022 -0800"
      },
      "message": "Rename AudioPatch to AudioPatchFw\n\nThere is a namespace conflict between the AIDL generated\nandroid.media.AudioPatch, and the android.media.AudioPatch included\nin the SDK. Renaming to avoid.\n\nTest: Compiles\nBug: 262989508\nChange-Id: I22ffe28ade6bed754556145567dc4919e868547d\n"
    },
    {
      "commit": "638a6e408f6d6df47a828e32822be74fcad82cc4",
      "tree": "360536c251f3516c56875f24751b2c281c42b5b0",
      "parents": [
        "7a9594f14e2367cd505833700dd82afd9a391970"
      ],
      "author": {
        "name": "Atneya Nair",
        "email": "atneya@google.com",
        "time": "Sun Dec 18 16:45:15 2022 -0800"
      },
      "committer": {
        "name": "Atneya Nair",
        "email": "atneya@google.com",
        "time": "Sun Dec 18 18:28:46 2022 -0800"
      },
      "message": "Rename AudioPort to AudioPortFw\n\nThere is a namespace conflict between the AIDL generated\nandroid.media.AudioPort, and the android.media.AudioPort included\nin the SDK. Renaming to avoid.\n\nTest: Compiles\nBug: 262989508\nChange-Id: I4587e350f47abe33c6978ff3332ca17d63b4f3ab\n"
    },
    {
      "commit": "7a9594f14e2367cd505833700dd82afd9a391970",
      "tree": "6a5884cc92217b5ff5854650fc5d0ec15aacddc5",
      "parents": [
        "238e3640d129862952770a26550a9b1854b3fe28"
      ],
      "author": {
        "name": "Atneya Nair",
        "email": "atneya@google.com",
        "time": "Sun Dec 18 17:26:26 2022 -0800"
      },
      "committer": {
        "name": "Atneya Nair",
        "email": "atneya@google.com",
        "time": "Sun Dec 18 17:58:51 2022 -0800"
      },
      "message": "Rename AudioPortConfig to AudioPortConfigFw\n\nThere is a namespace conflict between the AIDL generated\nandroid.media.AudioPortConfig, and the android.media.AudioPortConfig\nincluded in the SDK. Renaming to avoid.\n\nTest: Compiles\nBug: 262989508\nChange-Id: I3f1ad6e887d96e1724a6ccd1eef6747ba153c036\n"
    },
    {
      "commit": "0d13feae70baf44f867459e0f287a56742435338",
      "tree": "1ce15ddd126ee3b5880d33e4fb136b9127e680af",
      "parents": [
        "3be0f00e3eaa46e777aae993ebe85a2b1c481ccf"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 04 17:12:08 2022 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 16 11:46:00 2022 +0100"
      },
      "message": "audio policy: check audio attributes with use case validator\n\nAdd calls to use case validator when playback and capture starts\nto fix incomplete or default usages in audio attributes.\n\nBug: 257922898\nTest: libaudiousecasevalidation-test\n\nChange-Id: I5c22c34564a101eb9773988919cff6ded370485e\n"
    },
    {
      "commit": "8e22898fd6621cbb2b8effa7f9e7ce192f3f2d65",
      "tree": "d27cef2db64133661622fa4019e81beb4e7eaacf",
      "parents": [
        "dd6b19d9fccbad4a85f879ac772ef8bc35bde068",
        "c658e452a2a99d4b802424ec83773382f6906e7c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 12 17:18:13 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 12 17:18:13 2022 +0000"
      },
      "message": "Merge \"Support bit-perfect PCM playback.\""
    },
    {
      "commit": "6308925f5eb15bf35e1b71dd8d8103dcaa9e0cdd",
      "tree": "5f9240ebe2837f8cacd1d4f4fbcf3ae31cf8920d",
      "parents": [
        "468368676d2f4eaf0b769adfa60c69af555caccc",
        "e3fd1c2c3f0133dbf6890129e9ddbd39b7f43c7a"
      ],
      "author": {
        "name": "Vlad Popa",
        "email": "pvlad@google.com",
        "time": "Mon Dec 12 09:02:34 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 12 09:02:34 2022 +0000"
      },
      "message": "Merge \"CSD: return interface for messages to audio server\""
    },
    {
      "commit": "c658e452a2a99d4b802424ec83773382f6906e7c",
      "tree": "685f4c665ed8061ba3f1be62620b0cc8b96c4661",
      "parents": [
        "ec61814ae300751620735a59cc6e0b90fc2ca489"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Oct 21 20:52:21 2022 +0000"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Dec 12 06:38:21 2022 +0000"
      },
      "message": "Support bit-perfect PCM playback.\n\nThis is part of USB audio improvement. Bit-perfect PCM playback\nindicates that the PCM data will be sent as is down to the audio HAL.\nWhen the track is bit-perfect, there will not be volume control\napplied in the audio mixer. Only effects without processing or hw\naccelerated effects will be allowed to attach to bit-perfect tracks.\n\nBug: 239435816\nTest: manually\nTest: atest audiopolicy_tests\nChange-Id: I0bad4d7d78d4eaf741754d01bc5422ba15374782\n"
    },
    {
      "commit": "a84c3d3a1de405445038f236ecdae3a17b41c935",
      "tree": "5cb7a874b4da6b620bb3ede39d285d7f1f47040a",
      "parents": [
        "7b33ff46876867ccd361a0f7324007780eb1e953"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Dec 02 18:59:55 2022 +0000"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Dec 09 19:51:25 2022 +0000"
      },
      "message": "Support setting preferred mixer attributes for USB devices.\n\nThis is part of USB audio improvement. With setting mixer attributes,\napps will be able to choose the best mixer attributes for their\nplayback. This can help improve latency and audio experience.\n\nBug: 239435816\nTest: atest AudioManagerTest\nTest: atest audiopolicy_tests\nTest: Manually\nChange-Id: Ifd1e8e35f94dab309eabe879d20ae0358038a4bf\n"
    },
    {
      "commit": "e3fd1c2c3f0133dbf6890129e9ddbd39b7f43c7a",
      "tree": "c84740294bd676a0a8ed6be2ec2df96501ce86ae",
      "parents": [
        "4defd0b866f8b1419b8becd1ce82807d9d0f6afa"
      ],
      "author": {
        "name": "Vlad Popa",
        "email": "pvlad@google.com",
        "time": "Mon Nov 07 21:03:18 2022 +0100"
      },
      "committer": {
        "name": "Vlad Popa",
        "email": "pvlad@google.com",
        "time": "Wed Dec 07 10:40:59 2022 +0100"
      },
      "message": "CSD: return interface for messages to audio server\n\nWhenever the AudioService registers for receiving sound dose callbacks from the\nnative side, the native sends back the ISoundDose interface.\n\nTest: logs, dumpsys and UT\nBug: 257238734\nChange-Id: I5605196e8be91f00a7fbcf65573dfabe6e5c03d3\n"
    },
    {
      "commit": "63f047e4a839b89786d3f499d6f95e784620bc7c",
      "tree": "587c7dfce3939229b90ca8dbf64fb4c054d825a8",
      "parents": [
        "f09e93f565c9bb676964423209632452b61e17ef"
      ],
      "author": {
        "name": "Vlad Popa",
        "email": "pvlad@google.com",
        "time": "Sat Nov 05 14:09:19 2022 +0100"
      },
      "committer": {
        "name": "Vlad Popa",
        "email": "pvlad@google.com",
        "time": "Wed Dec 07 10:40:26 2022 +0100"
      },
      "message": "CSD: forward the native MEL exposure to AudioService\n\nAdded new aidl interface for the communication between the\nSoundDoseManager and the SoundDoseHelper. Currently only the momentary\nexposure warning is reported.\n\nTest: manual\nBug: 257238734\nChange-Id: I61560f81fedd31c30c39d676b7adf0ce087b495c\n"
    },
    {
      "commit": "1e2b56f676e360a62a298d91d0054cb59f3308d2",
      "tree": "b1bbbde165dcf6abd026317ab2c4f0fe580185d6",
      "parents": [
        "dde073d256a2b5ca07a7abfb17b357310bd1a64a"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Apr 01 14:34:29 2022 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 28 22:56:15 2022 +0000"
      },
      "message": "[BUG] audio: misalignement of native/java AudioAttributes\n\nNative audio attributes are initialized with a default source,\nwhereas JAVA AudioAttributes are initialized with an INVALID source.\nIt leads to equality failure, thus preventing to identify the\nright strategy / volume group.\nThis CL fixes this issue by forcing the source to invalid for\nAudioAttributesGroups, only used for product strategies, thus dedicated\nto playback use cases.\n\nTest: AudioVolumeGroupTest\nBug: 248287204\nBug: 238058094\n\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: Ie40576421aff595112740821ea002bc70354f512\n"
    },
    {
      "commit": "0825031e0353ce669d3b8131647414541cd3ea27",
      "tree": "e619b84900a5eba36670a20cb46c13d5d2a04e56",
      "parents": [
        "b22c6b259653c5ab9c13642acb47e029fbe70699"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 03 18:12:28 2022 +0200"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Sep 06 17:27:51 2022 -0700"
      },
      "message": "AudioSystem: add APIs to control HAL stream latency mode\n\nAdd API to AudioSystem and AudioFlinger to discover and control\nthe latency modes supported by audio HAL streams\n\nBug: 218273231\nTest: make\nMerged-In: I84c2325301cc7a4cf058fa076d0645ede877b54f\nChange-Id: I84c2325301cc7a4cf058fa076d0645ede877b54f\n"
    },
    {
      "commit": "d01cbef73def767423f6f43358e593da1993c0d0",
      "tree": "6850befb84d6cff7c8dd3cfd00bead7653093e10",
      "parents": [
        "601057b6fda9da3cf60d76a35ba40f4bfd881e29",
        "39842475fb41c38acd838411e7c3a0dee078e147"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 01 06:30:58 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Sep 01 06:30:58 2022 +0000"
      },
      "message": "Merge \"Fix arguments checking in AudioSystem::canBeSpatialized\" am: 07b03bd0ac am: 708fdc1f00 am: 5ff6518830 am: 903ee4c00c am: 39842475fb\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/2201455\n\nChange-Id: I4b8bb429d9cc23ae332b1a7d1e0a6f419756093a\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "39842475fb41c38acd838411e7c3a0dee078e147",
      "tree": "96ad20632207cb5e0ac671af034e92d7542f91ac",
      "parents": [
        "eec8e1b65a6008a6e162d027bc4dfeee3d059cdc",
        "903ee4c00c6867c71f85b952ce1770eccfdfd891"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 01 05:37:33 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Sep 01 05:37:33 2022 +0000"
      },
      "message": "Merge \"Fix arguments checking in AudioSystem::canBeSpatialized\" am: 07b03bd0ac am: 708fdc1f00 am: 5ff6518830 am: 903ee4c00c\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/2201455\n\nChange-Id: I5ae81cb9805db29fd1021dd3c018ad749bee3c2a\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "43297013e7eecb8e2298076683bf0d7013ccf4aa",
      "tree": "aeb2eddbc74a1051a003fac4a8908790f78438bf",
      "parents": [
        "2d70375a46b64cba8a0a6d2be20718b4267f2235"
      ],
      "author": {
        "name": "Ram Mohan",
        "email": "ram.mohan@ittiam.com",
        "time": "Tue Aug 30 16:11:49 2022 +0530"
      },
      "committer": {
        "name": "Ram Mohan",
        "email": "ram.mohan@ittiam.com",
        "time": "Tue Aug 30 16:15:13 2022 +0530"
      },
      "message": "Fix arguments checking in AudioSystem::canBeSpatialized\n\nBug: 244284619\nTest: atest audioeffect_tests\n\nChange-Id: I454638ad40627785cb5f539d776f1425adf64950\n"
    },
    {
      "commit": "1f0157edb05a5666af81030b9139e73765509be7",
      "tree": "a2c6dd8b0267e56ffcd56debf9b7f66e38488f92",
      "parents": [
        "d8e02a2eac2af5e95349f8271c341252c5e5e102",
        "bc2842885d4d90a41544bd2431ff9eb3dda974da"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 25 23:24:42 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Aug 25 23:24:42 2022 +0000"
      },
      "message": "Merge changes I443ba0bc,I1d46e887,Idabc64be,I03a8bdb4 am: 2d70375a46 am: 5577b01c9e am: 8f7c7a813f am: bc2842885d\n\nOriginal change: https://android-review.googlesource.com/c/platform/frameworks/av/+/2197004\n\nChange-Id: I1cfbc70208c9f3ab136c3d333c1dbe3c025eb153\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "7b75108b268abee4d9cc6726126fc6fc1a1483d9",
      "tree": "12aa3832d1c016054efe843f1382478d82878074",
      "parents": [
        "828fe9fb8a2bb76669d3844d6cf01626e1c3fd01"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jun 22 03:24:59 2022 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Aug 25 18:20:42 2022 +0000"
      },
      "message": "Fix arguments checking in AudioSystem::getDirectProfilesForAttributes\n\nBug: 215794103\nTest: atest audiosystem_tests\nMerged-In: I443ba0bc8ef0ffb95603d53436eaebb842eb79c2\nChange-Id: I443ba0bc8ef0ffb95603d53436eaebb842eb79c2\n(cherry picked from commit efc504bb060422dc3735a9b7c38b9c174b8a2065)\n"
    },
    {
      "commit": "f1c7397eb2cc034f21b923242e9987a0aa7fffa2",
      "tree": "807a6d5effd9e3210778d8fa61a3e503f9e4c6bb",
      "parents": [
        "3d6b936f257aee672237391fc32ba4240bdd22c8"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Apr 14 16:28:52 2022 -0700"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Thu Aug 11 17:05:24 2022 +0000"
      },
      "message": "Use returned config to retry opening MMAP stream when fails.\n\nWhen opening MMAP stream, it may fail at the first try as the requested\nconfiguration may not match what the HAL supports. The audio policy\nmanager knows all the information that the HAL supports. In that case,\nwhen it fails at the first try, audio policy manager is able to return\nthe supported configurations. After getting the supported\nconfiguration, the aaudio service can retry opening MMAP stream with the\nsupported configuration.\n\nBug: 226190094\nTest: atest AAudioTests AudioTrackTest AudioRecordTest\nTest: atest DirectAudioProfilesForAttributesTest\nChange-Id: Id6ccae3e26d7ffc8fe4c3c7babe825a08d22aa78\n"
    },
    {
      "commit": "5834c95980f7a84cfd9eddd0904a354e7d4d0500",
      "tree": "ba5cd21372aa124be6367b7e66d12c3bee8adf48",
      "parents": [
        "3da107ebe755bbf7c7e830fb84b48c7ece347b92",
        "f59b7037163457f91f6b603a692db7a5ab3e7f9c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 05 08:10:55 2022 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jul 05 08:10:55 2022 +0000"
      },
      "message": "AudioSystem: add APIs to control HAL stream latency mode am: 076e7c704b am: f59b703716\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/19066192\n\nChange-Id: I9de002d4e87cb050af40d70e8ac2e42d57eca01c\nSigned-off-by: Automerger Merge Worker \u003candroid-build-automerger-merge-worker@system.gserviceaccount.com\u003e\n"
    },
    {
      "commit": "076e7c704b25c9352597652dc99b7c4a0175ca8a",
      "tree": "eced8793d43dabcf0be7e7a15a5e602f65de6cdd",
      "parents": [
        "740ed10d7827b68ac244d442ba2124438b3318d4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 03 18:12:28 2022 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 01 17:09:38 2022 +0000"
      },
      "message": "AudioSystem: add APIs to control HAL stream latency mode\n\nAdd API to AudioSystem and AudioFlinger to discover and control\nthe latency modes supported by audio HAL streams\n\nBug: 218273231\nTest: make\nChange-Id: I84c2325301cc7a4cf058fa076d0645ede877b54f\n"
    },
    {
      "commit": "efc504bb060422dc3735a9b7c38b9c174b8a2065",
      "tree": "849015cc534df38461bfce1ebad046e58013f282",
      "parents": [
        "9cbb81ce71942e21695b49da340378b1cab61324"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jun 22 03:24:59 2022 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jun 22 03:24:59 2022 +0000"
      },
      "message": "Fix arguments checking in AudioSystem::getDirectProfilesForAttributes\n\nBug: 215794103\nTest: atest audiosystem_tests\nChange-Id: I443ba0bc8ef0ffb95603d53436eaebb842eb79c2\n"
    },
    {
      "commit": "ec3d5799fdd232bb5550d7d840899f69186efcb2",
      "tree": "2c7ef27ef2cb1638e2d40ab93b8247cb2d2754ab",
      "parents": [
        "e55db70293dbff768ee454cf456a39ad2cfdd7e2"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri May 06 00:19:55 2022 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri May 06 15:28:41 2022 +0000"
      },
      "message": "Recover from DEAD_OBJECT in AudioSystem::initStreamVolume\n\nCheck the Binder status and clear the client object\nin case the server side is gone.\n\nBug: 206966260\nTest: kill native audio server\nChange-Id: I9ba343a1cbe9a3a19d45b62727c1e77304732198\n"
    },
    {
      "commit": "78f2b3087af860e6ffb2e26585ffdf5973f61e0a",
      "tree": "17bbc6fd31d2b0261d3925ff4f06061b86a1bc8f",
      "parents": [
        "12c71eef7753eaf5300b709632368767f57c38b3"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Apr 15 18:18:41 2022 +0000"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Apr 21 16:03:09 2022 +0000"
      },
      "message": "AudioPolicyManager volume init on invalid min/max\n\nDetect situations where min/max volumes are invalid\nin AudioPolicyManager::checkAndSetVolume and return\nan error. On error, call back into AudioService\nto request the volume ranges to be reinitialized.\n\nBug: 206966260\nTest: upcoming AudioService test\n\nChange-Id: Ie63d9b9e3faad0a3e897f2807ece383632860adb\n"
    },
    {
      "commit": "b0a7bc9deca8b5d205b63d704b6e6cb101f30f43",
      "tree": "5e831803a253ab3bc23481fb5b46cd5ac780fb68",
      "parents": [
        "a6a905074f68c09873395fecd9992b48727533f4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 05 15:06:08 2022 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 05 15:28:03 2022 +0200"
      },
      "message": "audio policy: set track spatialization state from audio policy manager.\n\nWhen an audio track is created, AudioPolicyManager.getOutputForAttr()\nwill return if it is actually being spatialized. This will allow removing\nthe duplicated logic in audio flinger to tell if a track is spatialized and\nalso to only enable the spatializer effect if spatialized tracks are active\nand connected to the spatializer mixer.\n\nBug: 227740874\nTest: music and spatial audio playback regression\nChange-Id: If75c8ad06afdf3b47e3cc5d30c777af22d6fc35e\n"
    },
    {
      "commit": "744efbea0afd2310e9ab8988b8ab60e7c4ca0485",
      "tree": "1deef48f3065864774d4118af19baed3f6fb78fd",
      "parents": [
        "f34c00f5fb1525bf67976554ff3c4b6f1a880b75"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Feb 16 09:37:15 2022 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Feb 28 12:12:12 2022 -0800"
      },
      "message": "Remove getDevicesForStream\n\nObsolete - use getDevicesForAttributes instead.\n\nTest: Boots, audio runs\nTest: atest audiopolicy_tests\nTest: atest AudioHostTest\nTest: atest AudioServiceHostTest\nTest: atest AudioManagerTest\nBug: 184944421\nMerged-In: Ia2380f8b028f6a39a265d84bccc5e34aeef41f29\nChange-Id: Ia2380f8b028f6a39a265d84bccc5e34aeef41f29\n"
    },
    {
      "commit": "6d23c0f54c863144b53d6a7cb024bf2770b4bb79",
      "tree": "e5e1b280cbd4726a67ffc6db06601608eb576ec4",
      "parents": [
        "e526939d81da981c9cb418411b0c80c8b498a06d"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Feb 16 09:37:15 2022 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Sat Feb 26 00:28:16 2022 +0000"
      },
      "message": "AudioPolicyManager: update getDevicesForAttributes\n\nAdd forVolume parameter to enable special volume handling.\nThis is the first step to remove getDevicesForStream.\n\nTest: volume changes; adb shell dumpsys audio\nBug: 219974551\nMerged-In: If0886e6e885a06d927befadb02830cead421fabd\nChange-Id: If0886e6e885a06d927befadb02830cead421fabd\n"
    },
    {
      "commit": "17031564f347330f7b34dda59e82be78ba0e4abd",
      "tree": "1424bc40a5d8ddecd0c944528fb440d7d4074106",
      "parents": [
        "04f3e76b78702f620c435e6a72220ede72a21e33"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Feb 23 23:00:27 2022 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Feb 23 23:05:35 2022 +0000"
      },
      "message": "Fix AudioSystem::getAudioPort implementation\n\nThe implementation used to try to convert the complete provided\naudio port into AIDL before passing to AP Service. The\ncorresponding AP Service method has been changed to only take\nthe port ID—the only piece of information which is actually\nused by APM.\n\nBug: 221075345\nTest: in preparation by a contractor\nChange-Id: Id274ee14a8bfd2dcbfbb22b7a09b89dc6b7314ce\n"
    },
    {
      "commit": "c2cdda35061f0a5751a62f790c2d364cc3163557",
      "tree": "8d76667faa891284625dd2aecb98f62f4175785c",
      "parents": [
        "829d90dbe210496b334b6e69acd01c1d326015e5"
      ],
      "author": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Mon Jan 31 19:10:39 2022 -0800"
      },
      "committer": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Wed Feb 09 10:43:28 2022 -0800"
      },
      "message": "Added audio service API to set active assistants.\n\nAdded API to manage the currently active assistants UIDs. When an\nassistant can become active the API can be called to set voice\ninteraction service and corresponging trusted hotword service as active.\n\nIf there are no assistant UIDs in the active list the audio policy\nservice uses the default policy, which is to find the latest active\nassistant and allow that to continue listening. This is to continue\nsupport for legacy devices where the management of the active assistant\nshould be preserve.\n\nBug: 189312611\nTest: m -j, and run assistant\nChange-Id: I18984f3dcb8bf63dd16b3ae86d96dfbce39ced03\n"
    },
    {
      "commit": "829d90dbe210496b334b6e69acd01c1d326015e5",
      "tree": "6081c25ec9fea791b7468fe32e8fdce73b5aca4a",
      "parents": [
        "3eeeda39325f72a4fd6016f1bd9bf2b0395e5b99"
      ],
      "author": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Fri Jan 28 17:17:56 2022 -0800"
      },
      "committer": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Sat Feb 05 13:58:21 2022 -0800"
      },
      "message": "Added mechanism for setting multiple UIDs as assistants.\n\nAdded mechanism for setting multiple services UIDS as assistants. The\ncurrent assistant behaviour for recording still remains the same.\n\nBug: 189312611\nTest: m -j, and run assistant via hotword trigger and key press\nChange-Id: Iccd01c8a8ceaacc16418e0857bda805452b26152\n"
    },
    {
      "commit": "88fa275b87f7fc777dd6fcb93fa3975595f7d735",
      "tree": "436631035c80a29cf65b5bc8e25d5afb419d6745",
      "parents": [
        "c5bb85226bb07d14fd69f95891e3c7585adfe1fe"
      ],
      "author": {
        "name": "Nathalie Le Clair",
        "email": "lcnathalie@google.com",
        "time": "Tue Nov 23 13:03:41 2021 +0100"
      },
      "committer": {
        "name": "Nathalie Le Clair",
        "email": "lcnathalie@google.com",
        "time": "Thu Feb 03 13:04:17 2022 +0100"
      },
      "message": "Transport AudioPort to HAL\n\nThis CL is part of a chain of CLs to make\nAudioManager#setWiredDeviceConnectionState contain information about the\ndevice\u0027s supported capabilities. This CL takes care of some required\ndownstream changes:\n- Adapt arguments of AudioSystem#setDeviceConnectionState to AudioPort,\nwhich contains the device type, address, name and supported capabilities\n- Adapt arguments of downstream methods as well,\nuntil AudioPolicyManager#setDeviceConnectionStateInt\nIn AudioPolicyManager#setDeviceConnectionStateInt, AudioPort is\nconverted back to the previously used arguments (type, address, name)\nbefore calling into mHwModules. In a follow-up change, mHwModules will\nneed to be adapted to take on the AudioPort argument as well.\n\nBug: 199846845\nTest: atest audio_health_tests \u0026\u0026 atest audiopolicy_tests\nChange-Id: I4f6b038f863aaadf2e3e05c37c181f9ae41c9e2f\n"
    },
    {
      "commit": "d6b786c06d32d03c29b7264a65e211fbd5b1e7d0",
      "tree": "5133d1de0fe2bf9bfa84dc6cfd298e32f9727ac9",
      "parents": [
        "ba028d00603ab0637fac1fb05e1627fac0616fdd",
        "325a8eb3a0fa3d0fcdead415207667b04f0a473e"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Thu Jan 27 00:50:51 2022 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 27 00:50:51 2022 +0000"
      },
      "message": "Merge \"audio: add API for querying the Ultrasound support\""
    },
    {
      "commit": "325a8eb3a0fa3d0fcdead415207667b04f0a473e",
      "tree": "56d1ca1756da31ba2524fe34b2ef9e2ecc28f7e5",
      "parents": [
        "e3009b64df64e1e95a6ecf4f1cef7e4e66acba14"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Wed Jan 19 19:56:51 2022 +0800"
      },
      "committer": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Fri Jan 21 20:02:25 2022 +0800"
      },
      "message": "audio: add API for querying the Ultrasound support\n\nBug: 200256985\nTest: Check the return value with/without the Ultrasound\nOutput/Input in audio_policy_configuration.xml\nSigned-off-by: Carter Hsu \u003ccarterhsu@google.com\u003e\nChange-Id: I681491bc21788e7eb75a052025a3feed89033524\n"
    },
    {
      "commit": "f2196d8f89b7fe7d7cfee26be2113d8aaf042cff",
      "tree": "c24c3892612803e4884b1645c32a7ae94f83cb23",
      "parents": [
        "e3009b64df64e1e95a6ecf4f1cef7e4e66acba14"
      ],
      "author": {
        "name": "Dorin Drimus",
        "email": "dorindrimus@google.com",
        "time": "Mon Jan 03 12:11:18 2022 +0100"
      },
      "committer": {
        "name": "Dorin Drimus",
        "email": "dorindrimus@google.com",
        "time": "Fri Jan 21 11:36:02 2022 +0100"
      },
      "message": "Add getDirectProfilesForAttributes\n\nAllows any app to query AudioManager on the available direct\nAudioProfiles for the specified AudioAttributes. Only the active paths\nthat will be actually used to output sound are returned.\ngo/audio-route-t\n\nBug: 190810951\nBug: 202253203\nTest: atest android.media.audio.cts.DirectAudioProfilesForAttributesTest\nTest: audiopolicy_fuzzer\nChange-Id: Idf3f6ddc9896301fa9e546b1221844853473b3e6\n"
    },
    {
      "commit": "2b9d5a1cde844313fe1b604c23995e06a24fc099",
      "tree": "606551618808feb26df6a61dc9019f63ac66061c",
      "parents": [
        "3e0148770827684b9a4352ed7f9b06a4a4217ff3"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Dec 10 01:06:29 2021 +0000"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Dec 20 17:42:31 2021 +0000"
      },
      "message": "Support query direct playback support.\n\nSupport query direct playback support. Direct playback can be compressed\noffload playback or compressed passthrough playback. This interface can\nhelp developers to discover device\u0027s capabilities.\n\nBug: 197838445\nTest: atest AudioManagerTest\nTest: audiopolicy_fuzzer\nChange-Id: I4066f53f5021b30e1fcf66de162c766326ee56cc\n"
    },
    {
      "commit": "dd807580d172a9dcf69a3e0af1bab45d05d62625",
      "tree": "9810c0f64e3f0ac691f6843565ea7613ceefdad9",
      "parents": [
        "c2cac4e6b24a87e580949ab340f5f6fcf4b72dad"
      ],
      "author": {
        "name": "Patty",
        "email": "plhuang@google.com",
        "time": "Thu Nov 04 21:01:03 2021 +0800"
      },
      "committer": {
        "name": "Patty",
        "email": "plhuang@google.com",
        "time": "Tue Nov 16 09:20:26 2021 +0800"
      },
      "message": "Parse audio config codec capability for LE devices\n\n 1. Rename function getHwOffloadEncodingFormatsSupportedForA2DP to\n    getHwOffloadFormatsSupportedForBluetoothMedia\n 2. Add one parameter for function\n    getHwOffloadFormatsSupportedForBluetoothMedia to get the\n    supported codec for A2DP encode/decode or LE audio encode/decode\n 3. Add function getAudioDeviceOutAllBleSet() to get the audio device\n    set for BLE\n\nTag: #feature\nBug: 203535499\nTest: atest BluetoothInstrumentationTests\nChange-Id: I9de90c7f61db1f5de848ac66cfc8bd99d27d6cfb\n"
    },
    {
      "commit": "0078ee57547cae721a5e3fd1f03effb35a273df9",
      "tree": "4d4f75c88ffc625a044d78e00acae43157c9e4ae",
      "parents": [
        "ceb8bf98b9424ccdc09b1f91cec03f8127f97a28"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Sep 30 23:06:20 2021 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 01 18:16:06 2021 +0000"
      },
      "message": "Split AudioPort/Config between fwk and android.media.audio.common\n\na.m.a.c adds versions of AudioPort/Config structs which\nare similar to Audio HIDL HAL V7. They lack some bits used only\nby the framework. These are carried in AudioPortSys/PortConfigSys.\nmedia::AudioPort/Config join the HAL part and the system part\ntogether.\n\nUpdated to/from AIDL conversions in libaudiofondation.\n\nBug: 198812639\nTest: atest audiofoundation_parcelable_test\nChange-Id: I383cf2b07d9931dbea1ba0d10bb60cdd0b57039c\n"
    },
    {
      "commit": "ceb8bf98b9424ccdc09b1f91cec03f8127f97a28",
      "tree": "a0584a4beaf7909ffc9092a45eeeec163592b166",
      "parents": [
        "a4a926ff92fde2d2ce960695014b11f12db94355"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Sep 23 21:29:39 2021 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 01 18:11:56 2021 +0000"
      },
      "message": "Refactor AudioPort and AudioPortConfig\n\nThe goals are to split framework-only fields from common,\nand to simplify and unify structures where possible.\n\nWhat has got changed:\n\n1. Removed \u0027AudioPort[Config]SessionExt\u0027 parcelables.\n   These parcelables correspond to \u0027audio_port[_config]_session_ext\u0027,\n   which is trivial--contains only \u0027session\u0027 field, and hasn\u0027t been\n   extented since the inception. Remove AIDL types since each\n   type requires its own file, which adds mental burden.\n\n2. Removed \u0027AudioPort[Config]DeviceExt\u0027 parcelables.\n   At the HAL level only the \u0027AudioDevice\u0027 field is needed.\n   Moved remaining framework-only fields to \u0027AudioPortDeviceExtSys\u0027\n   which is reused between \u0027AudioPort\u0027 and \u0027AudioPortConfig\u0027.\n\n3. Merged \u0027AudioPortConfigMixExt\u0027 with \u0027AudioPortMixExt\u0027.\n   Moved remaining framework-only fields to \u0027AudioPortMixExtSys\u0027.\n\n4. The previous item allowed using \u0027AudioPortExt\u0027 instead of\n   \u0027AudioPortConfigExt\u0027.\n\n5. \u0027AudioPortDeviceExtSys\u0027 and \u0027AudioPortMixExtSys\u0027 put into\n   \u0027AudioPortExtSys\u0027 which is a system-only companion to \u0027AudioPortExt\u0027.\n\nBug: 198812639\nTest: atest audiofoundation_parcelable_test\nChange-Id: I27306f7ce33b136860db6a9784d34960816987cd\n"
    },
    {
      "commit": "f33fd94d49c8a3a7f4fdbe17514e7f1c619b66ad",
      "tree": "30195f2792e1d859832673de1b84ed393e2bf8b7",
      "parents": [
        "c03e43f8b1ff54b8eeab2628c5f1ef085268c481"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 29 17:10:30 2021 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 29 17:10:30 2021 +0000"
      },
      "message": "Dedupe RETURN_STATUS_IF_ERROR macro\n\nMove the definition to \u0027AidlConversionUtil.h\u0027 and\nget rid of the copies.\n\nBug: 198812639\nTest: m\nChange-Id: I373c4449721b69aa104d45a599ba1aa1304bcb4d\n"
    },
    {
      "commit": "e504e7b785de72b27aa52fda7b4be4694aa57ff1",
      "tree": "4a8483937cb3b71961eb42f1a8f5dcab693affa1",
      "parents": [
        "f6331f231cbc7da5a5365833f40e2a4f8d011002"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Sat Sep 18 00:27:08 2021 +0000"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 21 23:26:46 2021 +0000"
      },
      "message": "Add HAL interface to replace aaudio system property.\n\nUsing the HAL interface instead of reading system property is a better\noption when moving to AIDL HAL. The replaced property includes:\n  - aaudio.mixer_bursts\n  - aaudio.hw_burst_min_usec\n\nTest: atest AAudioTests\nBug: 193275465\nChange-Id: I9c9a04296e56ff083babcfa089fcdddc6b89ed94\n"
    },
    {
      "commit": "e99d08844983773f44fd43f0dc8b4982f77eabb0",
      "tree": "102b5cc31e6afbf24e0bdd10dfc334a5028d524d",
      "parents": [
        "932cb9627ebc3a2c1438655d94f2a5065969faa1"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Sep 17 05:21:25 2021 +0000"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Sep 20 05:18:55 2021 +0000"
      },
      "message": "Move AudioMMapPolicy* from android.media to a.m.audio.common SAIDL\n\nBug: 193275465\nTest: make\nChange-Id: I79ea167fe4a0035a13873a641428305e1209c3cf\n"
    },
    {
      "commit": "932cb9627ebc3a2c1438655d94f2a5065969faa1",
      "tree": "b9ef8d9d5d8bbeea1499b8c2fd4e08c90ec1fb61",
      "parents": [
        "f4a75367c834a502c40de0d0793b3f83aaca829a"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Sep 16 01:05:27 2021 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Sep 17 23:47:21 2021 +0000"
      },
      "message": "Use android.media.audio.common.AudioDeviceAddress\n\nMake sure that pairs of \u0027AudioDeviceDescription\u0027 (aka type) and\nthe device address are always represented in AIDL as AudioDevice.\n\nMove all the AIDL\u003c-\u003elegacy conversions into AidlConversion\nso it is possible to switch to structured device address\nrepresentations in a subsequent CL.\n\nBug: 198812639\nTest: m\nChange-Id: If4300e411d76c90d42939f07298535ebdb4185f4\n"
    },
    {
      "commit": "f4a75367c834a502c40de0d0793b3f83aaca829a",
      "tree": "ca9e6f21d0614a8e9425e07e66406650d5f1fb22",
      "parents": [
        "9d9582286f93a91419c1a50a638b5504a0c2632f"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Sep 16 00:02:54 2021 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Sep 17 23:47:00 2021 +0000"
      },
      "message": "Move AudioDevice* from android.media -\u003e a.m.audio.common SAIDL\n\nBug: 198812639\nTest: m\nTest: atest audio_aidl_conversion_tests\nChange-Id: I9193593bf17634e9bf05dc7cf56ac826c4755443\n"
    },
    {
      "commit": "ebe64105be4f395433a0d34b2668c9cc62a086f8",
      "tree": "7fb65b0e8ed6040f1236828ae3457ecbff38b92f",
      "parents": [
        "ffe4958ed1eb1fe05b8bb7458c18c697a19decc2"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue Sep 07 20:01:07 2021 +0000"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 14 23:33:44 2021 +0000"
      },
      "message": "Add interface to query the mmap support.\n\nCurrently, the mmap support is defined in system property. But the\nsystem property only indicates if the mmap is supported or not. It\ndoesn\u0027t indicate on which device mmap is supported. In that case, adding\nan interface to query the mmap support can help make things clear.\n\nTest: atest AAudioTests\nTest: Run OboeTester TEST OUTPUT\nTest: Verify that MMAP is showed as enabled if supported\nTest: Try toggling MMAP on and off when opening streams\nBug: 193275465\nChange-Id: Iac289c1a02e6e2ab4076ab6f2b5045efecad97ac\n"
    },
    {
      "commit": "ddceeccb8ae7c68c40cebbad304285637ccdb312",
      "tree": "03fe24180a3fdb58e43ea32fae35a8fd298c25b7",
      "parents": [
        "94dcd2d47e216ad8f68a3f3d7cb348dae7a8443d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Sep 03 13:58:56 2021 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Sep 03 17:16:54 2021 -0700"
      },
      "message": "Move more types from android.media -\u003e a.m.audio.common SAIDL\n\nMove types that are known to be used by audio HALs\n(those listed in h/i/audio/common/7.0/types.hal):\n\n - AudioContentType\n - AudioEncapsulationMetadataType\n - AudioEncapsulationType\n - AudioMode\n - AudioSource (renamed from AudioSourceType to\n     match the name of MediaRecorder.AudioSource)\n - AudioUuid\n\nBug: 198812639\nTest: m\nTest: m audioflinger_fuzzer\nChange-Id: I25b4503d3bbfcba9d21cc5c628b76a6d025b709c\n"
    },
    {
      "commit": "dbf036454ee1685f13e043691678a5d4ec23dfba",
      "tree": "0c2db77ccea7b8931866cf4b7da81fec68989dc4",
      "parents": [
        "ca1729b50a3a430ac5c745c4ee619fb9c5b5dfc2"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Aug 25 18:15:32 2021 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Aug 31 18:11:47 2021 -0700"
      },
      "message": "Move common data types to android.media.audio.common AIDL\n\nThe following types got moved:\n - AudioConfig\n - AudioConfigBase\n - AudioEncapsulationMode\n - AudioOffloadInfo\n - AudioStreamType\n - AudioUsage\n\nUpdated references to the types.\n\nBug: 188932434\nTest: m\nChange-Id: I429632ea639d4d9e0aa176109ffe0cc1cb6ad049\n"
    },
    {
      "commit": "57bd06fe7ee881813e28caf4e939114bc745b9ad",
      "tree": "c02532a86528ca99e4191834e382f33c219256f3",
      "parents": [
        "9ec08d02ac46e9246980fc0cddb6bc088a5e4e5c"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Aug 10 16:41:54 2021 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Aug 23 15:39:09 2021 -0700"
      },
      "message": "Move common audio AIDL types to audio.media.audio.common\n\nThe following types are being moved from \u0027android.media\u0027:\n - AudioChannelLayout\n - AudioFormatDescription\n - AudioFormatType\n - PcmType\n\nUpdated usages and conversion functions.\n\nBug: 188932434\nTest: atest audio_aidl_conversion_tests\nTest: atest audiofoundation_parcelable_test\nChange-Id: Ib65a4f428da4a7f29ec22bc2a393617c6c4389d0\n"
    },
    {
      "commit": "81dd0f584e1c36b8bbf65737c83386d47cc6102a",
      "tree": "f3b4435b3cb1cfd2ef0743da1cb6e73dbd701531",
      "parents": [
        "2d46143a8deb288c1317ccc755c5093ef61af350"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 05 11:54:40 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 19 16:54:11 2021 +0200"
      },
      "message": "audio policy: add Spatializer effect control\n\nAdd APIs to discover support for audio spatialization function and control a\nspatializer output mixer and effect creation to Audio Policy Service.\n\nWhen supported, a system service can retrieve a ISpatializer\ninterface to query supported features and set a spatialization mode.\n\nWhen spatialization is enabled, the corresponding specialized output mixer is\ncreated and the effect applied.\n\nThe audio policy manager will attach clients which audio attributes and\nformat qualifying for spatialization to the specialized output mixer.\n\nBug: 188502620\nTest: make\n\nChange-Id: Ie2734fb9bb3ef9b945431c6c9bd110b1434a79cd\n"
    },
    {
      "commit": "ccc9c83e9dbedb88928575a5b807079bb19efd15",
      "tree": "2eff244436ca814d0cbbfeab9417fa5df50b2e1f",
      "parents": [
        "8dafd16ed07d668f22c9e1cd47b5589e765eb080",
        "f2626e3c79f0f27a0447b380d890778614533897"
      ],
      "author": {
        "name": "Ahaan Ugale",
        "email": "augale@google.com",
        "time": "Thu Aug 05 19:49:38 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Aug 05 19:49:38 2021 +0000"
      },
      "message": "Merge \"Apply Assistant AudioPolicy to HotwordDetectionService\" into sc-dev am: 0c1ce4efc5 am: f2626e3c79\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/15464022\n\nChange-Id: I47184f215a9fa7db74b8acb5e715288af8dc5d3e\n"
    },
    {
      "commit": "f51ce00a3e1d95bf22f85454510f6eca0c32ed68",
      "tree": "addeb6bb58f5d8229b8c9b5bab63877c0fbd6992",
      "parents": [
        "53a58911405f41884178d83ed4f23859398e8879"
      ],
      "author": {
        "name": "Ahaan Ugale",
        "email": "augale@google.com",
        "time": "Wed Aug 04 16:34:20 2021 -0700"
      },
      "committer": {
        "name": "Ahaan Ugale",
        "email": "augale@google.com",
        "time": "Wed Aug 04 21:29:27 2021 -0700"
      },
      "message": "Apply Assistant AudioPolicy to HotwordDetectionService\n\nThe HotwordDetectionService is part of the Assistant package but runs\nwith a separate (isolated) uid.\nThis change follows the pattern of how the Assistant and IME UIDs are\nset.\n\nFix: 194368677\nTest: manual - hotword works when another app is using the mic and in\n Auto projection mode\nTest: atest HotwordDetectionServiceBasicTest\nChange-Id: I76a7930431db226c7e502f8993dfeaa4bc133bea\n"
    },
    {
      "commit": "de3fa1818a2f5f615a3b3ff1a58940f03b0ba8fc",
      "tree": "02a40ee27a43bba80dd77b11cfd6a6876a5d3acf",
      "parents": [
        "1690c4170fcbd188c97d5c74d067781da82b43f6"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jul 30 15:06:42 2021 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jul 30 15:10:29 2021 -0700"
      },
      "message": "Revert \"Revert \"Switch the framework AIDL to use AudioChannelLayout\"\"\n\nThis reverts commit b75b624f0a2b9a3e0ae6b89ceb6158e82df71b66.\n\n\u0027AudioChannelLayout\u0027 is a new type that will be used both by HAL\nand framework interfaces. This CL changes the framework interfaces\nto use it instead of \u0027AudioChannelMask\u0027 type which was used to\npass legacy \u0027audio_channel_mask_t\u0027 transparently via the AIDL\nlayer.\n\nRemove the implementation of \u0027Parcelable\u0027 from AudioProfile and\nAudioPortConfig in libaudiofoundation because the implementation\nnot used after converting audio fwk interfaces to AIDL, and\nParcelable\u0027s interface methods do not allow passing in any\ncontext. In our case the context is the direction of the I/O\n(\u0027isInput\u0027 flag) which is usually available externally, but absent\nfrom the encapsulated data of these classes.\n\nUpdate the audiofoundation_parcelable_test, switch to use of static\nlibs for the framework code so they can run on a device with\ndefault system libraries.\n\nBug: 188932434\nTest: check audio on device\nTest: atest audiofoundation_parcelable_test\nTest: app-compat/G3Compat/main\nChange-Id: I95c56040855187464bfbe7fcc7daf27f69fea55b\n"
    },
    {
      "commit": "b75b624f0a2b9a3e0ae6b89ceb6158e82df71b66",
      "tree": "a455252e7615d2f6d6d2729c9288fe684ab39199",
      "parents": [
        "05399f489aece403775f34cd2c2233243e2d5654"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jul 29 16:46:14 2021 +0000"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Jul 29 16:48:07 2021 +0000"
      },
      "message": "Revert \"Switch the framework AIDL to use AudioChannelLayout\"\n\nRevert submission 15379650\n\nReason for revert: Android Auto regression b/194987848\nReverted Changes:\nIe59cdd64f:Switch the framework AIDL to use AudioChannelLayou...\nI35e5c83bc:Refactor AudioIoDescriptor\n\nChange-Id: I7ecd9cfa86254d6736662ae752a7f4ef070f9aea\n"
    },
    {
      "commit": "9dec7011d2907fb50a41ea883b557baf84718b6b",
      "tree": "87edb25cee403926dbb5d5a8a84cefcfb454d0ac",
      "parents": [
        "88536dfa674d6abd4fed0bca29241aa3621c3da9"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jul 21 10:30:57 2021 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jul 28 12:10:43 2021 -0700"
      },
      "message": "Switch the framework AIDL to use AudioChannelLayout\n\n\u0027AudioChannelLayout\u0027 is a new type that will be used both by HAL\nand framework interfaces. This CL changes the framework interfaces\nto use it instead of \u0027AudioChannelMask\u0027 type which was used to\npass legacy \u0027audio_channel_mask_t\u0027 transparently via the AIDL\nlayer.\n\nRemove the implementation of \u0027Parcelable\u0027 from AudioProfile and\nAudioPortConfig in libaudiofoundation because the implementation\nnot used after converting audio fwk interfaces to AIDL, and\nParcelable\u0027s interface methods do not allow passing in any\ncontext. In our case the context is the direction of the I/O\n(\u0027isInput\u0027 flag) which is usually available externally, but absent\nfrom the encapsulated data of these classes.\n\nUpdate the audiofoundation_parcelable_test, switch to use of static\nlibs for the framework code so they can run on a device with\ndefault system libraries.\n\nBug: 188932434\nTest: check audio on device\nTest: atest audiofoundation_parcelable_test\nChange-Id: Ie59cdd64f001330ad4b5094264957198809a10a1\n"
    },
    {
      "commit": "88536dfa674d6abd4fed0bca29241aa3621c3da9",
      "tree": "a455252e7615d2f6d6d2729c9288fe684ab39199",
      "parents": [
        "5ee3b99005b5670980795a5a9196a39fdd6d2c63"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 26 17:30:29 2021 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jul 27 16:31:25 2021 -0700"
      },
      "message": "Refactor AudioIoDescriptor\n\nThe following changes were made:\n\n 1. Make the class mostly immutable (except for the \u0027mPatch\u0027 field).\n 2. Provide constructors for specific use cases.\n 3. Add \u0027isInput\u0027 field instead of deducing it by patch data.\n 4. Provide conversion to string for logging.\n 5. Rename \u0027audio_io_config_event\u0027 to \u0027audio_io_config_event_t\u0027\n    to conform to other enum type names.\n\nBug: 188932434\nTest: m\nChange-Id: I35e5c83bcb917f60d01ee977eef9b869c3894074\n"
    },
    {
      "commit": "b823e5544e7ec4c7e31b713db489978784a77d32",
      "tree": "8e4332f20f2f42d25b4038fafbc89ff16fcb819d",
      "parents": [
        "f04ab086b35ee41f1d7f85d77ba7cb639a7ef433",
        "a8777db93df4c3e24c83fa1044bba7f0668059aa"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 20 16:09:43 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jul 20 16:09:43 2021 +0000"
      },
      "message": "Merge changes I671ed0aa,If817d08a into sc-v2-dev am: 600a2b8817 am: a8777db93d\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/15302091\n\nChange-Id: I0c718bcd8cb7983269a93a330fc780b1633dabaa\n"
    },
    {
      "commit": "d66d7a155b9a90463d3e4b8ef6a5cd900b087846",
      "tree": "f159e1b243893e217d88a034543c74ebf6de57ec",
      "parents": [
        "0ac7f8c5c31cc01df727bca4415a9460d5a1fc7c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 13 13:35:32 2021 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 20 13:40:54 2021 +0000"
      },
      "message": "audio policy: add audio policy ready flag.\n\nThe audio policy ready flag indicates that audio policy manager\nintialization is done and that audioflinger can call back\ninto audio policy service without risk of deadlocking because the\nservice is not published yet.\n\nBug: 188502620\nTest: boot and kill native audioserver process.\n\nChange-Id: I671ed0aadd0c51342be5b57d1afb7577da6a7fa9\n"
    },
    {
      "commit": "b60bd1b586b74ddf375257c4d07323e271d84ff3",
      "tree": "ed6d2b7f8ec836b0de7aefab9ee044a9d273abc8",
      "parents": [
        "8ce8149ff6f6560e1abe3e015c37cfdfcd75bc2b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jul 15 17:31:43 2021 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jul 16 15:00:47 2021 -0700"
      },
      "message": "Switch the framework AIDL to use AudioFormatDescription\n\n\u0027AudioFormatDescription\u0027 is a new type that will be used\nboth by HAL and framework interfaces. This CL changes the\nframework interfaces to use it instead of \u0027AudioFormatSys\u0027 type\nwhich was used to pass legacy \u0027audio_devices_t\u0027 transparently\nvia the AIDL layer.\n\nBug: 188932434\nTest: check audio on device\nChange-Id: I9680d4d674950838f0ef0c9b4e45feaa662c5309\n"
    },
    {
      "commit": "21a32ec9accd3aba2543f6ff2f33ea79056fb65e",
      "tree": "bfdb53e8398adaaaf6c6e53b493c5fe4cbf5571a",
      "parents": [
        "5478fc18ccaccad1e7591700cf64466a0909464b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jul 08 14:40:12 2021 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jul 08 16:52:51 2021 -0700"
      },
      "message": "Switch the framework AIDL to use AudioDeviceDescription\n\n\u0027AudioDeviceDescription\u0027 is a new type that will be used\nboth by HAL and framework interfaces. This CL changes the\nframework interfaces to use it instead of \u0027int\u0027 type\nwhich was used to pass legacy \u0027audio_devices_t\u0027 transparently\nvia the AIDL layer.\n\nBug: 188932434\nTest: check audio on device\nChange-Id: Ie275ea82db89011c855ac21f0af4f6546ceb2d13\n"
    },
    {
      "commit": "5478fc18ccaccad1e7591700cf64466a0909464b",
      "tree": "c0f60cf057710cdba7e71876dc1ab85575715b49",
      "parents": [
        "0364af9df632cb8472e3fd707142b772093f5d5d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jul 08 16:13:29 2021 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jul 08 16:13:29 2021 -0700"
      },
      "message": "Convert getDevicesForStream to return a DeviceTypeSet\n\nAs a pre-requisite for switching from \u0027int\u0027 to\n\u0027AudioDeviceDescription\u0027 in the framework AIDL interfaces,\nget rid of the usage of \u0027int\u0027 as a mask of \u0027audio_devices_t\u0027\nvalues. This is needed because \u0027AudioDeviceDescription\u0027\ncan\u0027t be coerced into an int directly, and interpreting\na mask of multiple \u0027audio_devices_t\u0027 values is ambiguous\ndue to presence of multi-bit device types.\n\nNote that at the Java layer the returned DeviceTypeSet\nis still collapsed into a single integer value. This needs\nto be addressed separately.\n\nBug: 188932434\nTest: check audio on device\nChange-Id: I1bc2a28ac2e1037a38b7be7967349b33845f88de\n"
    },
    {
      "commit": "a91ac6bf8c753ba09c2ce37bb3359d4d718c0306",
      "tree": "4f2e3abdd233d8708ec3cc17805175d1fe8503e4",
      "parents": [
        "fbf39789e36f31d307dddac247f4ff97b07cb45d",
        "7cf3c18e1a8646e86ff69dd9aea3b76905b59b6f"
      ],
      "author": {
        "name": "Ahaan Ugale",
        "email": "augale@google.com",
        "time": "Mon Jun 14 05:31:58 2021 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Jun 14 05:31:58 2021 +0000"
      },
      "message": "Merge \"Enable HotwordDetectionService to access audioflinger.\" into sc-dev am: 6496f65131 am: 7cf3c18e1a\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/av/+/14677162\n\nChange-Id: I89df254c8c06389007f52d3e227c74332a940c37\n"
    },
    {
      "commit": "058f94b41b8a49053b19170bcf9152a5524af3cf",
      "tree": "3149c7476b8cf496c20eef9b32bf2c14186d9988",
      "parents": [
        "632eedc24a7659d6e37299defea5133537e97499"
      ],
      "author": {
        "name": "Ahaan Ugale",
        "email": "augale@google.com",
        "time": "Fri May 21 02:23:50 2021 -0700"
      },
      "committer": {
        "name": "Ahaan Ugale",
        "email": "augale@google.com",
        "time": "Tue Jun 08 12:37:39 2021 -0700"
      },
      "message": "Enable HotwordDetectionService to access audioflinger.\n\nHotwordDetectionService is an isolated service which ordinarily cannot\naccess audioflinger due to selinux restrictions on isolated processes.\nTo bypass those restrictions, the audioflinger binder is passed from\nthe system server to the HotwordDetectionService. This follows the\nexisting pattern of providing access to the ContentCapture service.\n\nIn T we *may* instead solve this at the selinux layer. For now, this\nsimpler approach is used.\n\nBug: 190011174\nTest: manual - sample app can read audio (with a few other wip changes)\nChange-Id: I86ac0820fd72676db4740658ffd096df3d20d30e\n"
    },
    {
      "commit": "337611324fb7b22600d588493f938e7df4789e3d",
      "tree": "cd187ef9b4d8a9161004df0f6a74342207f7b553",
      "parents": [
        "c52f8f4eaae1d4495b992be01c488c52f699ac31"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu May 13 22:51:08 2021 +0000"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Wed Jun 02 00:46:14 2021 +0000"
      },
      "message": "Switch media fw permissions checks to AttributionSource (av)\n\nAttribution source is the abstraction to capture the data\nflows for private data across apps. Checking permissions\nfor an attribution source does this for all apps in the\nchain that would receive the data as well as the relevant\napp ops are checked/noted/started as needed.\n\nbug: 158792096\n\nTest: atest CtsMediaTestCases\n      atest CtsPermissionTestCases\n      atest CtsPermission2TestCases\n      atest CtsPermission3TestCases\n      atest CtsPermission4TestCases\n      atest CtsPermission5TestCases\n      atest CtsAppOpsTestCases\n      atest CtsAppOps2TestCases\n\nMerged-In: I1c5a4321dd3b2d458372058c99604a6ec208717c\n\nChange-Id: I1c5a4321dd3b2d458372058c99604a6ec208717c\n"
    },
    {
      "commit": "3e5f14f71bfecd8e6834e55c5ea68d510f27c9d1",
      "tree": "40f3e04ae7126a3dfe0c3eb6c0e631a6baad34fa",
      "parents": [
        "87a4a2517c845214bb52b4b8da3852ed4e67c524"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu May 13 22:51:08 2021 +0000"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jun 01 18:29:32 2021 +0000"
      },
      "message": "Switch media fw permissions checks to AttributionSource (av)\n\nAttribution source is the abstraction to capture the data\nflows for private data across apps. Checking permissions\nfor an attribution source does this for all apps in the\nchain that would receive the data as well as the relevant\napp ops are checked/noted/started as needed.\n\nbug: 158792096\n\nTest: atest CtsMediaTestCases\n      atest CtsPermissionTestCases\n      atest CtsPermission2TestCases\n      atest CtsPermission3TestCases\n      atest CtsPermission4TestCases\n      atest CtsPermission5TestCases\n      atest CtsAppOpsTestCases\n      atest CtsAppOps2TestCases\n\nChange-Id: I1c5a4321dd3b2d458372058c99604a6ec208717c\n"
    },
    {
      "commit": "c10572eff23c10893efb5d6e3a07f48527cfc1f2",
      "tree": "cc74a45b8bdacc06203342a90778974622ce72d8",
      "parents": [
        "b8d2b1db10a85aae3c9bb200b290722cdb6e43df"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri May 21 17:42:02 2021 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri May 21 17:42:02 2021 -0700"
      },
      "message": "Remove dependency on android.media.audio.common.AudioFormat\n\nIn a preparation to converting audio HAL to SAIDL,\nensure that Framework SAIDL is self-contained and\nhas all the necessary types.\n\nThis creates a temporary duplication of types with\nandroid.media.audio.common which will be fixed once\nwe stabilize the common types between the framework\nand HALs.\n\nBug: 188932434\nTest: m\nChange-Id: Ib632c0ae5d2d1562266c87480b585b1b7f6e5ac6\n"
    },
    {
      "commit": "1319f5a436dc1dab9952d2fd91a5c62d7d21ad61",
      "tree": "504c089aea84a834a7cebaba7f4259d77046c126",
      "parents": [
        "dfca1ce852e8223656c7883d3b32d61cc091ac59"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Mar 30 22:21:24 2021 +0000"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Apr 01 15:55:03 2021 +0000"
      },
      "message": "Use vibrator information to initialize HapticGenerator.\n\nUse vibrator\u0027s resonant frequency and Q factor to initialize\nHapticGenerator when they are available. Otherwise, use default value.\n\nBug: 182612056\nTest: atest HapticGeneratorTest, manual\nChange-Id: Ib861e7fbb0ede3a33c0a93fbca8d80c022461d9a\n"
    },
    {
      "commit": "00191e208e6794fe09a98da7433a69897e869b21",
      "tree": "040f23f973f223caa6a5de331dedd1519f7a6a6f",
      "parents": [
        "95650cfab65a3229c0cff9415baf57781ef9a3db",
        "bda4575c36ad11b0870ccdb50dcb3a04573d6782"
      ],
      "author": {
        "name": "Nate Myren",
        "email": "ntmyren@google.com",
        "time": "Thu Mar 11 23:48:48 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 11 23:48:48 2021 +0000"
      },
      "message": "Merge \"Add attributionTag to audio-recordings\" into sc-dev"
    },
    {
      "commit": "bda4575c36ad11b0870ccdb50dcb3a04573d6782",
      "tree": "9e5e3ed6228395c814e390c464e09b3d5922cf29",
      "parents": [
        "6d988df316533c7e189b266ad01e66356b6992d1"
      ],
      "author": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Fri Jul 17 16:41:18 2020 -0700"
      },
      "committer": {
        "name": "Nate Myren",
        "email": "ntmyren@google.com",
        "time": "Thu Mar 11 08:35:04 2021 -0800"
      },
      "message": "Add attributionTag to audio-recordings\n\n... by replacing packageName/uid/pid by the Identity class.\n\nThis allows us to track which parts of the app trigger audio-recordings.\n90% of the code is just sending around the additional parameters.\n\nThis adds it for the Java and native API.\n\nTest: atest CtsAppOpsTestCases\n            CtsNativeMediaAAudioTestCases\nFixes: 160150145\nChange-Id: Ibd7b884f7fcd4668a4e27f997e59cfc3217a9e89\n"
    },
    {
      "commit": "6537defa5f37719396964ba5e0fac5d53cf8f6fd",
      "tree": "3fe4c420b6416176c84ea637fa8690804e55c949",
      "parents": [
        "c74fd5f5f0477cf2b2304c44969e7028fdb19096"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Tue Mar 02 13:46:59 2021 +0100"
      },
      "committer": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Thu Mar 04 12:03:15 2021 +0100"
      },
      "message": "Split getSurroundSound method in 2 methods.\n\nSplit getSurroundSound in:\ngetSurroundSound for formats supported by source android device\ngetReportedSurroundSound for formats reported by any connected sound\ndevice like soundbar etc.\n\nBug: 177990551\nTest: atest AudioPolicyManagerTestForHdmi\nChange-Id: Iac811315049f0598c930afd75f069f058080dad4\n"
    },
    {
      "commit": "788fa3fdf283c6aae27ea86dac80bcaf0ad9493c",
      "tree": "847696fceabe1387a5c4bccd7e7d2164f7f76655",
      "parents": [
        "1dff892a340323ad53b661a33c32e1c2a3da51b7",
        "11b6592323f9d3f9a68ef557893c90e391e79111"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 15 08:45:19 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 15 08:45:19 2021 +0000"
      },
      "message": "Merge \"audiopolicy: allows to fallback or not on default strategy/group\" into sc-dev"
    },
    {
      "commit": "11b6592323f9d3f9a68ef557893c90e391e79111",
      "tree": "4a68483b3bb1728ed0779f9e53971285321e57db",
      "parents": [
        "25521834a63d67308520da5bced97ed517a30a72"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Sep 24 16:59:08 2020 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 11 09:44:25 2021 +0100"
      },
      "message": "audiopolicy: allows to fallback or not on default strategy/group\n\nWhen attributes does not match a group or strategy, it falls back on\nrespectively default group or strategy.\n\nThis CL allows to control whether fallback shall be done or not.\nIt allows for example to detect orphans attributes and prevent from\noverwritting volume for example.\n\nBug: 179759299\nTest: make\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: Ieeeab48ca3ec2b031b7a99e2e7ab26d2e4d70535\n"
    },
    {
      "commit": "877b27e1cd14cb20bed90ce95ff5e22b3f77188d",
      "tree": "0f1f7c3eec5053b63b964a8d7e0e34aec7a14695",
      "parents": [
        "c5634ebd5d96a7aec03d726d0a805be9ab07ae02"
      ],
      "author": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Tue Feb 02 12:10:40 2021 +0100"
      },
      "committer": {
        "name": "Kriti Dang",
        "email": "kritidang@google.com",
        "time": "Wed Feb 03 15:44:48 2021 +0100"
      },
      "message": "Fixing crash in surround sound settings which occurs\ndue to API getSurroundSound.\n\nBug: 178800104\nTest: Tested manually\nChange-Id: Ib0a13dfcdfa177676e8625703e9ddb2ce79e5d0e\n"
    },
    {
      "commit": "f99edd337e7bab6f7b9862203de16408127f9b82",
      "tree": "27f268733f87e2f34dc93c4103b85ea57af9d35f",
      "parents": [
        "7491da7fe76df7f23224f4b580b65ef0427b7166"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 01 15:57:33 2021 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 01 15:57:33 2021 +0100"
      },
      "message": "audio policy: fix selected device Id in getOutputForAttr\n\nRestore passing of selected device ID to audio policy manager by\ngetOutputForAttr() and getInputForAttr() which was dropped by commit\n0a4904a1.\n\nBug: 178950206\nTest: atest android.media.cts.RoutingTest#test_mediaPlayer_incallMusicRoutingPermissions\nChange-Id: Iebadec1674a838a276cd0c803a978af2c21fa64b\n"
    },
    {
      "commit": "0a4904a12ded2c89e2cae4a7dc46730726cf9abd",
      "tree": "82da7b9713645ba4970114857119bdf21dc40f54",
      "parents": [
        "08c7d9e6ceb83134b7d6d6b56e686cfb54dd43f3"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Wed Jan 06 12:57:05 2021 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Jan 21 10:44:07 2021 -0800"
      },
      "message": "Convert IAudioPolicyService to AIDL\n\nTest: Audio tests from CtsMediaTests\nTest: Audio smoke tests\nBug: 160253486\n\nChange-Id: I5ecee56f71a959d2fd75714ba95d7653af0c98bc\n"
    },
    {
      "commit": "9a6b9adb0de5f6fc3cf39e369c6a6ed447823469",
      "tree": "969cf83987ea9ce0bd5fb9e458af8cc6c8d68267",
      "parents": [
        "27fe43ec5915fd93539c17444102d0c9cfdd6732"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Oct 22 16:46:43 2020 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Dec 23 08:57:48 2020 -0800"
      },
      "message": "Audio policy: notify system_server of routing change\n\nCallback into AudioPolicyClientInterface to notify of routing\nupdate whenever output is re-evaluated.\nAdd native test to verify callback is invoked on device\n(dis)connection and setForceUse.\n\nBug: 162448412\nTest: atest AudioServiceHostTest#testPreferredDeviceRouting\nTest: atest AudioServiceHostTest#testDevicesForAttributes\nTest: atest audiopolicy_tests:AudioPolicyManagerTestDeviceConnection#RoutingUpdate\nChange-Id: Ia1a985b996bf8f2f63e72c4110f62f65f9f42f21\n"
    },
    {
      "commit": "7e7a79d86f9596564562c1977aed241d4dc21154",
      "tree": "d6e1fdac0af8f5826cc06d4112972e4f4ea87ada",
      "parents": [
        "1601ba676489b977715b7b16d3b89dccead8554d"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Dec 15 16:48:16 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Wed Dec 16 14:33:59 2020 -0800"
      },
      "message": "AIDLize IAudioPolicyServiceClient\n\nBug: 160253486\nTest: Audio-related tests from CtsMediaTestCases\nChange-Id: Id37fad4028b620620a45dabe8af068f3158e6228\n"
    },
    {
      "commit": "1131b6eff47dc3da719015794e0f3d94601c9eb2",
      "tree": "8525af00e0a83be99148859eae8e57bfba7cf564",
      "parents": [
        "973638a1ca4d4f693a492a13c89240178391e56c"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Dec 08 20:47:45 2020 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Dec 11 00:08:35 2020 -0800"
      },
      "message": "Audio Aidl: Update binder::Status return code handling\n\nAdd statusTFromBinderStatus() and binderStatusFromStatusT()\nas methods to standardize binder status codes for native\naudio service cross-language compatibility.\n\nTest: atest audio_aidl_status_tests\nBug: 175338323\nChange-Id: I48c543689d5a9a464c0d68fb6263dedff43ceca9\n"
    },
    {
      "commit": "e13404b67042b964b2f3e8e17ce526bd2a4f8c55",
      "tree": "106b26c67cff2690bf6c3760f1999ff23d7f609d",
      "parents": [
        "5998a63a10bfd79a5e060f9669c40e45752a9e59",
        "90fe31c88aa787c5ab83df2672969cf2ee11f263"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 11 07:09:29 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 11 07:09:29 2020 +0000"
      },
      "message": "Merge \"audio: add reporting of gapless playback support\""
    },
    {
      "commit": "19cdba55d6d981658dd43e1599e5449f40b4693f",
      "tree": "f174d85a015ede83ae5ce94b6c0109812a48fad1",
      "parents": [
        "b7e454991efc5bb053435d23695bfbedc83be84b"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Nov 24 11:28:58 2020 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 09 11:05:15 2020 -0800"
      },
      "message": "Use audio_port_v7 in audio policy.\n\naudio_port_v7 is a struct that uses audio profile to describe an audio\nport. Compared to audio_port, audio_port_v7 can better describe the\ncapabilities of the audio port. In that case, use audio_port_v7 in audio\npolicy APIs getAudioPort and listAudioPort.\n\nTest: atest audio_health_tests audiopolicy_tests AudioManagerTest\nBug: 160352965\nBug: 25994457\nChange-Id: I16fb024f309e33f48ce2ae8f8d37dd58e74f781d\n"
    },
    {
      "commit": "50b8ccb52ded489c4f60d42541293f3f9938f1ae",
      "tree": "0bc210d7f008e9fe0a6e1227d2e54a846f1cd392",
      "parents": [
        "ee75d6f36fabcd431edf60a50437eea166f43762"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Nov 24 13:47:54 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-tsvi",
        "email": "ytai@google.com",
        "time": "Thu Dec 03 19:18:42 2020 +0000"
      },
      "message": "AIDLize IAudioFlinger\n\nThis change removes all the manual parceling code used in the\nIAudioFlinger interface. In order to reduce impact on existing client\nand server code to a minimum, the IAudioFlinger interface is preserved\nand a new translation layer between IAudioFlinger and its AIDL\ncounterpart, IAudioFlingerService, is introduced:\n- AudioFlingerClientAdapter is for use on the client side. It wraps an\n  IAudioFlingerService instance and presents an IAudioFlinger\n  interface.\n- AudioFlingerServerAdapter is for use on the server side. It wraps an\n  IAudioFlinger instance and presents an IAudioFlingerService.\n\nArgument conversion an error checking is performed rigorously in the\ntranslation layer.\n\nTest: Audio-related CTS tests from CtsMediaTestCases\nBug: 160253486\nChange-Id: Ibe35317e449b0faa3ef5336bb30f669106978a31\n"
    },
    {
      "commit": "90fe31c88aa787c5ab83df2672969cf2ee11f263",
      "tree": "831c146e3ef02a460b13ce977ebd83894c1de920",
      "parents": [
        "5876ab7451acebdd0a772163e913058f6a505fc0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Nov 26 20:06:35 2020 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 01 11:38:48 2020 +0100"
      },
      "message": "audio: add reporting of gapless playback support\n\nAdd reporting of gapless playback support via\ngetOffloadSupport() method which replaces isOffloadSupported().\nThe audio HAL implementation indicates gapless support by setting flag\nAUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD on an output profile in addition to\nflag AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD.\n\nBug: 158191844\nTest: make\nChange-Id: I7a8fa284c2486fd7a74782acb1ac7537d1534e49\n"
    },
    {
      "commit": "1ff75699675b1d642d6f8fe645b5ae46b5432dfb",
      "tree": "1a7cd4bd94aac27219940cccaee824abb069c989",
      "parents": [
        "07892869191730375f91ff6f1334006657de8752"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Nov 06 12:16:12 2020 -0800"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Mon Nov 23 14:07:28 2020 -0800"
      },
      "message": "Extract VALUE_OR_RETURN_STATUS to AidlConversion\n\nThis seems useful in various places.\n\nTest: Compiles\nChange-Id: Iab9b03f806b4c33da68df89437db5639680ce331\n"
    },
    {
      "commit": "a38152074c8a326f622d774f3349545246d26c1b",
      "tree": "f6f88ca624029dae689ebb163fca0345dee2c217",
      "parents": [
        "4dfeb62ade7100e4e830f2e7754b8fba9d1c4179"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Wed Oct 28 14:58:08 2020 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Tue Nov 03 16:21:12 2020 -0800"
      },
      "message": "Make use of AIDL unions.\n\nNow that AIDL supports proper unions, use those instead of the struct-\nof-arrays workaround.\n\nChange-Id: Ie4753254dcdeab7dec5075e83fccbb1226895ba9\n"
    }
  ],
  "next": "4dfeb62ade7100e4e830f2e7754b8fba9d1c4179"
}
