)]}'
{
  "log": [
    {
      "commit": "ebb6af45d3741a33259ea6bf8a5fc87881982943",
      "tree": "f4ce87071a3b0a650d5dc12d9301436417c58e09",
      "parents": [
        "1495d23d7b282a1e9a5d522eafe565a924667351"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Jun 09 17:31:17 2020 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Jun 23 15:25:17 2020 -0700"
      },
      "message": "Select haptic output when haptic-generating effect exists.\n\nHaptic-generating effect must be attached to haptic output thread as it\nrequires writing haptic channels. In that case, when haptic-generating\neffect exist, try to select the output that it is attatched to.\n\nBug: 136490803\nTest: make\nChange-Id: I6be84a3edac1094d6e457b3226c3930f28219167\n"
    },
    {
      "commit": "8e544543add8e4e0e53f6b27a265254e6af2422b",
      "tree": "00175e73755007accffd18f0b48d40a2360bc303",
      "parents": [
        "e0c3d791757109b0302cf74e7027bcada2221b1f"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon May 11 14:12:53 2020 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 02 14:17:13 2020 -0700"
      },
      "message": "AudioPolicy: manager: fix patch list growing up\n\ncommit 3b17354a caused potential stale audio patches\nrecords in audio policy manager for patches associated\nwith audio flinger software patches sharing an output mixer.\n\nBug: 136121584\nTest: dumpsys media.audio_policy \u0026\u0026\nadb shell /data/nativetest64/AudioPolicyEmulatorTests/AudioPolicyEmulatorTests --gtest_filter\u003dAudioPatchTest/AudioModeBridgingTest.\n\u0026\u0026 dumpsys media.audio_policy:\nensure list of patches did not grow up\nTest: atest audiopolicy_tests\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: Ife8035dc2d2d9c0b568d6847ca5eb0d2cba77cea\n"
    },
    {
      "commit": "1c4794bfdee92c9491312432bd966d2439c49179",
      "tree": "0947f6dea04e00753357a87d2ab38cb9d6fd13e4",
      "parents": [
        "eaad70fbfcec64206f42a11071efa683efe0c3ab"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue May 05 10:08:05 2020 -0700"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Fri May 08 00:37:55 2020 +0000"
      },
      "message": "Support query encapsualtion modes and metadata types.\n\nWhen a new device is attached to hardware module, query the HAL to get\nthe supported encapsulation modes and metadata types.\n\nTest: atest EnumDevicesTest, manually\nTest: atest audiofoundation_parcelable_test\nBug: 155799506\nChange-Id: I903e46e35a44416c9f2d206c128face8a6c61dcb\n"
    },
    {
      "commit": "c64e0ab206323877dc4bc6cdefa509c0e8f5e08f",
      "tree": "e52e7cac0bccd47305ab7e571d132c8f9737c8a2",
      "parents": [
        "199012b0c66d555207d81fedb7cce16305c865f8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 15:59:34 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 15:59:34 2020 -0700"
      },
      "message": "audio policy: fix crash if output for DAP is not opened\n\nFix crash in getOutputForAttrInt() if the output corresponding to\nthe mix returned by AudioPolicyMix is not opened and the device\nselected by the mix is not attached.\nBefore commit c529cf6f, a policy mix without opened output would not\nbe retuned by AudioPolicyMix.getOutputForAttr(). With direct\noutput suppoort, this is possible but should be ignored if the device\nselected by the policy mix is not attached.\n\nBug: 155430290\nTest: AudioHostTest\nTest: AudioServiceHostTest\nTest: audiopolicy_tests\nTest: manual mirroring and car projection tests\nChange-Id: I66be4a3c5fb8b9ae0674c0f1e6e39de7f18ed2fb\n"
    },
    {
      "commit": "0e26e3f980a9904f23f24b0390844dcfeedd1418",
      "tree": "537c172187d9dd6bf3155c0a2a9c85c7b0a06669",
      "parents": [
        "ec660f185a1e212b1d22125de81e9bd1d0ff58a3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 29 14:24:16 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 30 00:15:50 2020 +0000"
      },
      "message": "Audio policy: fix areAllDevicesSupported()\n\nFix areAllDevicesSupported() where HwModules.getDeviceDescriptor()\nmust be called with matchAddress \u003d\u003d true: if the caller does not want to\ndistinguish on address it can leave the address field empty in the\nAudioDeviceTypeAddr passed which has the same effect as using\nmatchAddress \u003d\u003d false.\n\nAlso fix places where device_distinguishes_on_address() was improperly\nused in place of audio_is_remote_submix_device().\n\nBug: 155224229\nTest: build and launch car emulator\nTest: AudioHostTest\nTest: AudioServiceHostTest\nTest: audiopolicy_tests\nTest: manual mirroring and car projection tests\nChange-Id: I74295de95bcd82e7fa439c396ae32749b9c70c05\n"
    },
    {
      "commit": "c529cf6fa9b500506d675ec971909dba18cfb71b",
      "tree": "ebd662d9270ac9ca37849fa7a44b16fe73cd4abd",
      "parents": [
        "02d69c15b683418de39901a74f1eea8ddbfcbf40"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 17 18:19:10 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 27 14:42:06 2020 -0700"
      },
      "message": "audio policy: allow direct outputs for dynamic audio policies\n\nAdd support for direct outputs with RENDER audio policy mixes.\nA mix of type render can be registered even if no corresponding\noutput is opened to reach targeted device provided a direct output\nprofile exist for this device.\n\nAlso:\n- Fix setUidDeviceAffinities(): was not closing direct outputs\nopened by checkOutputsForDevice() and was not re-evaluating routes\n\n- Fix removeUidDeviceAffinities(): was not re-evaluating routes\n\n- Implement consistent sanity checks on selected devices in\nsetUidDeviceAffinities(), setUserIdDeviceAffinities() and\nsetPreferredDeviceForStrategy().\n\n- Fix onNewAudioModulesAvailableInt(): attached devices reachable only\nvia direct outputs were not loaded.\n\nBug: 130296239\nTest: AudioHostTest\nTest: AudioServiceHostTest\nTest: audiopolicy_tests\nTest: manual test: Auto projection over USB, screen mirroring\nChange-Id: I54470b61b4bc7e041e3a295764d368c5ded21268\n"
    },
    {
      "commit": "27cf37ca3ed87077c4beaceb2f7373c98e16737c",
      "tree": "f22fffa28ae98f0bb8319aaa0a5a82f15ed8fb89",
      "parents": [
        "a6127a935639f127db56974851abc2dda360eca2"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Apr 14 14:47:01 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Apr 17 01:54:47 2020 +0000"
      },
      "message": "audio: Centralize audio configuration paths specification\n\nThe list of possible paths for the audio configuration\nfiles is now retrieved using audio_get_configuration_paths()\nfunction. All duplicated lists of known configuration\ndirectories have been removed.\n\nBug: 153680356\nTest: test audio on built image working\n      atest VtsHalAudioV6_0TargetTest VtsHalAudioPolicyV6_0TargetTest\nChange-Id: I8c369442f5ca7baa17df95e6a001396fc9de5681\nMerged-In: I8c369442f5ca7baa17df95e6a001396fc9de5681\n"
    },
    {
      "commit": "7feb854e9ff78e8ca64e012af874503569905924",
      "tree": "5fc22308c6ebd0a7f2066a8d7acf19a18e4347a5",
      "parents": [
        "141095dce0006e73b7941367c4b03f64c6ae997d"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Apr 06 17:39:47 2020 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 13 13:21:15 2020 -0700"
      },
      "message": "AudioPolicy: managerdefault: fix onAudioDeviceUpdate callback\n\nScenario: startAudioSource (SW bridge) started, then stopped.\nAF patch is released, so PlaybackThread has empty patch.\n\nNext playback using the same sink will not recreate any patch\non AF as same device (and output desc has still valid patch handle)\n\nHence, ioconfichanged will get PORT NONE as sink device, no\nonAudioDeviceUpdate cb can be fired.\n\nThis CL fixes this issue by reset of patch handle on the output\n\nBug: 136121584\nTest: startAudioSource / stopAudioSource then playback on the same\nsink. Ensure onAudioDeviceUpdate is fired\nTest: atest RoutingTest\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: Ia9c2570f687166f38335ed7efae28920f7acc474\n"
    },
    {
      "commit": "2e717a0265d6b95094946fb5ca41035019fa9716",
      "tree": "a6b431d6066a92be07956c3d8808680ed1b856c7",
      "parents": [
        "65328604dedbb0c01937efa0e831e62a191869f8",
        "85732f4121889191410448cfc19c336e0ea69285"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 07 01:15:26 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 07 01:15:26 2020 +0000"
      },
      "message": "Merge \"audio policy: fix mmap stream invalidation logic\" into rvc-dev"
    },
    {
      "commit": "1cb0a63dd903b8548685a99eb4d544890e1fd78f",
      "tree": "e10cbe626fe00665539266f21703fd5a122369d0",
      "parents": [
        "4a23235ad6a7a963982888da882f5292ce30e0b3",
        "242a9f8db150d0fe94c9cb95dde768edaa649a1c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 26 19:16:55 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 26 19:16:55 2020 +0000"
      },
      "message": "Merge changes I5e12b2c7,Ic79effb1 into rvc-dev\n\n* changes:\n  [audiopolicy][managerdefault] Filter unknown stream for volume settings\n  [AudioPolicy][engine][Strategy] fallback on music stream\n"
    },
    {
      "commit": "d0e2c74984f7542cc154a899190bda100ef38671",
      "tree": "ee96ed7f289021026ab9bf29b252cad3240c0c3d",
      "parents": [
        "3006a83565b6863f247bf634faa929b84608026e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Mar 25 15:59:59 2020 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Mar 25 17:04:49 2020 -0700"
      },
      "message": "APM: Notify the client about new audio ports\n\nAdded missing notification to the APM client\nabout new audio ports. This should make the\nports provided by the newly discovered HAL\nto be available to apps.\n\nProcess the onNewAudioModulesAvailable notification\non the \"APM Output\" command thread to avoid clashing\nwith outgoing commands from APM during module\ninitialization.\n\nBug: 149854039\nTest: atest audiopolicy_tests\nChange-Id: I3fede7f5a04419b15e15476d8b5ac7dc6d63c98d\n"
    },
    {
      "commit": "242a9f8db150d0fe94c9cb95dde768edaa649a1c",
      "tree": "c2239970a597d68f9cc03863805a7b54287b9108",
      "parents": [
        "fd5779fa71d1a2fcb9f9e57e7e46137cefb65f5c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 23 15:57:04 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 25 11:59:05 2020 -0700"
      },
      "message": "[audiopolicy][managerdefault] Filter unknown stream for volume settings\n\nStream for which no attributes is associated (aka no strategy supports it)\nwill use default attributes hence it will change the default strategy\nvolume (aka Music).\nIt leads to eroneous volume changes.\nThis bug does not happen on phone / tablets targets as all streams are\nlinked to a strategy with specifc attributes.\nIn case of OEM configuration, some stream types may not be supported\nand associated to any strategy.\n\nBug: 136121584\nTest: dumpsys audio \u0026 dumpsus media.audio_policy.\n    Ensure volumes of stream types and their aliases match.\n\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: I5e12b2c7248074d10affb6c28d1866d4589cb9e8\nMerged-In: I5e12b2c7248074d10affb6c28d1866d4589cb9e8\n"
    },
    {
      "commit": "85732f4121889191410448cfc19c336e0ea69285",
      "tree": "95f34d584a0ad4a2695b67ef7de733a5825b357f",
      "parents": [
        "f57740fc311c80bc7e62fde8b03b4f8f4d34ccda"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 19 11:31:10 2020 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 19 17:49:51 2020 -0700"
      },
      "message": "audio policy: fix mmap stream invalidation logic\n\nImplement a MMAP stream invalidation logic consistent with AAudio\ndisconnect callback policy.\n\n- When a MMAP stream is opened with a preferred device selection:\n  Invalidate the stream only when the preferred device becomes unavailable,\n  either because disconnected or not selectable by highest priority use case.\n- When a MMAP stream is opened without explicit device selection:\n  Invalidate the stream when current device selection changes due to the\n  routing rules applicable to the stream\u0027s audio attributes (attributes\n  of first client on that stream).\n\nBug: 144020984\nTest: OboeTester \u003e TEST DISCONNECT\n\nChange-Id: I70fde0bc8ab9d544b8d3badb713e6239d792cbdb\n"
    },
    {
      "commit": "8d386f779d76eb2a87ec570bf6ee3c0ce674085f",
      "tree": "23882c11fc70381e07df23e416d1eb101e1debdc",
      "parents": [
        "c7c50f47ce0998ea6d2ea5f40abc937fbde278e2",
        "7f82d1a74e77e0a89fd8431dbaf68f9b8e8b7118"
      ],
      "author": {
        "name": "Jasmine Cha",
        "email": "chajasmine@google.com",
        "time": "Wed Mar 18 06:51:02 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Mar 18 06:51:02 2020 +0000"
      },
      "message": "audio policy: fix disordered sequence while changing device am: 7f82d1a74e\n\nChange-Id: I8a46ba81d6055e097c7328a79e9d945ad83bda81\n"
    },
    {
      "commit": "7f82d1a74e77e0a89fd8431dbaf68f9b8e8b7118",
      "tree": "2bdca4c4ccac9de11c954108c71c6d2293c66be8",
      "parents": [
        "a5d212cfee978920684ad90f4b9bb3cfb3eeee8a"
      ],
      "author": {
        "name": "Jasmine Cha",
        "email": "chajasmine@google.com",
        "time": "Mon Mar 16 13:21:47 2020 +0800"
      },
      "committer": {
        "name": "Bubble Fang",
        "email": "bubblefang@google.com",
        "time": "Wed Mar 18 01:16:26 2020 +0000"
      },
      "message": "audio policy: fix disordered sequence while changing device\n\n  Disordered sequence will occur when delayMs of muting volume\n  and changing path are the same and no additional delay between\n  both commands (muteWaitMs \u003d\u003d 0).\n  Add half reported latency to delayMs for routing could avoid\n  processing muting stream volume and switching path concurrently.\n\nBug: 149798335\nTest: Make VoIP/voice call and switch device between handset/handsfree.\n      Check if touch tone is truncated in QXDM.\n\nSigned-off-by: Jasmine Cha \u003cchajasmine@google.com\u003e\nChange-Id: Ifa15ba9de330805637cfb20ee96c4293c1c1bd31\n"
    },
    {
      "commit": "c0d04987f6f7bd6e054210b1ca33a827afce650b",
      "tree": "32385a3831d727298a1a766d09183c28a93e2f5d",
      "parents": [
        "c62ad13ad8da6b31168f0d9f3e5f2a770ed0bbee"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Mar 02 21:02:28 2020 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Mar 09 20:19:42 2020 +0000"
      },
      "message": "Allow for late audio module discovery in APM\n\nExtract code that loads hardware modules and fills out\nmAvailable{Input|Output}Devices into a reusable function.\nIt is used both during APM initialization and on\nreceiving a notification that a new HAL service has\nbeen discovered.\n\nBug: 149854039\nTest: atest audiopolicy_tests\nChange-Id: Ifb7f0b61b06a0609802e63dccb26f3472328ef48\n"
    },
    {
      "commit": "09a836a39eaaf7446f04bf72e6cd6ce31f2f0289",
      "tree": "2728ac40e6265e5f577be57cf24b1e76c44557b8",
      "parents": [
        "b2182ac1b80112aae33a0b3edf639397a55a1041",
        "2c00365e4e941badc979b8b0c0d08fc132cb8ec7"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 12 21:34:36 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 12 21:34:36 2020 +0000"
      },
      "message": "Merge \"[AudioPolicyManager] Fix mute/unmute while use DevicePortGain\" am: fc11cf146c am: 17a72c3f55 am: 2c00365e4e\n\nChange-Id: I68ab92a1713f16de70209ecaf087a3a1e3d8f6b2\n"
    },
    {
      "commit": "2c00365e4e941badc979b8b0c0d08fc132cb8ec7",
      "tree": "7f5ee49ad87808bad509a1cc4529f71b4327d2c0",
      "parents": [
        "ab2774489795f99a1bc97e5be0815fe978ee443c",
        "17a72c3f55dfab1564252634e8425fb5195dffe9"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 12 21:20:08 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Feb 12 21:20:08 2020 +0000"
      },
      "message": "Merge \"[AudioPolicyManager] Fix mute/unmute while use DevicePortGain\" am: fc11cf146c am: 17a72c3f55\n\nChange-Id: I0eb4a47d468c013d71ce68abbd995543afb6bb64\n"
    },
    {
      "commit": "ed91f58c8a4aa652bd937fe5af0442cea7aa5959",
      "tree": "8007baa3d2b9e686a1455dff60c0b27f81b4c45b",
      "parents": [
        "c9a69d37969689ab912373b04626e8bd8882ce58"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Jan 31 10:35:37 2020 +0100"
      },
      "committer": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Feb 12 11:21:28 2020 +0100"
      },
      "message": "[AudioPolicyManager] Fix mute/unmute while use DevicePortGain\n\nIn case of using Device Port Gain to control the volume, the logic\nof setVolumeIndexForAttributes for device type check has been bypassed.\n\nHowever, in case of unmuting, the volume will be applied to all streams\nwith requested device then will be set for AUDIO_DEVICE_OUT_DEFAULT_FOR_VOLUME\nwhich is a convention used in case of no volume for device has been set\npreviously.\nAs this logic is bypassed, in case of HwGain, the final gain applied will\nbe the one for AUDIO_DEVICE_OUT_DEFAULT_FOR_VOLUME, which may be completely\ndifferent from the gain of current device.\n\nThis CL fixes this by factorizing the device check logic for both SW/HW gains.\n\nTest: build \u0026 play music \u0026 Vol - until mute then volume +. No gap expected.\nChange-Id: I24c57df84496e404c05c92f08f907131ef79cf3a\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "0d1a1207ce4bfd97ac58701cee0d1822f3f44fab",
      "tree": "cd4efc606bd1acf2c79beec368b6dd633acdad9f",
      "parents": [
        "0848bf51f51992c8f4be8748f209244b96e062c5",
        "d0a8ff659dc9c99383e5dc4eabfeec9c68479b7c"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Feb 06 02:55:07 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Feb 06 02:55:07 2020 +0000"
      },
      "message": "Merge \"Revert \"audiopolicy: align input and output devices for engine\"\" into qt-qpr1-dev am: 6302adca26 am: d0a8ff659d\n\nChange-Id: Ibe604a19c059b0b911730e66ef867099e5328f3f\n"
    },
    {
      "commit": "66d0e72c9da1d5af852556872262a1e928796389",
      "tree": "3be360927a116b19c19f4ee80f75cdf8af987598",
      "parents": [
        "6e51a2630a656c3f7bb3324f40221970832d8a35"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 10:06:18 2019 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Feb 01 00:09:55 2020 +0000"
      },
      "message": "Revert \"audiopolicy: align input and output devices for engine\"\n\nThis reverts commit 4b8d5ce58d98d4a163f63e17735450a7cac4821c.\n\nBug: 132241823\nReason for revert: Breaks Screen Mirroring during Live caption\n\nChange-Id: I4bf711e5c5e4233fcf58bda5477380b488fde2fa\n(cherry picked from commit e0d004fe12fc2535d62d52bea0666b690ba057b0)\n"
    },
    {
      "commit": "ad447b7e7f45d90a3ddf1e181fb4cf9e1d112bde",
      "tree": "f3fb593d38accc9f5f91ce5e584f1d61dc8237cf",
      "parents": [
        "e55b684c7d452fe09c3a224bfd60b495c8f6af14"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Nov 18 15:50:22 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 24 18:52:43 2020 +0000"
      },
      "message": "audiopolicy: apm: factorize internal patch creation/release\n\nThis CL removes duplicated code for patch creation for\n-voice call\n-system API to create patches.\n-system API to start/stop AudioSource\n\nIt creates internal methods to create/release Audio Patches.\n\nThe benefit of this rework is to have startAudioSource now working\nwhatever Sw or HW bridging is used.\n\nTest: Voice Call\nBug:\nChange-Id: I82738d116abd94f7738fce8ca3a1c3466942060a\nMerged-In: I82738d116abd94f7738fce8ca3a1c3466942060a\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "90c5793536026f6f6f0299640321e18870aed761",
      "tree": "cad510a72b42070805b3a27d0336059c267cbabc",
      "parents": [
        "10ef43ff1c024fa9c61d42cc5dca00b6c66de112",
        "e8e0e7a52b4ead4a4eb4e3616e4810994f37966d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 24 02:32:53 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 24 02:32:53 2020 +0000"
      },
      "message": "Merge changes I249d9ef1,I2c75b4bf,I0da109d6,I82738d11\n\n* changes:\n  [AudioPolicyService] Add creation of DeviceEffects\n  [audioeffect] add support of device effect in config parser\n  audioeffect: add missing sources to deserializer config file\n  audiopolicy: apm: factorize internal patch creation/release\n"
    },
    {
      "commit": "afd4cea46c12f55a7ccd47271314d59d833aa5c0",
      "tree": "4d920dc931fe9605f8d5197b38da07bd913816ad",
      "parents": [
        "0bc6f60e1f036380bd48d022631e6561b90f210c"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Nov 18 15:50:22 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 23 15:40:06 2020 -0800"
      },
      "message": "audiopolicy: apm: factorize internal patch creation/release\n\nThis CL removes duplicated code for patch creation for\n-voice call\n-system API to create patches.\n-system API to start/stop AudioSource\n\nIt creates internal methods to create/release Audio Patches.\n\nThe benefit of this rework is to have startAudioSource now working\nwhatever Sw or HW bridging is used.\n\nTest: Voice Call\nBug: 136294538\nChange-Id: I82738d116abd94f7738fce8ca3a1c3466942060a\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "d8a987392d7f5fc8969a62cf34467c39e01f1d91",
      "tree": "b20bf2edf5ab8730fa7854a26f211b12ecb99c2f",
      "parents": [
        "98cbb9d8ba5427fb8095f17050f66d19d532da6f",
        "90e776378afb43385d8759fa1169acab92f8ed94"
      ],
      "author": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Thu Jan 23 13:32:23 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 23 13:32:23 2020 +0000"
      },
      "message": "Merge \"Added audio policy api to do route based on user.\""
    },
    {
      "commit": "90e776378afb43385d8759fa1169acab92f8ed94",
      "tree": "0225cee9d8bcb3c57bd8a49084902c7cade42479",
      "parents": [
        "c55cdbafff6450155d4282a30ef025d6cecf5b3e"
      ],
      "author": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Wed Nov 27 17:12:28 2019 -0800"
      },
      "committer": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Thu Jan 23 00:33:17 2020 +0000"
      },
      "message": "Added audio policy api to do route based on user.\n\nAdded new API to audio policy to route audio output streams based on\nAndroid user id. The routing remains similar to uid rules, with only\nusing USERID_EXCLUDE_USERID to decide on the user id base routing.\nApplication uid and stream usage routing remain the same with the added\ndifference that user id will be taken in to consideration if available.\nBug: 139365417\nTest: atest\ncom.google.android.gts.audio.AudioHostTest#testUserIdDeviceAffinity\nTest: atest AudioPlaybackCaptureTest\nChange-Id: Ib817eb8ae19ed7dea8451e8a8584a20b9b6f5042\n"
    },
    {
      "commit": "f5614e2fa3fa1a38e3a6fa4c058424fc053be651",
      "tree": "826e1d7bad7bc2cb38886621bb2bf79825a5b5b2",
      "parents": [
        "acee494af3d3c22f734cbf4c4d21afa93409f5c7",
        "cd51052e56c18894986d6ec7a2c6e625353c55b1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 22 20:03:10 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 22 20:03:10 2020 +0000"
      },
      "message": "Merge \"Clean up error logging audio device type collection.\""
    },
    {
      "commit": "cd51052e56c18894986d6ec7a2c6e625353c55b1",
      "tree": "02d75de5b045fdac47a04971dcccf5d2bb9c24b7",
      "parents": [
        "2c5b3c2f90acaf233112c7921e4c75a88d7a7227"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jan 22 09:40:55 2020 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jan 22 10:31:17 2020 -0800"
      },
      "message": "Clean up error logging audio device type collection.\n\nThere are some usages of very verbose logging audio device type\ncollection as unsigned int, which is missed in previous refactoring CLs\nsince they are not shown up without enabling very verbose log.\n\nBug: 148110286\nTest: make with enabling very verbose log in AF and AP\nChange-Id: If31b7e3dd7b094e011cb88dcb4a5d0c3e8d81bd4\n"
    },
    {
      "commit": "524159db6d53cecc93de4133e0875be937437883",
      "tree": "37358040ec4d8deacf9486f9312a61ba3e3ebefc",
      "parents": [
        "ff1725382653dfa2db8536edc38a6b1f2c166f2a"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Mon Dec 23 14:41:47 2019 -0800"
      },
      "committer": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Thu Jan 16 15:59:19 2020 -0800"
      },
      "message": "Adding support for new System Usages\n\nAdding system usages to native layer functions including 4 new usages\nand setSupportedSystemUsage API\n\nBug: 141006627\nTest: Built, ran, and verified types showed up in dumpsys\nChange-Id: I282c6b40ed9256ced5efb59b42da95a8fb0a6398\n"
    },
    {
      "commit": "9b2064c3afe14f893afff019bdcd4c4d40ce13ed",
      "tree": "0a49d5049cfd60fb6de3387460f5bb41a58e2ed1",
      "parents": [
        "249dba6eb7b1f71a424290e1c58c3bedb76a0595"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 22 17:25:04 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 13 23:05:34 2020 +0000"
      },
      "message": "AudioFlinger: implement device specific audio effects\n\nAdd management of audio effects applied to a specific input\nor output audio device.\n\nA new class DeviceEffectProxy derived from Effectbase is added\nto represent an effect attached to a particular audio device type and\naddress. This proxy manages one or more actual EffectModule instances\nautomatically added to a playback or capture thread or directly to the\naudio HAL when the targeted audio device is used by an audio patch.\n\nA new DeviceEffectManager class is added to manage creation and release\nof DeviceEffectProxy instances and monitor creation and release of audio\npatches and create or release actual effect instances accordingly.\n\nBug: 136294538\nTest: make\n\nChange-Id: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\nMerged-In: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\n"
    },
    {
      "commit": "2623d365228384ccab82169f65f2c5971cfedf60",
      "tree": "ae5698609bd6d7231958ac53ba16feaff2a2f2b3",
      "parents": [
        "f0a91423d480c4634e647c4e4a1fe760580f7ff2",
        "f41599b115c9b3fc13a5fe00186067885a31c3ba"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 11 03:10:52 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 11 03:10:52 2020 +0000"
      },
      "message": "Merge \"APM: support querying of audio playback routing\""
    },
    {
      "commit": "f41599b115c9b3fc13a5fe00186067885a31c3ba",
      "tree": "b35290ea7ef244758abf9ead2cdce78b1614c4ec",
      "parents": [
        "684e4758669bacea71379735d49bdc74807772f3"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jan 07 14:22:08 2020 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jan 10 12:35:43 2020 -0800"
      },
      "message": "APM: support querying of audio playback routing\n\n  Add support for querying the audio devices used for playback\nrouting for the given audio attributes.\n  Take into account registered dynamic policies but disregard\nsecondary output descriptors as they are used for playback\ncapture.\n\nBug: 144440677\nTest: atest AudioServiceHostTest\nChange-Id: I102c57b432b044dc6b0ead49e0a30d8e9094411d\n"
    },
    {
      "commit": "d1ce689ac43bfd6c75c2f15a349e475396d04dcd",
      "tree": "42c6e27d027844c455405db5124a8086775cfc5e",
      "parents": [
        "d3fb71855d226e12b7d8ed261047619c75895034",
        "b82e6b724e45b1f88ed746c316b445b3bb8036b3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 09 18:23:19 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 09 18:23:19 2020 +0000"
      },
      "message": "Merge \"AudioFlinger: implement device specific audio effects\""
    },
    {
      "commit": "b82e6b724e45b1f88ed746c316b445b3bb8036b3",
      "tree": "4fd55853fe2b97b98bf27bff61142d9b2b92f28f",
      "parents": [
        "9ce5404e8ee6cf247a9004500cb91bf3b8114b14"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 22 17:25:04 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 07 17:05:07 2020 -0800"
      },
      "message": "AudioFlinger: implement device specific audio effects\n\nAdd management of audio effects applied to a specific input\nor output audio device.\n\nA new class DeviceEffectProxy derived from Effectbase is added\nto represent an effect attached to a particular audio device type and\naddress. This proxy manages one or more actual EffectModule instances\nautomatically added to a playback or capture thread or directly to the\naudio HAL when the targeted audio device is used by an audio patch.\n\nA new DeviceEffectManager class is added to manage creation and release\nof DeviceEffectProxy instances and monitor creation and release of audio\npatches and create or release actual effect instances accordingly.\n\nBug: 136294538\nTest: make\n\nChange-Id: I23b9f9db4459136039c5ee327cf3b1aefa7db5af\n"
    },
    {
      "commit": "c222d6e5aba8e7231d7430cabfbb011d664c9add",
      "tree": "9f959b7423f0c9f470704c0fd3614edf4aed0cfb",
      "parents": [
        "5b8039a69f1923a019d2c48b5158bf837df3a11e",
        "d46124d0a1ae2e2ef18aa7ea6ad4090f582b4479"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 07 19:15:09 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Tue Jan 07 19:15:09 2020 +0000"
      },
      "message": "Merge \"Select correct devices when ENFORCED_AUDIBLE is set\" am: 982ecd07f4 am: 0629cc56d0 am: d46124d0a1\n\nChange-Id: Ieb08a772528f1a07dbcfe7b4274dce4f8f4e7909\n"
    },
    {
      "commit": "019c1737ed05c4bff220cd8bc1de5a9991647422",
      "tree": "3f170a37e30d68fbef1f299866071227c21594cc",
      "parents": [
        "3eef87ec4e6413fb49990de06fef2480fc23aeef"
      ],
      "author": {
        "name": "Henrik Backlund",
        "email": "henrik.backlund@sony.com",
        "time": "Mon Sep 30 14:48:38 2019 +0200"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "Tomoharu.Kasahara@sony.com",
        "time": "Mon Jan 06 11:18:47 2020 +0000"
      },
      "message": "Select correct devices when ENFORCED_AUDIBLE is set\n\nIf ENFORCED_AUDIBLE is set for a stream, it should output\nto Speaker and not select output device(s) for VOICE_CALL.\n\nBug: 147209610\n\nChange-Id: I9553efd677979351ed6f7191079da84dac2a7ed1\n"
    },
    {
      "commit": "60e7d69f19d6c80082778dec51b23efbc2ed7e5f",
      "tree": "e214c802427c87c97cde465f0920902ef88e4ad6",
      "parents": [
        "e3fa518b987f7ccfd042f28e9744ec42813d7e34",
        "cd32297572d33978b4395d79f2cce52d71adbe8c"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Jan 03 21:34:57 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Jan 03 21:34:57 2020 +0000"
      },
      "message": "Merge \"Add IEC958_NONAUDIO output flag to MSD patches\" am: 3eef87ec4e am: d224afe849 am: cd32297572\n\nChange-Id: Icf9a1bff6a514890b8603bcacdf8577dd31266a5\n"
    },
    {
      "commit": "5c9f0837b3094923229127ef154507fda311a21b",
      "tree": "419df065009f23d2b5ac89d1dcbf8112c65a54f3",
      "parents": [
        "2638df9bf8fbe3e82c1908b47df206746080fb70"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Thu Nov 21 13:39:31 2019 +1100"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jan 03 11:14:18 2020 -0800"
      },
      "message": "Add IEC958_NONAUDIO output flag to MSD patches\n\nFor the formats compatible with IEC61937 encapsulation, assume\nthat the record thread input from MSD is IEC61937 framed (for\nproportional buffer sizing). Add the\nAUDIO_OUTPUT_FLAG_IEC958_NONAUDIO flag so downstream HAL can\ndistinguish between raw and IEC61937 framed streams.\n\nTest: manual test on BCM TV device\nChange-Id: I8f09f936ccce63985df4ad00433299b063769419\n"
    },
    {
      "commit": "1159384b08c2d1570fe323f3a8a95d7b0e0caf19",
      "tree": "52c45971dad648c4178fa3701692ff613dfc5a5f",
      "parents": [
        "9c7e2a51e2fb24bbf193b46a3f5e892af19cdfe5"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Dec 18 15:50:09 2019 -0800"
      },
      "committer": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Thu Dec 19 00:33:49 2019 +0000"
      },
      "message": "Remove cleanUpEffectsForIo.\n\nWhen closing input/output, it is not needed to unregister effects.\nThe effects will be automatically unregistered when the audio session id\nis released. If the effects are unregistered when closing input/output\nand the audio session id is not released, audio policy manager will lose\nthe visibility of the effects. In that case, it will fail to move the\neffects to new I/O when a track with the same audio session id is\nattached to a new I/O.\n\nBug: 145197421\nTest: repo steps from the bug\nChange-Id: I1bee3a3ee79692c863aa3977df62346ac9dc8946\n"
    },
    {
      "commit": "74cd6b0f6840c9f39b51700fb84420f2a1dc1f8e",
      "tree": "78e558b5d1b2d8b4950498294ceed86680176753",
      "parents": [
        "a32e60121e1cd626f300fb894f4e1bc5715d3d41"
      ],
      "author": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Fri Oct 25 10:06:40 2019 -0700"
      },
      "committer": {
        "name": "Ytai Ben-Tsvi",
        "email": "ytai@google.com",
        "time": "Thu Dec 12 17:08:59 2019 -0800"
      },
      "message": "Migrate to new sound trigger middleware service\n\nThis change:\n- Removes the old ISoundTriggerHw service and removes its code.\n- Connects AudioPolicyManager to the new service via AIDL RPC (using\n  a new utility, BinderProxy).\n\nChange-Id: I00366e2c5f252708e903b2311816d9eceb132a05\nBug: 142070343\n"
    },
    {
      "commit": "21777f87815a526e4376cf5621040ebbc5b02d05",
      "tree": "eae07307fb1e2507a47e5ebd3211484e045d3eee",
      "parents": [
        "42afea265a65a4d0b22f5d2f2af72cbbb2631c80"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 06 18:12:06 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 11 21:38:35 2019 +0000"
      },
      "message": "audio: add call assistant usage\n\nAdd audio usage for call assistant use cases.\nUsed by apps playing over call uplink path for call\nscreening or other in call assitant features.\nAdd corresponding routing strategy in audio policy manager.\nThe strategy reuses volume group \"PATCH\" as volume is fixed\nfor call uplink audio.\n\nBug: 135213843\nTest: make\nChange-Id: Iad34c058e96fa5c969e825d3ddb0a82a60accc76\n"
    },
    {
      "commit": "2deb47896c1a3604468f9b9144c7114f5d678b33",
      "tree": "5e952f128a421748aa32dc22f16e86ecad15a972",
      "parents": [
        "f6cd76eef99409ea943e995e3c8fae92a787fb36"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Nov 01 11:04:15 2019 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Dec 10 14:21:48 2019 -0800"
      },
      "message": "APM: support product strategy routing\n\n  Audio policy engine supports receiving a preferred device to use\nfor a given strategy (Engine superclass). Use of the preferred\ndevice intervenes at the level of the each engine implementation,\nhere in the default engine in getDevicesForProductStrategy() method\nso it is saved in the routing cache, and respects existing routing\npriorities.\n  Refactor the loops for call and output rerouting into a new\nupdateCallAndOutputRouting() method.\n\nBug: 144440677\nTest: atest AudioServiceHostTest#testPreferredDeviceRouting\n\nChange-Id: Ic4c690e1b0d8020c4335979e40e14e6df5887879\nMerged-In: Ic4c690e1b0d8020c4335979e40e14e6df5887879\n"
    },
    {
      "commit": "30857159e8c143aac18aa1c0db3cffd47d8e207d",
      "tree": "fa694fe4ca82413e2de5cca3066643571d46a611",
      "parents": [
        "a2adc8aa6c06f0e1d06c1bb6535be15f30ba26fd"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Nov 01 11:04:15 2019 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Dec 09 12:22:47 2019 -0800"
      },
      "message": "APM: support product strategy routing\n\n  Audio policy engine supports receiving a preferred device to use\nfor a given strategy (Engine superclass). Use of the preferred\ndevice intervenes at the level of the each engine implementation,\nhere in the default engine in getDevicesForProductStrategy() method\nso it is saved in the routing cache, and respects existing routing\npriorities.\n  Refactor the loops for call and output rerouting into a new\nupdateCallAndOutputRouting() method.\n\nBug: 144440677\nTest: atest AudioServiceHostTest#testPreferredDeviceRouting\n\nChange-Id: Ic4c690e1b0d8020c4335979e40e14e6df5887879\n"
    },
    {
      "commit": "5b78141fb60bb73ee9339497cce5b5111413927e",
      "tree": "4be7b7f377d843dd25f2ce2beef43c34d9908d49",
      "parents": [
        "ea64c67d2c2ecc6921fea5769d66f52301601857"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 04 14:10:42 2019 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 03 17:13:50 2019 -0800"
      },
      "message": "Move AudioDeviceTypeAddr to libaudiofoundation.\n\nMove AudioDeviceTypeAddr from AudioPolicy.h to libaudiofoundation.\nAudioDeviceTypeAddr is a class that contains audio device type and\naddress. It can be used not only in audio policy, but also other places.\n\nBug: 135621476\nTest: make, atest AudioHostTest\nChange-Id: Ib257859891c647c07f22771012efdada438a4ff5\nMerged-In: Ib257859891c647c07f22771012efdada438a4ff5\n"
    },
    {
      "commit": "12dc6b0e9fba8b7a8028d26fe02014fa2efe101e",
      "tree": "b72ebe2d9bd0682eef8613ed8a8cb30359c1a0ff",
      "parents": [
        "4ad3d03f619176464973f04adef235f49255b6ed"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 01 09:38:30 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 03 14:38:42 2019 -0800"
      },
      "message": "Clear up bit mask usage in audio policy.\n\nThis change includes:\n1. Use DeviceTypeSet to represent a combination of audio device types.\n2. Add helper functions for DeviceTypeSet\n3. Stop using audio device type as a bit mask in DeviceVector\n\nTest: atest AudioTrackTest AudioRecordTest AudioPlaybackCaptureTest\nTest: atest AudioHostTest AudioServiceHostTest audiopolicy_tests\nTest: audio smoke test\nChange-Id: If80513b689848bcab6094f70a572f053856afa82\nMerged-In: If80513b689848bcab6094f70a572f053856afa82\n"
    },
    {
      "commit": "6713a38298ccd91ba1718e559f057c705904f865",
      "tree": "a85b701316bf17a62e50376b271778dc6f4d8e96",
      "parents": [
        "2177b121ab8fc29c836719353b898456a671e728"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Sep 12 16:29:15 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Nov 27 11:04:33 2019 -0800"
      },
      "message": "Create DeviceDescriptorBase.\n\nDeviceDescriptorBase is a class that derives from AudioPort and\nAudioPortConfig and contains extensions to describe a audio port that is\na hardware device. DeviceDescriptor derives from DeviceDescriptorBase\nand contains policy related stuff.\n\nTest: atest AudioTrackTest AudioRecordTest AudioManagerTest\nTest: atest AudioPlaybackCaptureTest AudioHostTest audiopolicy_tests\nTest: audio smoke test\nBug: 135621476\nChange-Id: I70ebe6bca70a77bbfc8f6855de3fd4c4ffa1c487\nMerged-In: I70ebe6bca70a77bbfc8f6855de3fd4c4ffa1c487\n"
    },
    {
      "commit": "dd81cc2046346b92dc2c7c92d5a7628471bb5218",
      "tree": "24548543a9d9b63e68299105e8c09b41303fe7d0",
      "parents": [
        "dff2a4f7fcf16ea320684f9ca04bc05b8bf1b5b8"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Sep 11 10:15:46 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Nov 27 11:03:39 2019 -0800"
      },
      "message": "Rename AudioPort and PolicyAudioPort accordingly.\n\nMake the file name consistent as the class name.\n\nTest: make\nBug: 135621476\nChange-Id: Icbde26fe1798e344c3746f4678db098688456654\nMerged-In: Icbde26fe1798e344c3746f4678db098688456654\n"
    },
    {
      "commit": "dff2a4f7fcf16ea320684f9ca04bc05b8bf1b5b8",
      "tree": "7a6363492021a517099fc38a67efcacd377768dc",
      "parents": [
        "c02546150da2b87e71ed6d2df8abf48791ad79cb"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 10 14:29:54 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Nov 27 11:02:54 2019 -0800"
      },
      "message": "Make audio port in policy not derive from audio port base\n\nThis patch aims to make the structure for libaudiofoundation and policy\nstuff simpler, including:\n1. Make AudioPortBase as AudioPort in libaudiofoundation. Create\nPolicyAudioPort that contains policy related stuff, which is used by\naudiopolicy.\n2. Make AudioPortConfigBase as AudioPortConfig in libaudiofoundation.\nCreate PolicyAudioPortConfig that contains policy related stuff.\n3. DeviceDescriptor derives from AudioPort, AudioPortConfig, PolicyAudioPort\nand PolicyAudioPortConfig. IOProfile derives from AudioPort,\nPolicyAudioPort. AudioInputDescriptor/AudioOutputDescriptor derives from\nAudioPortConfig, PolicyAudioPortConfig.\n\nTest: atest AudioTrackTest, AudioRecordTest, AudioManagerTest\nTest: atest audiopolicy_tests, AudioHostTest\nTest: audio smoke test\nBug: 135621476\nChange-Id: I40299d95dda3b3fc0ea88b079f2fe38d8f7e5b31\nMerged-In: I40299d95dda3b3fc0ea88b079f2fe38d8f7e5b31\n"
    },
    {
      "commit": "c02546150da2b87e71ed6d2df8abf48791ad79cb",
      "tree": "88ecb87c7a96f1fa100f3c2133788a093c6a4b57",
      "parents": [
        "b9733bc444e79abf65fd18be3c25cb7e9499b7ad"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 10 14:29:14 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Nov 27 10:51:54 2019 -0800"
      },
      "message": "Rename AudioProfileVector.h as AudioProfileVectorHelper.h\n\nThe file only contains helper functions for AudioProfileVector.\n\nTest: make\nBug: 135621476\nChange-Id: Ifd8eb281cbb7d6395fd5d4b4d6f308d58e6ded3d\nMerged-In: Ifd8eb281cbb7d6395fd5d4b4d6f308d58e6ded3d\n"
    },
    {
      "commit": "b9733bc444e79abf65fd18be3c25cb7e9499b7ad",
      "tree": "fc5fa1bbe0ee8f698e81ac59d5e42c8d613b7fb5",
      "parents": [
        "1e415c058a14bf9ba2683685c40deda1dad6cd9c"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 10 14:27:34 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Nov 27 10:51:25 2019 -0800"
      },
      "message": "Leave AudioProfileVector only in libaudiofoundation.\n\nMake AudioProfileVector only in libaudiofoundation. In policy part,\ninstead of having policy specific AudioProfileVector deriving from\nAudioProfileVector in libaudiofoundation, make all the functions as\nglobal functions. In that case, AudioPortBase does not need to be a\ntemplate class. That helps make the structure clearer.\n\nTest: audio smoke test\nTest: CTS for AudioTrack, AudioRecord, AudioManager\nTest: audiopolicy_tests, AudioHostTest\nBug: 135621476\nChange-Id: I36b12123cf52c3f82cef09a965403791dff74093\nMerged-In: I36b12123cf52c3f82cef09a965403791dff74093\n"
    },
    {
      "commit": "eaf09f089a42f7a7ea39339e93b358b37b58956f",
      "tree": "f91620a31611160cc06ce12a1ba69dd15583e04e",
      "parents": [
        "736ffc105e64398dfa789bec3be880c7a1809761"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Aug 19 15:08:30 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Nov 26 15:26:53 2019 -0800"
      },
      "message": "Add AudioPortFoundation, AudioPortBase and AudioPortConfigBase.\n\nThe purpose of this change is to make a generic AudioPort class that\ncould be used by vendor.\n1. Add AudioPortFoundation and AudioPortBase. AudioPortFoundation\ncontains generic members of an audio port. AudioPortBase is a template\nclass that derives from AudioPortFoundation. It takes audio profile\nvector as a template parameters. That makes it more feasible to use\ncustomized audio profile stuff as needed. In audio policy, AudioPort\nderives from AudioPortBase and contain policy related stuff.\n2. Add AudioPortConfigBase. AudioPortConfigBase contains generic members\nof an audio port config. AudioPortConfig derives from AudioPortConfigBase\nand contains policy related stuff.\n3. Use std::string instead of String8 in AudioPort and AudioPortConfig.\n\nBug: 135621476\nTest: CTS for AudioRecord, AudioTrack, AudioManager, RoutingTest\nTest: audiopolicy_tests, AudioServiceHostTest\naudio smoke test\nTest: dumpsys media.audio_policy\nChange-Id: I05611b7067c18006660de2c678acd56bdd34010a\nMerged-In: I05611b7067c18006660de2c678acd56bdd34010a\n"
    },
    {
      "commit": "59a8759e91d4cd806026fd95e329e9a9d2b14313",
      "tree": "5a706d8c78e114fe1785b53f71fc9763fae5c8fe",
      "parents": [
        "147f5c318877c4fa8afa8e97208c109abf58c1cd"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Aug 13 15:17:08 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Nov 26 15:26:24 2019 -0800"
      },
      "message": "Preparation for moving AudioProfile to libaudiofoundation.\n\nCopy AudioProfile from audio policy to libaudiofoundation. Note that\nAudioProfile in libaudiofoundation has not been added into the make\nfile as it needs some more change to make it work. Doing this just to\nmake a cleaner diff for later change.\nRename AudioProfile in managerdefinitions folder as AudioProfileVector\nsince AudioProfile will be moved to libaudiofoundation.\n\nBug: 135621476\nTest: make\nChange-Id: I13ac067317648bbfd8d3960d16a1ea56ded83011\nMerged-In: I13ac067317648bbfd8d3960d16a1ea56ded83011\n"
    },
    {
      "commit": "4562b3b99b5462bd475325bd19a6047c30ce282a",
      "tree": "2e6200fbf5d873e90bdf6f6ccf45ef0c7a871aa3",
      "parents": [
        "41502b244f6107ed57330eb447d8e29960b9cf4f"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Jul 29 10:13:34 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Nov 26 11:41:08 2019 -0800"
      },
      "message": "Use standard containers for audio stuff in audio framework\n\n1. Add SampleRateSet, FormatSet, ChannelMaskSet, FormatVector\nusing std::vector and std::set in libaudiofoundation.\n2. Use SampleRateSet, FormatSet, ChannelMaskSet, FormatVector in\naudio framework.\n\nBug: 135621476\nTest: make, CTS for AudioRecord, AudioTrack, AudioManagerTest\nTest: play and record audio\nChange-Id: Ic04e637bcc6ba9df84c5e7561ec3c03f18a7d242\nMerged-In: Ic04e637bcc6ba9df84c5e7561ec3c03f18a7d242\n"
    },
    {
      "commit": "41502b244f6107ed57330eb447d8e29960b9cf4f",
      "tree": "63cf7c0b4e160cfd242bfbb603b6568aa89f0815",
      "parents": [
        "b8ec243b5f142edb13102bb76b887496d3a5cd5e"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jul 31 09:59:09 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Nov 26 11:29:16 2019 -0800"
      },
      "message": "Move AudioGain to libaudiofoundation.\n\n1. Create folder for libaudiofoudation.\n2. Move AudioGain to libaudiofoudation. The goal is to make AudioGain\nbe able to use in binder call and be vendor-available later.\n\nBug: 135621476\nTest: make, CTS for AudioTrack, AudioRecord, AudioManagerTest\nChange-Id: Ibf16ad9cb7f2ac657a02632ccbe4f934b5a12731\nMerged-In: Ibf16ad9cb7f2ac657a02632ccbe4f934b5a12731\n"
    },
    {
      "commit": "8a1095a9f240b4ac69e8aa47954a3ceb1bd38e16",
      "tree": "5e498499c94c3fa171a75e8daa55f949b4ea04ce",
      "parents": [
        "484d6119d3ca9140d415dc1841d4c0c500d76a20"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 08 14:44:16 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 08 17:56:01 2019 -0800"
      },
      "message": "audio policy: fix playback permission checks\n\nAlign playback permission checks implementation in getOutputforAttr() on\ncapture checks in getInputForAttr(): use an \"output type\" returned by\naudio policy manager and check permission accordingly.\n- Do not modify but reject request to play to call uplink when permission\nis denied.\n- Add missing permission check for injection to remote submix.\n- Clarify permission check for record from remote submix by using the\nuid/pid of client explicitly.\n\nBug:\nTest: CTS test for AudioTrack and AudioREcord.\nTest: GTS tests for dynamic policies and playback capture\nChange-Id: Ic0eb3b9921a491e97c58fa8f637583059a54b3a2\n"
    },
    {
      "commit": "c80381951593fa1152c2d6b1a1f75e56cfddd194",
      "tree": "fa0dd8ff4ca99aa851e10d49ce0c45a10f8890cd",
      "parents": [
        "0c3ab34456d0fb31f29459bb1a3d24008753b422",
        "74b71519c9ba9d55c4ab4596a90fb5e456acde9f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 08 22:40:38 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 08 22:40:38 2019 +0000"
      },
      "message": "Merge \"audio policy: use call screen mode\""
    },
    {
      "commit": "0c3ab34456d0fb31f29459bb1a3d24008753b422",
      "tree": "368a5533b9f178eb1a230fe35b30ff7d626b3f7d",
      "parents": [
        "dc0e389aac274d94fc3702cf858d0c47fa8ddd43",
        "8340e67185e852b7de1d68eb86ca0c46b1affb98"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 08 22:39:10 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 08 22:39:10 2019 +0000"
      },
      "message": "Merge \"audio policy: Add call screen audio mode.\""
    },
    {
      "commit": "74b71519c9ba9d55c4ab4596a90fb5e456acde9f",
      "tree": "f8c13ad2d2d3e1e1d54cfe5c02d11837fea80ac4",
      "parents": [
        "8340e67185e852b7de1d68eb86ca0c46b1affb98"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 06 17:21:57 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 06 17:25:33 2019 -0800"
      },
      "message": "audio policy: use call screen mode\n\nEnable playback over Call Tx path also when audio mode is CALL_SCREEN.\nWas previously only possilbe when IN_CALL or IN_COMMUNICATION.\n\nAlso generalize use of isStateInCall() method instead of\na mix of isStateInCall() and is_state_in_call().\n\nBug: 140384450\nTest: manual call screen test\nChange-Id: Ifda4ee2f26a30ed8dbe43b172d86b18d906029cf\n"
    },
    {
      "commit": "05b5edd08b0b846f6ffb749805a7b8bce31ce4f8",
      "tree": "49058f5bd3c2f4cf2321713374958ad68b84e19e",
      "parents": [
        "517734d665d69ed36c7a6cf5297452318aa517ec"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 04 14:10:42 2019 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Nov 06 13:52:55 2019 -0800"
      },
      "message": "Move AudioDeviceTypeAddr to libaudiofoundation.\n\nMove AudioDeviceTypeAddr from AudioPolicy.h to libaudiofoundation.\nAudioDeviceTypeAddr is a class that contains audio device type and\naddress. It can be used not only in audio policy, but also other places.\n\nBug: 135621476\nTest: make, atest AudioHostTest\nChange-Id: Ib257859891c647c07f22771012efdada438a4ff5\n"
    },
    {
      "commit": "8340e67185e852b7de1d68eb86ca0c46b1affb98",
      "tree": "fdb9098c48aedf7e3763f6dc2c5122bf16a5bd34",
      "parents": [
        "cd606f3f18e974ad02679ff9a6ffb98e71714b05"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 06 11:01:08 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 06 11:06:34 2019 -0800"
      },
      "message": "audio policy: Add call screen audio mode.\n\nAdd new audio mode AUDIO_MODE_CALL_SCREEN allowing call screening\nto take place while other audio use cases are still active.\n\nAlso add API and audio policy configuration attribute to\nindicate if the platform supports this audio mode.\n\nBug: 140384450\nTest: make\nChange-Id: If2fc56dbbd10aae2cf1498480471b35de0940228\n"
    },
    {
      "commit": "cb137d0ead90f63e9b67bd9af21425b32ebc150d",
      "tree": "aac38fef56e7fc6051426395922088854f4a03ad",
      "parents": [
        "c52243f298aa3e570197831c8c383fdedb8f4ac6"
      ],
      "author": {
        "name": "Nick Desaulniers",
        "email": "ndesaulniers@google.com",
        "time": "Tue Oct 15 18:30:45 2019 -0700"
      },
      "committer": {
        "name": "Nick Desaulniers",
        "email": "ndesaulniers@google.com",
        "time": "Mon Oct 21 10:55:49 2019 -0700"
      },
      "message": "[audiopolicy] fix -Wreorder-init-list\n\nC++20 will require members in a designated initializer to be in order\nunlike C99.\n\nBug: 139945549\nTest: mm\nChange-Id: I610f4e8a8a9d69eb650c354df4bd1438a1408897\nMerged-In: Ie129344a36893adc82e67181012e3af817bda9f4\nSigned-off-by: Nick Desaulniers \u003cndesaulniers@google.com\u003e\n"
    },
    {
      "commit": "a30e320885ccba49bc86f404acfa18729e243473",
      "tree": "84c2499f55d534b8adc7d753415b13cb9d635af5",
      "parents": [
        "7b12996173c219b168af186986349817df5bb5ea"
      ],
      "author": {
        "name": "Nick Desaulniers",
        "email": "ndesaulniers@google.com",
        "time": "Fri Oct 18 13:38:23 2019 -0700"
      },
      "committer": {
        "name": "Nick Desaulniers",
        "email": "ndesaulniers@google.com",
        "time": "Fri Oct 18 13:38:23 2019 -0700"
      },
      "message": "[audiopolicy] fix -Wreorder-init-list\n\nC++20 will require members in a designated initializer to be in order\nunlike C99.\n\nBug: 139945549\nTest: mm\nChange-Id: Ie129344a36893adc82e67181012e3af817bda9f4\nSigned-off-by: Nick Desaulniers \u003cndesaulniers@google.com\u003e\n"
    },
    {
      "commit": "9a3361e4c6bb01db24c135921b0891e917f71419",
      "tree": "3ee2499fd3e267607c9ae56f120687c4bbb5d67b",
      "parents": [
        "1865ec9e8a38506e2c7062793f39113f98da0543"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 01 09:38:30 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Oct 11 17:33:15 2019 -0700"
      },
      "message": "Clear up bit mask usage in audio policy.\n\nThis change includes:\n1. Use DeviceTypeSet to represent a combination of audio device types.\n2. Add helper functions for DeviceTypeSet\n3. Stop using audio device type as a bit mask in DeviceVector\n\nTest: atest AudioTrackTest AudioRecordTest AudioPlaybackCaptureTest\nTest: atest AudioHostTest AudioServiceHostTest audiopolicy_tests\nTest: audio smoke test\nChange-Id: If80513b689848bcab6094f70a572f053856afa82\n"
    },
    {
      "commit": "e0d004fe12fc2535d62d52bea0666b690ba057b0",
      "tree": "a577aaf84c4c00e621d651077127352574dd8aeb",
      "parents": [
        "7db9e2b272f63641a54be1aaedd2e41d9bf0c0e2"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 10:06:18 2019 +0000"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Oct 10 17:00:19 2019 +0000"
      },
      "message": "Revert \"audiopolicy: align input and output devices for engine\"\n\nThis reverts commit 4b8d5ce58d98d4a163f63e17735450a7cac4821c.\n\nBug: 132241823\nReason for revert: Breaks Screen Mirroring during Live caption\n\nChange-Id: I4bf711e5c5e4233fcf58bda5477380b488fde2fa\n"
    },
    {
      "commit": "a3c03a5bbab39d2ea12281f10534a3ab7bad1a1a",
      "tree": "84f3507279568d0a31a6300f4c7cd3adeef65501",
      "parents": [
        "d3dd89caab587bc2207b851da4b3333daf986b2b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 13 10:12:45 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 08 13:53:31 2019 -0700"
      },
      "message": "audio policy: fix virtual called from constructor\n\nCall initialize() after constructing AudioPolicyManager\nfrom factory to avoid calling virtual methods from constructor.\n\nBug: 136491567\nTest: make\nChange-Id: Ie0b591d90e643b1fd1c326f9731dc656b38230dc\nMerged-In: Ie0b591d90e643b1fd1c326f9731dc656b38230dc\n"
    },
    {
      "commit": "86903e065d2d592fa34b57a717c3859c68d3435d",
      "tree": "dbd47d0af3003b0e5848779bdd619345916535aa",
      "parents": [
        "4f0a23d0dc08aa553389f17ab7e3f89fc6125496"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jul 11 14:55:16 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Oct 03 14:22:02 2019 -0700"
      },
      "message": "AudioPolicy: do not cap a11y volume during call screening\n\n  Add accessibility playback as exemption for volume capping\nduring call screening.\n\nBug: 133879660\nTest: enable Talkback, receive a call, screen it, touch responses icons,\nverify labels are read\n\nChange-Id: I661a544261ef57e439b3eb8cf3d1dde1c31ac303\nMerged-In: I661a544261ef57e439b3eb8cf3d1dde1c31ac303\n"
    },
    {
      "commit": "bb3b160486da21dab7611de44c85ad85e73e69c9",
      "tree": "266b8068d8e1714bb4b4100d2e31c0a95cc9e16c",
      "parents": [
        "3e9dd76e813cf04c9dd35a8c2e813c174e5b435e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 08 15:28:43 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Oct 02 16:31:34 2019 -0700"
      },
      "message": "Fix the name of the constant for device [dis]connect parameter\n\nDuring the transition to Treble, \"device connect\" / \"disconnect\"\nparameter was erroneously attributed to audio streams. This\nissue got fixed in Audio HAL V4.0, but AudioParameter file\nwas still using incorrect name for the constant.\n\nTest: make\nChange-Id: I4056ad9e98af6dadd017d22bc4bde031cac75631\nMerged-In: I4056ad9e98af6dadd017d22bc4bde031cac75631\n"
    },
    {
      "commit": "5b023ebc681f8b41da3a862d161453931a01704f",
      "tree": "238e7b56a3de805a8b37d39a5e91d40ad2862d54",
      "parents": [
        "e9ad58533c38be8ec0f7c9ebd3b2e6e850354f82"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@quicinc.com",
        "time": "Wed Jul 03 11:20:36 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Oct 02 10:18:41 2019 -0700"
      },
      "message": "audiopolicy: add null pointer check for primary hw\n\nWhen sound card detection fails, primary HW cannot be opened.\nadd null pointer check to avoid further crashes in audioserver.\n\nBug: 136060200\nTest: make\nauthored-by: Weiyin Jiang \u003cwjiang@codeaurora.org\u003e\nChange-Id: Ief07a36ca8aed0e6013d533bd0aa66e122e3070c\nMerged-In: Ief07a36ca8aed0e6013d533bd0aa66e122e3070c\n"
    },
    {
      "commit": "97a4718ab9f51476ea519b1ee6b70389806c1ddc",
      "tree": "f7e5465ed6bc2154f1e5321b5d7a86051d383fd0",
      "parents": [
        "a43fcd7ed6b1cc8930e2c3d8416b87cb8e9e02e4"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@quicinc.com",
        "time": "Wed Jul 03 11:15:33 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 01 17:09:49 2019 -0700"
      },
      "message": "av: Add AUDIO_OUTPUT_FLAG_MMAP_NOIRQ flag.\n\nAdd AUDIO_OUTPUT_FLAG_MMAP_NOIRQ flag in the relavant flags to check\nfor if the relavant profiles are present or not\n\nBug: 136493985\nTest: make\nauthored-by: Samyak Jain \u003csamyjain@codeaurora.org\u003e\nChange-Id: I8b8b9fdfca2bb6e5f824f3b79ac42b7de5545706\nMerged-In: I8b8b9fdfca2bb6e5f824f3b79ac42b7de5545706\n"
    },
    {
      "commit": "61e07e3f03c62f39a4b88e761df8c5614474fb31",
      "tree": "8daf074c08d628b660884ed2c9269acf95a3ab3b",
      "parents": [
        "839cd0691bd3265343e87fbb9545ed27319b99c1"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 01 15:07:19 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 01 10:54:50 2019 -0700"
      },
      "message": "AudioPolicyManager: Handle error from setInputDevice in startInput\n\nThe error must not be ignored as otherwise the Java layer\nthinks that recording has started successfully.\n\nBug: 136279123\nTest: reproduce AudioRecordingConfigurationTest failure on cuttlefish,\n      check test failure output, the failure must be\n      \"junit.framework.AssertionFailedError: expected:\u003c3\u003e but was:\u003c1\u003e\"\n\nChange-Id: I82bc3a43bf679cfb03d4246d07615d3fd4dac409\nMerged-In: I82bc3a43bf679cfb03d4246d07615d3fd4dac409\n"
    },
    {
      "commit": "e13c679e4afba66097018516eba9ea15d15bbc7a",
      "tree": "216ecb3fe033354b1d07ce88aa8ccecb15f4c3fa",
      "parents": [
        "3e0b02e336f3b5d59c5162e743d10d86be63c66b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue May 14 10:32:51 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Sep 25 14:59:42 2019 -0700"
      },
      "message": "audiopolicy: Load the engine library dynamically\n\nAndroid provides 2 audio policy engines:\nlibaudiopolicyenginedefault and\nlibaudiopolicyengineconfigurable. This change makes the engine\nto be loaded dynamically based on the configuration (currently\nthe engine name is hardcoded into AudioPolicyConfig). Dynamic\nloading allows building and installing of both libraries without\nany conflicts.\n\nTechnical changes:\n\n - AudioPolicyManagerInterface renamed to EngineInterface\n   for clarity;\n\n - For the purpose of dynamic loading, APM does not depend\n   anymore on the EngineInstance class. The class got removed\n   from the default AP engine, but left in the configurable engine\n   because it is also used by its plugins;\n\n - Added EngineLibrary class to encapsulate dynamic loading\n   of the AP engine. The class name EngineInstance is repurposed\n   for a smart pointer to EngineInterface;\n\n - services/audiopolicy/managerdefault/Android.mk converted\n   into Android.bp;\n\n - Added engine loading failure test;\n\nBug: 132639720\nTest: sanity tests for audio; audiopolicy_tests\nChange-Id: I0581569a172f810e030aec879225e817bfa7851a\nMerged-In: I0581569a172f810e030aec879225e817bfa7851a\n"
    },
    {
      "commit": "fd5b2cf8cd6073ef663edf7f87bff9573a97bf64",
      "tree": "7f095e5dfd7f440aa132534d4eef4fa616fc1397",
      "parents": [
        "d3ce88c4296b7019e20a9db5a87190face582b88"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri May 10 14:15:52 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Sep 23 17:13:04 2019 -0700"
      },
      "message": "audiopolicy: Remove legacy audio_policy configuration\n\nRemove the \"template\" configuration file and the header file.\n\nBug: 132435217\nTest: make\nChange-Id: I0b8ae921ac046e11b020d5766a60f9b341e1d6ee\nMerged-In: I0b8ae921ac046e11b020d5766a60f9b341e1d6ee\n"
    },
    {
      "commit": "d3ce88c4296b7019e20a9db5a87190face582b88",
      "tree": "2a60d9b0f1cbd1994fa16730d17eef413b63c628",
      "parents": [
        "09df62407d61b4a6172d4d122aa1676028a88f14"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri May 10 11:26:52 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Sep 23 17:10:29 2019 -0700"
      },
      "message": "Remove usages of USE_XML_AUDIO_POLICY_CONF\n\nThe usages were only checking that the property is set\nto catch attempts to update to Q while still using legacy\nconfigurations.\n\nBug: 132435217\nTest: build various devices\nChange-Id: Ib8bda8ab7f791ac5cd3875816de46a42f0a4cbb6\nMerged-In: Ib8bda8ab7f791ac5cd3875816de46a42f0a4cbb6\n"
    },
    {
      "commit": "5c2dc7ad49e701fa972683462608044c83194135",
      "tree": "7aa2f822994b0ba037ea5980490f7fc2c98161bb",
      "parents": [
        "cc968e2a3dd6103ebce043990c7f6d30025a1334",
        "ce9f20e40b0d8511c8b9a2ea4c0fa904404566af"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 18 00:41:32 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 18 00:41:32 2019 +0000"
      },
      "message": "Merge changes I70ebe6bc,I9a6d6401,Icbde26fe,I40299d95,Ifd8eb281, ...\n\n* changes:\n  Create DeviceDescriptorBase.\n  Copy DeviceDescriptor to libaudiofoundation.\n  Rename AudioPort and PolicyAudioPort accordingly.\n  Make audio port in policy not derive from audio port base\n  Rename AudioProfileVector.h as AudioProfileVectorHelper.h\n  Leave AudioProfileVector only in libaudiofoundation.\n"
    },
    {
      "commit": "ce9f20e40b0d8511c8b9a2ea4c0fa904404566af",
      "tree": "120f9e88b0d1196275994a499e356a011c4d61e5",
      "parents": [
        "6ae65d8c2ae06da90a091ac5e15ff29d572a38b7"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Sep 12 16:29:15 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 17 13:11:40 2019 -0700"
      },
      "message": "Create DeviceDescriptorBase.\n\nDeviceDescriptorBase is a class that derives from AudioPort and\nAudioPortConfig and contains extensions to describe a audio port that is\na hardware device. DeviceDescriptor derives from DeviceDescriptorBase\nand contains policy related stuff.\n\nTest: atest AudioTrackTest AudioRecordTest AudioManagerTest\nTest: atest AudioPlaybackCaptureTest AudioHostTest audiopolicy_tests\nTest: audio smoke test\nBug: 135621476\nChange-Id: I70ebe6bca70a77bbfc8f6855de3fd4c4ffa1c487\n"
    },
    {
      "commit": "e128485cea169cc3adf7d6285bd30c8f5f57790b",
      "tree": "940553bf3a4a3c20fac15cceb887c33a98f57f1c",
      "parents": [
        "4ef934543dd2d469ba8ffa765c6b05a4e196c0ce"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Sep 11 10:15:46 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 17 12:30:37 2019 -0700"
      },
      "message": "Rename AudioPort and PolicyAudioPort accordingly.\n\nMake the file name consistent as the class name.\n\nTest: make\nBug: 135621476\nChange-Id: Icbde26fe1798e344c3746f4678db098688456654\n"
    },
    {
      "commit": "4ef934543dd2d469ba8ffa765c6b05a4e196c0ce",
      "tree": "05e1966989d89ea7ee0de51d7b9ec2b4a0119ad0",
      "parents": [
        "811797a66929293bd64e0a2e51a761819901d83c"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 10 14:29:54 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 17 12:30:20 2019 -0700"
      },
      "message": "Make audio port in policy not derive from audio port base\n\nThis patch aims to make the structure for libaudiofoundation and policy\nstuff simpler, including:\n1. Make AudioPortBase as AudioPort in libaudiofoundation. Create\nPolicyAudioPort that contains policy related stuff, which is used by\naudiopolicy.\n2. Make AudioPortConfigBase as AudioPortConfig in libaudiofoundation.\nCreate PolicyAudioPortConfig that contains policy related stuff.\n3. DeviceDescriptor derives from AudioPort, AudioPortConfig, PolicyAudioPort\nand PolicyAudioPortConfig. IOProfile derives from AudioPort,\nPolicyAudioPort. AudioInputDescriptor/AudioOutputDescriptor derives from\nAudioPortConfig, PolicyAudioPortConfig.\n\nTest: atest AudioTrackTest, AudioRecordTest, AudioManagerTest\nTest: atest audiopolicy_tests, AudioHostTest\nTest: audio smoke test\nBug: 135621476\nChange-Id: I40299d95dda3b3fc0ea88b079f2fe38d8f7e5b31\n"
    },
    {
      "commit": "811797a66929293bd64e0a2e51a761819901d83c",
      "tree": "b7cfe0824b193b5a39cdcda71e82808372258518",
      "parents": [
        "3e277cc0f12477b9e2ac2875cbca029f167a2f57"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 10 14:29:14 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Sep 16 12:03:10 2019 -0700"
      },
      "message": "Rename AudioProfileVector.h as AudioProfileVectorHelper.h\n\nThe file only contains helper functions for AudioProfileVector.\n\nTest: make\nBug: 135621476\nChange-Id: Ifd8eb281cbb7d6395fd5d4b4d6f308d58e6ded3d\n"
    },
    {
      "commit": "3e277cc0f12477b9e2ac2875cbca029f167a2f57",
      "tree": "e3da1697e39ff53d10eb2389bd36af8eccb6e4b2",
      "parents": [
        "861df4b5ff6fd4b9c8ac95d8fd080bda78e7ce5c"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 10 14:27:34 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Sep 16 12:00:44 2019 -0700"
      },
      "message": "Leave AudioProfileVector only in libaudiofoundation.\n\nMake AudioProfileVector only in libaudiofoundation. In policy part,\ninstead of having policy specific AudioProfileVector deriving from\nAudioProfileVector in libaudiofoundation, make all the functions as\nglobal functions. In that case, AudioPortBase does not need to be a\ntemplate class. That helps make the structure clearer.\n\nTest: audio smoke test\nTest: CTS for AudioTrack, AudioRecord, AudioManager\nTest: audiopolicy_tests, AudioHostTest\nBug: 135621476\nChange-Id: I36b12123cf52c3f82cef09a965403791dff74093\n"
    },
    {
      "commit": "78aade89e34f9bc315bbe54220db046e421ed2de",
      "tree": "11f783146aa597125b21414ca15ff033c10b25c0",
      "parents": [
        "61d4a093f4b4041b145fbd7a3ab5ec04679f87d9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 13 18:55:08 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Sep 13 18:58:10 2019 -0700"
      },
      "message": "audio policy: fix crash in checkOutputForAttributes\n\nNew implementation of checkOutputForAttributes() dereferences\nthe profile of an output descriptor without checking that this is not\na duplicated output first (duplicated outputs do not have a profile).\n\nBug: 140916168\nTest: repro steps in bug\nChange-Id: Ic15674edc245ae33e40d0a025ce79bffcea852b1\n"
    },
    {
      "commit": "aa02db816acc3f68cfab56235ced4c6f9df47696",
      "tree": "e792a11f52026f3e29592e06afc6d85599a32393",
      "parents": [
        "751e6a37fe91a1c78a9eaee394f8c3503c3f536f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 05 17:31:49 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 05 17:47:05 2019 -0700"
      },
      "message": "audio policy: refine strategy invalidation logic take two\n\nThis reverts commit ea04dff4 and adds a proper fix\nfor b/140545518 to commit 8bbd0e14.\nDirect outputs should follow a different logic for client invalidation\nthan mixer outputs.\n\nBug: 140545518\nTest: audio smoke tests while verifying no audioserver crash.\nChange-Id: Ia59803f10a7eeb2f02803b9a07630c744a37bf02\n"
    },
    {
      "commit": "6d1464aa991a13548a3b74c38c26e5ef821d6980",
      "tree": "a7a849e3a1a3ad0d5fbf2e9c63fddf148b9deaa4",
      "parents": [
        "1af26552f85a27a1afe8f2ceb53c9c525cdee2e6",
        "ea04dff40c6092aa66931e3de2aa5948e6121b2e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 05 20:48:07 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 05 20:48:07 2019 +0000"
      },
      "message": "Merge \"Revert \"audio policy: refine strategy invalidation logic\"\""
    },
    {
      "commit": "ea04dff40c6092aa66931e3de2aa5948e6121b2e",
      "tree": "90054043db15c7fc76e36e7eeeed702e030f73ba",
      "parents": [
        "8bbd0e1428dae329a6a2e77ba847ff5baa26877d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 05 17:41:12 2019 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 05 17:41:12 2019 +0000"
      },
      "message": "Revert \"audio policy: refine strategy invalidation logic\"\n\nThis reverts commit 8bbd0e1428dae329a6a2e77ba847ff5baa26877d.\n\nReason for revert: b/140545518\n\nChange-Id: Id163152c28a34c28b296e7a4c5a29b2a6275b171\n"
    },
    {
      "commit": "3ce82b056a93012e90de5c906b60e99cf40bad7e",
      "tree": "8b8d489145e37860ab4ac31513f2e4a3bb45d072",
      "parents": [
        "1e00b66086511f28eb8ad44196a3556f542a1ec1",
        "5740f08a85214ebdb994fdcfd91dab186fc312fc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 04 21:42:03 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 04 21:42:03 2019 +0000"
      },
      "message": "Merge changes I05611b70,I6cd1a53e,Ic2e08efc,I13ac0673\n\n* changes:\n  Add AudioPortFoundation, AudioPortBase and AudioPortConfigBase.\n  Copy AudioPort.h to libaudiofoundation.\n  Make AudioProfile as a common class and create AudioProfileVectorBase.\n  Preparation for moving AudioProfile to libaudiofoundation.\n"
    },
    {
      "commit": "ffc0cf5cbefeadddb70c39375de2d6fb44b32528",
      "tree": "3a5a96d446e02e308ef75bc8ef3a0a650f602444",
      "parents": [
        "ef61973b8c4af80ccdf2309561ae68869f50bf68",
        "8bbd0e1428dae329a6a2e77ba847ff5baa26877d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Sep 04 17:28:40 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 04 17:28:40 2019 +0000"
      },
      "message": "Merge \"audio policy: refine strategy invalidation logic\""
    },
    {
      "commit": "5740f08a85214ebdb994fdcfd91dab186fc312fc",
      "tree": "0da56c9af676f4c0cfa95bdc14fe3b1463b14710",
      "parents": [
        "ea87a0ce074dd93916f8918efc2eeb9d868a2093"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Aug 19 15:08:30 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Sep 03 14:44:25 2019 -0700"
      },
      "message": "Add AudioPortFoundation, AudioPortBase and AudioPortConfigBase.\n\nThe purpose of this change is to make a generic AudioPort class that\ncould be used by vendor.\n1. Add AudioPortFoundation and AudioPortBase. AudioPortFoundation\ncontains generic members of an audio port. AudioPortBase is a template\nclass that derives from AudioPortFoundation. It takes audio profile\nvector as a template parameters. That makes it more feasible to use\ncustomized audio profile stuff as needed. In audio policy, AudioPort\nderives from AudioPortBase and contain policy related stuff.\n2. Add AudioPortConfigBase. AudioPortConfigBase contains generic members\nof an audio port config. AudioPortConfig derives from AudioPortConfigBase\nand contains policy related stuff.\n3. Use std::string instead of String8 in AudioPort and AudioPortConfig.\n\nBug: 135621476\nTest: CTS for AudioRecord, AudioTrack, AudioManager, RoutingTest\nTest: audiopolicy_tests, AudioServiceHostTest\naudio smoke test\nTest: dumpsys media.audio_policy\nChange-Id: I05611b7067c18006660de2c678acd56bdd34010a\n"
    },
    {
      "commit": "5ada82ee2511a31c6846c67e455ffb2c9989b623",
      "tree": "38845fc352b781bb00cfe7bf56cf1cfc23c2af37",
      "parents": [
        "dba03231c2fb2c54c8a7b313786c7bc7d3471908"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 29 17:53:54 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 30 18:07:18 2019 -0700"
      },
      "message": "audio policy: allow silencing capture per port\n\nAdd the possibility to silence a particular AudioRecord\nclient rather than silencing all clients sharing the same UID.\n\nTest: AudioRecordTest#testRecordNoDataForIdleUids\n\nChange-Id: Ic472045cd45c7222ca3a88ccf131435fd1e26475\n"
    },
    {
      "commit": "e46870e935e31839c07400743d68fd99defb360a",
      "tree": "8056ff7441912399111703c164402db4acfcdbac",
      "parents": [
        "34bbfc447ad5c3b615acf9e924a97b2a3d678ab7"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Aug 13 15:17:08 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 21 14:21:21 2019 -0700"
      },
      "message": "Preparation for moving AudioProfile to libaudiofoundation.\n\nCopy AudioProfile from audio policy to libaudiofoundation. Note that\nAudioProfile in libaudiofoundation has not been added into the make\nfile as it needs some more change to make it work. Doing this just to\nmake a cleaner diff for later change.\nRename AudioProfile in managerdefinitions folder as AudioProfileVector\nsince AudioProfile will be moved to libaudiofoundation.\n\nBug: 135621476\nTest: make\nChange-Id: I13ac067317648bbfd8d3960d16a1ea56ded83011\n"
    },
    {
      "commit": "06e4bab5451f1594d6843fc3af698bf8b4c1047e",
      "tree": "2eeec151cc1285a8707bfcaf73582fee9ffc69dd",
      "parents": [
        "433e8a2730ce7280beb2ce49f42f41f9401ad6e4"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Jul 29 10:13:34 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 07 14:36:18 2019 -0700"
      },
      "message": "Use standard containers for audio stuff in audio framework\n\n1. Add SampleRateSet, FormatSet, ChannelMaskSet, FormatVector\nusing std::vector and std::set in libaudiofoundation.\n2. Use SampleRateSet, FormatSet, ChannelMaskSet, FormatVector in\naudio framework.\n\nBug: 135621476\nTest: make, CTS for AudioRecord, AudioTrack, AudioManagerTest\nTest: play and record audio\nChange-Id: Ic04e637bcc6ba9df84c5e7561ec3c03f18a7d242\n"
    },
    {
      "commit": "f5fd58d26e82466b902dec3794acbd09729f1eb7",
      "tree": "c802863b91b074280f76759932a3bdb68cbccc86",
      "parents": [
        "b639c40f904f53d2926639f266eaeee329f412eb",
        "84e43c724aa359055171a4c4e8c73e1df222ae4b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 02 18:01:41 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 02 18:01:41 2019 +0000"
      },
      "message": "Merge changes from topic \"addlibaudiofoundation\"\n\n* changes:\n  Make AudioGain parcelable.\n  Move AudioGain to libaudiofoundation.\n"
    },
    {
      "commit": "9ccb28b1ccb214b06461f5285e5bce7d3734ea19",
      "tree": "1b9ce993373a1f5450815c401943f787a406b45b",
      "parents": [
        "e6138376f0578d464037d645f7985c87db60565e"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jul 31 09:59:09 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Jul 31 17:23:06 2019 -0700"
      },
      "message": "Move AudioGain to libaudiofoundation.\n\n1. Create folder for libaudiofoudation.\n2. Move AudioGain to libaudiofoudation. The goal is to make AudioGain\nbe able to use in binder call and be vendor-available later.\n\nBug: 135621476\nTest: make, CTS for AudioTrack, AudioRecord, AudioManagerTest\nChange-Id: Ibf16ad9cb7f2ac657a02632ccbe4f934b5a12731\n"
    },
    {
      "commit": "8bbd0e1428dae329a6a2e77ba847ff5baa26877d",
      "tree": "748130854c1823ffdd900d797e1763d4debb5044",
      "parents": [
        "107fd5a178efdd977eaa1dbd0edbb1b72a3613e6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 25 18:33:09 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 26 01:45:43 2019 +0000"
      },
      "message": "audio policy: refine strategy invalidation logic\n\nIn checkOutputForAttributes(), only invalidate streams\nif at least one client would move from output stream or we have\na dynamic policy installed.\nPrevious logic was systematically invalidating streams as soon as the\nlist of possible outputs for a given strategy had changed.\nThis avoids unnecessary playback disruptions when the route change can be\nachieved by just selecting a new device on current output.\n\nBug: 132860590\nTest: listen to visual voice mail and turn speaker phone on and off\nChange-Id: Iee2d7cb336e1e699af4393e7d4aaef4cb266f265\n"
    },
    {
      "commit": "caafba4078dc869b3686c24e7046319550189f27",
      "tree": "82c670cded175b0678e60ae2284ebd7c8eb2d451",
      "parents": [
        "62fda2924e3b369d5e6befde074d96b3be2700ed"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 13 10:12:45 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 19 14:51:31 2019 -0700"
      },
      "message": "audio policy: fix virtual called from constructor\n\nCall initialize() after constructing AudioPolicyManager\nfrom factory to avoid calling virtual methods from constructor.\n\nBug: 136491567\nTest: make\nChange-Id: Ie0b591d90e643b1fd1c326f9731dc656b38230dc\n"
    },
    {
      "commit": "b5dc2d1e3653d9f268a35bf8176a003217b38b6c",
      "tree": "fe812669d009ddb4c7148d791a65a4961b9c533c",
      "parents": [
        "7879fa986aba0570276adf4d1554d4813e85ec12"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 13 09:32:47 2019 -0700"
      },
      "committer": {
        "name": "android-build-team Robot",
        "email": "android-build-team-robot@google.com",
        "time": "Thu Jul 18 04:10:01 2019 +0000"
      },
      "message": "audio policy: fix mmap capture disconnect\n\nForce close mmap input streams when a capture device is\nconnected to force disconnect callback to client.\n\nBug: 137311579\nTest: capture with oboetester and connect headset\nChange-Id: Iafe939247fa565e2424b40afacdb79a31b8955b7\n(cherry picked from commit 7bd2939d6ce0574f01771b8569b1d76faf2b09b7)\n(cherry picked from commit c833ccc86b8af68cfb80de182309be6d4eaac860)\n"
    },
    {
      "commit": "4a8b860e1d08f21b378c29c662656197b9ac1cfe",
      "tree": "4052a618baa2aa3e3690087fce5ad5b671252f22",
      "parents": [
        "3943f837e69de7bc69cd61566c3fe4511b0f2316",
        "c0f6cab80246d5bba8cce455be82756310fd84cb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 16 11:51:09 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 16 11:51:09 2019 -0700"
      },
      "message": "Merge \"audio policy: fix mmap capture disconnect\" into qt-r1-dev am: f00fd722c8\nam: c0f6cab802\n\nChange-Id: I541913cb52f655597715e80d578d40d93ee62852\n"
    },
    {
      "commit": "f00fd722c8e06c22e55615e7b2604eb32656bebd",
      "tree": "bade541a934dc4ab73fdea77128bbb230ff2edbc",
      "parents": [
        "7ec1eafeaaa5238e50c369a0c52691ba2af71a47",
        "7bd2939d6ce0574f01771b8569b1d76faf2b09b7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 16 17:57:27 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 16 17:57:27 2019 +0000"
      },
      "message": "Merge \"audio policy: fix mmap capture disconnect\" into qt-r1-dev"
    },
    {
      "commit": "3943f837e69de7bc69cd61566c3fe4511b0f2316",
      "tree": "7947df64e5e24c956514b3d37dd3811ad7e2a833",
      "parents": [
        "1a44ae12307bc7cbf835895036727cfa4cd82484",
        "69d7878a89268b7fbede9a6018fb974629decbb4"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Jul 15 11:36:15 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 15 11:36:15 2019 -0700"
      },
      "message": "Merge \"AudioPolicy: do not cap a11y volume during call screening\" into qt-r1-dev am: 7ec1eafeaa\nam: 69d7878a89\n\nChange-Id: I6b0c70c390dc5e8de5e019ff82cf2021e34d9fc0\n"
    },
    {
      "commit": "7bd2939d6ce0574f01771b8569b1d76faf2b09b7",
      "tree": "492504cedcaa1c4afd57db5d273b1e36f81cfd5e",
      "parents": [
        "e5e116d0a945c330c0f42ea857076db81c397036"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 13 09:32:47 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 13 09:32:47 2019 -0700"
      },
      "message": "audio policy: fix mmap capture disconnect\n\nForce close mmap input streams when a capture device is\nconnected to force disconnect callback to client.\n\nBug: 137311579\nTest: capture with oboetester and connect headset\nChange-Id: Iafe939247fa565e2424b40afacdb79a31b8955b7\n"
    },
    {
      "commit": "441ed65bc852b3a27f9265e56d2411da62a780e5",
      "tree": "da829115081fdd71e51a0b8b13187b44f9068a34",
      "parents": [
        "e84253d7e3925c2404b7c76def6878740db124b2"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jul 11 14:55:16 2019 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jul 11 22:08:24 2019 +0000"
      },
      "message": "AudioPolicy: do not cap a11y volume during call screening\n\n  Add accessibility playback as exemption for volume capping\nduring call screening.\n\nBug: 133879660\nTest: enable Talkback, receive a call, screen it, touch responses icons,\nverify labels are read\n\nChange-Id: I661a544261ef57e439b3eb8cf3d1dde1c31ac303\n"
    },
    {
      "commit": "ebc9e3f36958f7ae5e4b797d9abcb52f5c14fe12",
      "tree": "dbc9832d2e1ef28538da61be6d5e7803b7ff3ac3",
      "parents": [
        "8cfe8f7b0d7d2e7f71714fb4a400d828b445ff06",
        "480ffee429efc8591ea57f0f1e2f6d90437e23eb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 10 19:07:24 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 10 19:07:24 2019 +0000"
      },
      "message": "Merge \"AudioPolicyManager: Handle error from setInputDevice in startInput\""
    }
  ],
  "next": "f23fcf683cc0ec5efb8eae471141af162ac00035"
}
