)]}'
{
  "log": [
    {
      "commit": "7fc3bbe570e94ceec28e09a87196ed564de2ff5b",
      "tree": "6a27b852a2d7f4ba448edaa66145051dadb8cb53",
      "parents": [
        "3dd5000ef67416710e63aec92f9b758b3a294862",
        "0dd5185555db64af2cb5ff1e161629054086abb6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 22 18:07:17 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 22 18:07:17 2019 +0000"
      },
      "message": "Merge \"audio policy: improve input device connection logic\" into qt-dev"
    },
    {
      "commit": "0dd5185555db64af2cb5ff1e161629054086abb6",
      "tree": "c2e0f9c49b263891bf94522226337d922da0b95e",
      "parents": [
        "8263e3519b6801f019e471efe4a6045b7046e4d3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 19 18:18:58 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 22 08:41:05 2019 -0700"
      },
      "message": "audio policy: improve input device connection logic\n\nDo not systematically close all inputs when an input device is connected\nor disconnected but only those affected by the change.\n\nAlso:\n- refactor setDeviceConnectionStateInt() to align input and output\ndevices connection sequence\n- remove unused \"inputs\" argument to checkInputsForDevice()\n\nBug: 126370328\nTest: phone call, video call , camcorder, assistant, auto projected\nChange-Id: I27734b32da97ad4790d6cd74eaaf866e414db211\n"
    },
    {
      "commit": "5ee8d120318266334aabc21d4f676813b3ac288f",
      "tree": "6af1a806b7cf903e6d6c1b6dd3b8a8b5eaab4784",
      "parents": [
        "8263e3519b6801f019e471efe4a6045b7046e4d3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 19 15:41:52 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 19 15:41:52 2019 -0700"
      },
      "message": "audio policy: fix HOTWORD capture device\n\nUse only devices attached to primary HAL when capturing\nfor audio source HOTWORD as they have to be accessible by\nthe audio DSP.\n\nBug: 123311424\nTest: capture use cases: phone calls, Duo, Camcorder, Assistant.\nChange-Id: Ib54622b69612e6ed12f36193d4b1918ba892a2cd\n"
    },
    {
      "commit": "df8638b4c4cfabcdeade1a3af497cd6e0521cb89",
      "tree": "d4b192648cf45213baaa415f6842af7c58242e12",
      "parents": [
        "a74c7274069fdfa95e4f9768e14bd2ce7ed1219e",
        "b20cf7db9e669169bbae5f0da97018a866c3f634"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 18 19:15:42 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 18 19:15:42 2019 +0000"
      },
      "message": "Merge \"audio policy: concurrent capture effects\" into qt-dev"
    },
    {
      "commit": "b20cf7db9e669169bbae5f0da97018a866c3f634",
      "tree": "96e88e1850e1fb27fcc0bad53cc575e837d86c60",
      "parents": [
        "aceea8bddd0324df4414673bc39a3f38fe16e8a1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 05 19:37:34 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 17 19:27:20 2019 -0700"
      },
      "message": "audio policy: concurrent capture effects\n\nAdd pre processing effect management for concurrent capture scenarii.\nWhen several clients on the same input stream have enabled audio effects,\nonly the effects attached to the top priotity client are active.\nOther effects are suspended.\n\nAdd AudioFlinger API to suspend/restore audio effects build on top\nof exisiting internal effect suspend mechanism.\n\nRecordThread now supports more than one effect chain.\n\nAOSP pre processing implementation supports more than one effect session\nper input.\n\nRefactor AudioPolicyManager::closeAllInputs() to call closeInput() on\nall inputs instead of partially duplicated code.\n\nBug: 128419018\nTest: make\nChange-Id: I685286da4c2905a8894a4354679f9787b1400621\n"
    },
    {
      "commit": "993f390f8076868a4e42ebbe0b1072c4cd110d34",
      "tree": "35bc752744988158d0c602eba1ac105a76818eb4",
      "parents": [
        "9e1533cd0b8f3bf08eb9c81c21cd42f5782474f4"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Apr 10 15:39:27 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 17 14:05:50 2019 -0700"
      },
      "message": "audiopolicy: remove double call to attach / getModuleForDeviceType\n\nFor a2dp hybrid mode, device retrieval is done through type / code pair.\nWhen the device is connected, getDeviceDescriptor is called with allowToCreate\nboolean. As a result, HwModuleCollection::createDevice will be called, invoking\ngetModuleForDeviceTypes as done laterly in setDeviceConnectionState.\n\nThis CL removes double call to these function.\n\nBug: 130284799\nTest: make\n\nChange-Id: I188f11e9325cfc6af2ae872e00485e00ccd9096b\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "9e1533cd0b8f3bf08eb9c81c21cd42f5782474f4",
      "tree": "3ba52e0b3d83ce58a20ebb69a61f2811a4c3a9f6",
      "parents": [
        "4b8d5ce58d98d4a163f63e17735450a7cac4821c"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Apr 11 16:07:36 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 17 14:05:50 2019 -0700"
      },
      "message": "audiopolicy: audioflinger: manage stream patch volume\n\nAudioPolicy used to hide activity of stream patch to prevent changing\nthe volume.\nThis CL replaces the filtering of the stream patch activity on the policy\nby a full volume range within audio flinger.\nIt updates also product strategies example for automotive to add associated\nstrategy and full range volume.\n\nBug: 130284799\nTest: make\n\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\nChange-Id: I6e77dc2cbed0289f0a1341f7597b1c25abee5f7d\n"
    },
    {
      "commit": "4b8d5ce58d98d4a163f63e17735450a7cac4821c",
      "tree": "5c407be9d37d6aee5bf5e4d9068629621a9f4616",
      "parents": [
        "aceea8bddd0324df4414673bc39a3f38fe16e8a1"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Apr 11 15:57:20 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 17 14:03:29 2019 -0700"
      },
      "message": "audiopolicy: align input and output devices for engine\n\nNo need to filter anymore the remote submix to engine as\nboth configurable and default engine take care of legacy remote\nsubmix address (aka \"0\") and wont only care about type.\n\nBug: 130284799\nTest: AudioPolicyEmulatorTests --gtest_filter\u003d*.DynamicPolicyMixRecordInjectionTest.*\nAudioPolicyEmulatorTests --gtest_filter\u003d*.DynamicPolicyMixPlaybackReRoutingTest.*\n\nChange-Id: Ia90c65ccfc51220a2344cecec2fbba7f2bad776a\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "6c79632bbece71f7af0c2453bb62a5d6f0cca664",
      "tree": "a70a17d1f723b7e0241bb762bf5478e3c9947348",
      "parents": [
        "2cb1a8ccbd402d74a06ee34721f5dd787ecb396f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 09 14:13:17 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 17 10:29:30 2019 -0700"
      },
      "message": "refactor mutexes for audio effects in audio flinger and audio policy\n\nRemove effect specific mutex (mEffectLock) in AudioPolicyService: Due to\nconcurrent capture (among other reasons), it is necessary that the audio\npolicy manager state preserved by mLock includes audio effects\nregistration and enabling.\n\nMoved all audio policy API calls from audio flinger out of locked regions\nfor audio flinger, thread and effects mutexes to avoid cross deadlocks\nbetween audioflinger and audio policy manager:\n- centralized audio policy API calls in EffectModule::updatePolicyState()\n- the enabled state now reflects the state requested by the controlling\nhandle, not the actual effect processing state: a suspended effect is\nnow considered enabled.\n\nA new audio policy manager API moveEffectsToIo() is added to atomically\nhandle moving effects to a new input or output without having to call\nunregister \u003e register \u003e enable sequence.\n\nAlso fix assert in setStreamVolume to match volume group refactoring\nin audio policy manager.\n\nBug: 128419018\nTest: CTS tests for audio effects.\nTest: manual tests with Duo calls, Play Music, Youtube, notifications\n with and without Bluetooth and wired headset.\n\nChange-Id: I8bd3af81026c55b6be283b3a9b41fe4998e060fd\n"
    },
    {
      "commit": "03517c5985804971ce4d961dadc92a24c5de8c85",
      "tree": "a3afa13587e6e9061f479bafc5d2b269c18e52c3",
      "parents": [
        "5832f99bbbf7b963322a8c6d2efbf37181ac540c",
        "f96e543868c4ba0c24a060d15e20748921593db2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 11 14:48:16 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 11 14:48:16 2019 +0000"
      },
      "message": "Merge \"audiopolicy: fix routing of exclusive preferred device\" into qt-dev"
    },
    {
      "commit": "fa36d4b242bd0dcd2f1ce2ea6e0f838b7191a042",
      "tree": "c06c265b0c2d098600b1cb991796df5c1d533b68",
      "parents": [
        "6d99dc8f31e1fe9aae7ddea23e44b23a50b7cbbf",
        "698d353587d6d0563a6451b2d701358e6cb4496e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 11 01:47:03 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 11 01:47:03 2019 +0000"
      },
      "message": "Merge \"audiopolicy: fix mix recorder regression\" into qt-dev"
    },
    {
      "commit": "f96e543868c4ba0c24a060d15e20748921593db2",
      "tree": "db9cf0f4b59692721a60af46b070c0b8f0c9cfa5",
      "parents": [
        "393f0e05e3fa7351c81a470e5bd841451bcc13ae"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Apr 09 17:13:56 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 10 12:31:39 2019 -0700"
      },
      "message": "audiopolicy: fix routing of exclusive preferred device\n\nIn call music played on remote is called an \"exclusive\" preferred\ndevice. It may not be propagated to other client that may play locally.\nThe client of the exclusive preferred device is not routed as the\nexclusive preferred device are ignored from findPreferredDevice helper.\n\nThis CL fixes the routing\n\nBug: 130284799\nTest: AudioPolicyEmulatorTests --gtest_filter\u003dFilteringExpliciRoutingTest*\n\nChange-Id: Iec7e14cb170d0f67c8c0b231f8219c133d7d2185\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "698d353587d6d0563a6451b2d701358e6cb4496e",
      "tree": "f2bed9fc7ae60d23cc3df7e19a30af4c84af4c7a",
      "parents": [
        "d21b6de7181840e14300e94284db48172e24004b"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Apr 10 15:20:05 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 10 12:13:36 2019 -0700"
      },
      "message": "audiopolicy: fix mix recorder regression\n\nEngine is not only responsible of legacy remote submix for input\ndevice selection (aka \"0\" adress) but also regular remote submix\nwith a given address. Filtering the remote submixes prevents engine\nto select the remote submix for input stream in case a policy mix\nrule has been set to record specific sources.\n\nBug: 130284799\nTest: AudioPolicyEmulatorTests --gtest_filter\u003dRecordInjectionSourceMatch/DynamicPolicyMixRecordInjectionTest\n\nChange-Id: Iaafd1195b9ab5c82ad3bd2766061d982a10bb9da\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "bcfe5be7cd16530269aaa204d25013d2df18b9e2",
      "tree": "913858590a1da882c3454e2c27b281c872a0f6cf",
      "parents": [
        "d21b6de7181840e14300e94284db48172e24004b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 09 19:56:39 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 10 09:28:44 2019 -0700"
      },
      "message": "audio policy: fix output session effect leak\n\nClean up session effects in releaseOutput in case stopOutput\nis not received before release.\n\nBug: 124689305\nTest: start/stop cast screen while playing music\nChange-Id: Ie0588dd3336d56d34c2d717268fcd0918cbf5717\n"
    },
    {
      "commit": "d21b6de7181840e14300e94284db48172e24004b",
      "tree": "827bfba46386e804b9fbd1eed20da7cbb09cf94f",
      "parents": [
        "e9e801bff7cdd6f6fe5a82263d4686c1cbda76f4",
        "94114a21c855fb7525cf47fcfe965bf0735e19f1"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Apr 09 21:06:23 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 09 21:06:23 2019 +0000"
      },
      "message": "Merge \"APC: Disable MMAP when a stream is to be captured\" into qt-dev"
    },
    {
      "commit": "5e66e79ec60d0389fe025076dd0839bf695f1495",
      "tree": "a3282d17e6be64e8d1672231f1579277adc11fba",
      "parents": [
        "de83aa7d657e4c0beaddc756d9da9f6d2ccb282d"
      ],
      "author": {
        "name": "Robert Lee",
        "email": "lerobert@google.com",
        "time": "Wed Apr 03 18:37:15 2019 +0800"
      },
      "committer": {
        "name": "Robert Lee",
        "email": "lerobert@google.com",
        "time": "Mon Apr 08 06:53:01 2019 +0000"
      },
      "message": "audiopolicy: fix ring stream volume cannot apply when previewing ringtone\n\nUsing AUDIO_DEVICE_OUT_SPEAKER to replace AUDIO_DEVICE_OUT_SPEAKER_SAFE\nfor device match.\n\nBug: 129456342\nTest: volume can adjust while previewing ringtone\nChange-Id: I3015f811ac6d2e3f3cdd606f453348c4bc526935\nSigned-off-by: Robert Lee \u003clerobert@google.com\u003e\n"
    },
    {
      "commit": "94114a21c855fb7525cf47fcfe965bf0735e19f1",
      "tree": "a10bbc96b77cb71681a358fdb7913b54d47b5483",
      "parents": [
        "d233276ad591814829b6ccbd2d7577558522fe3f"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Apr 01 19:38:23 2019 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Apr 05 01:12:42 2019 +0000"
      },
      "message": "APC: Disable MMAP when a stream is to be captured\n\nAs MMAP does not support APC, it is disabled when a render loopback\npolicy is installed.\n\nTest: adb shell write_sine_callback -pl # mmap is used\n      adb shell audiorecorder  --target /data/file1.raw \u0026\n      adb shell write_sine_callback -pl # mmap is NOT used\nBug: 129948989\nChange-Id: Ia90c24953890de7e19fd99485bf760788f81126d\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n(cherry picked from commit c1dde631401a9cda122cf3058a99e36274906801)\n"
    },
    {
      "commit": "67336139290c89ac891f8899f70e78f0726e75eb",
      "tree": "450e7ca7132b4c6a4140e176a93441aa4b689eae",
      "parents": [
        "0f56f0a9173e17173b408486ddc1aff401a1d8f2",
        "83d17c208422b6c5df57716e9782925b0a787ee2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 03 23:04:52 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 03 23:04:52 2019 +0000"
      },
      "message": "Merge \"audio policy: fix stream to volume source mapping\""
    },
    {
      "commit": "5bcf284e8177a2dfb58e01e8e1a88ec13165c29d",
      "tree": "76d439db32a3c18870170b140ba9f14ab8248afb",
      "parents": [
        "41618a66a853a441304bb8fdefcafc903b3ab27c",
        "74e01fa7d96b71952b32ec98f1ac352e6e74186b"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Apr 03 19:59:00 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 03 19:59:00 2019 +0000"
      },
      "message": "Merge \"Audioflinger: tracks monitor OP_PLAY_AUDIO\""
    },
    {
      "commit": "a3176ff7be9e1ffee8cff2701f18a9b3d16205d2",
      "tree": "e4a1ed9e415fbc9e7df0a0aa00b1d9008357bc81",
      "parents": [
        "69d6cf3e59cae2e7f2fac015b17c9f6f1d1de041",
        "68e0df70cdd57dbe32f11b5de50dd83c6492d075"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 03 19:36:20 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 03 19:36:20 2019 +0000"
      },
      "message": "Merge \"Use package name, pid, uid to check permission of capturing hotword.\""
    },
    {
      "commit": "f1273c07a7b718504c1d0bbff5bcea4ef0379c38",
      "tree": "5f9bee88cee4b88f593bef847003c2033e48a79b",
      "parents": [
        "66abdd2ff0de06c87a54e059c37147f4c6f486f8",
        "7795e4a3fda5623acbb8dd985150207642059218"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 03 17:28:27 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 03 17:28:27 2019 +0000"
      },
      "message": "Merge \"Audio Policy: Do not stop getOutputForAttr on invalid Mix\""
    },
    {
      "commit": "7795e4a3fda5623acbb8dd985150207642059218",
      "tree": "b87dbf908c1f340ad10ceb74f1c2936a8f1f1ccf",
      "parents": [
        "32fa5079485232f3cb22afab91a275bba28d841b"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Apr 02 18:21:51 2019 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Tue Apr 02 18:25:03 2019 -0700"
      },
      "message": "Audio Policy: Do not stop getOutputForAttr on invalid Mix\n\nThis would allow an app that successfully registered an invalid mix to\nblock all following mixes.\n\nTest: none\nBug: 111453086\nChange-Id: I3c1630b7b697dd70e08a5708d1515e097d683401\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "68e0df70cdd57dbe32f11b5de50dd83c6492d075",
      "tree": "487ed1ea1849844493c436ccde9d432724fd652f",
      "parents": [
        "63dc6cf50582fa13702c59f43155f6c18312178b"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Mar 18 17:55:35 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Apr 02 17:31:42 2019 -0700"
      },
      "message": "Use package name, pid, uid to check permission of capturing hotword.\n\nPackage name will be cached in ModuleClient when attaching a client. It\nwill be used when querying permission of capturing hotword.\n\nTest: test with logging.\nBug: 74078996\nBug: 122721589\nChange-Id: Icd2911f5d331d243c9eb5d58003ce5525c70c81e\n"
    },
    {
      "commit": "83d17c208422b6c5df57716e9782925b0a787ee2",
      "tree": "44d0bbff2b15b05854120487ed7fa115b45e8eb9",
      "parents": [
        "b02be352c78d9db1c876a114199a9d4259c194e2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 02 17:10:01 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 02 17:20:47 2019 -0700"
      },
      "message": "audio policy: fix stream to volume source mapping\n\nremove use of obsolete method streamToVolumeSource()\nand replace it by toVolumeSource() which actually queries\nthe engine for stream to volume source mapping.\n\nBug: 129439600\nTest: make\n\nChange-Id: Ie4e4e93aa5925315078fa96a957bb3ed71e7dc76\n"
    },
    {
      "commit": "74e01fa7d96b71952b32ec98f1ac352e6e74186b",
      "tree": "c48d9297fb55046c3dc0a14d0652b8072fa0db62",
      "parents": [
        "c70268aa433e7d307819184ae5c2ec96a3e5b6af"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Feb 25 12:18:09 2019 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 02 15:04:30 2019 -0700"
      },
      "message": "Audioflinger: tracks monitor OP_PLAY_AUDIO\n\nMute/unmute tracks according to changes in OP_PLAY_AUDIO for\n  the current usage.\nIn audio policy: always assign AUDIO_STREAM_ENFORCED_AUDIBLE\n  to sonification tracks with AUDIBILITY_ENFORCED flag.\nDo not mute tracks from root / audio server.\nDo not mute UI sounds on AUDIO_STREAM_ENFORCED_AUDIBLE\n  stream type.\n\nBug: 112339570\nTest: enter DnD, play notifications, verify not heard\nChange-Id: Ia5f1118481cf0573101acf2092fbd0ce2cf8c038\n"
    },
    {
      "commit": "3afa9b1b80a90cfffdbf5aff5e8d17351422fda6",
      "tree": "0a127c4244c561da58e71192f07e4ed36e8a8eea",
      "parents": [
        "fc332471b307dff3ab152db2f0cb35f12c7a50aa"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 01 14:02:18 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 01 14:21:09 2019 -0700"
      },
      "message": "audio policy: fix dynamic policy remote submix device removal\n\nThe life cycle of an IO profile on remote submix module\nassociated with a dynamic audio policy is different from other profiles\nsupporting removable devices with addresses: the profile must not be\ncleaned up when the device is disconnected but when the dynamic policy\nis unregistered.\n\nBug: 121200677\nTest: phone call while connected to Android auto head unit simulator\nChange-Id: I8c9f64697b736dab379a7d85b9d93568139e4e84\n"
    },
    {
      "commit": "fc332471b307dff3ab152db2f0cb35f12c7a50aa",
      "tree": "2162255b15a030492de380e820e65193e6fb528c",
      "parents": [
        "394a80a78c4812e8570f358e5b8fdcb061fab022",
        "af3777782de2e0a0d4e38d9c6f9667e2e055a4a7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 30 11:30:49 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 30 11:30:49 2019 +0000"
      },
      "message": "Merge \"audio policy: fix configurable engine and dynamic policies take 2\""
    },
    {
      "commit": "af3777782de2e0a0d4e38d9c6f9667e2e055a4a7",
      "tree": "839c6d315056e19e26ca6cdd48fbdbd06db26a31",
      "parents": [
        "235684f2c8d9f37c8a8358739a2c2c50164816b0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 29 14:50:21 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 29 15:44:24 2019 -0700"
      },
      "message": "audio policy: fix configurable engine and dynamic policies take 2\n\nExclude remote submix devices with non \"0\" (legacy) addresses from devices\nreturned to Engine by AudioPolicyManagerObserver::getAvailableOutputDevices()\nand AudioPolicyManagerObserver::getAvailableInputDevices()\n\nBug: 129144725\nTest: make\nChange-Id: If1ce89acb2a35a6bede195f520b4047f92b928bd\n"
    },
    {
      "commit": "204745c7a078c72e7f9991f4b79cf329ee434fd1",
      "tree": "85c8d78fe7306c4532797bfe1bb26e6895784a3c",
      "parents": [
        "235684f2c8d9f37c8a8358739a2c2c50164816b0",
        "aba3b4b493fe84cd95780971f9a4ba2e22095264"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 29 20:18:11 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 29 20:18:11 2019 +0000"
      },
      "message": "Merge \"audiopolicy: Fix dump for AudioPolicyMix criterias\""
    },
    {
      "commit": "aba3b4b493fe84cd95780971f9a4ba2e22095264",
      "tree": "a0d3b2af7473d03f044e32fdd0aa508db31dbe3e",
      "parents": [
        "c70268aa433e7d307819184ae5c2ec96a3e5b6af"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Mar 27 12:53:29 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 29 09:30:55 2019 -0700"
      },
      "message": "audiopolicy: Fix dump for AudioPolicyMix criterias\n\nThe dump code was not using AudioMixMatchCriterion class fields\ncorrectly.\n\nBug: 112151391\nTest: 1. run and pause AudioPolicyTest#testMixByUidCapturing\n      2. adb shell dumpsys media.audio_policy\n\nChange-Id: I5f74a0e6dc1a7039eab1470402179b7f9d1cd962\n"
    },
    {
      "commit": "5ee45f968e7df43ab9056e4a34ee3e9bf99d7767",
      "tree": "09d427b10211e6a59c300478d43f7a1a0bb20f46",
      "parents": [
        "78f093a85769d3e801d26a7ddd00171d47863ab9",
        "736a102604f2fed737e737552f6ff461cd326081"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 29 02:31:52 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 29 02:31:52 2019 +0000"
      },
      "message": "Merge \"audio policy: fix configurable engine and dynamic policies\""
    },
    {
      "commit": "736a102604f2fed737e737552f6ff461cd326081",
      "tree": "e56c647874935e274a7fc5c209ec1afd75547971",
      "parents": [
        "08762400e90b646cdfb93a144eeb3af3525df3bb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 27 18:28:46 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 28 15:16:17 2019 -0700"
      },
      "message": "audio policy: fix configurable engine and dynamic policies\n\nMake sure the Engine is never aware of remote submix devices with non\n\"0\" (legacy) addresses as the Engine does not have to deal with devices\nonly used by dynamic audio policies.\n\nBug: 129144725\nTest: make\nChange-Id: Ifa19c952e22ac18c5d47e731cbfa41f81fe5c32c\n"
    },
    {
      "commit": "2cc6a2d21c20a604f0caa5f0f817251de8e7559a",
      "tree": "ae15a59d4a684b5c877761031b811573d12a497e",
      "parents": [
        "d0e36ea48dcda1c5d5fa30753cba171360487da5",
        "959e2d068b21e6b9443d5e98fa25a607d1f93993"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 28 20:50:35 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 28 20:50:35 2019 +0000"
      },
      "message": "Merge \"audioserver: Use timed lock instead of bouncing for dumps\""
    },
    {
      "commit": "d0e36ea48dcda1c5d5fa30753cba171360487da5",
      "tree": "16e189ed4d9174667a0c882db5d01de0ca163f39",
      "parents": [
        "a95ef984f9543596ed2cd48f1db0d16569c3c1b1",
        "b99cc75f01c8e4d76295f3efcd768ebd9d8942c3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 28 19:37:14 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 28 19:37:14 2019 +0000"
      },
      "message": "Merge changes from topic \"APC-app-policy\"\n\n* changes:\n  Add application wide capture policy\n  Add aaudio APC opt-out\n"
    },
    {
      "commit": "959e2d068b21e6b9443d5e98fa25a607d1f93993",
      "tree": "c889e8fbdd9d07065759b82e354b3ef42ad255d0",
      "parents": [
        "c70268aa433e7d307819184ae5c2ec96a3e5b6af"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 28 11:08:19 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Mar 28 11:23:00 2019 -0700"
      },
      "message": "audioserver: Use timed lock instead of bouncing for dumps\n\nThe technique of bouncing lock attempts does not work well\nin the case when another lock has higher priority and acquires\nthe lock frequently. Timed lock works better in this case\nbecause the acquiring thread is then put in a queue and gets\nthe lock as soon as another thread releases it. The wait time\nin the worst case (deadlock) is the same.\n\nBug: 118842894\nTest: Run VOICE_COMMUNICATION capture + AEC effect, dump audioflinger\nChange-Id: Idc4fc2b6f5faf6988979f9354dd92441af33e600\n"
    },
    {
      "commit": "e518320172e976c948999ed80e0d8e9e008c34ba",
      "tree": "b2875ffb30bcd2e97cf98d654c3239e9e8e56658",
      "parents": [
        "e097f4a2011dd14e306ea90ade815ddd4f3b9657",
        "d400724c9e75ce6afd21ef1f1bdfe9d321b10f67"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 28 00:01:47 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 28 00:01:47 2019 +0000"
      },
      "message": "Merge \"audio policy: fix typo in doReleaseOutput()\""
    },
    {
      "commit": "e9cecf0f8865fa43d8c2977c314f9c81fb20ba3b",
      "tree": "bf5643963711c81c5dc3e1ab748b6a9a08edbb95",
      "parents": [
        "c70268aa433e7d307819184ae5c2ec96a3e5b6af",
        "36b17553b2c3aad4d8f600edd2e82f9a583ee05a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Mar 27 20:41:06 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 27 20:41:06 2019 +0000"
      },
      "message": "Merge \"Introduce a system APC with its corresponding opt-out\""
    },
    {
      "commit": "d400724c9e75ce6afd21ef1f1bdfe9d321b10f67",
      "tree": "54170ee6d0653a3c2b45f0bd36af07b20ef27275",
      "parents": [
        "c70268aa433e7d307819184ae5c2ec96a3e5b6af"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 27 12:42:16 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 27 12:42:16 2019 -0700"
      },
      "message": "audio policy: fix typo in doReleaseOutput()\n\nFix use use of mAudioRecordClients instead of\nmAudioPlaybackClients in doReleaseOutput().\n\nTest: make.\nChange-Id: I5c695582828300c0297f4f58bcba37e17b51bbbd\n"
    },
    {
      "commit": "1d52d8f13215417d132b4a8ba3ab3ed36b12ad18",
      "tree": "4fcb3ed608a4ac2e32e28dbb7100e75f70cdf944",
      "parents": [
        "702d0029e8d6178ec993cbd912d2833e7d5e9c04",
        "5cd1f1d962446f48eecda9c5c8b004c79b6cb716"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 27 01:39:50 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 27 01:39:50 2019 +0000"
      },
      "message": "Merge \"startAudioSource should be created using the calling uid\""
    },
    {
      "commit": "5cd1f1d962446f48eecda9c5c8b004c79b6cb716",
      "tree": "922a0a1be44628aa282325682cfed6b2f44345b8",
      "parents": [
        "32ebca3611c530fc0f36225dcb1ca2ec50e8d9f1"
      ],
      "author": {
        "name": "Hongwei Wang",
        "email": "hwwang@google.com",
        "time": "Tue Mar 26 15:21:11 2019 -0700"
      },
      "committer": {
        "name": "Hongwei Wang",
        "email": "hwwang@google.com",
        "time": "Tue Mar 26 15:28:28 2019 -0700"
      },
      "message": "startAudioSource should be created using the calling uid\n\nBug: 128850122\nTest: dumpsys media.audio_policy\nChange-Id: I374b528164bbe3168a5a0c730b34dc07b5694b40\n"
    },
    {
      "commit": "6a91f7cf52fe6f02f88b1fc6461be8133c97d5ed",
      "tree": "98f79ce22b15e1de2e3971f27c4a2fad463ee326",
      "parents": [
        "11df024f9e4e58c9b46e36a01a61d7e77efd7ec3",
        "f5d25e6f10c7bda31a533bb5903e4ca8e6c077b2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 26 03:22:19 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 26 03:22:19 2019 +0000"
      },
      "message": "Merge \"audiopolicy: fix AudioRecordingConfiguration callback\""
    },
    {
      "commit": "f5d25e6f10c7bda31a533bb5903e4ca8e6c077b2",
      "tree": "4edeb1ad14f50fb405ddca698a8f3bbfe5bd50fd",
      "parents": [
        "76e348fc43d7b8bda0362ccbf14bf0eeac09a7c9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 25 16:33:26 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 25 16:33:26 2019 -0700"
      },
      "message": "audiopolicy: fix AudioRecordingConfiguration callback\n\nSuppress first callback sent by startInput() as the input device is not\nyet set and it results in a spurious AudioRecordingConfiguration callback\nsent by RecordingActivityMonitor with a null audio device.\n\nAlso fix a bug in getInputForAttr() where the wrong audio attributes\nwere stored in the RecordClientDescriptor resulting in a failure to\ncreate the audio patch when DEFAULT audio source is used.\n\nBug: 129287962\nTest: cts-tradefed run cts-dev -m CtsMediaTestCases -t android.media.cts.AudioRecordingConfigurationTest\nChange-Id: Ia67abfa56ea653cf69e68bfabbb3d19a12adc310\n"
    },
    {
      "commit": "b99cc75f01c8e4d76295f3efcd768ebd9d8942c3",
      "tree": "b7c3e27a797971702af7161fdf1a682fa9a9c2a5",
      "parents": [
        "68646ba64107a19ac0d1af781ddd0b1edd2ed57a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Mar 21 20:52:24 2019 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Mar 22 17:21:33 2019 -0700"
      },
      "message": "Add application wide capture policy\n\nApps were previously forced to set their allowed capture policy from\neither their manifest which is not flexible or from each track which is\na very fine grain but difficult when using libraries like exoplayer.\n\nThus add an application level policy set with AudioManager.\n\nTest: atest android.media.cts.AudioPlaybackCaptureTest\nBug: 111453086\nChange-Id: Ic890b5b041affea757fbd3f2707ff2ce18771828\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "36b17553b2c3aad4d8f600edd2e82f9a583ee05a",
      "tree": "b07a90eaf6bcba6f06fd56ab3976d1c71c7fd712",
      "parents": [
        "791d3370830b8e22b8bbaf41c3de900de48d2be3"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Mar 07 18:48:07 2019 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Mar 22 17:21:30 2019 -0700"
      },
      "message": "Introduce a system APC with its corresponding opt-out\n\nFor system application with the new permission CAPTURE_MEDIA_OUTPUT, or\nCAPTURE_AUDIO_OUTPUT, allow to capture the audio of playing apps that\nallow it.\n\nTest: adb shell audiorecorder --target /data/file1.raw\nTest: atest android.media.cts.AudioPlaybackCaptureTest\nBug: 111453086\nChange-Id: I5bfca51e48992234508897c595a076d066db26b2\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "32ebca3611c530fc0f36225dcb1ca2ec50e8d9f1",
      "tree": "6b9cd103cf37b990117ca82ffacfcc6d6dafaeb3",
      "parents": [
        "b893fcd9978e730c0e00eddce63a08bef727261e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 22 15:42:52 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Mar 22 22:56:10 2019 +0000"
      },
      "message": "AudioPolicyManager: Stop the descriptor when closing its output\n\nThis fixes the case when the SwAudioOutputDescriptor is part of\nduplicated output. In this case, APM::closeOutput finds the\nduplicated output, deactivates all the clients for all outputs,\nthen calls \u0027close\u0027 on the descriptor. Since there are no active\nclients, closing the descriptor does not stop it, leaving\npending \u0027active count\u0027 in the profile.\n\nBug: 128362999\nTest: steps from b/124415601\nChange-Id: I8fa60ef50efa74ca8cf6e3312e1075a9ec9c63f3\n"
    },
    {
      "commit": "1ff16a772159dbc7ebe851e474bb155a2c8e74ab",
      "tree": "09eaa8798470ba2592b697b99ed962ce8156499d",
      "parents": [
        "76e348fc43d7b8bda0362ccbf14bf0eeac09a7c9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 14 18:35:04 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 22 08:38:39 2019 -0700"
      },
      "message": "audio policy: fix several problems with capture policy\n\n- Fix accessibility service not able to get same policy as regular apps\nwhen not using VOICE_RECOGNITION source b/126785297\n- Make sure two captures from same app do not silence each other\n(e.g two privacy sensitive captures concurrently)\n- Ignore clients in idle state when considering priority active clients in\nsilencing logic.\n- Prevent capture while in call if privileged permission CAPTURE_AUDIO_OUTPUT\nis not granted\n- Allow capture concurrently with privacy sensitive capture or call if\npermission CAPTURE_AUDIO_OUTPUT is granted.\n- Do not silence virtual sources when sensor privacy is enabled.\n- Consider system persistent service as top app state.\n\nBug: 128419018\nBug: 126785297\nTest: audio smoke tests\nChange-Id: I7f8c7c511c674d4d46a815eaa7e9cf95e95cc3f9\n"
    },
    {
      "commit": "2ffdfce9d49040563a4bd9542793aeabf31acc10",
      "tree": "8f96df78bddb84d18062fd922e6eacca0ad80fd2",
      "parents": [
        "e9955729faa3a33483b9739f085856b5b4b451d5"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Mar 12 11:26:42 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 18 18:38:19 2019 -0700"
      },
      "message": "audiopolicy: optimize set volume call sequence\n\nThis CL simplifies call flow to set volume from stream or attributes.\nIt also removes unused parameter from mute setter and fix a volume\nsource comparison.\nAlso refactor logic in setVolumeIndexForAttributes() by removing the\nloop on all volume sources on a given output given it was ignoring all\nsources not equal to current source anyway.\n\nBug: 124767636\nTest: AudioPolicyTests --gtest_filter\u003dStreamTypeVolumeTest.*\n  AudioPolicyTests --gtest_filter\u003dAttributeVolume/AttributeVolumeTest.*\n  AudioPolicyTests --gtest_filter\u003dAudioProductStrategiesPlaybackVolume/AudioProductStrategiesPlaybackVolumeTest.*\n\nChange-Id: Id816de023e917b0c0e34bb0888c8b0ad29029f8b\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "f97d64cd3a1588b22b47dd3805be291525bb17d9",
      "tree": "288d81f1993d4e6f59b466d425ebd71a9726c939",
      "parents": [
        "2ec208c3c0d68a23db38e7442c0707bd5b93073e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Mar 16 10:23:46 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Mar 16 10:23:46 2019 -0700"
      },
      "message": "audio policy: fix call volume\n\nFix setGroupVolumeIndex() which was applying\nvolume for all groups if in call and causing the wrong\nindex to be used.\nwhen DTMF are muted when entering call, voice call was\nalso muted.\n\nBug: 128499415\nTest: call with voice volume set to 6\nChange-Id: Ie1296a7a48fdfba3710acb3d7a7e4f00e7b576a5\n"
    },
    {
      "commit": "c827c3f48dc390d8f022167126f8ae63cdbf5cb1",
      "tree": "d1ceec9c9ef6dd80f802d175f938147880670019",
      "parents": [
        "e6e98e77198a68c812b81159f76de33b632c3d43",
        "946d4b15bef5b7e16b1f36fe8f1436be13e256ec"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 13 20:37:48 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 13 20:37:48 2019 +0000"
      },
      "message": "Merge changes from topic \"parameter-fwk-config-policy\"\n\n* changes:\n  audiopolicy: engineconfigurable: add configuration for caremu\n  audiopolicy: engineconfigurable: fix configurations\n  audiopolicy: engineconfigurable: prevents typo on strategy structure file\n"
    },
    {
      "commit": "946d4b15bef5b7e16b1f36fe8f1436be13e256ec",
      "tree": "e83f76cc25ba002f99bfe0b342356849b717ab3e",
      "parents": [
        "abd0b54cf0d670c19938c99ecfd2774eb6a3e618"
      ],
      "author": {
        "name": "David Brageul",
        "email": "david.brageul@renault.com",
        "time": "Wed Feb 13 14:07:56 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 12 17:10:58 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: add configuration for caremu\n\nBug: 124767636\nTest: build\n\nChange-Id: Ib540a78559b51ac18ccf62043e743fe068b41ac0\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "abd0b54cf0d670c19938c99ecfd2774eb6a3e618",
      "tree": "bbbe3f5fe963c74e527b99fe7c079d8c49cd0862",
      "parents": [
        "7d602f00514e66528d4aa5d71b150ce7365d2859"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Feb 13 14:00:11 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 12 17:10:51 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix configurations\n\nBug: 124767636\nTest: build\n\nChange-Id: I377a1343e8ffbaa0d0ea6eea3229e383a50a8cf6\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "7d602f00514e66528d4aa5d71b150ce7365d2859",
      "tree": "2f556a19f099d0ef5358bb7c3440889c5b4150ac",
      "parents": [
        "1812b4e7dd2409dc82e34c6e9a25c8c766680197"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Feb 13 10:37:49 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 12 17:10:47 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: prevents typo on strategy structure file\n\nThis CL allows to generate at build time the ProductStrategy structure\nfile to ensure it is aligned with audio policy engine configuration file.\n\nBug: 124767636\nTest: build\n\nChange-Id: I1afba9602482a898147c685d4a8b03fbe99c08b1\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "bb0f557d3d0b7db071595f306555d715092dc6c5",
      "tree": "49347935de8beb756f05f06fa8e394c8c9874237",
      "parents": [
        "b3527ddc7e9f6d57890656732747c6394b8f2b71"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Mar 11 14:29:03 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 12 10:43:21 2019 -0700"
      },
      "message": "AudioPolicy: Fix UAF of a temporary DeviceVector\n\nAudioOutputDescriptor::devices() returns a DeviceVector\nby value. That means, the returned vector must be held\nas long as we need its elements.\n\nAdded a FIXME to consider other devices because the\ncurrent code looks suspicious.\n\nBug: 128327759\nTest: make\nChange-Id: Ifd3a7c8faf89b2c4fc3400aac0060d0e9e673e73\n"
    },
    {
      "commit": "b3527ddc7e9f6d57890656732747c6394b8f2b71",
      "tree": "078402ddcec633a759531c1f57410579cd05ac27",
      "parents": [
        "3e75e2b77c644ce4f33aa1174a3e118da72c6c10",
        "aaac0fd20d26e6a3a1c2d4bf0638f6a183ecec4f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 12 15:42:31 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 12 15:42:31 2019 +0000"
      },
      "message": "Merge \"audiopolicy: switch to VolumeGroup for Output\""
    },
    {
      "commit": "aaac0fd20d26e6a3a1c2d4bf0638f6a183ecec4f",
      "tree": "6f3c72fd0dd86999ce751be2fd2289f830ec4a99",
      "parents": [
        "e99551ffc4139414d7e4dae7638b488adf0d6a24"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Nov 22 17:56:39 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 11 19:39:44 2019 -0700"
      },
      "message": "audiopolicy: switch to VolumeGroup for Output\n\nVolume used to be managed per stream type.\nVolumeGroup is a configurable way to manage volume affinity.\nThis CL allows to switch to VolumeGroup as new volume affinity management.\n\nBug: 124767636\nTest: audio smoke tests\n\nChange-Id: I71fc214f6db3158f0f05920cc3d700b29db1a4bc\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "bfac583d0054ee1ca7755378c26631832dff63fc",
      "tree": "4aca5f381a2c740b5d2741f973a7645bd3358ca8",
      "parents": [
        "efde55813cfc4430cdd4c0627b2d9834903eec95"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 05 16:55:28 2019 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Mar 11 11:09:41 2019 -0700"
      },
      "message": "audiopolicy: Remove raw pointer references to AudioMix\n\nAudioInputDescriptor and AudioOutputDescriptor used to reference\nAudioMix instances using a raw pointer. This isn\u0027t safe as AudioMix\nwas owned by AudioPolicyMix, which is not referenced by descriptors.\n\nChange AudioMix* pointers in Audio{Input|Output}Descriptor to\nwp\u003cAudioPolicyMix\u003e which reflects their relationship correctly.\n\nTo ensure that code does not operate on AudioMix instances\nindependently from AudioPolicyMix, and to avoid introducing\na lot of getter / setter methods into AudioPolicyMix, make\nthe latter to inherit AudioMix. This makes sense because\nAudioPolicyMix is essentially a ref-counted version of AudioMix.\n\nBug: 124899895\nTest: build and sanity check on crosshatch,\n      build crosshatch with USE_CONFIGURABLE_AUDIO_POLICY :\u003d 1\nChange-Id: Ic508caedefe721ed7e7ba6ee3e9175ba9e8dc23a\n"
    },
    {
      "commit": "fd94a896e55a8c73257c37ba36a03c4686216511",
      "tree": "529d65eafd76a2f55cd2aed25409183a9d067859",
      "parents": [
        "a710ea168e0a72d528e188cf458708cff949c1a9",
        "13ce4f67031a8877edb71efc9e8fbf9060ebfa0c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 06 17:38:20 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 06 17:38:20 2019 +0000"
      },
      "message": "Merge \"audiopolicy: Convert some of .mk files to .bp files\""
    },
    {
      "commit": "a710ea168e0a72d528e188cf458708cff949c1a9",
      "tree": "c5ec858adb23376e8e2e525eab663f6d03acda8c",
      "parents": [
        "a3550b6ca700f891c7c427eecf6129200e5114ce",
        "e375d4190495514fa18cdb91563870eb4f4253eb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 06 17:16:52 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 06 17:16:52 2019 +0000"
      },
      "message": "Merge \"Support muting haptic channels.\""
    },
    {
      "commit": "13ce4f67031a8877edb71efc9e8fbf9060ebfa0c",
      "tree": "d48ca3991854bbd76c75017f9071c577dea60d02",
      "parents": [
        "e1e9cad4d0c7c9825b7f29ebc082dfcbdcace25c"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 28 15:11:41 2019 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Mar 05 13:40:53 2019 -0800"
      },
      "message": "audiopolicy: Convert some of .mk files to .bp files\n\n- Renamed libaudiopolicyengineconfig to libaudiopolicyengine_config\n  in order to match names libaudiopolicyengine_{common|interface}.\n\n- Made libaudiopolicyengine_config static to avoid .so overhead.\n\n- Added a cleanspec for it.\n\n- Added libaudiopolicyengine_common which includes source files\n  previously included directly into engineconfigurable and\n  enginedefault libraries.\n\nBug: 121208203\nTest: make \u0026 flash crosshatch\nChange-Id: If3b7b89fcbd5752ddfdeca6c164a88f55bc35811\n"
    },
    {
      "commit": "549d5f50708a6053eae1cfbccec1cf5ac60fc881",
      "tree": "d89cf1f0da544fa95f7ecbd269cd01c21a94f05d",
      "parents": [
        "40f3cc3017fe3012bf51241a9ff97b43220fac93",
        "2dc962bf86d9d6f46cfe83400ae3d1e66b550ca0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 01 22:07:20 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 01 22:07:20 2019 +0000"
      },
      "message": "Merge \"audio policy: fix remote submix capture concurrency\""
    },
    {
      "commit": "2dc962bf86d9d6f46cfe83400ae3d1e66b550ca0",
      "tree": "2437317409b4219538b6fb4ea92dd7592b0ee0b1",
      "parents": [
        "e1e9cad4d0c7c9825b7f29ebc082dfcbdcace25c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 01 08:25:25 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 01 12:01:11 2019 -0800"
      },
      "message": "audio policy: fix remote submix capture concurrency\n\nCapture from REMOTE_SUBMIX audio source should always be\nallowed in concurrency situation.\n\nAlso include FM_TUNER as virtual source that should never be\nsilenced.\n\nAlso remove voice call capture sources from privacy senitive sources\nas capturing a voice call does not constitute in itself a situation\nthat should prevent other apps from accessing the mic.\n\nBug: 121200677\nTest: verify music playback in auto projected mode.\nChange-Id: Idbd9e9f55f29fb8a8e2b76cea5b85f0d9a555788\n"
    },
    {
      "commit": "b16b924e5fe49516c7df5c5cc2f57c05ae67b45a",
      "tree": "0d4ce152cae18f857149162fe06e4ba7723aa191",
      "parents": [
        "2091ee0aa39121ce2d1685256865ba06845f1832",
        "f23a771ca699ddb84ae18ce1051491d735e55cb3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 01 16:05:37 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 01 16:05:37 2019 +0000"
      },
      "message": "Merge \"audio policy: fix enforced audible playback\""
    },
    {
      "commit": "f23a771ca699ddb84ae18ce1051491d735e55cb3",
      "tree": "940f44caf2250cc3d794078b071058e2a86167ef",
      "parents": [
        "e1e9cad4d0c7c9825b7f29ebc082dfcbdcace25c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 28 17:15:40 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 28 17:15:40 2019 -0800"
      },
      "message": "audio policy: fix enforced audible playback\n\nWhen selecting device on a given output stream, check if\nan enforced audible sound is active on any other output stream and\nnot just on this stream.\n\nBug: 124063442\nTest: set property audio.camerasound.force\u003dtrue and test music + shutter\nsound concurrency.\n\nChange-Id: Ic7f548df2b67041d532afc68685cdbeb3cb3f125\n"
    },
    {
      "commit": "5729be16b88083ab1eab7e692767bedddf69a865",
      "tree": "fd9acaaf3303c4a946a2812bd8e2d19f2a975335",
      "parents": [
        "56dc8fd0f5cd19d24888b4799984fdd5d39ece13",
        "43c73440b34c5a20d412dc93bf0bf35c2c88a1ed"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 01 01:07:56 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 01 01:07:56 2019 +0000"
      },
      "message": "Merge \"audiopolicy: add a tag to control device port gain from policy volume API\""
    },
    {
      "commit": "56dc8fd0f5cd19d24888b4799984fdd5d39ece13",
      "tree": "413b681feec40c96afda93e06a690c677c85fb90",
      "parents": [
        "e724f2bcb37a2288a5b053ecbde1a9672c8e4660",
        "e598545cb84723da4878c503ac54ca1426fa920b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 01 00:51:41 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 01 00:51:41 2019 +0000"
      },
      "message": "Merge \"Reland BluetoothAudio HAL: flip to be enabled by default\""
    },
    {
      "commit": "e724f2bcb37a2288a5b053ecbde1a9672c8e4660",
      "tree": "5f74ad17523b42e483e59112816a8de88b9775e7",
      "parents": [
        "18bef531e97a7443e4640902def979afc3d7430a",
        "89e82232200387cf9ba4fdee9777a26404fd2a2b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 28 22:27:04 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 28 22:27:04 2019 +0000"
      },
      "message": "Merge \"audiopolicy: Get Hw offloaded A2DP formats from declared devices\""
    },
    {
      "commit": "43c73440b34c5a20d412dc93bf0bf35c2c88a1ed",
      "tree": "d704d5d4aeb010dd912061d51387c54cc9a88d06",
      "parents": [
        "e1e9cad4d0c7c9825b7f29ebc082dfcbdcace25c"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Nov 08 08:21:55 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 28 14:10:35 2019 -0800"
      },
      "message": "audiopolicy: add a tag to control device port gain from policy volume API\n\nChange-Id: I52cc1bef8cc8e3f6c4fd15f806bdd42e4756871f\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n\nBug: 124767636\nTest: make\n"
    },
    {
      "commit": "89e82232200387cf9ba4fdee9777a26404fd2a2b",
      "tree": "413ecd84ed4006b22841043ba1f80c375b35f97a",
      "parents": [
        "e1e9cad4d0c7c9825b7f29ebc082dfcbdcace25c"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@quicinc.com",
        "time": "Sat Jan 19 18:14:10 2019 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Feb 28 12:24:55 2019 -0800"
      },
      "message": "audiopolicy: Get Hw offloaded A2DP formats from declared devices\n\nFix implementation of fetching hw offloaded A2DP encoded\nformats. Fetch formats from declared A2DP devices on primary\ninstead of system property.\n\nBug: 111812273\nTest: verify A2DP using multiple headsets, switch A2DP codecs\nChange-Id: I4857b24ba5dc6cf089c6f4b961492a53f5ca2018\n"
    },
    {
      "commit": "e375d4190495514fa18cdb91563870eb4f4253eb",
      "tree": "cdef2f5a20dd9fa30193760e14c09b179e71b66b",
      "parents": [
        "ea69bfb0f5b3fc247882355b919a3076e4992694"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Feb 26 12:54:53 2019 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Feb 28 11:46:56 2019 -0800"
      },
      "message": "Support muting haptic channels.\n\nWhen playing audio-haptic channels, there could be request to mute\nhaptic channels according to settings. To support that, do not select\nhaptic output when forcing muting haptic channels.\n\nTest: Play audio-haptic coupled data\nBug: 126401770\nChange-Id: Ifb52385c56ec8d67fe031e1877ea35cbe2319600\n"
    },
    {
      "commit": "3f1962974d7611adf3d7db6aee63d5876eb12c4e",
      "tree": "97dddfded2035e243f3207d926dc12ead9ca4d10",
      "parents": [
        "09603c39d404f70dd5d68a87453b01251ea1e32d",
        "25f9b05b0d1601243f2981e434f062658e15d3d2"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Feb 28 05:21:47 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 28 05:21:47 2019 +0000"
      },
      "message": "Merge \"AudioPolicy: allow recording on a APC dyn policy\""
    },
    {
      "commit": "09603c39d404f70dd5d68a87453b01251ea1e32d",
      "tree": "0c04321b967ef39eb64cab9452a6479f990b7335",
      "parents": [
        "d83b08ac54d11ed557b3cff9fef60dfa84386550",
        "8be94978a3ec70d8dd621c9b5548f27ddd41ad7a"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Feb 28 05:19:59 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 28 05:19:59 2019 +0000"
      },
      "message": "Merge \"Check for app manifest opt-out from playback capture\""
    },
    {
      "commit": "25f9b05b0d1601243f2981e434f062658e15d3d2",
      "tree": "41a9d72595e737161b8b8e0ff7646003bcad8c9c",
      "parents": [
        "e1e9cad4d0c7c9825b7f29ebc082dfcbdcace25c"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Feb 27 15:08:54 2019 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Feb 27 17:00:39 2019 -0800"
      },
      "message": "AudioPolicy: allow recording on a APC dyn policy\n\nTest: atest android.media.cts.AudioPlaybackCaptureTest#testCaptureMediaUsage\nBug: 111453086\nChange-Id: Iee6c2f450268ab16eb299827e358468cbf1349e2\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "8be94978a3ec70d8dd621c9b5548f27ddd41ad7a",
      "tree": "0247595dfce3b8cb46e6e94e6cdb6303c0e92d7a",
      "parents": [
        "be20185b2f93e429aa4f69fa4caa3ac9cac2ecc3"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Feb 22 13:26:25 2019 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Feb 27 16:24:55 2019 -0800"
      },
      "message": "Check for app manifest opt-out from playback capture\n\nQuery the package manager to check if the app has not opt-out of its\nplayback being captured.\n\nTest: adb shell audiorecorder   --target /data/file1.raw \u0026\n      adb shell am start -a android.intent.action.VIEW -d file:///system/media/audio/ringtones/Lollipop.ogg -t audio/ogg\n      adb dumpsys media.audio_policy # check playback is not recorded\n      # change media player manifest to allowPlaybackCapture\u003dtrue\n      adb dumpsys media.audio_policy # check playback is recorded\n      kill %1\n      adb pull /data/file1.raw \u0026\u0026 sox -r 48000 -e signed -b 16 -c 2 file1.raw file.wav\u0026\u0026 audacity file.wav\n      # check silence then sound\n\nBug: 111453086\nChange-Id: Id6fb7d0e10c02b0473bcbc0786e8360536996f48\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "e598545cb84723da4878c503ac54ca1426fa920b",
      "tree": "5cbfe9d1685ef7aa3bf0ffd70dc170f8cfbd6aca",
      "parents": [
        "e1e9cad4d0c7c9825b7f29ebc082dfcbdcace25c"
      ],
      "author": {
        "name": "Cheney Ni",
        "email": "cheneyni@google.com",
        "time": "Sun Feb 24 01:39:15 2019 +0800"
      },
      "committer": {
        "name": "Hansong Zhang",
        "email": "hsz@google.com",
        "time": "Wed Feb 27 13:55:41 2019 -0800"
      },
      "message": "Reland BluetoothAudio HAL: flip to be enabled by default\n\nChange to new properties + swap audio XML files, and supports following\nscenarios:\n1) (default) audio_policy_configuration.xml\n   Using BluetoothAudio HAL (+ A2DP offload if supported)\n2) audio_policy_configuration_a2dp_offload_disabled.xml\n   Using BluetoothAudio HAL only when A2DP offload is supported but\n   disabled.\n3) audio_policy_configuration_bluetooth_legacy_hal.xml\n   No BluetoothAudio HAL nor A2DP offload\n\nBug: 126304229\nTest: Switch BluetoothAudio HAL and A2DP offload manully\n(cherry picked from commit baa9e4e167b0b9d8b0586871b6178bebcef862c2)\n\nChange-Id: I3c17b304a12c1eccd9f97ee50a0b7cf6e4b9a1da\n"
    },
    {
      "commit": "a4f6b372545056adf8a42ac0be58d32fd234d6a3",
      "tree": "759edfd3613a59ff5d48e20c1d398b9c4b609d44",
      "parents": [
        "be32a246fc5623c049cf6417ced66dccc741653b",
        "40180e3d4c8da02999e1d42dc2216063c3c545ed"
      ],
      "author": {
        "name": "Annie Meng",
        "email": "anniemeng@google.com",
        "time": "Wed Feb 27 19:29:25 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 27 19:29:25 2019 +0000"
      },
      "message": "Merge \"Revert \"BluetoothAudio HAL: flip to be enabled by default\"\""
    },
    {
      "commit": "40180e3d4c8da02999e1d42dc2216063c3c545ed",
      "tree": "1a266ca5544f6f81bbf60ee4aef2970d81d7b030",
      "parents": [
        "baa9e4e167b0b9d8b0586871b6178bebcef862c2"
      ],
      "author": {
        "name": "Hansong Zhang",
        "email": "hsz@google.com",
        "time": "Wed Feb 27 18:59:54 2019 +0000"
      },
      "committer": {
        "name": "Hansong Zhang",
        "email": "hsz@google.com",
        "time": "Wed Feb 27 18:59:54 2019 +0000"
      },
      "message": "Revert \"BluetoothAudio HAL: flip to be enabled by default\"\n\nThis reverts commit baa9e4e167b0b9d8b0586871b6178bebcef862c2.\n\nReason for revert: Broke test\n\nChange-Id: Idfc9e117e55ad80f281a808789f3e990f47d5cd8\n"
    },
    {
      "commit": "cfe173220a3100c517e688e1bba0ff2da82a7b1b",
      "tree": "872a3d89ef3d021575d2719a02bf19e729c281ec",
      "parents": [
        "a6d44870d8edeffe8b6db3261d04b9e48fb11fd3"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Nov 07 13:41:29 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 26 17:47:46 2019 -0800"
      },
      "message": "audiopolicy: add Volume for attribute and callback native APIs\n\nChange-Id: I259de42452d2802aa8dbd553f56040dea6995a93\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n\nBug: 124767636\nTest: make\n"
    },
    {
      "commit": "6f5b63b08a23b8eecf4c1ea667e11ddc341ace73",
      "tree": "da1315d1aa9b36701ee165b75db3bf6295adc7a0",
      "parents": [
        "6da81c8dbaa5180137efc701f361ef32ec1888c6",
        "4b2018b0c0b65b1f6e20e571bbaf0e8984dccc06"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 27 01:08:33 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 27 01:08:33 2019 +0000"
      },
      "message": "Merge \"audiopolicy: add Volume Group introspection APIs\""
    },
    {
      "commit": "8882e3078fb6a89e17b44ccfcc7914a1f22ed0cb",
      "tree": "d99912f8087611cdec33af48b314f16c117f9e09",
      "parents": [
        "63c0f36d2ba1b752a040b47d108f4cc907da227b",
        "9b181958d638af581e98db8e208e3cebd3e99cf7"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Feb 26 21:23:30 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 26 21:23:30 2019 +0000"
      },
      "message": "Merge \"TypeConverter: proper conversion of invalid values to strings\""
    },
    {
      "commit": "4b2018b0c0b65b1f6e20e571bbaf0e8984dccc06",
      "tree": "94339667fc464ad0bca7be4f07cf9148bf720b3f",
      "parents": [
        "63c0f36d2ba1b752a040b47d108f4cc907da227b"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Nov 07 11:18:59 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 26 12:45:57 2019 -0800"
      },
      "message": "audiopolicy: add Volume Group introspection APIs\n\nChange-Id: Ib02900bde69ee24685d9d374c0e5f73d33fa59e7\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n\nTest: make\nBug: 124767636\n"
    },
    {
      "commit": "229e087f918f8459f5bffce6f8214d62455ede38",
      "tree": "61e13cbdf15d643a0918ea9aa6b729e6b20f64f4",
      "parents": [
        "137c970843a9559609053d432d0a2c176f9b3b43",
        "baa9e4e167b0b9d8b0586871b6178bebcef862c2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 26 19:06:37 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 26 19:06:37 2019 +0000"
      },
      "message": "Merge \"BluetoothAudio HAL: flip to be enabled by default\""
    },
    {
      "commit": "137c970843a9559609053d432d0a2c176f9b3b43",
      "tree": "7c73dbecd46b31948c89f57d0fd8b7cb8b9cf24c",
      "parents": [
        "0076efc0cda329e468454306be73330f4d9b9eb6",
        "251c7f0a9dc35dd3024fb4b42d27454abbd89d50"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 26 18:40:48 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 26 18:40:48 2019 +0000"
      },
      "message": "Merge \"audiopolicy: engine: Add Volume Groups to common Engine\""
    },
    {
      "commit": "baa9e4e167b0b9d8b0586871b6178bebcef862c2",
      "tree": "f735e0b062eb5c863a5e378cb3dad8a40d0f0f51",
      "parents": [
        "b8a07acca4392e1be911dd6a8f88be3ef7265668"
      ],
      "author": {
        "name": "Cheney Ni",
        "email": "cheneyni@google.com",
        "time": "Sun Feb 24 01:39:15 2019 +0800"
      },
      "committer": {
        "name": "jonerlin",
        "email": "jonerlin@google.com",
        "time": "Tue Feb 26 21:44:53 2019 +0800"
      },
      "message": "BluetoothAudio HAL: flip to be enabled by default\n\nChange to new properties + swap audio XML files, and supports following\nscenarios:\n1) (default) audio_policy_configuration.xml\n   Using BluetoothAudio HAL (+ A2DP offload if supported)\n2) audio_policy_configuration_a2dp_offload_disabled.xml\n   Using BluetoothAudio HAL only when A2DP offload is supported but\n   disabled.\n3) audio_policy_configuration_bluetooth_legacy_hal.xml\n   No BluetoothAudio HAL nor A2DP offload\n\nBug: 126304229\nTest: Switch BluetoothAudio HAL and A2DP offload manully\nChange-Id: I6d996d616c6c0b998699f90dbaebb7d70ef3237c\n"
    },
    {
      "commit": "9b181958d638af581e98db8e208e3cebd3e99cf7",
      "tree": "c27bfbd78d5a54188b2f6735c0c116a6d57a8859",
      "parents": [
        "a666d61efbe74594e9d441621d20bef8f9def26e"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Feb 25 14:53:36 2019 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Feb 25 19:38:04 2019 -0800"
      },
      "message": "TypeConverter: proper conversion of invalid values to strings\n\nOtherwise incorrect state might be hidden.\n\nAlso: Unify devicesToString() and deviceToString() to toString().\n      Miscellaneous cleanup of replicated functionality.\n\nTest: Basic audio sanity, AF and APM dumpsys check\nChange-Id: Ic81167e2d2dbfcca881f0898764cf886215c217c\n"
    },
    {
      "commit": "2f3241545d6d19bd7829fe0af7c1790d25060d5c",
      "tree": "65eacd91d7e99c4280c0fcdc5ce5f9ca3df25ac5",
      "parents": [
        "a666d61efbe74594e9d441621d20bef8f9def26e",
        "be20185b2f93e429aa4f69fa4caa3ac9cac2ecc3"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Feb 25 23:44:58 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 25 23:44:58 2019 +0000"
      },
      "message": "Merge \"Public Audio playback capture must have a valid projection\""
    },
    {
      "commit": "251c7f0a9dc35dd3024fb4b42d27454abbd89d50",
      "tree": "fb33a7ac50d1fa2e850f75aae4ec78dd375c14ca",
      "parents": [
        "a666d61efbe74594e9d441621d20bef8f9def26e"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Nov 07 10:41:08 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 25 14:47:46 2019 -0800"
      },
      "message": "audiopolicy: engine: Add Volume Groups to common Engine\n\nThis CL adds the concept of Volume Group to the engine.\nIt generalizes the volume management today controled by stream types\nand hard coded into AOSP.\nThe goal is to control the volume per attributes, being able to define\na group of attributes that follow the same volume curves.\n\nIt intends to replace the concept of aliases in AudioService.\n\nBug: 124767636\nTest: build\n\nChange-Id: Icd079374cc1680d074b01836eca0bceb0b0c5247\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "ea69bfb0f5b3fc247882355b919a3076e4992694",
      "tree": "ed8db5eb87fdf16c30c9f47926c8c523150a3d86",
      "parents": [
        "8c27e78fb1ea66b353f4e1162a6a1d253622506b",
        "3de3ee7025a84cbb1902c222b6d897414862c373"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 25 16:58:20 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 25 16:58:20 2019 +0000"
      },
      "message": "Merge changes from topic \"policy_volume_emulator\"\n\n* changes:\n  Revert \"Revert \"audiopolicy: engine: use apm XML config file for volume curves\"\"\n  Revert \"Revert \"audiopolicy: moves Stream Volume Curves to Engine\"\"\n"
    },
    {
      "commit": "f42d99d0088a8d33d374179d41f16cee288533e4",
      "tree": "c69fab0c26291263f8075fb27f1e1b202f8b6db8",
      "parents": [
        "f9097e3095754424d90e77a10acab884f40d7161",
        "ebebb5f8085df4231b6d786e1d24de78181cedeb"
      ],
      "author": {
        "name": "Juyu Chen",
        "email": "juyuchen@google.com",
        "time": "Sat Feb 23 03:11:12 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 23 03:11:12 2019 +0000"
      },
      "message": "Merge \"audio policy: fix using hearing aid when force use NO_BT_A2DP\""
    },
    {
      "commit": "3de3ee7025a84cbb1902c222b6d897414862c373",
      "tree": "b8088d053d474e5e281968811871b98800e54be4",
      "parents": [
        "f5aa58d324bc1d53b7c0ec31edf81814e8553044"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 22 18:20:37 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 22 18:20:37 2019 -0800"
      },
      "message": "Revert \"Revert \"audiopolicy: engine: use apm XML config file for volume curves\"\"\n\nThis reverts commit 1462a279faace46266ab1f2151393ecd31c62a5e.\nTest: make\n"
    },
    {
      "commit": "f5aa58d324bc1d53b7c0ec31edf81814e8553044",
      "tree": "a735ad797fef41a634ab61582f459a2ca2a06bf6",
      "parents": [
        "f9097e3095754424d90e77a10acab884f40d7161"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 22 18:20:11 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 22 18:20:11 2019 -0800"
      },
      "message": "Revert \"Revert \"audiopolicy: moves Stream Volume Curves to Engine\"\"\n\nThis reverts commit efdbe3bfeff7c150d99900fddca005d48048f188.\n\nTest: make\n"
    },
    {
      "commit": "efdbe3bfeff7c150d99900fddca005d48048f188",
      "tree": "3b12bf3482013a37bba3fe46a40ab54cee10abb8",
      "parents": [
        "1462a279faace46266ab1f2151393ecd31c62a5e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 22 17:23:37 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 22 17:24:49 2019 -0800"
      },
      "message": "Revert \"audiopolicy: moves Stream Volume Curves to Engine\"\n\nThis reverts commit 539311942bdbac65fbf7f2fc1390b6b9ef850a1b.\n\nBug: 125937703\nTest: make\n"
    },
    {
      "commit": "1462a279faace46266ab1f2151393ecd31c62a5e",
      "tree": "7c1503d7892fc1788b9ccf3d585528acd96aba2e",
      "parents": [
        "15c6b6df6338529e10b4fc3ce1a904e82c0d6b6b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 22 17:22:57 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 22 17:24:38 2019 -0800"
      },
      "message": "Revert \"audiopolicy: engine: use apm XML config file for volume curves\"\n\nThis reverts commit 97717283c8e909e242efa615e66ad0b0faf6e9f6.\n\nBug: 125937703\nTest: make\nChange-Id: If7993ca2d9d5a6569ebf7bf4fdc82a7262d29faf\n"
    },
    {
      "commit": "be20185b2f93e429aa4f69fa4caa3ac9cac2ecc3",
      "tree": "84a8f8369fd717a06ef0e85f9da2fb5f8f324dfc",
      "parents": [
        "5a523197d3c00f695c12729c39e838c1de365465"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Feb 20 22:33:28 2019 -0800"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Feb 22 15:10:52 2019 -0800"
      },
      "message": "Public Audio playback capture must have a valid projection\n\nFor privacy, require the app wanting to capture other app audio to have\na valid MediaProjection.\n\nTest: adb shell audiorecorder --target /data/file.raw\nBug: 111453086\n\nChange-Id: Ia9343b2125aea2d9c0fc5a37b6ded9237d1d0f28\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "ebebb5f8085df4231b6d786e1d24de78181cedeb",
      "tree": "8e74a54fc8526058c5e6edab6534a12e812557b7",
      "parents": [
        "b075c7c681738c21c759c6a7963f755f5984080d"
      ],
      "author": {
        "name": "juyuchen",
        "email": "juyuchen@google.com",
        "time": "Fri Jan 11 14:41:04 2019 +0800"
      },
      "committer": {
        "name": "juyuchen",
        "email": "juyuchen@google.com",
        "time": "Fri Feb 22 18:38:26 2019 +0800"
      },
      "message": "audio policy: fix using hearing aid when force use NO_BT_A2DP\n\nBug: 122615787\nTest: manual audio test\nChange-Id: If694d08e56eac0791806b283f6ec07894dcbcccf\n"
    },
    {
      "commit": "97717283c8e909e242efa615e66ad0b0faf6e9f6",
      "tree": "b79eacf7231c3988e6fd858589b24eaa68af7ef0",
      "parents": [
        "539311942bdbac65fbf7f2fc1390b6b9ef850a1b"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Feb 07 09:07:29 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 21 18:40:45 2019 -0800"
      },
      "message": "audiopolicy: engine: use apm XML config file for volume curves\n\nThis CL removes the hard coded volume table in the engine and\nuse as a fallback for compatibility reason the apm config file\nto load the volume tables.\n\nBug: 124767636\nTest: dumpsys media.audio_policy \u0026 diff with previous version\n\nChange-Id: I0392aad730c67ee79f898093fd1b4f64e26ab3fd\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "539311942bdbac65fbf7f2fc1390b6b9ef850a1b",
      "tree": "abc928dcc59b82f9baedc7f3485474d7dd8bd474",
      "parents": [
        "7a2f8152b1116c40b48cb78cfc8c05d7c5e56b08"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Nov 06 17:11:17 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 21 18:20:39 2019 -0800"
      },
      "message": "audiopolicy: moves Stream Volume Curves to Engine\n\nThis CL moves the volume curves to the engine.\nThe configuration files of volume are now owned by the engine,\nthat is intended to become vendor specific.\n\nTest: build, dumpsys media.audio_policy and checks the volume curves.\nBug: 124767636\n\nChange-Id: I9e3b256d2eb89c8eac6b282db0e59ec3af47d76d\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "ae9700287cb9ae12c1bb2088bf91c9a3739195f0",
      "tree": "78784e6bb6df3bb9b24e894ab8fdc38a55de8194",
      "parents": [
        "5a523197d3c00f695c12729c39e838c1de365465"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 29 14:25:04 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 21 12:19:35 2019 -0800"
      },
      "message": "audio policy: remove glitch when registering dynamic policies\n\nBypass systematic playback client route evaluation when connecting a\nremote submix output device used by a recorder dysnamic policy as no\nrerouting is needed in this case.\n\nBug: 115429872\nBug: 123986127\nTest: play music with GPM on Android TV and use the BLE remote\nTest: use the BLE remote on Android TV\n\nChange-Id: I285d416f54ff398d23742086fcd8c9f511cd289b\n"
    },
    {
      "commit": "0cc7c07a0d66369ec7d3c9827aaf63384891106b",
      "tree": "225e7e25ca600c7f36f82e24ef03b7dc163c2773",
      "parents": [
        "441e6198592cdbe38a4b9b3b833295438403f68e",
        "1c87855ff4c3c55e191a2e6da66bb82011c91c1b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 21 03:05:20 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 21 03:05:20 2019 +0000"
      },
      "message": "Merge \"audiopolicy: rework stream activity for volume management on output\""
    },
    {
      "commit": "d3b8fa2965cace7c75389727740551975ca5ad7f",
      "tree": "326c248965c714e46a033e44f61e9c9aec923bf1",
      "parents": [
        "05677f7f44a753b756709ddbd7eebdffa34f62f4",
        "1962212fe77b35b2dbf8782f505fa2adf2892016"
      ],
      "author": {
        "name": "Cheney Ni",
        "email": "cheneyni@google.com",
        "time": "Tue Feb 19 18:50:32 2019 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Feb 19 18:50:32 2019 -0800"
      },
      "message": "Merge \"Use BluetoothAudio HAL 2.0 for Pixel 1, 2\" am: a2be3bea8a am: 0465325b35\nam: 1962212fe7\n\nChange-Id: I6c7b4d721416609d0bfe7f4650cb74a5749052dd\n"
    },
    {
      "commit": "1c87855ff4c3c55e191a2e6da66bb82011c91c1b",
      "tree": "e4cbf214056b965017c1f727ad0881b85ef1e54d",
      "parents": [
        "e690a6da57c95da65b4a179e35fa4dc72510024f"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Nov 22 16:53:21 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 19 15:58:32 2019 -0800"
      },
      "message": "audiopolicy: rework stream activity for volume management on output\n\n-Manage duplicated output ref count in client itself\n-Use VolumeSource to track volume activity in output\n(today mapped on legacy stream type)\n-Use accessor APIs to control activity/mute from apm.\n\nTest: audio smoke tests\nBug: 124767636\n\nChange-Id: I452e3973f6869d41231d984896a5886ebb86afb1\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    }
  ],
  "next": "8b0e6fa090b6013899d48112761f45e12705f838"
}
