)]}'
{
  "log": [
    {
      "commit": "342d7bcf44b3edcce763f0417ad0a13b11bde285",
      "tree": "795ca5539a3e878e3eb76676f6d13f3a06874e03",
      "parents": [
        "1ab2344f6dd1b913c9e20c4afaba96105b00074c",
        "d422b5f2ddb23eab790c8e04dc161142c65e01a2"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Oct 11 21:50:40 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 11 21:50:40 2019 +0000"
      },
      "message": "Merge \"audio policy: fix capture policy for accessibility\""
    },
    {
      "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": "d422b5f2ddb23eab790c8e04dc161142c65e01a2",
      "tree": "d8836bbcf15d00f660f5ac5531d5a860416ff07a",
      "parents": [
        "1a5100d4ad493bfa6a48b76c2c9276af7aa1d689"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 25 18:04:29 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 08 17:35:46 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\nMerged-In: I864be785752f27201d45ce24f95013de6391dbd6\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": "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": "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": "5b023ebc681f8b41da3a862d161453931a01704f",
      "tree": "238e7b56a3de805a8b37d39a5e91d40ad2862d54",
      "parents": [
        "e9ad58533c38be8ec0f7c9ebd3b2e6e850354f82"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@quicinc.com",
        "time": "Wed Jul 03 11:20:36 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Oct 02 10:18:41 2019 -0700"
      },
      "message": "audiopolicy: add null pointer check for primary hw\n\nWhen sound card detection fails, primary HW cannot be opened.\nadd null pointer check to avoid further crashes in audioserver.\n\nBug: 136060200\nTest: make\nauthored-by: Weiyin Jiang \u003cwjiang@codeaurora.org\u003e\nChange-Id: Ief07a36ca8aed0e6013d533bd0aa66e122e3070c\nMerged-In: Ief07a36ca8aed0e6013d533bd0aa66e122e3070c\n"
    },
    {
      "commit": "97a4718ab9f51476ea519b1ee6b70389806c1ddc",
      "tree": "f7e5465ed6bc2154f1e5321b5d7a86051d383fd0",
      "parents": [
        "a43fcd7ed6b1cc8930e2c3d8416b87cb8e9e02e4"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@quicinc.com",
        "time": "Wed Jul 03 11:15:33 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 01 17:09:49 2019 -0700"
      },
      "message": "av: Add AUDIO_OUTPUT_FLAG_MMAP_NOIRQ flag.\n\nAdd AUDIO_OUTPUT_FLAG_MMAP_NOIRQ flag in the relavant flags to check\nfor if the relavant profiles are present or not\n\nBug: 136493985\nTest: make\nauthored-by: Samyak Jain \u003csamyjain@codeaurora.org\u003e\nChange-Id: I8b8b9fdfca2bb6e5f824f3b79ac42b7de5545706\nMerged-In: I8b8b9fdfca2bb6e5f824f3b79ac42b7de5545706\n"
    },
    {
      "commit": "61e07e3f03c62f39a4b88e761df8c5614474fb31",
      "tree": "8daf074c08d628b660884ed2c9269acf95a3ab3b",
      "parents": [
        "839cd0691bd3265343e87fbb9545ed27319b99c1"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 01 15:07:19 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Oct 01 10:54:50 2019 -0700"
      },
      "message": "AudioPolicyManager: Handle error from setInputDevice in startInput\n\nThe error must not be ignored as otherwise the Java layer\nthinks that recording has started successfully.\n\nBug: 136279123\nTest: reproduce AudioRecordingConfigurationTest failure on cuttlefish,\n      check test failure output, the failure must be\n      \"junit.framework.AssertionFailedError: expected:\u003c3\u003e but was:\u003c1\u003e\"\n\nChange-Id: I82bc3a43bf679cfb03d4246d07615d3fd4dac409\nMerged-In: I82bc3a43bf679cfb03d4246d07615d3fd4dac409\n"
    },
    {
      "commit": "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": "e13c679e4afba66097018516eba9ea15d15bbc7a",
      "tree": "216ecb3fe033354b1d07ce88aa8ccecb15f4c3fa",
      "parents": [
        "3e0b02e336f3b5d59c5162e743d10d86be63c66b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue May 14 10:32:51 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Sep 25 14:59:42 2019 -0700"
      },
      "message": "audiopolicy: Load the engine library dynamically\n\nAndroid provides 2 audio policy engines:\nlibaudiopolicyenginedefault and\nlibaudiopolicyengineconfigurable. This change makes the engine\nto be loaded dynamically based on the configuration (currently\nthe engine name is hardcoded into AudioPolicyConfig). Dynamic\nloading allows building and installing of both libraries without\nany conflicts.\n\nTechnical changes:\n\n - AudioPolicyManagerInterface renamed to EngineInterface\n   for clarity;\n\n - For the purpose of dynamic loading, APM does not depend\n   anymore on the EngineInstance class. The class got removed\n   from the default AP engine, but left in the configurable engine\n   because it is also used by its plugins;\n\n - Added EngineLibrary class to encapsulate dynamic loading\n   of the AP engine. The class name EngineInstance is repurposed\n   for a smart pointer to EngineInterface;\n\n - services/audiopolicy/managerdefault/Android.mk converted\n   into Android.bp;\n\n - Added engine loading failure test;\n\nBug: 132639720\nTest: sanity tests for audio; audiopolicy_tests\nChange-Id: I0581569a172f810e030aec879225e817bfa7851a\nMerged-In: I0581569a172f810e030aec879225e817bfa7851a\n"
    },
    {
      "commit": "fd5b2cf8cd6073ef663edf7f87bff9573a97bf64",
      "tree": "7f095e5dfd7f440aa132534d4eef4fa616fc1397",
      "parents": [
        "d3ce88c4296b7019e20a9db5a87190face582b88"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri May 10 14:15:52 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Sep 23 17:13:04 2019 -0700"
      },
      "message": "audiopolicy: Remove legacy audio_policy configuration\n\nRemove the \"template\" configuration file and the header file.\n\nBug: 132435217\nTest: make\nChange-Id: I0b8ae921ac046e11b020d5766a60f9b341e1d6ee\nMerged-In: I0b8ae921ac046e11b020d5766a60f9b341e1d6ee\n"
    },
    {
      "commit": "d3ce88c4296b7019e20a9db5a87190face582b88",
      "tree": "2a60d9b0f1cbd1994fa16730d17eef413b63c628",
      "parents": [
        "09df62407d61b4a6172d4d122aa1676028a88f14"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri May 10 11:26:52 2019 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Sep 23 17:10:29 2019 -0700"
      },
      "message": "Remove usages of USE_XML_AUDIO_POLICY_CONF\n\nThe usages were only checking that the property is set\nto catch attempts to update to Q while still using legacy\nconfigurations.\n\nBug: 132435217\nTest: build various devices\nChange-Id: Ib8bda8ab7f791ac5cd3875816de46a42f0a4cbb6\nMerged-In: Ib8bda8ab7f791ac5cd3875816de46a42f0a4cbb6\n"
    },
    {
      "commit": "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": "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": "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": "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": "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": "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": "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"
    },
    {
      "commit": "34a740d5360edd1f0bfd6a13b4d75667f550a512",
      "tree": "6565a7a0c7bda1c3a1e1b5594a8249b4ed38879d",
      "parents": [
        "92e11689bbbdab1fed786436c624d6530d56c848",
        "16c66dd1e60d6b65b846f371c2ae4bf2b673545f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon May 06 17:07:54 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 06 17:07:54 2019 +0000"
      },
      "message": "Merge \"aaudio: fix multichannel legacy streams\" into qt-dev"
    },
    {
      "commit": "16c66dd1e60d6b65b846f371c2ae4bf2b673545f",
      "tree": "f93c6935379a10245958db1e490208a31894a1bc",
      "parents": [
        "2ddd17ca5c49fe02c459b7026d4c271bf76c4e3c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 01 17:54:10 2019 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 03 15:44:44 2019 -0700"
      },
      "message": "aaudio: fix multichannel legacy streams\n\nTwo fixes for multichannel playback over USB from\nAAudio legacy streams:\n1: AAudio use a channel index mask and not a positional mask\nwhen channel count is greater than 2.\n2: audio policy gives priority to an output mixer which can support\nthe requested channel mask without downmixing\n\nBug: 131685020\nTest: play multichannel audio over USB\nChange-Id: I13f2da48d47fcf81f522096d90ba59a89379cffb\n"
    },
    {
      "commit": "4b2a821891b8c271ca7e1dc4a152220c923cd1e3",
      "tree": "874af6d655b6643388384232e22ce386d1a85e73",
      "parents": [
        "2ddd17ca5c49fe02c459b7026d4c271bf76c4e3c"
      ],
      "author": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Fri Apr 26 23:48:59 2019 -0700"
      },
      "committer": {
        "name": "Oscar Azucena",
        "email": "oscarazu@google.com",
        "time": "Thu May 02 17:40:44 2019 -0700"
      },
      "message": "Enabled removeUidDeviceAffinities\n\nAdded code to removeUidDeviceAffinities in AudioPolicyManager.cpp\n\nBug: 131447931\nTest: ran test in android auto multizone audio and policies were\ncorrectly removed.\n\nChange-Id: I70a8452d6c4ce5812f2c3f03ddf10b96cb0bb947\n"
    },
    {
      "commit": "66ea39290308e4851a5c6fe149e576b7d6249e5f",
      "tree": "f0fe4950c8d77207be8ce281623f9345e448e478",
      "parents": [
        "09940bbc0e7eb687c1b08c1ba0252852752f68ab",
        "2996f67767ff90617cc5f7801c7bd8dc67c9dd66"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 25 18:01:03 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 25 18:01:03 2019 +0000"
      },
      "message": "Merge \"AudioPolicy/AudioFlinger: Track AudioRecords via Record IDs\" into qt-dev"
    },
    {
      "commit": "2996f67767ff90617cc5f7801c7bd8dc67c9dd66",
      "tree": "d20af841b6537ca44a0b1bf7a839e0ba3f9c7a91",
      "parents": [
        "3208826f676b1be78e1c04692d7f17249e45c3ea"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Apr 18 12:29:59 2019 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Apr 24 14:49:52 2019 -0700"
      },
      "message": "AudioPolicy/AudioFlinger: Track AudioRecords via Record IDs\n\nThe client must provide a unique Record ID (RIID) when creating\nan AudioRecord. This RIID is passed down to AudioInputDescriptor\nin AudioPolicyManager which sends configuration updates\nvia IAudioPolicyServiceClient callback.\n\nBy supplying RIID, the Audio Service can coalesce start / stop\nevents coming from clients (apps) with recording configuration\nupdate events.\n\nFor AAudio MMap clients everything is handled at the server\nside because they correspond directly to audioserver objects.\n\nBug: 123312504\nTest: android.media.cts.AudioRecordingConfigurationTest\n      AudioRecordTest#testAudioRecordInfoCallback\n      MediaRecorderTest#testAudioRecordInfoCallback\n      manual testing using Oboe and Solo test apps\n\nChange-Id: I3d32241752d9a747736606dc4cb1e068e6b7aa3b\n"
    },
    {
      "commit": "dcfecd0db52d7880566662f8dd7cfd623b500471",
      "tree": "218456a57ec4bc3187faaff27b02219e022eb573",
      "parents": [
        "962ba215fbffcf27b3c69827a9221e0a82108ff0"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Apr 17 16:58:56 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 24 09:04:14 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: align with PFW unix socket convention\n\nThis CL aligns the engineconfigurable PFW top file to the convention\nadopted within parameter-framework.\n\nBug: 130284799\nTest: make\n\nChange-Id: I146430a1a6618d73273dbfd85b060d9fd04a6f9a\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "962ba215fbffcf27b3c69827a9221e0a82108ff0",
      "tree": "e0ef04ba1857443ef150e35e146522c84fcbb41f",
      "parents": [
        "48601f013a60c916187591e6e05dfaf76a87b698"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Apr 03 16:21:39 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 24 09:03:17 2019 -0700"
      },
      "message": "audiopolicy: fix build issue by going on switching to bp\n\nBug: 130284799\nTest: make\n\nChange-Id: I60d41eaa41564fecdeef6d4cb223a8367883db50\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "9cd03f4bc01d2c5b05f544de50f48615ef71dbef",
      "tree": "f2b212709d1f21dbcd12072a51d53ef93fb0d6e5",
      "parents": [
        "27d12e5b832ceae7f2c727a4715a1e40c3717d53",
        "ae5b0043994b5a5410bde2361164c9457ff8e5f6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 24 01:22:51 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 24 01:22:51 2019 +0000"
      },
      "message": "Merge \"audiopolicy: engineconfigurable: update structure for Q\" into qt-dev"
    },
    {
      "commit": "4fe9f3e9ad145980e244aa84ecf4204857036a2f",
      "tree": "76995d16869ad9c77e0c5a872bfad5a8c75ec7a7",
      "parents": [
        "37a9adef14ecb54e487780210664ea423a2771f6",
        "a1e9bbb1dfcc8a2967ed75c5543c85751da00ee4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 23 22:03:05 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 23 22:03:05 2019 +0000"
      },
      "message": "Merge \"audiopolicy: engineconfigurable: fix phone configuration\" into qt-dev"
    },
    {
      "commit": "ee326db2bbd59b81f1ca5433d9a68b76b2bfe3b4",
      "tree": "02763a786e5cfb99b1b4aa190ef3a83c37bc1af3",
      "parents": [
        "9730f4d7d27c49bfdfa69f3b7555b5a641a8499d",
        "df7f0a201b4b91ee86bd0b8d3a2a05beba9f46f4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 23 19:56:20 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 23 19:56:20 2019 +0000"
      },
      "message": "Merge \"audiopolicy: engineconfigurable: fix build issues on Q environment\" into qt-dev"
    },
    {
      "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": "ae5b0043994b5a5410bde2361164c9457ff8e5f6",
      "tree": "996f5fa3e7824d4ab83dbc7817893e48afec87f1",
      "parents": [
        "a1e9bbb1dfcc8a2967ed75c5543c85751da00ee4"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Apr 03 13:32:39 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 18 18:35:57 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: update structure for Q\n\nBug: 130284799\nTest: make\n\nChange-Id: I8cb2a9e60c9ad55829fa5d7caa7bcd0cf444dc05\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "a1e9bbb1dfcc8a2967ed75c5543c85751da00ee4",
      "tree": "1e9e4009a0d38eff8b20110dfe8495f8aa773f85",
      "parents": [
        "df7f0a201b4b91ee86bd0b8d3a2a05beba9f46f4"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Wed Apr 03 13:32:14 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 18 18:35:32 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix phone configuration\n\nBug: 130284799\nTest: make\n\nChange-Id: I84230302af0b22dfc5b279df14c69c66836e6851\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "df7f0a201b4b91ee86bd0b8d3a2a05beba9f46f4",
      "tree": "d5843054d5d706162f2ba31c48d9023b5a0f64ef",
      "parents": [
        "8263e3519b6801f019e471efe4a6045b7046e4d3"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue Apr 02 17:42:15 2019 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 18 18:34:14 2019 -0700"
      },
      "message": "audiopolicy: engineconfigurable: fix build issues on Q environment\n\nThis CL fixes the compilation issues met while generating configuration files.\n\n@todo: TEMPORARY_DISABLE_PATH_RESTRICTIONS\u003dtrue is still required to use\nsubprocess.Popen([\"domainGeneratorConnector\",...) on external/parameter-framework\n\n@todo: CL mixing in parameter-framework leading to validation failure\n\nBug: 130284799\nTest: make\n\nChange-Id: I495026781af63f3c3a538b00fe467d39f58baa70\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\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\""
    }
  ],
  "next": "d0e36ea48dcda1c5d5fa30753cba171360487da5"
}
