)]}'
{
  "log": [
    {
      "commit": "a7eb3da87e5205bee31b12c634eff4c8508b13b6",
      "tree": "15a125db50b1a2e05880d21b4b59dc0b3d5a1218",
      "parents": [
        "3168a7d111d21e0a66e9149428b4fcec46f6dbb9",
        "92bb8155044980052112b2d02b2ff7ed68615203"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 10 09:08:31 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:08:31 2019 -0700"
      },
      "message": "Merge changes from topic \"pfw_python_3\" am: d20b5c7d6f am: 7f51413ee0\nam: 92bb815504\n\nChange-Id: I25a851c53893e1f70cce7adbc738ffdd6a82e20c\n"
    },
    {
      "commit": "3168a7d111d21e0a66e9149428b4fcec46f6dbb9",
      "tree": "e1ce60356a52ab1538ae74acbcaa3c05dbc03c3a",
      "parents": [
        "84b54638df2403e3bf5700e7a80bae582c337024",
        "cca89a4b2659d424e044fe2c48cc44c364006c34"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 09:08:18 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:08:18 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: continue switching to bp am: 5818b453da am: a9122279e0\nam: cca89a4b26\n\nChange-Id: I237fcd4cf606520e22cc3c74f81489dde3d6ceb9\n"
    },
    {
      "commit": "84b54638df2403e3bf5700e7a80bae582c337024",
      "tree": "9a39d79fdcc9bbfc6d095c7a48b9849ed1f3c81f",
      "parents": [
        "7dcf320a45c7e2a10270384ab938d44a7107f9aa",
        "5b27eb662ddf0b3bf1a736a8ddfc52a8461f57bd"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 09:08:12 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:08:12 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix potential segfault if no default device am: c60c369166 am: 8bae8ca137\nam: 5b27eb662d\n\nChange-Id: Ic6869ba24e33738e899ee46927dbaf9fe9a55df6\n"
    },
    {
      "commit": "7dcf320a45c7e2a10270384ab938d44a7107f9aa",
      "tree": "9b90125039b63e01fbc53df693efa6fcd543a3c4",
      "parents": [
        "a1fdcd5b1ff172265d4e912ce3b4d325681670ac",
        "f05f6c33633c473bcf82e27fd2c9b76b26021d80"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 09:08:05 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:08:05 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix PATH issue am: bc5c7de704 am: ed29c951f0\nam: f05f6c3363\n\nChange-Id: Ieece3f94561cf0ce5f1022714da9665f67daa7f6\n"
    },
    {
      "commit": "a1fdcd5b1ff172265d4e912ce3b4d325681670ac",
      "tree": "1c5e6b1501ae085b6c07a02f5a82f80797abc206",
      "parents": [
        "df7a95c8a04e5ea729724105bb9ba9c1feeb429b",
        "8224a4f222719ef71671247a0679a1e89d06bf8e"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 09:07:51 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 09:07:51 2019 -0700"
      },
      "message": "Update PFW input source structure for Q am: 39ef510fec am: 645e43105f\nam: 8224a4f222\n\nChange-Id: Ice7a9f6b95a4329ced6f10d72c247fc66794d1c8\n"
    },
    {
      "commit": "7f51413ee032a811846c805a9a5c3d9987acfa23",
      "tree": "c7fc0e79ae6cab94157b49c9266e40f458582cb8",
      "parents": [
        "a9122279e023e9b8d287e6fb9eda53a28341fb8d",
        "d20b5c7d6fb8ae4f0a011cdc78b0522846419721"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 10 08:47:16 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 08:47:16 2019 -0700"
      },
      "message": "Merge changes from topic \"pfw_python_3\"\nam: d20b5c7d6f\n\nChange-Id: Ib5b660acc0f9492d7b5345ea6f3f5772d6ee7b4d\n"
    },
    {
      "commit": "a9122279e023e9b8d287e6fb9eda53a28341fb8d",
      "tree": "a474a8f0c4e7bb6f3dbed42be2aa74709a76424d",
      "parents": [
        "8bae8ca1374a5e0ac85c520e1542fb975b6cca93",
        "5818b453da8cc675900f810655143ad55a159a11"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 08:47:12 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 08:47:12 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: continue switching to bp\nam: 5818b453da\n\nChange-Id: I724a73886458ea9412bb85fd813e7ffb7331fa0f\n"
    },
    {
      "commit": "8bae8ca1374a5e0ac85c520e1542fb975b6cca93",
      "tree": "3d48574d8dc1e0b42598cf159fbd3af5fbb50fda",
      "parents": [
        "ed29c951f02a3143842754562b380643c333156a",
        "c60c36916666ead0ad9c599b82a86708a91eb767"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 08:47:07 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 08:47:07 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix potential segfault if no default device\nam: c60c369166\n\nChange-Id: I700c3d79241453883d99c203fc627923cbf38f34\n"
    },
    {
      "commit": "ed29c951f02a3143842754562b380643c333156a",
      "tree": "f7cd07df5988ed80bf9dd71207e70938ba2baacc",
      "parents": [
        "645e43105f1684f9ee1043e4dee3d5e294840faf",
        "bc5c7de7048dfe5ca33652533582328775bd4169"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 08:47:01 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 08:47:01 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix PATH issue\nam: bc5c7de704\n\nChange-Id: Icc9d796aaca2040fd8f2cb6a6669e1fac7269a49\n"
    },
    {
      "commit": "645e43105f1684f9ee1043e4dee3d5e294840faf",
      "tree": "6c080b8e2ff7df03a29bc9b2c6e4eb241f0c5135",
      "parents": [
        "448242fe095b3e72ce9779b7c09f6b0eee5721b0",
        "39ef510fecec1b7e66b1257a99c6ae8fa1c8e726"
      ],
      "author": {
        "name": "Franois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu Oct 10 08:46:53 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 10 08:46:53 2019 -0700"
      },
      "message": "Update PFW input source structure for Q\nam: 39ef510fec\n\nChange-Id: I86d43d746b69dd0ac616bb9000673ffb98d62ab7\n"
    },
    {
      "commit": "31987fb3dc277d2b0daf32f3d2a044e8a2c88a3b",
      "tree": "c38226f2997551d7d61cbd7836d5f3a48ab6de85",
      "parents": [
        "5818b453da8cc675900f810655143ad55a159a11"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Sep 03 11:57:33 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 09 15:06:16 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: Update tool scripts to python 3\n\nAs python 2 is beeing deprecated, this CL updates all the tool\nscripts to python3.\nIt also fix some issues revealed by pylint.\n\nTest: lunch audio_configurable target \u0026 build\nChange-Id: I69a201190c688be3825cbdaa238046367a5d09c7\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "5818b453da8cc675900f810655143ad55a159a11",
      "tree": "d7285f91c4ce5f85a9176c2f5544eed40b01ab77",
      "parents": [
        "c60c36916666ead0ad9c599b82a86708a91eb767"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Aug 27 16:30:04 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 09 15:06:09 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: continue switching to bp\n\nThis CL adds genrule_defaults target to allows getting rid of mk\nfor configuration files generation.\n\nTest: build \u0026 boot\nChange-Id: Ida4ec17ab3e67788b512b95ac8d2c0f4c530014a\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "c60c36916666ead0ad9c599b82a86708a91eb767",
      "tree": "520eb229b4f475fdc7134d594b3fb9b47f72330c",
      "parents": [
        "bc5c7de7048dfe5ca33652533582328775bd4169"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Aug 09 15:41:24 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 09 15:05:58 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix potential segfault if no default device\n\nIf no default device is available from configuration.xml, and if\nthe engine fallbacks on it anyway, it tries to get its type without checking\nthe pointer validity.\n\nThis CL fix the potential segfault and assert with explicit error message.\n\nTest: build\n\nChange-Id: Icf8d7f5ef998dad6f4033d934b48d408030c7e17\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "bc5c7de7048dfe5ca33652533582328775bd4169",
      "tree": "5789839c6466d34ae8d963e68322520895e22b37",
      "parents": [
        "39ef510fecec1b7e66b1257a99c6ae8fa1c8e726"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Jul 16 13:37:16 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 09 15:05:52 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix PATH issue\n\nTo avoid bypassing PATH restrictions, this CL fixes the python\nbinary dependancy by retrieving the path from the host binaries.\n\nTest: build\n\nChange-Id: Ib3356ee1a69d1a5e5a9f9d22b46e3e70c28fa991\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "39ef510fecec1b7e66b1257a99c6ae8fa1c8e726",
      "tree": "68a7209c8c96dcc9a1ce5e268e508a541c51df9f",
      "parents": [
        "58ae37b5b34d6a2bddd46494230a58f5fcc3f5e3"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon May 27 17:33:14 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Oct 09 15:05:40 2019 -0700"
      },
      "message": "Update PFW input source structure for Q\n\nTest: make\nChange-Id: I8a79773732577ace9d81f87fe3f4bb166f4d7290\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "54f877b5fd9c7cb6752c380d480dc1bba2b50da4",
      "tree": "ab93ee2bd8ec69a700f49d31b0df5c13f087149a",
      "parents": [
        "fe4bf25c2e3343f0c2e21a59ef07236069447e3b",
        "296036ed26b8e092b4f771800132e5b987cdcb52"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Oct 08 16:40:17 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 08 16:40:17 2019 -0700"
      },
      "message": "Merge \"audio policy: fix virtual called from constructor\" am: 1a5100d4ad am: 0d852e4c5e\nam: 296036ed26\n\nChange-Id: I5be87d1cdcb55d281192de028823918fda34795e\n"
    },
    {
      "commit": "0d852e4c5e51613fb51a08a271132a85eaae53e2",
      "tree": "d6a3c80c524c675fbda231032642b277d397b253",
      "parents": [
        "6775ee2b2c403fc7846716f798c4b2e6de253290",
        "1a5100d4ad493bfa6a48b76c2c9276af7aa1d689"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Oct 08 16:25:54 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 08 16:25:54 2019 -0700"
      },
      "message": "Merge \"audio policy: fix virtual called from constructor\"\nam: 1a5100d4ad\n\nChange-Id: Ie21e8efa8fdf93ff716ec304cb99ff807ef95bac\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": "59cee8cc171715174b912c326ba8a5f500e3afdd",
      "tree": "8915d8fd854c905ff95553b78e287842c64f58f8",
      "parents": [
        "85e09b8e9403dca651e174dca57ae353b8de0a11"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 19 10:31:39 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Oct 07 11:20:07 2019 -0700"
      },
      "message": "audio policy: fix capture policy for HOTWORD source\n\nDo not consider Assistant capturing with HOTWORD source\nwhen determining lastest active capture client. As assistant\ncapturing for HOTWORD does not silence other captures, it should not\nprevent another client from being selected as the latest active.\n\nBug: 135806801\nTest: Start capture with Recorder app, place in background and trigger\nfalse OK G detection\n\nChange-Id: Ic17bfd70675ef749d6a678d067112b1dbd205746\nMerged-In: Ic17bfd70675ef749d6a678d067112b1dbd205746\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": "b3e4cbb217ffaefa898170c1136becfa0ff7a137",
      "tree": "77af9d60c435d007c64c08c356e1b4e9daec6371",
      "parents": [
        "a37cdc92bef77ccc6315dc8617011d6385156b4a",
        "53cf28d34130ceb0663b41c9ce37d3176fc9517b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 03 13:17:27 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 03 13:17:27 2019 -0700"
      },
      "message": "Merge changes from topic \"rename-stream-connect\" am: ad71d42389 am: 18ea000d7f\nam: 53cf28d341\n\nChange-Id: I631bbb92aefcc436be462a19881a1fb385e608ac\n"
    },
    {
      "commit": "18ea000d7f15726e4c11c4a9e7e59e8a18a9c227",
      "tree": "8f5cc01f7d72b904c14e41a81ed69c3851a2aa59",
      "parents": [
        "31d882eab0161de1d237fb893e7ef17ecbad0f43",
        "ad71d4238911260f0a9733b799420534ec095064"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 03 12:56:59 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 03 12:56:59 2019 -0700"
      },
      "message": "Merge changes from topic \"rename-stream-connect\"\nam: ad71d42389\n\nChange-Id: I4d651926031dc0342ba77db97669416a86c7fe62\n"
    },
    {
      "commit": "ad71d4238911260f0a9733b799420534ec095064",
      "tree": "ad37557542330c7ed28f95f9308836130db61427",
      "parents": [
        "5a6a5a9b8223473f35c4486c0b3c8f2335e35b6f",
        "138b0a3840db6207654d8a9b3d88a383b100b9b0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 03 19:44:44 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 03 19:44:44 2019 +0000"
      },
      "message": "Merge changes from topic \"rename-stream-connect\"\n\n* changes:\n  Restore stream [dis]connect parameters in deprecated state\n  Fix the name of the constant for device [dis]connect parameter\n"
    },
    {
      "commit": "5070660381ef299b2ebabadfa37277ca7ed60a25",
      "tree": "4acde1fdcee9846282dc41d51107d8567bbbab4a",
      "parents": [
        "c499a089250910118da5a292794d0dc1c9053171",
        "b592a9ff39fbc8da6af2cd93dd20862d7ad29ed5"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Oct 02 22:18:36 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 02 22:18:36 2019 -0700"
      },
      "message": "Merge \"Cast enum to uint32_t before comparing with AUDIO_MODE_CNT\" am: 5a6a5a9b82 am: 31d882eab0\nam: b592a9ff39\n\nChange-Id: I265d446fdea63c834b1216feb7ffe19d260b6c50\n"
    },
    {
      "commit": "31d882eab0161de1d237fb893e7ef17ecbad0f43",
      "tree": "0a4a8d650ad6309e12d1f5c86b4083d8d73e5f2e",
      "parents": [
        "a39f7f0e48adb74b48fd5fc6b3bfd469df1ae80e",
        "5a6a5a9b8223473f35c4486c0b3c8f2335e35b6f"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Oct 02 22:05:48 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 02 22:05:48 2019 -0700"
      },
      "message": "Merge \"Cast enum to uint32_t before comparing with AUDIO_MODE_CNT\"\nam: 5a6a5a9b82\n\nChange-Id: I73a050adddc0b8b0497c3483969b22103dc41fba\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": "27b5c0d7a18b49df1e27cf499a3a41618e5027b7",
      "tree": "7681cee96f3340f55826f6a7c9b662b742e9759a",
      "parents": [
        "3e9dd76e813cf04c9dd35a8c2e813c174e5b435e"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Oct 02 15:46:20 2019 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Wed Oct 02 23:04:07 2019 +0000"
      },
      "message": "Cast enum to uint32_t before comparing with AUDIO_MODE_CNT\n\nAUDIO_MODE_CNT falls outside of the enum range, the comparison emits\ntautological-constant-out-of-range-compare warning.\n\nTest: presubmit\nChange-Id: Iacab29a79219048868d390dbe08e70aba22e9cc5\n"
    },
    {
      "commit": "c499a089250910118da5a292794d0dc1c9053171",
      "tree": "5bb771f7f3d9ff8a513bc8659ee01bb1a45de2d8",
      "parents": [
        "8f32b1e1e10f1e3820eaa887e3ec1fa2b7077270",
        "80192a580f37080e22b101dbd1d7700cdfd53e2f"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@quicinc.com",
        "time": "Wed Oct 02 15:31:02 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 02 15:31:02 2019 -0700"
      },
      "message": "Merge \"audiopolicy: add null pointer check for primary hw\" am: 3e9dd76e81 am: a39f7f0e48\nam: 80192a580f\n\nChange-Id: I02becb696b081a7f7dc4f833326a33eab50b8334\n"
    },
    {
      "commit": "a39f7f0e48adb74b48fd5fc6b3bfd469df1ae80e",
      "tree": "87c16a06611ae4b91c128831dc6ae714450221de",
      "parents": [
        "bacbbf5a6364b827799ab941a40152e5cc82fe19",
        "3e9dd76e813cf04c9dd35a8c2e813c174e5b435e"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@quicinc.com",
        "time": "Wed Oct 02 15:09:48 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 02 15:09:48 2019 -0700"
      },
      "message": "Merge \"audiopolicy: add null pointer check for primary hw\"\nam: 3e9dd76e81\n\nChange-Id: I45ad57a48356a061ed52fa7c9a46af2d24157e50\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": "8eb9e24ea239a05c767ac15f5d25d5b6c56aa8be",
      "tree": "0bdccd7acb6f65b444931145ca9d4ec7e9432caa",
      "parents": [
        "e261de317c36cac35ae559ed28661abfae9da4ba",
        "bcc132d8e562375f7830839caf84307f523f623d"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@quicinc.com",
        "time": "Tue Oct 01 22:57:52 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 01 22:57:52 2019 -0700"
      },
      "message": "Merge \"av: Add AUDIO_OUTPUT_FLAG_MMAP_NOIRQ flag.\" am: e9ad58533c am: b4ea55b6c1\nam: bcc132d8e5\n\nChange-Id: I1d2996035b746acc9ab7062f932a5408a5cd5955\n"
    },
    {
      "commit": "b4ea55b6c1c859e077b5661ed56b0529594626be",
      "tree": "d83368bb67a06b0bd0bc60839ea2e515f216184c",
      "parents": [
        "d86630283ad6231a160175b89411e3ac3cb9a4a7",
        "e9ad58533c38be8ec0f7c9ebd3b2e6e850354f82"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@quicinc.com",
        "time": "Tue Oct 01 22:44:20 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 01 22:44:20 2019 -0700"
      },
      "message": "Merge \"av: Add AUDIO_OUTPUT_FLAG_MMAP_NOIRQ flag.\"\nam: e9ad58533c\n\nChange-Id: I61664c8ac8696b45ae3c8c9597e834371e8412ce\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": "23dc9470ed4328bdd3dd462dc5db867802316810",
      "tree": "854f72cab4e0c5d9fbe1849fef295987219eccbd",
      "parents": [
        "cdb9faf1c3e7cec0cee74b7eb12bb00a2d738440",
        "018c80502cb529257f053884a5022462d3ffaf8c"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 01 15:29:00 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 01 15:29:00 2019 -0700"
      },
      "message": "Merge \"AudioPolicyManager: Handle error from setInputDevice in startInput\" am: a43fcd7ed6 am: 465a0b2141\nam: 018c80502c\n\nChange-Id: I000672295ab5dc8715eebae2c55e5c414bddf222\n"
    },
    {
      "commit": "465a0b2141c2c3f0fa4cef13f89248104fd75532",
      "tree": "ebd13622e288036ca17889cc6c4611b40dd9cc42",
      "parents": [
        "baf4b94a8dde48c46a223a7f8a626dee2def569b",
        "a43fcd7ed6b1cc8930e2c3d8416b87cb8e9e02e4"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Oct 01 15:15:58 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 01 15:15:58 2019 -0700"
      },
      "message": "Merge \"AudioPolicyManager: Handle error from setInputDevice in startInput\"\nam: a43fcd7ed6\n\nChange-Id: I09bb24d6b32d175613d3ccc4733c8788f4d3da55\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": "a81b20a80ae556a4b93199c617a8fe467a4a6a3a",
      "tree": "895b1a87d62e52242838470508e5a41104dc497d",
      "parents": [
        "706d9606bee174bc1d087fa316e0d7d66605b417"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 02 09:28:16 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Sep 26 17:51:57 2019 -0700"
      },
      "message": "Audio policy: fix HwModuleCollection::getDeviceDescriptor\n\n  The deprecated method AudioManager.isBluetoothA2dpOn() calls\ngetDeviceConnectionState on APM with an empty address, which\ncaused HwModuleCollection::getDeviceDescriptor to set an empty\naddress on the DeviceDescriptor for the currently connected\nA2DP device. This method is called by MediaRouter.\n  When the address was reset, the java listener for audio device\nconnection monitoring was reporting the connection of an A2DP\ndevice with an empty address, which in turn caused AvrcpManager\nto behave as if the audio device connection failed.\n  If MediaRouter called isBluetoothA2dpOn() before AvrcpManager\nreceived its called for device connection, the error would occur.\n\nBug: 132416679\nTest: call isBluetoothA2dpOn() and check for valid address in dumpsys media.audio_policy\nTest: atest AudioServiceHostTest#testInjectForRecord ; atest AudioHostTest ; atest AudioPlaybackCaptureTest\nChange-Id: I1370edbbca46657506a990855d06a176f07c54d3\nMerged-In: I1370edbbca46657506a990855d06a176f07c54d3\n"
    },
    {
      "commit": "ee566469e6b8b50de0a8df5eeb573b3c32fe6f5a",
      "tree": "03f60a6dc4544b328b797e3d40a17abbfc9cafa1",
      "parents": [
        "83bac7299d61a3f9858be89d8e32f29f3ca4b1f7",
        "62e08e8044978d36fc93e1316ac919e7d693dbb7"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 25 21:07:49 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 25 21:07:49 2019 -0700"
      },
      "message": "Merge \"audiopolicy: Load the engine library dynamically\" am: 706d9606be am: 77a9db4b23\nam: 62e08e8044\n\nChange-Id: I39776732348461f70d4cc19811836dfc0166764e\n"
    },
    {
      "commit": "77a9db4b237811620d44db54b94dab29c1f9e6c2",
      "tree": "8c3bc91c3de0b2d8e8c829d2996b631365acbd93",
      "parents": [
        "c45eddfc83b37fed07ca97e15279105e1fb0df4a",
        "706d9606bee174bc1d087fa316e0d7d66605b417"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 25 17:13:34 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 25 17:13:34 2019 -0700"
      },
      "message": "Merge \"audiopolicy: Load the engine library dynamically\"\nam: 706d9606be\n\nChange-Id: I0fbafa804e602e626c78d2996d1b786a98e5544a\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": "80d3e9a8111d53abd0015a046f356cb8fa60931b",
      "tree": "73997da77164da7bd3b555aa290d6a1327182dbd",
      "parents": [
        "0a5c1237f89059e327d9a7714b930ca0aadb24be",
        "a09e71cf0dc6735bdfbb73e45cd695f136f8d372"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Sep 23 21:27:37 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 23 21:27:37 2019 -0700"
      },
      "message": "Merge changes I0b8ae921,Ib8bda8ab am: 402fd7c9a7 am: 7f8a396dff\nam: a09e71cf0d\n\nChange-Id: Ic5571d8b095c7714985c04234b271cc87e9cb87e\n"
    },
    {
      "commit": "7f8a396dffe4c2581991e2e938c2d9a6c13c3dfc",
      "tree": "62c971968c405869b69be168c34e9902c81ab72d",
      "parents": [
        "eedc9bbae6c4e914e4edcc81e9210428458fb256",
        "402fd7c9a7aead3cfdb75d4d8a21a2c071d69926"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Sep 23 21:15:51 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 23 21:15:51 2019 -0700"
      },
      "message": "Merge changes I0b8ae921,Ib8bda8ab\nam: 402fd7c9a7\n\nChange-Id: Ibbce2ce39a7a29af3533f525c83ac1a2546066d5\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": "4fd526bbd72314fca35aaf0169561ac39d39c300",
      "tree": "f3f82f81d763d94e5da1be396015f38f22875032",
      "parents": [
        "e153774a5e1175e68bae85750aae28ff4fae74c9",
        "7c1ec2335fdcee7ddd4382577b1e2955b2715285"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Sep 12 03:47:00 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 12 03:47:00 2019 -0700"
      },
      "message": "Merge \"audiopolicy: Match DIRECT and MMAP_NOIRQ flags exactly in IOProfile\" am: f28a06da98 am: a24a5f96f5\nam: 7c1ec2335f\n\nChange-Id: I934a623ed4a7a1fd51fe2a41fe45af8c41ff16e5\n"
    },
    {
      "commit": "a24a5f96f5fc2bb843b2b8bc72dcc2d7f4808ab7",
      "tree": "63412b09a47857355ae4deb6b42313ad0df8d8f4",
      "parents": [
        "fdb43e49e9b43df47c8d9afb86f7e4ab83f8702b",
        "f28a06da9837993eeef23fcb1a98a9eea666a11e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Sep 12 03:32:58 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 12 03:32:58 2019 -0700"
      },
      "message": "Merge \"audiopolicy: Match DIRECT and MMAP_NOIRQ flags exactly in IOProfile\"\nam: f28a06da98\n\nChange-Id: I18638991ad15a01a71c818000c5ccd7c4929f7a8\n"
    },
    {
      "commit": "fdb43e49e9b43df47c8d9afb86f7e4ab83f8702b",
      "tree": "124853b510e9586e006aca7aea9dd2291f6265ea",
      "parents": [
        "ee14f8236132fc05a1236e0c54aaf9af91b38b56",
        "cfaf477e54f6c9d58b079f73507a5dfbeb773faa"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 11 20:31:33 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 11 20:31:33 2019 +0000"
      },
      "message": "Merge \"Merge qt-r1-dev-plus-aosp-without-vendor (5817612) into stage-aosp-master\" into stage-aosp-master"
    },
    {
      "commit": "1f8da412814ed205572d6e05cb5b55c3661ab312",
      "tree": "8c724ec47d378e79b0d4255c2cd0a5c9b1111ae1",
      "parents": [
        "bac928872a3f49ad69e9581c4f60099c21108213"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 11 12:57:42 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 11 12:57:42 2019 -0700"
      },
      "message": "audiopolicy: Match DIRECT and MMAP_NOIRQ flags exactly in IOProfile\n\nPrevent selection of DIRECT and MMAP_NOIRQ output profiles\nif these flags were not requested.\n\nTest: atest audiopolicy_tests\nChange-Id: I6940caed519b6237ea3038e646a84e4403a0c1ed\nMerged-In: I6940caed519b6237ea3038e646a84e4403a0c1ed\n"
    },
    {
      "commit": "579a74ac0d2c95b22e7ad0d412b1f0ad96d4e25a",
      "tree": "5f0b6e1c68fd594e8358f86787d07a3c76a068c7",
      "parents": [
        "82a750d29f798a252aa91541ceddfddba1cc772a",
        "37c9fa6351e39e95e436410dbd65ad6b9dcf2bff"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 11 12:47:44 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 11 12:47:44 2019 -0700"
      },
      "message": "Merge \"Require HW AV sync flag match for compatible output IOProfile\" am: bac928872a am: ee14f82361\nam: 37c9fa6351\n\nChange-Id: Ib236edf986af5f34cae1106c2b7a083fd41966c8\n"
    },
    {
      "commit": "37c9fa6351e39e95e436410dbd65ad6b9dcf2bff",
      "tree": "3fbc4f97172c9a68e1bbe676572c2320e3394be6",
      "parents": [
        "1c0df226cfb484334277c6d8aea245270eba6830",
        "ee14f8236132fc05a1236e0c54aaf9af91b38b56"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 11 12:26:57 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 11 12:26:57 2019 -0700"
      },
      "message": "Merge \"Require HW AV sync flag match for compatible output IOProfile\" am: bac928872a\nam: ee14f82361\n\nChange-Id: Ib78198b8e4ddbfc8fe86e14e2cac2cacf3003f44\n"
    },
    {
      "commit": "edad5db98d9014f7cb4cd2654bfb6c4b1ba2df80",
      "tree": "ca4e15f6ba03f5a1194c9b35c484ffc24d21c08e",
      "parents": [
        "b0d7fba6e5398f3bb5373afb13d8a5be2234355a"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Sep 09 10:39:56 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Sep 09 12:34:33 2019 -0700"
      },
      "message": "Require HW AV sync flag match for compatible output IOProfile\n\nPreviously, Audio HAL implementers need all HW A/V sync profiles\ndeclared after non HW A/V sync profiles in their audio policy\nconfigurations, otherwise a HW A/V sync profile match could be\nfound for a non HW A/V sync (e.g. direct only) request, the\nAudio HAL output stream would be opened with the HW A/V sync\nflag, and Audio HALs typically fail to process the stream as\nthey are setup to parse in-band HW A/V sync headers (even if\nthey don\u0027t receive keyStreamHwAvSync AudioParameter).\n\nTest: atest audiopolicy_tests\n  AudioPolicyManagerTVTest#MatchOutputNoHwAvSync fails w/o IOProfile change,\n  passes with the change.\nBug: 140447125\n\nMerged-In: Icfc806497b5b23013e63621a585c28d1d7a9882a\nChange-Id: Icfc806497b5b23013e63621a585c28d1d7a9882a\n"
    },
    {
      "commit": "d4730c8745e1f6f5567afbe3b8a351d5f8819f40",
      "tree": "5a89ba99d29e0d661cc465241cb21e67ad5a195c",
      "parents": [
        "16df19b26ba29915e183e9a6da54c804eadb174d",
        "87f731b26ed82ee49889bd3a8c9199089841078b"
      ],
      "author": {
        "name": "jovanak",
        "email": "jovanak@google.com",
        "time": "Mon Sep 09 10:31:46 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 09 10:31:46 2019 -0700"
      },
      "message": "Allow --user parameter for audio service commands.\nam: 87f731b26e\n\nChange-Id: I9b92e586fd80e388b050d505a7cd0c851924e01b\n"
    },
    {
      "commit": "87f731b26ed82ee49889bd3a8c9199089841078b",
      "tree": "48b64b5d8768aa14705ce6e1633916c3bf80fbf1",
      "parents": [
        "97390c6bf23326a0d9a97b9d63e7f72eab396303"
      ],
      "author": {
        "name": "jovanak",
        "email": "jovanak@google.com",
        "time": "Mon Sep 02 11:54:39 2019 -0700"
      },
      "committer": {
        "name": "Jovana Knezevic",
        "email": "jovanak@google.com",
        "time": "Thu Sep 05 23:12:59 2019 +0000"
      },
      "message": "Allow --user parameter for audio service commands.\n\nThis allows testing on secondary users.\n\nChange similar to ag/7022195 and ag/6936694.\n\nFixes: 139301368\nTest: cts-tradefed run cts -m CtsMediaTestCases -t android.media.cts.AudioRecordTest#testRecordNoDataForIdleUids\n\nand ...\n$ adb install testcases/CtsMediaTestCases.apk\nSuccess\n$ adb shell cmd media.audio_policy set-uid-state android.media.cts active\n$ adb shell cmd media.audio_policy get-uid-state android.media.cts --user 0\nactive\n$ adb shell cmd media.audio_policy get-uid-state android.media.cts --user 10\nidle\n$ adb shell cmd media.audio_policy set-uid-state android.media.cts --user 10 active\n$ adb shell cmd media.audio_policy get-uid-state android.media.cts --user 10\nidle\n$ adb shell cmd media.audio_policy set-uid-state android.media.cts active --user 10\n$ adb shell cmd media.audio_policy get-uid-state android.media.cts --user 10\nactive\n$ adb shell cmd media.audio_policy set-uid-state android.media.cts idle --user 0\n$ adb shell cmd media.audio_policy get-uid-state android.media.cts --user 0\nidle\n$ adb shell cmd media.audio_policy reset-uid-state android.media.cts --user 10\n$ adb shell cmd media.audio_policy get-uid-state android.media.cts --user 10\nidle\n\nChange-Id: I17774efa6aca7c9b9d0af9bf9c1e75474e90d990\n(cherry picked from commit be066e1a9aa613f4e7e56fbd16b35d8ad377b68f)\n"
    },
    {
      "commit": "c9e23f4554e079c9ecc6933797e6661767a4a469",
      "tree": "e98822a4944bad07b5de22c21b9df9fdf2162e4b",
      "parents": [
        "f24b76692d9b4c23e7f9c3a1c817294cfe04b642",
        "cee606de904204e96447ae9010ab40bb151bf3bf"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Aug 23 06:45:13 2019 +0000"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Aug 23 06:45:13 2019 +0000"
      },
      "message": "DO NOT MERGE - Merge build QP1A.190711.019 into stage-aosp-master\n\nBug: 139893257\nChange-Id: I4758e749be0f3d0431664ed31e6d754953eb91a1\n"
    },
    {
      "commit": "2f214d956b0378ab2439b5f3e8b76529c26df35e",
      "tree": "d8d9e54d298d9f6f8e002eb8f71a07b263213699",
      "parents": [
        "fd4da0e171e440407031f71e46e03178ac4ca0ee",
        "4a4961dbf003cc4ae245f701075dfae08db8fac1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 30 14:02:14 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 30 14:02:14 2019 -0700"
      },
      "message": "Merge \"audio policy: fix capture policy for accessibility\" into qt-r1-dev am: 44302851c3\nam: 4a4961dbf0\n\nChange-Id: I42e8f64600fb812ad4109176c940f8d4404046c3\n"
    },
    {
      "commit": "8675684899caa1c66161eac140c069790b7cddd7",
      "tree": "d8d9e54d298d9f6f8e002eb8f71a07b263213699",
      "parents": [
        "083f5d1ea29f7dce37958c2cb849db99509aedbc",
        "44302851c3081d244093d4ad1d03ddfbca6c71f4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 30 13:42:33 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 30 13:42:33 2019 -0700"
      },
      "message": "Merge \"audio policy: fix capture policy for accessibility\" into qt-r1-dev\nam: 44302851c3\n\nChange-Id: I722370d49e5c9c49d4052c7203437f3c2a822048\n"
    },
    {
      "commit": "589171c80afab0f515e99044aca15be9ee24d16b",
      "tree": "651759d6970794163cc7b7f91a8f6466ffb2ee71",
      "parents": [
        "1c74123afb488b39c850e3b897fc921a9396bfb1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 25 18:04:29 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 26 09:45:29 2019 -0700"
      },
      "message": "audio policy: fix capture policy for accessibility\n\nDo not consider Accessibility services when determining\nlastest active capture client. As an Accessibility service\ncapturing does not silence other captures, it should not\nprevent another client from being selected as the latest active.\n\nBug: 135806801\nTest: Start capture with Recorder app, activate Voice Access\nChange-Id: I864be785752f27201d45ce24f95013de6391dbd6\n"
    },
    {
      "commit": "e5293b84213b33133a4da4f45e798dd5c96e9ba8",
      "tree": "5bd553201b97d4583f564d13bd84e631c3187d20",
      "parents": [
        "c8d8dc9a3d65d9622834ea4cb3ee04db2c38b93b",
        "1c74123afb488b39c850e3b897fc921a9396bfb1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 22 08:22:46 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 22 08:22:46 2019 -0700"
      },
      "message": "Merge \"audio policy: fix capture policy for HOTWORD source\" into qt-r1-dev\nam: 1c74123afb\n\nChange-Id: Ib2f61802ebe2dc7899ef42ff6aefc1035478a087\n"
    },
    {
      "commit": "03e9a8f803f215af374429b500bb18e9df5e439a",
      "tree": "22a6d04b5f0ac9b8d1c73b32dd02e99a698bc7ec",
      "parents": [
        "c62ef7905d27ade434e401892839dd9b9c94bf15"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jul 11 15:14:50 2019 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Mon Jul 22 13:46:33 2019 +0000"
      },
      "message": "Remove unnecessary use of external/icu/icu4c/source/common\n\nThis is no longer necessary because the headers are exported by the\nlibicuuc library which is a dependency of libxml2.\n\nBug: 134379140\nChange-Id: I01dfe41c6584d71de47a5a76e1f7cc718083ca8c\nTest: m libaudiopolicyengine_config\nExempt-From-Owner-Approval: cherry pick from qt-dev-plus-aosp.\n(cherry picked from commit 2142c72cd74f0b303a676192f2d9d1285dbc2bda)\n"
    },
    {
      "commit": "c6af90d5efad45b652bbd40d63324efe01da4341",
      "tree": "4616bcade90442d7e589973a853a966688477324",
      "parents": [
        "c2a3a82419327c6ffbad9711ed07415341eca00d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 19 10:31:39 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 19 10:48:09 2019 -0700"
      },
      "message": "audio policy: fix capture policy for HOTWORD source\n\nDo not consider Assistant capturing with HOTWORD source\nwhen determining lastest active capture client. As assistant\ncapturing for HOTWORD does not silence other captures, it should not\nprevent another client from being selected as the latest active.\n\nBug: 135806801\nTest: Start capture with Recorder app, place in background and trigger\nfalse OK G detection\n\nChange-Id: Ic17bfd70675ef749d6a678d067112b1dbd205746\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": "b50f7f0777847279776c57aa55f3963b58193cdb",
      "tree": "399dd5093043691ae465527cb346d5d047d71401",
      "parents": [
        "c0f6cab80246d5bba8cce455be82756310fd84cb",
        "f72b5935d7555909ab03245e1a43551d7aa7a786"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Wed Jul 17 08:07:43 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 17 08:07:43 2019 -0700"
      },
      "message": "Merge \"Remove unnecessary use of external/icu/icu4c/source/common\" into qt-dev-plus-aosp\nam: f72b5935d7\n\nChange-Id: Iad207d2bb36d0ccdf38d0d08a08acff97c7d7afe\n"
    },
    {
      "commit": "c0f6cab80246d5bba8cce455be82756310fd84cb",
      "tree": "98132eb2c3f76f2175e5d1c899eefb8a4eb838fd",
      "parents": [
        "69d7878a89268b7fbede9a6018fb974629decbb4",
        "f00fd722c8e06c22e55615e7b2604eb32656bebd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 16 11:33:06 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 16 11:33:06 2019 -0700"
      },
      "message": "Merge \"audio policy: fix mmap capture disconnect\" into qt-r1-dev\nam: f00fd722c8\n\nChange-Id: I6740950438d8e1d2f577248c126485c119c202d5\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": "69d7878a89268b7fbede9a6018fb974629decbb4",
      "tree": "e1a338052977b47436e91a67f54766ac1aac190f",
      "parents": [
        "363be08230dee65f805d85aa009f0bd450011cb6",
        "7ec1eafeaaa5238e50c369a0c52691ba2af71a47"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Jul 15 11:25:17 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 15 11:25:17 2019 -0700"
      },
      "message": "Merge \"AudioPolicy: do not cap a11y volume during call screening\" into qt-r1-dev\nam: 7ec1eafeaa\n\nChange-Id: I5bc502a8c200f00fcae2926913378ca65bb57367\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": "2142c72cd74f0b303a676192f2d9d1285dbc2bda",
      "tree": "958502a88e2bf4b54d9a866d44734cc1595ff496",
      "parents": [
        "7956718497dce3738780b6b9abab8308a1ca7f92"
      ],
      "author": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jul 11 15:14:50 2019 +0100"
      },
      "committer": {
        "name": "Paul Duffin",
        "email": "paulduffin@google.com",
        "time": "Thu Jul 11 14:23:05 2019 +0000"
      },
      "message": "Remove unnecessary use of external/icu/icu4c/source/common\n\nThis is no longer necessary because the headers are exported by the\nlibicuuc library which is a dependency of libxml2.\n\nBug: 134379140\nChange-Id: I01dfe41c6584d71de47a5a76e1f7cc718083ca8c\nTest: m libaudiopolicyengine_config\n"
    },
    {
      "commit": "9c4eec2bb29cf9394ace8bbbae0752c170bab5f6",
      "tree": "30074eb0a49e8169f46b1b7e1c7f3f5b136d4248",
      "parents": [
        "8a2edf737caabf3f8a3b6019124ee8527f82bcd5"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 02 15:59:07 2019 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 09 19:04:24 2019 +0000"
      },
      "message": "Hold onto linked binder.\n\nunlinkToDeath is no longer required, (this change in behavior is to\navoid leaks) so holding onto ActivityManager here (still calling\nunlinkToDeath to avoid a log, but may for instance remove all\nunlinkToDeath calls in the future).\n\nExempt-From-Owner-Approval: approval received on AOSP CL, only\n    whitespace difference here.\n\nBug: 134576445\nTest: boot\nChange-Id: I273f77aac2b80ba9be70197cc3842f83a11bbd1c\nMerged-In: I273f77aac2b80ba9be70197cc3842f83a11bbd1c\n(cherry picked from commit 2f34814d1b8f1e62a4f22511c7cb93016d213bff)\n"
    },
    {
      "commit": "becafffaefe0223cb818942655bd42f7b725d561",
      "tree": "5153df5381bd96c6aaf6c957f8d00a129ef14fc5",
      "parents": [
        "be86ab7c08d699ce9718243901771c5563d06d05",
        "2f34814d1b8f1e62a4f22511c7cb93016d213bff"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Jul 08 17:52:30 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 08 17:52:30 2019 -0700"
      },
      "message": "Hold onto linked binder.\nam: 2f34814d1b\n\nChange-Id: I159588250cee3137727a8db02bc3930cc2d7d0c4\n"
    },
    {
      "commit": "2f34814d1b8f1e62a4f22511c7cb93016d213bff",
      "tree": "f117fac9b7834dba35e32b22788d75c0c2482588",
      "parents": [
        "964a74820baeb013430730f8f852690bc5a9183c"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 02 15:59:07 2019 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Jul 08 21:36:57 2019 +0000"
      },
      "message": "Hold onto linked binder.\n\nunlinkToDeath is no longer required, (this change in behavior is to\navoid leaks) so holding onto ActivityManager here (still calling\nunlinkToDeath to avoid a log, but may for instance remove all\nunlinkToDeath calls in the future).\n\nExempt-From-Owner-Approval: approval received on AOSP CL, only\n    whitespace difference here.\n\nBug: 134576445\nTest: boot\nChange-Id: I273f77aac2b80ba9be70197cc3842f83a11bbd1c\n"
    },
    {
      "commit": "947c0f18f5f0836f745ac97e19ae1e9d1e29b6be",
      "tree": "fb2e83e91c22f3216cfd38f582af4d98749640f2",
      "parents": [
        "91eaf16f58f27fba8d963b90c172f28ad6b9c12f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 02 09:28:16 2019 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jul 02 22:36:37 2019 +0000"
      },
      "message": "Audio policy: fix HwModuleCollection::getDeviceDescriptor\n\n  The deprecated method AudioManager.isBluetoothA2dpOn() calls\ngetDeviceConnectionState on APM with an empty address, which\ncaused HwModuleCollection::getDeviceDescriptor to set an empty\naddress on the DeviceDescriptor for the currently connected\nA2DP device. This method is called by MediaRouter.\n  When the address was reset, the java listener for audio device\nconnection monitoring was reporting the connection of an A2DP\ndevice with an empty address, which in turn caused AvrcpManager\nto behave as if the audio device connection failed.\n  If MediaRouter called isBluetoothA2dpOn() before AvrcpManager\nreceived its called for device connection, the error would occur.\n\nBug: 132416679\nTest: call isBluetoothA2dpOn() and check for valid address in dumpsys media.audio_policy\nTest: atest AudioServiceHostTest#testInjectForRecord ; atest AudioHostTest ; atest AudioPlaybackCaptureTest\nChange-Id: I1370edbbca46657506a990855d06a176f07c54d3\n"
    },
    {
      "commit": "fad001d05d2a928d6196978ba94adf95f0297244",
      "tree": "0875e33154326ff4b05afea3ba315710d4407fc5",
      "parents": [
        "e81a326d90dfce1249917b796f69b48fe1c59971"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 11 19:17:57 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 14 15:13:32 2019 -0700"
      },
      "message": "audio policy: mute call RX when SCO volume is 0\n\nSet voice volume to 0 when SCO volume index is 0 to\nallow muting RX audio. when index is not 0, voice volume\nis set to max to allow volume control by headset as before.\n\nBug: 111195322\nTest: check call volume with SCO headset\nChange-Id: I90466b01a9899929cd3e6fb1ac0a4985099497fc\n"
    },
    {
      "commit": "e81a326d90dfce1249917b796f69b48fe1c59971",
      "tree": "ff2150258ac552a5ac5d23a626d4821be434cf36",
      "parents": [
        "b365706b2675fcc16eb14d89db5c3736170c7dd5",
        "6ede98f9b3e3e1988f401d79b625ead653027ccc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 12 01:02:33 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 12 01:02:33 2019 +0000"
      },
      "message": "Merge \"audioservice: add RTT mode observer\" into qt-dev"
    },
    {
      "commit": "6ede98f9b3e3e1988f401d79b625ead653027ccc",
      "tree": "2306e3b551752f70ec01a6d8ed87824743c2ef81",
      "parents": [
        "e0092766d214720c1fd22b8c08ccc7ceeaf4a700"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 11 14:50:30 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 11 14:55:25 2019 -0700"
      },
      "message": "audioservice: add RTT mode observer\n\nEnable audio capture by the Assistant when RTT is ON during a call\nsimilarly to when an accessibility service is in the foreground.\n\nAlso remove log when permission checked for hotword\nand audio output capture fail as those checks are now done\nsystematically.\n\nAlso do not check permission to bypass interruption policy if\nbypass flags are not set.\n\nBug: 132976361\nTest: use voice input during a call with RTT enabled.\nChange-Id: Iff45b0816dac889262ec29ea115f74dea4dc6b6d\n"
    },
    {
      "commit": "4e5f402253592726d05f4864b2f30b740abf15fc",
      "tree": "985acb69bb0c83784662238236e2a9bfd4e1adf7",
      "parents": [
        "90d1d53862638210d848ddedef2600aae35337d3"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Sat Jun 08 02:32:21 2019 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Jun 10 14:06:11 2019 -0700"
      },
      "message": "Fix remote-submix not found for MIX_TYPE_RECORDERS LOOPBACK\n\n[Context]\nWhen a LOOPBACK dynamic audio policy mix PLAYER/RECORDER\nis registered, first the REMOTE_SUBMIX device that will be\nused by the app to capture/play respectively is activated.\n\nEg a mix RECORDER (used to inject audio to apps recording),\nwhen registered will activate an OUT_REMOTE_SUBMIX.\n\nThen the app can open a record/playback track on this\nREMOTE_SUBMIX, which will trigger the other end of the pipe\nto be activated.\n\nFollowing this the playback/Record Tracks that match the\nmix will be routed to the IN/OUT REMOTE_SUBMIX.\n\n[Example for an app FUU]\n 1) App FUU register Playback/record mix\n    2) APM activates out/in remote submix\n 3) App FUU opens track to out/in remote submix\n    4) APM activates in/out remote submix\n 5) tracks matching mix are redirected to the out/in remote submix\n\nWhen an OUT_REMOTE_SUBMIX is activated, it tries to check if it matches\na mix, if it does, it saves the output in the mix (in mOutput).\nThis output is then used to find a matching mix output in\ngetOutputForAttr(). If a mix has no output is is considered inactive.\n\nNote that IN_REMOTE_SUBMIX do not save their input in the mix, the\ninput is queried by APM each time in its mAvailableInputDevices.\n\n[Issue]\nThe issue is that in step (2), when an OUT_REMOTE_SUBMIX is\nactivated (thus for a MIX_TYPE_RECORDERS), no mix is matched because the\nmix is of type IN_REMOTE_SUBMIX as it will be used to route AudioTracks\nin step (5).\nThus no mix output is found in getOutputForAttr and the step (3) fails.\n\nThis is a recent regression as previously the type was not checked when\nlooking up for a mix in step (1).\n\nThe Change-Id of the patch that caused the regression is:\nI4dc7f23bef19a7d47afc2998102da07dde41fbca, its sha1 is:\n679172768d86e29a47b9e15dd56776694128cf59\n\n[Workaround]\nFor now, given the release timing, implement a minimal fix that restore\nthe previous behavior for the OUT_REMOTE_SUBMIX output save lookup.\nAka, make sure to query for a IN_REMOTE_SUBMIX mix in step (2).\n\nStep (4) is fine as the mix type is the same as the REMOTE_SUBMIX type.\n\nAs IN_REMOTE_SUBMIX do not attempt to save their output in the mix, no\nissue is present on this code path.\n\nA proper fix needs to be implemented on master, preferably by having the\nsame device save behaviour on both mix type.\n\nBug: 134068143\nTest: Wifi calling call screening\nTest: atest AudioPlaybackCaptureTest AudioHostTest\nChange-Id: I1547948ae412dbdeb2d85cc62bf18f7ac5f1efc0\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "679172768d86e29a47b9e15dd56776694128cf59",
      "tree": "f96e84cd5dcf55079976366eb1d8c8be210262dd",
      "parents": [
        "5592ee268507a8ee90fd374530e55a6279dbf0de"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed May 22 11:54:37 2019 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri May 24 07:27:52 2019 -0700"
      },
      "message": "APM: make AudioPolicyMixCollection inherit from Vector\n\n  Modify AudioPolicyMixCollection to inherit from Vector instead\nof KeyedVector so all so the collection of mixes stays in the same\norder as the mixes were added.\n  Also make the mix selection take the deviceType into consideration,\nnot just the address to enable the same address to be associated to\ndifferent devices.\n\nBug: 131090322\nTest: see bug for multi bus scenario\nTest: atest AudioPlaybackCaptureTest\n\nChange-Id: I4dc7f23bef19a7d47afc2998102da07dde41fbca\n"
    },
    {
      "commit": "5592ee268507a8ee90fd374530e55a6279dbf0de",
      "tree": "2a2ef3e15e9073a81c23fdf667b128963de98f5b",
      "parents": [
        "f9b3d532eb7422446d7efbd54b15fa87ea60d68a"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed May 22 08:00:05 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 22 18:57:28 2019 -0700"
      },
      "message": "audiopolicy: fix source client lifecycle\n\nUpon startAudioSource -\u003e connectAudioSource, the source client\nis attached to the output.\nUpon stopAudioSource -\u003e disconnectAudioSource, the source client is\nnever removed.\n\nAs a result, if the same client is trying to call startAudioSource again,\nasthe client is already attached, getClient will lead to bailing out in\nconnectAudioSource and the source will not be started.\nThe stopAudioSource if called would claim that the client refcount is already 0.\n\nAny following call to start would fail again on outputDesc-\u003estart as invalid\nas the profile fails on canStartNewIo.\n\nThis CL fixes this issue by removing the client source desc on disconnectAudioSource.\n\nBug: 133367802\nTest: build \u0026 run\n\t    AudioPolicyEmulatorTests --gtest_filter\u003d*AudioSourceEffectTest*\n      multiple consecutive times.\n\nChange-Id: I78370be248ff24cf4135d51f709d965c5bfae4e8\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "22fcda29e5982a052d2f6c6ce312d1f65edc7920",
      "tree": "5212b9474c047e7f68b73e46b9d63b60103541de",
      "parents": [
        "4fc900d75601247d565a736decb36381165f6d83"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 17 16:28:47 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 17 16:28:47 2019 -0700"
      },
      "message": "audio policy: fix camera shutter sound\n\nFix regression in camera shutter sound when system stream\nvolume is 0.\n\nBug: 132696227\nTest: repro steps in bug.\nTest: regressions when camera sound is enforced\nChange-Id: I76b4a5ee041f97c5f771c003bf4f99327d797096\n"
    },
    {
      "commit": "b57bf1667082ddc329828895559c46edb1997cae",
      "tree": "884eb3f2f34f760499966ac644a039ea50842260",
      "parents": [
        "b8378c37cc7b837a7069c2483cbf0d6589520b0c",
        "97bab91e628cb0b8029a422939e2ceef83bf6a7b"
      ],
      "author": {
        "name": "Oliver Nguyen",
        "email": "olivernguyen@google.com",
        "time": "Thu May 16 23:05:00 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 16 23:05:00 2019 +0000"
      },
      "message": "Merge \"Mark setAppState as pure virtual.\" into qt-dev"
    },
    {
      "commit": "a6d436ca2741657360882e54d868937127a430a8",
      "tree": "c841cb6827dcc9b8b208cf4255bd63bf6df9731c",
      "parents": [
        "6de2d24bd940e74141a418fe5f6ad395e77a784e",
        "9a645a9355f697182bd11ba7fbdddae7e0b13708"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Thu May 16 01:56:41 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 16 01:56:41 2019 +0000"
      },
      "message": "Merge \"audio: fix index of input vector\" into qt-dev"
    },
    {
      "commit": "9a645a9355f697182bd11ba7fbdddae7e0b13708",
      "tree": "d4f4457defd2de1bab4d11e96b4120efdfcf9489",
      "parents": [
        "f95c698108b608e6ebf86e7450a9a2464e3ae264"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Wed May 15 12:15:32 2019 +0800"
      },
      "committer": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Thu May 16 01:56:03 2019 +0000"
      },
      "message": "audio: fix index of input vector\n\nBug: 131666114\nTest: manual\nChange-Id: I7de750aa2f212e6b7e6296ce2caf544a0188902b\nSigned-off-by: Carter Hsu \u003ccarterhsu@google.com\u003e\n"
    },
    {
      "commit": "97bab91e628cb0b8029a422939e2ceef83bf6a7b",
      "tree": "7b9a8dba80475149dfc7df42e927ea14facd72f2",
      "parents": [
        "00ffd9e0c4cd97529b77248eae5c819a7d3f8a13"
      ],
      "author": {
        "name": "Oliver Nguyen",
        "email": "olivernguyen@google.com",
        "time": "Tue May 07 13:12:20 2019 -0700"
      },
      "committer": {
        "name": "Oliver Nguyen",
        "email": "olivernguyen@google.com",
        "time": "Mon May 13 21:07:46 2019 +0000"
      },
      "message": "Mark setAppState as pure virtual.\n\nFixes build issues with -O0, due to missing vtable entries.\n\nBug: 116873221\nTest: Build with -O0\nTest: make NATIVE_COVERAGE\u003dtrue COVERAGE_PATHS\u003dframeworks/av\nChange-Id: Ice06940f4ccc55609abf0d820f9b3c6d4e43d2c6\n(cherry picked from commit 24fe48807f4f2d86677459bb5b1a9ca2cac757ff)\n"
    },
    {
      "commit": "68f7b18e8edaabf6c6c67b350d3126c11ba590ff",
      "tree": "d4e8c5fe2157ef8843fb31baa6b49744ca294254",
      "parents": [
        "d4e2ab1785d813aa336479a57de634f30fb13a92",
        "429844193f7149f3b642f1f260a7f20398eb3778"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat May 11 02:47:56 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat May 11 02:47:56 2019 +0000"
      },
      "message": "Merge \"audio policy: add permission check for privileged attributes flags\" into qt-dev"
    },
    {
      "commit": "d4e2ab1785d813aa336479a57de634f30fb13a92",
      "tree": "eb7ee11fab376ca0fc7bf75c7490e6b508ccdb89",
      "parents": [
        "eb99a27ffabbdf1795c063bd630f437a5d446052",
        "6e16157202e8c273d3c84be001e68bf7b13c9ee8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat May 11 02:46:59 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat May 11 02:46:59 2019 +0000"
      },
      "message": "Merge \"audio policy: fix channel match rule for input profiles\" into qt-dev"
    },
    {
      "commit": "6e16157202e8c273d3c84be001e68bf7b13c9ee8",
      "tree": "ec83ddec857579985597cad7ffd8be10c25f187c",
      "parents": [
        "459e59820f8914a10c1d015fb4fa09b723cacaca"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 10 15:53:08 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 10 17:44:09 2019 -0700"
      },
      "message": "audio policy: fix channel match rule for input profiles\n\nModify channel mask match rule for input profiles in order to\nfavor profiles with positional masks and less than 2 channels.\nThis reflects the audio HAL convention to not list index channel\nmasks for less than 2 channels.\n\nBug: 131943885\nTest: repro steps in bug.\nChange-Id: I85e06f3afc2833b6aa7d52675bfd1ffda524fbcf\n"
    },
    {
      "commit": "b09f621af65848cb1c9336091d857ba2a8e6fdf8",
      "tree": "d0affd474b5da86022507ff88fbb82f9a748b4da",
      "parents": [
        "b14e4295b2cd6aebb77d67108dc6b639f24d25d2",
        "e2f34be1b70a564a9e7866934f0b626e98be999f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 10 23:20:58 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 10 23:20:58 2019 +0000"
      },
      "message": "Merge \"APM: uid-device affinity: fix for multiple concurrent apps\" into qt-dev"
    },
    {
      "commit": "429844193f7149f3b642f1f260a7f20398eb3778",
      "tree": "96fc240567b6c528242f4a88582b587e7ba09c48",
      "parents": [
        "459e59820f8914a10c1d015fb4fa09b723cacaca"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 09 17:57:03 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 10 15:38:12 2019 -0700"
      },
      "message": "audio policy: add permission check for privileged attributes flags\n\nAdd check for privileged permission if attributes\nflags BYPASS_INTERRUPTION_POLICY or BYPASS_MUTE are set.\n\nBug: 131873101\nTest: Manual smoke tests for audio playback.\nTest: Emergency cell broadcast in\nChange-Id: I073cf669f606f0d081ff5c8d19f39b5e12efe297\n"
    },
    {
      "commit": "e2f34be1b70a564a9e7866934f0b626e98be999f",
      "tree": "e57d0b82ebd689f5734c8bedd84ecbe091d3dd72",
      "parents": [
        "3350096bf8e52b2d96f7b7ba95642d92c05e8f09"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu May 09 12:31:06 2019 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri May 10 09:52:56 2019 -0700"
      },
      "message": "APM: uid-device affinity: fix for multiple concurrent apps\n\nAudio mix rules that contain both a match and exclude for a uid\n  or usage are ignored for routing evaluation. The implementation\n  of the uid-device affinity caused uid matches and exclusions to\n  be added to any mixes, causing previously valid mixes to be\n  discarded in the routing logic.\nThe fix consists in implementing the uid-device affinity by only\n  applying uid exclusions on mixes that:\n  a/ are compatible with the concept (mixes of players that are\n     render only),\n  b/ do not route to the selected devices\n  c/ do not have a uid match rule (such mixes are already exclusive\n     to the uid to match)\n  d/ do not already have a uid exclusion for the uid\nFix removeUidDeviceAffinities() that skipped the wrong mixes.\n\nBug: 124319394\nBug: 131180578\nTest: atest AudioHostTest#testUidDeviceAffinity\nChange-Id: I813c4cfb15956e56599740948775c32562266c21\n"
    },
    {
      "commit": "b904fe4799f1c239ef1170b016022929dd5766cb",
      "tree": "6ceaca0c0e1861ea3f39f53d4a65e7a4a056526d",
      "parents": [
        "2b7127f46d5987907cbb1edaf26d20f305b685fa",
        "04ed046665ff8466b061eccf63e21fde10508441"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 10 03:06:19 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 10 03:06:19 2019 +0000"
      },
      "message": "Merge \"AudioPolicy: Improve logging on Remote submix errors\" into qt-dev"
    },
    {
      "commit": "04ed046665ff8466b061eccf63e21fde10508441",
      "tree": "316394a2d114e1b45e4e79cf4c3734162f3b84e2",
      "parents": [
        "48aa740fb62459d02b9f23e27205c51d37f971d8"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu May 02 17:53:24 2019 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri May 10 01:31:29 2019 +0000"
      },
      "message": "AudioPolicy: Improve logging on Remote submix errors\n\nBug: 131064451\nTest: atest AudioPlaybackCaptureTest\nChange-Id: I13e662514de11e66f7ca145b320f351640a55ddb\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "2b7127f46d5987907cbb1edaf26d20f305b685fa",
      "tree": "1a8d0f0606fa1fff13811ce75d6afe05bc7c5405",
      "parents": [
        "ceb7cc1f61d7475a2eeba807dfb5272fa0f5c035",
        "6ce27e5ffa056948b506bf7320a9f9c961150684"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu May 09 23:37:35 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 09 23:37:35 2019 +0000"
      },
      "message": "Merge \"connect mediametrics service to statsd\" into qt-dev"
    },
    {
      "commit": "486194f79edc78ef99f0f1d29ec02e9277bd20ac",
      "tree": "89b8d125ad2bc293f5fabdb58f535f900c59265b",
      "parents": [
        "9794a84308b31f6e17915cb29c99282f4b75cd11",
        "c1de2dfe8602f10ed3086ab601b626bec632b198"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 09 03:48:36 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 09 03:48:36 2019 +0000"
      },
      "message": "Merge \"Fix NPE when trying to get input device for attributes.\" into qt-dev"
    },
    {
      "commit": "34a2d4c80d002751435e0ab552e9513608e36438",
      "tree": "7e2f228f2630415f4e7fa71a8a717f603e141711",
      "parents": [
        "e6f3293b77b38867f553987e24dc82ee004071af",
        "d0cce2ebcb9e4f95729d1f5da447f345428a8315"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Thu May 09 00:49:10 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 09 00:49:10 2019 +0000"
      },
      "message": "Merge \"audio: correct the boundary of soundtrigger index\" into qt-dev"
    },
    {
      "commit": "c1de2dfe8602f10ed3086ab601b626bec632b198",
      "tree": "68241794ce067005b2770a31b232588ecb4c33fc",
      "parents": [
        "a8cc6d418bdf459a0c0f79326b09faa45645850c"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue May 07 14:26:40 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed May 08 15:19:13 2019 -0700"
      },
      "message": "Fix NPE when trying to get input device for attributes.\n\n1. Return error when remote submix device is null. Remote submix device\ncould be null in some case, such as device address error. Returning\nerror to avoid native crash.\n2. Unregister policy mix if set device connection fails. In that case,\nget input device could fail when policy mix is not found.\n\nBug: 131906484\nTest: Manually\nChange-Id: I03ab2bf217341b672c14adfba96d92ad9b453b01\n"
    },
    {
      "commit": "e905b6b18738572062e9c30735539836af683643",
      "tree": "77d202a1cc06ca2f620afb7fae52775bc4ab81dd",
      "parents": [
        "2f81c33460670e05f3cd8ddeab8b991c2663ee87",
        "329ddab0a26a06f828314860d290b5d6fb3bd0c9"
      ],
      "author": {
        "name": "Abhijith Shastry",
        "email": "ashastry@google.com",
        "time": "Wed May 08 17:52:41 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 08 17:52:41 2019 +0000"
      },
      "message": "Merge \"Do not cap volume for ring stream when voice stream has been programatically muted.\" into qt-dev"
    },
    {
      "commit": "d0cce2ebcb9e4f95729d1f5da447f345428a8315",
      "tree": "6be11d80af78cfa1f17c1a5b8959e8fffd8b791e",
      "parents": [
        "2ddd17ca5c49fe02c459b7026d4c271bf76c4e3c"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Fri May 03 17:36:28 2019 +0800"
      },
      "committer": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Wed May 08 14:29:05 2019 +0000"
      },
      "message": "audio: correct the boundary of soundtrigger index\n\nBug: 129111371\nTest: manual\nChange-Id: Ic3e2d5b8b6b53be2184307b076ba8680c6f81a29\nSigned-off-by: Carter Hsu \u003ccarterhsu@google.com\u003e\n"
    },
    {
      "commit": "329ddab0a26a06f828314860d290b5d6fb3bd0c9",
      "tree": "93acc84d44b31debeae888ec8cbf28ee850062e2",
      "parents": [
        "34a740d5360edd1f0bfd6a13b4d75667f550a512"
      ],
      "author": {
        "name": "Abhijith Shastry",
        "email": "ashastry@google.com",
        "time": "Tue Apr 23 11:53:26 2019 -0700"
      },
      "committer": {
        "name": "Abhijith Shastry",
        "email": "ashastry@google.com",
        "time": "Tue May 07 15:55:24 2019 -0700"
      },
      "message": "Do not cap volume for ring stream when voice stream has been programatically\nmuted.\n\nTest: Manual\nBug: 131171138\nChange-Id: Iea9aaa618cfef60cae592a8a21026d59212c0740\n"
    },
    {
      "commit": "a171e359408050194cbc68f3fa37f2b8d8ca361c",
      "tree": "8d4f6529347d0b6d155b731340603b87002ca821",
      "parents": [
        "af0b1c1b5cd67cafa81dbcd1ccb7eb68821173f9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 07 13:04:45 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 07 13:04:45 2019 -0700"
      },
      "message": "audio policy: fix concurrent capture policy\n\nRestrict concurrent capture scenarii by not allowing 3rd party\napplications to capture concurrently\n\nBug: 131758164\nTest: manual test of main capture use cases\nTest: CTS tests for audio recording\nChange-Id: Ica17d6eea81671eeb872fe55c1e7e06ec9ad279b\n"
    },
    {
      "commit": "6ce27e5ffa056948b506bf7320a9f9c961150684",
      "tree": "d3c75842dba2db375a7b3b4413e902ecccbbb5ef",
      "parents": [
        "ef7eaaf8d873e9d832673fd0a8e07371fa47a0a0"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Fri Feb 15 10:58:05 2019 -0800"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon May 06 11:35:11 2019 -0700"
      },
      "message": "connect mediametrics service to statsd\n\ntake the collected media.metrics (as they arrive) and push a copy over\nto statsd, the statistics logging subsystem.\ngather data, wrap in protobufs apppropriately, and submit it to statsd.\n\nBug: 118782504\nTest: statsd\u0027s test_drive app\nChange-Id: Ieb82c43633851075e9eaf65d2a95c8cba87441ea\n"
    }
  ],
  "next": "34a740d5360edd1f0bfd6a13b4d75667f550a512"
}
