)]}'
{
  "log": [
    {
      "commit": "7f0f4312d70c0712b23c3af594e0f8ba02bab742",
      "tree": "ab0da85993e7a9d7a643bebbc9fcb9254710a7fc",
      "parents": [
        "88a1999cbae5c555d2e10fdc3e8ce8b91b641a67"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 18 10:47:14 2019 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jan 18 10:50:51 2019 -0800"
      },
      "message": "audi policy manager: fix use after free in initialize()\n\nFix regression introduced by commit 11d30104 in cleanup loop in\nAudioPolicyManager::initialize().\n\nBug: 123080575\nTest: make\nChange-Id: I048eeb5f5c6e6bc83dd2b31af4dd600bc07ab1a2\n"
    },
    {
      "commit": "b141c526eac14ad0f92c9ec6aae6a3b3ebc35708",
      "tree": "230c5d40ac6c887d5d2b9049a67c615e0c46e6e3",
      "parents": [
        "716e1435b2b0af38c801f2bf3872b9edc2ba7c33"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Mar 12 11:47:40 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 15 11:09:30 2019 -0800"
      },
      "message": "audiopolicy: apm: Fix segfault when using bus device without Policy Mix\n\nTest: manual audio smoke tests\nChange-Id: Ic9ecd5928931d63d42cecea7283c7282ec43ebc0\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "716e1435b2b0af38c801f2bf3872b9edc2ba7c33",
      "tree": "f1ef7a9110c4ff61e73f2da9a9cec97b15ea9254",
      "parents": [
        "11d301045991dd66bf3f64ba510e069b7c09fedb"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Jan 14 16:58:59 2019 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 15 11:09:13 2019 -0800"
      },
      "message": "audiopolicy: fix rsubmix / device with dynamic address regressions\n\nOrphan devices (aka devices not declared in configuration file) used to be\nmanaged by apm::mAvailable\u003cOutput|Input\u003eDevices and affinity with profile\nwas done by type only.\nAs the device affinity with profile is now enforced by checking with descriptor\nrather than with type, profile\u0027s supported devices list shall be dynamically\nupdated.\n\nTest: manual audio smoke tests\nChange-Id: I5e8092968bbdb03ac7dc1aa1a3f15a0bc1b09251\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "11d301045991dd66bf3f64ba510e069b7c09fedb",
      "tree": "d9aa2e368424bc164a81f5bdcddef1fe328cdca1",
      "parents": [
        "526aa572bbc5dd1fa1b103a98d9f91a758d8d5c4"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Fri Nov 02 16:09:09 2018 +0100"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 15 11:08:17 2019 -0800"
      },
      "message": "audiopolicy: apm: Prepare the future: use DeviceDescriptor/DeviceVector\n\nThis patch updates the policy manager and common to widely use (vector of)\ndevice descriptor rather than the device type mask each time it is possible.\nIt will allow taking into account the address of the device.\n\nTest: manual audio smoke tests\nChange-Id: I822097f1240d379b2f89aaad1e6609059942e61c\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "52e19d498d28d176c754740b55c025deca70d990",
      "tree": "4022e604169245f585428cabbe3d4318dd9677c4",
      "parents": [
        "53b94f90f542a245e10af849bbc05980cfd70175",
        "20729a775fb11b0d20abfe13b156b1e11ff2bb46"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 05 02:02:39 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 05 02:02:39 2019 +0000"
      },
      "message": "Merge \"Use setAddress to set microphone address when it is empty.\""
    },
    {
      "commit": "20729a775fb11b0d20abfe13b156b1e11ff2bb46",
      "tree": "8ce7765746c27d244dfa4f3470ff01ddc2d46ee1",
      "parents": [
        "77a428b58b1ab5d5f7212d8b1d4dbac20a985018"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jan 04 16:01:55 2019 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Jan 04 16:01:55 2019 -0800"
      },
      "message": "Use setAddress to set microphone address when it is empty.\n\nIt is impossible to set address for input device via address(). Use\nsetAddress instead.\n\nBug: 122330994\nTest: run cts\nChange-Id: Ia588ad0b5c0d71dc532422bc2434105716b924c9\n"
    },
    {
      "commit": "bda70da1f0fb32d37abd704ff8618e55661be0a9",
      "tree": "a850374439d404da29938e2b038457926197d826",
      "parents": [
        "abf2929e8d084d2ca99d4d8712abbf31c2cb5178"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Dec 19 07:30:15 2018 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jan 02 12:27:35 2019 -0800"
      },
      "message": "Dynamic audio policies: multi-zone through uid/device affinity\n\nSetting audio device affinity for a given uid augments all\n audio mix criteria that do not route to the given devices\n to exclude the uid.\nAudioPolicyManager: after changing the device affinity,\n check the outputs addressing the devices to re-evaluate\n audio routing\n\nBug: 111647296\nTest: requires device with routing policy started by CarService\nChange-Id: I72de54ae067151fe6ac2ec43b78fe544a9fd9888\n"
    },
    {
      "commit": "31cb08bc991cef0d0d45d0b09bb29a2901f6c077",
      "tree": "8f974754db88aed47b4cd856dee4d7660968bb68",
      "parents": [
        "1b5d1cd06f91f1f777553cd3caa9494c3d960bb7",
        "e78b676a4de85f228ae4d717f225c0cf00dbe767"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 20 22:52:26 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 20 22:52:26 2018 +0000"
      },
      "message": "Merge \"audio policy: fix flag matching in output selection\""
    },
    {
      "commit": "e78b676a4de85f228ae4d717f225c0cf00dbe767",
      "tree": "131b2878cc137d1757b4bdb71026ee94046f773f",
      "parents": [
        "dac7329f1ef3c3e70b8b1ce673c35df1dfebe2e0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 19 16:29:01 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 19 18:10:16 2018 -0800"
      },
      "message": "audio policy: fix flag matching in output selection\n\nMake sure we don\u0027t pick an output profile with specific functional\nrequirements (e.g HW A/V sync) for a client not compatible with those\nrequriements.\n\nBug: 118704067\nTest: Play Netflix and assistant simultaneously\nChange-Id: I6529deb6aa322be9f76433b1ead307a8ba367768\n"
    },
    {
      "commit": "a9f86651eaaf2f702b3759ec38dbb64ca8858356",
      "tree": "913a55b14107e7f94335bec0ad6705f9557255a0",
      "parents": [
        "c241b0dfc49014087123dae92f7341db8d30d443"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 28 17:23:11 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 19 18:05:00 2018 -0800"
      },
      "message": "audo policy: more info in onRecordingConfigurationUpdate\n\nReport more information in onRecordingConfigurationUpdate() callback:\n- For client:\n  - Port ID\n  - Enabled effects\n  - Silenced by policy\n- For stream:\n  - Active effects\n  - Active audio source\n\nBug: 111438757\nTest: make\nChange-Id: I34c3d0ee6251576de7d793bfaa2bc2c34efa2319\n"
    },
    {
      "commit": "c241b0dfc49014087123dae92f7341db8d30d443",
      "tree": "9662b3ddd3860f1043da86eea159698331dfb81f",
      "parents": [
        "424993f0655c18f91562efc9d127f0ac970da6fa"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 28 09:08:49 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Dec 19 12:45:47 2018 -0800"
      },
      "message": "audo policy: add effects to record clients\n\nAdd list of active effects on input streams and record\nclients for further reporting in AudioRecordingConfiguration.\n\nBug: 111438757\nTest: make and dumpsys\nChange-Id: I1ae00d2431c80b053f67e2b780f368d5a4822b01\n"
    },
    {
      "commit": "aca677cf5fbd2a2d5aaccae3af4da6c1d700eb93",
      "tree": "c331bde769a019c47dccc80c09a0c3f8190a8661",
      "parents": [
        "2b167173e145d8846c9a248039f0f4dc423ade73"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Thu May 03 10:47:50 2018 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 13 17:24:46 2018 -0800"
      },
      "message": "audiopolicy: common: add several helper function on DeviceDesc\n\n-Add another DeviceVector constructor to simplify usage\n-report tagname as port name\n-migrate API from apm\n-search/filter helpers\n\nTest: Audio smoke tests.\nTest: CTS tests for AudioRecord, AudioTrack and AudioEffect\n\nChange-Id: Ie37a2d9db2e8a15a37743e7129159fa77a4c6b51\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "83d789d6234f5cd5eb90f02a47ab04d4f6ea8299",
      "tree": "73e9caf4a7eb025194119abb51236609b6adef31",
      "parents": [
        "99896dab5f368916c86acb97e82bf72c86a14922"
      ],
      "author": {
        "name": "François Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Tue May 29 13:29:19 2018 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 13 17:24:46 2018 -0800"
      },
      "message": "audiopolicy: apm: connectAudioSource: use Sw brigding according to hal support\n\nEven if the implementation is not ready, this patch updates the conditions\nof audio patch creation delegation to audio hal not only if HAL\nis at least supporting 3.0 routing API but also has declared within\npolicy configuration file that a route between Device port is supported.\n\nIf the route is not declared in configuration file, Audio HAL is not able\nto do the connexion, let AudioFlinger do the the Sw Bridging.\n\nTest: Audio smoke tests.\nTest: CTS tests for AudioRecord, AudioTrack and AudioEffect\n\nChange-Id: I6ed11be04473be2edfcf16e922d1c6864184b6cd\nSigned-off-by: François Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "99896dab5f368916c86acb97e82bf72c86a14922",
      "tree": "67cc39b5e30b396ce6f62cbac583e373c9919515",
      "parents": [
        "d00c4607a5f7d25dfe925a20a1fc5fd7cfcee67a"
      ],
      "author": {
        "name": "Francois Gaffie",
        "email": "francois.gaffie@renault.com",
        "time": "Mon Apr 09 11:05:33 2018 +0200"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 13 17:21:41 2018 -0800"
      },
      "message": "audiopolicy: Fix sofware bridge creation for AudioHAL supporting routing APIs\n\nAudioPolicy roughly checks if HAL supports routing APIs 3.0 to enable or\nnot software bridge in case of device to device patch requests.\n\nHowever, Audio HAL declares in XML file routes supported. AudioPolicy\nshall refine its decision upon information available in the policy configuration\nfile.\n\nTest: Audio smoke tests.\nTest: CTS tests for AudioRecord, AudioTrack and AudioEffect\n\nChange-Id: Idc2e1ccd7d9fb6385f9a05ee002bec045e608232\nSigned-off-by: Francois Gaffie \u003cfrancois.gaffie@renault.com\u003e\n"
    },
    {
      "commit": "bb93dfb7823e6abe4d4d7862559599803da1ad01",
      "tree": "1ef9d11f9d4ad4b6a1db6169c7657c31eacb1323",
      "parents": [
        "7763cf3b0eb9ae0ed5c375d19324fa068a070229"
      ],
      "author": {
        "name": "Hongwei Wang",
        "email": "hwwang@google.com",
        "time": "Tue Oct 23 13:54:22 2018 -0700"
      },
      "committer": {
        "name": "Hongwei Wang",
        "email": "hwwang@google.com",
        "time": "Wed Dec 12 13:39:14 2018 -0800"
      },
      "message": "In favor of SW patch in AudioPolicyManager::connectAudioSource\n\nIn case the dynamic routing rule is present, creates the SW patch from\naudio source device to Android mixer (specified by dynamic routing rule)\n\nA typical use case is to route broadcast radio to the same media output\nas other media applications.\n\nBug: 118763832\nTest: connectAudioSource from FM Radio and dumpsys media.audio_flinger\n\nChange-Id: Id07d3a6dd9fc5f322f4eb38efe02c302018253cd\n"
    },
    {
      "commit": "c94b0f806352d9384eeb92c2e4d7173851ccc573",
      "tree": "36bd89a1cd2fe27c243a1db1445957be3ad90cba",
      "parents": [
        "45d34272dfa8462adda0f11ccfa169c5afa49621",
        "405733256a9cf62c9e3be2d8dbd5ccb9cb7c5d97"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 12 04:05:07 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 12 04:05:07 2018 +0000"
      },
      "message": "Merge \"Support open output stream with haptic channel mask.\""
    },
    {
      "commit": "45d34272dfa8462adda0f11ccfa169c5afa49621",
      "tree": "45450f514f133a91a4746eb6b232c86dc3280806",
      "parents": [
        "cf80f34cc5e8d16d939df21879d770200defaf6e",
        "6012f913f0772cf0b73f379778efc671ce72c557"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 12 02:32:28 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 12 02:32:28 2018 +0000"
      },
      "message": "Merge \"Querying capability of haptic playback.\""
    },
    {
      "commit": "405733256a9cf62c9e3be2d8dbd5ccb9cb7c5d97",
      "tree": "b395e3e093aa3010b54f9227e8a7cef08ed1b2a0",
      "parents": [
        "6b6a0f05248fc646d42f09cb891d8b6fda19426e"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Nov 08 12:08:02 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 11 17:18:05 2018 -0800"
      },
      "message": "Support open output stream with haptic channel mask.\n\nWhen haptic playback is supported according to audio policy\nconfiguration file, try to open the output stream with haptic channel\nmask. When trying to creat a track with haptic channel mask, use haptic\noutput if it is available.\n\nBug: 111454766\nTest: Manually test\nChange-Id: Ia8c70dd7f602a134d0509630eb734b8c540dea7d\n"
    },
    {
      "commit": "6012f913f0772cf0b73f379778efc671ce72c557",
      "tree": "c77bb87b93b7fd9e3ad78532761d7e4ac7cfe9e6",
      "parents": [
        "6b6a0f05248fc646d42f09cb891d8b6fda19426e"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Nov 02 17:06:30 2018 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Tue Dec 11 16:18:09 2018 -0800"
      },
      "message": "Querying capability of haptic playback.\n\nBug: 111454766\nTest: Manually test\nChange-Id: Ib200d6b8f02354a01cf599a96fb1a9062dcd3050\n"
    },
    {
      "commit": "a223769e7767765ba7a546f66887508fbb19f54d",
      "tree": "a24bbadad46856fca743a3d6d31d0c046f55f73f",
      "parents": [
        "7ce82e7ccf47ec5ea00a85a15665eb51edd9b258",
        "a94fbb22404ef26d12fbb3ad0376df15f84f47ec"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 11 13:54:38 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 11 13:54:38 2018 +0000"
      },
      "message": "Merge \"Implement AudioTrack.isDirectPlaybackSupported method\""
    },
    {
      "commit": "d0f1bffe98354848dc23f4492d8f86987459f179",
      "tree": "516eb8f048077f2672ecfa749c7c617bde4df602",
      "parents": [
        "6c5157eaa8682ee60db576c49fcf56a3d61174f0",
        "a46bedb84a6c972f128e17e7bed114ad0863b0b3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 11 03:34:44 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 11 03:34:44 2018 +0000"
      },
      "message": "Merge changes I2fc54853,If58ff214\n\n* changes:\n  audio policy: fix capture policy for assistant\n  Revert \"Revert \"audio policy: concurrent capture\"\"\n"
    },
    {
      "commit": "3ca78ae0f955c27a561d590bad7e76cc33fd1ec8",
      "tree": "1dfb2c3d4d67150ea408f123fb53f7384880f8e6",
      "parents": [
        "7f6f0fd0009dc5991af995cc369d9fd7e1ac36b5",
        "261413ac043ea80ed4e068847b4060c93be20dbe"
      ],
      "author": {
        "name": "nobuaki tanaka",
        "email": "nobuaki.xb.tanaka@sony.com",
        "time": "Mon Dec 10 15:49:54 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Dec 10 15:49:54 2018 -0800"
      },
      "message": "Merge \"Apply stream volume for the correct device\" am: c6b48fe627 am: 03a9cbbeb0\nam: 261413ac04\n\nChange-Id: Id5e366ce17585f2c7f0ed1240ecaf71e75a603af\n"
    },
    {
      "commit": "c6b48fe6272db5d3ca910598565c2b48b547ce7f",
      "tree": "211582ffa4ab12ca3a22757fffb0d7d1cf353a98",
      "parents": [
        "14c577fac81b8fdcc75e4bf9243f16bd624ba58b",
        "985d15a9c7e45e7e7021aa53a48de3fa222e3815"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 10 22:53:45 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 10 22:53:45 2018 +0000"
      },
      "message": "Merge \"Apply stream volume for the correct device\""
    },
    {
      "commit": "4eb58f1f36606ad7af392a920e1d029a5fb1e797",
      "tree": "c1599fda024344eaf6da5e1d33fc410384127550",
      "parents": [
        "5a2048c3095478482a5ac16639514d3a0a214713"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 07 16:41:02 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 10 14:10:05 2018 -0800"
      },
      "message": "Revert \"Revert \"audio policy: concurrent capture\"\"\n\nThis reverts commit df628924e691e01da190c1ac5db173304442e54a.\n\nBug: 120588242\nBug: 111438757\nTest: make\nChange-Id: If58ff2143fdb744678bb84394598104ced01f5b9\n"
    },
    {
      "commit": "100f0121068605a10b0a254b7ee5784409d09229",
      "tree": "07435569751b97014e448e3162ca28b02926187f",
      "parents": [
        "0422892023dcd4616f00028fd223fef056bc0e16"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Nov 29 11:22:16 2018 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Dec 10 09:25:14 2018 -0800"
      },
      "message": "APM: Improve surround formats management, include MSD\n\nThis is what this change does:\n\n1) Renames APM::mSurroundFormats into mManualSurroundFormats\n   and avoids modifying it in modifySurroundFormats, because\n   multiple surround-capable devices are possible.\n   modifySurroundFormats logic is also a bit simplified.\n\n2) Changes the way APM::getSurroundFormats reports enabled\n   formats, after the change  1).\n\n3) Includes MSD module into consideration as a surround-capable\n   device.\n\n4) Changes APM::dump to only show mManualSurroundFormats\n   when surround sound is enforced into manual management.\n\n5) Adds Dolby AC-4 to the list of surround formats.\n\n6) Declares surround formats on the devicePort of MSD.\n\nBug: 117602867\nTest: Surround Sound settings with MSD module\nChange-Id: I5cdd3c012a3febcf7170cc5fa7378224b3ef9e4f\n"
    },
    {
      "commit": "0422892023dcd4616f00028fd223fef056bc0e16",
      "tree": "11dfbf1d69b4357e8c940e1ee12405d59b9797b3",
      "parents": [
        "07567d630dbda88b9a25a439a5936e507d1caeca",
        "df628924e691e01da190c1ac5db173304442e54a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 07 16:39:03 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 07 16:39:03 2018 +0000"
      },
      "message": "Merge \"Revert \"audio policy: concurrent capture\"\""
    },
    {
      "commit": "df628924e691e01da190c1ac5db173304442e54a",
      "tree": "e2dda15a881c963a14520117128b5b9857834759",
      "parents": [
        "4c1ef4b64d113be6ee1106375bd10cdc643e80d8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 06 21:45:51 2018 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 06 21:45:51 2018 +0000"
      },
      "message": "Revert \"audio policy: concurrent capture\"\n\nThis reverts commit 4c1ef4b64d113be6ee1106375bd10cdc643e80d8.\n\nReason for revert: b/120588242\n\nBug: 120588242\nChange-Id: Iac41f371cb739c54d5ce519232688bebe2285c72\nTest: Launch QSB and capture from mic icon\n"
    },
    {
      "commit": "d5e180520a5b7aeb970bc796abc3ef8070d5174c",
      "tree": "485ebba16f82af8928f02e627773fd02963dcf95",
      "parents": [
        "71738ebf94589faa5aef3c1ba8d53cd17b7fec0f"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Nov 30 14:55:45 2018 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 06 18:25:48 2018 +0000"
      },
      "message": "Audio Policy: Parametrize encoded formats supported by device\n\nFor various reasons, we need to store the list of audio\nformats supported by devices. Here we add support for this\ninto DeviceDescriptor. We don\u0027t read them yet from\nthe APM config file, but we will eventually.\n\nAlso in this change, use the formats list for parametrizing\nthe behavior of surround sound configuration. The special\nlogic for AC3 and IEC69137 formats used to be hardcoded\ninto \u0027filterSurroundFormats\u0027 function, now it is\nparametrized by the device descriptor information.\n\nFix behavior of \u0027filterSurroundFormats\u0027 in \u0027manual\u0027\nmode, where it was removing PCM formats from the list.\n\nRename \u0027filterSurround...\u0027 functions to \u0027modifySurround...\u0027\nsince they can both add and remove items from the provided\nlist.\n\nBug: 67479735\nBug: 117602867\nTest: compare A/B APM dumps while modifying Surround Sound\n      settings; tested with a HDMI sink that doesn\u0027t support\n      any surround, and with an AV receiver\nChange-Id: Ie46480d5e9519366b1f3553645c9ca20f64bdc80\n"
    },
    {
      "commit": "a94fbb22404ef26d12fbb3ad0376df15f84f47ec",
      "tree": "b4a8052d5ce8726541ba7a25e3f1f449d351acd9",
      "parents": [
        "b079c02b1fa4f1b5c5b6334b93af584797b4454f"
      ],
      "author": {
        "name": "Michael Chan",
        "email": "mzchan@dolby.com",
        "time": "Tue Apr 24 14:31:19 2018 +1000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Dec 05 15:35:35 2018 -0800"
      },
      "message": "Implement AudioTrack.isDirectPlaybackSupported method\n\nThe method checks whether the provided AudioFormat can be played\nvia currently connected output devices w/o SRC or downmixing\nby the framework.\n\nThe implementation methods are called \u0027isDirectOutputSupported\u0027\nto match APM\u0027s terminology.\n\nBug: 120044865\nTest: atest CtsMediaTestCases:AudioTrackTest#testBuilderValidate\nChange-Id: I11769f796c34583fb2641415d2faab00ac526123\n"
    },
    {
      "commit": "4c1ef4b64d113be6ee1106375bd10cdc643e80d8",
      "tree": "203b9b1ca84efc9342514175d616c0a7c22150ad",
      "parents": [
        "973db02ac18fa1de9ce6221f47b01af1bdc4bec2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 13 16:46:26 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 04 12:06:37 2018 -0800"
      },
      "message": "audio policy: concurrent capture\n\nImplement concurrent capture in audio policy manager:\n- Attach AudioRecord client to already opened input when possible\ninstead of systematically opening a new input for each client.\n- Always allow inputs to start even in case of concurrency.\n- Clients are selectively silenced based on their app state by audio\npolicy service.\n- In case of concurrency on a given input stream, device and source is\nchosen based app states and source priority.\n\nBug: 111438757\nTest: Manual capture tests with solotester and Camera, Assistant and Duo\nTest: CTS tests for AudioRecord\n\nChange-Id: I302710ff545f67361d9aca89e81de40771ce7fb0\n"
    },
    {
      "commit": "1268b28c5c65691532d3ffb503a199c677c801b9",
      "tree": "b83077c5746df6b313973b86f9aa94e52383f310",
      "parents": [
        "d46012025aed1bc366982bc0edc93c56c034828e",
        "dfa1e8ab20ce54f3cde479e1305861867abcdbea"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Nov 30 23:24:18 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Nov 30 23:24:18 2018 +0000"
      },
      "message": "Merge \"Policy config parser: migrate to BP and drop legacy format\""
    },
    {
      "commit": "dfa1e8ab20ce54f3cde479e1305861867abcdbea",
      "tree": "fa10b8bfcbc2e3378249a7a67afc2fdd455c5c93",
      "parents": [
        "7a9f05a68512926f81339d3e42def2ecd9adffa0"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Oct 26 16:42:07 2018 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Nov 30 09:44:42 2018 -0800"
      },
      "message": "Policy config parser: migrate to BP and drop legacy format\n\nMigrate to android.bp as test need to use the library.\nAs bp do not support conditional statement, and this format has been\ndeprecated for 3 years, drop the pre-treble .conf parser.\n\nAUDIOSERVER_MULTILIB is no longer use as it does not make sense for a\nstatic lib.\n\nBug: 114303641\nBug: 111681420\nTest: compile, boots\nChange-Id: I9f429b306ecfbb80116445ba6297a4b3d6dc57f6\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "c55606b22fb908f030150b82194ded0c2038cab3",
      "tree": "cf9a36b5d97e15a944902bd7734aafe466a402c6",
      "parents": [
        "cdbd8711a9a77f4cb5b53729334cf582afbc0110",
        "02743e21156fa3063dc3718982e291cf60ec37cd"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 29 20:58:49 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 29 20:58:49 2018 +0000"
      },
      "message": "Merge \"Audio policy: Use surround formats from audio config instead of hardcoded\""
    },
    {
      "commit": "02743e21156fa3063dc3718982e291cf60ec37cd",
      "tree": "0339c12971b8145ebca1b5c523390dc02654b945",
      "parents": [
        "e4eb88fa5fe62a9b6b709fbf2ff26f37acf6db20"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Nov 28 15:56:55 2018 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Nov 29 19:21:45 2018 +0000"
      },
      "message": "Audio policy: Use surround formats from audio config instead of hardcoded\n\nThis is a follow-up to ag/3835377, where the intention was to\nuse SURROND_FORMATS array, which is lately been replaced by\nan array from APM\u0027s config.\n\nBug: 67479735\nBug: 117602867\nTest: make\nChange-Id: I31f63856d8fb06ff9ac0f03b9ec1600f0fcee30b\n"
    },
    {
      "commit": "938b6ca467c19285ec89b98316a13891012887d4",
      "tree": "b99f63d14bc9d9dea0ab69cfcc983d11ede7c725",
      "parents": [
        "4183d37fcc58ed1e221c72b298f2d95c9b656c01",
        "2091949018103af337a5cd48de789d51fa3a6dc0"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Thu Nov 29 17:14:32 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 29 17:14:32 2018 +0000"
      },
      "message": "Merge \"Support playing to uplink stream using the VOICE_CALL stream as well\""
    },
    {
      "commit": "2091949018103af337a5cd48de789d51fa3a6dc0",
      "tree": "1a17e433d9bc01c1332e096afe56e8e704289511",
      "parents": [
        "9a4f4c23bf39f9e8169a62c55b3ccbde3e26693f"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Tue Nov 20 10:20:51 2018 +0200"
      },
      "committer": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Thu Nov 29 15:01:35 2018 +0200"
      },
      "message": "Support playing to uplink stream using the VOICE_CALL stream as well\n\nAdded support for playing audio to the uplink stream also using the\nVOICE_CALL stream. This will ensure the uplink playback have the same\ncharacteristics as other audio which is being played back during a call,\nand can by pass the DND mute.\n\nChange-Id: I1830bebb5fca724de561fbde8445fcee95f9c930\nTest: tested manually.\nBug: 117866278.\n"
    },
    {
      "commit": "e6714284a250fe474e57cc9744e08c76e23c5c3b",
      "tree": "c3f27de568de1d9d82b765980f9ebfc6326128fc",
      "parents": [
        "db0532ba88de07e3ee8aa48db31e0ed5b5eff903",
        "f32108e7bab9ce2eb8107678c74701d1428a7b2c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 28 18:08:24 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 28 18:08:24 2018 +0000"
      },
      "message": "Merge \"audio policy: extend API used to silence capture from a given app\""
    },
    {
      "commit": "b708035c652d32b85942f5fd5b5b12376daae03e",
      "tree": "8b8f7ee148e986ec38ea22704a0f214ac86e14a3",
      "parents": [
        "3db425c9c47eeae48b0585e5650e8d4a4c939942",
        "71085b5a772c4b50ce80692a6268713bd2eae585"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Nov 27 11:32:20 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Nov 27 11:32:20 2018 -0800"
      },
      "message": "Merge \"Keep verbose log statements, but silence them by default\" am: 9a4842894a am: b4dfe1c017\nam: 71085b5a77\n\nChange-Id: I60026496b923e303f97adebb365f24fe3a25d845\n"
    },
    {
      "commit": "9a4842894af7b5b7db4f152ddd1420660876c36f",
      "tree": "86abb7b1098b96270d492644f166f8de2c1f14d5",
      "parents": [
        "5f14ecce213ec2152e1cb8470663e2b89ee74235",
        "71c9091118aefb3cadb96955e7618ca4e296dd33"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Nov 27 19:16:26 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 27 19:16:26 2018 +0000"
      },
      "message": "Merge \"Keep verbose log statements, but silence them by default\""
    },
    {
      "commit": "f32108e7bab9ce2eb8107678c74701d1428a7b2c",
      "tree": "4282d410be7fde9df128a6c3ecb5775198aebc5f",
      "parents": [
        "3df5310387cb396892d49f3576ba52a22413baa6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 04 17:22:04 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 26 14:32:41 2018 -0800"
      },
      "message": "audio policy: extend API used to silence capture from a given app\n\nIn preparation for concurrent capture policy, extend current audio policy\ninterface setRecordSilenced(uid...) to a more generic API setAppState(uid...)\n\nBug: 111438757\nTest: CTS test AudioRecord.testRecordNoDataForIdleUids\nChange-Id: Idba540e2724a6c71ec275a5ff73c312e5b6040a4\n"
    },
    {
      "commit": "f7adb3f07332a6b7af8272a04757f282ad311b58",
      "tree": "5458ac5666292f4b6e34c754cc1b7f9cc33a1de8",
      "parents": [
        "d4d7f1ffcab75a365939ee43d5cb83fc3e0acad4",
        "5928ec9661758549cbda50710a152050136d5ddc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 21 08:35:40 2018 -0800"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Nov 21 08:35:40 2018 -0800"
      },
      "message": "Merge \"Ignore outputs with direct flag when selectOutput.\" am: a1270b044b am: f3bcc30de3\nam: 5928ec9661\n\nChange-Id: Id97fcda0eb511f0711cd0adc93763d46c940cf4c\n"
    },
    {
      "commit": "1794d71f7a3777595503b5c6c667c3e0d83baad6",
      "tree": "330b5f020b020c586fea46daa61d0f3588dbffd2",
      "parents": [
        "4462ff08c41880644903702e4734cda7a320aadd"
      ],
      "author": {
        "name": "chenhg",
        "email": "chenhg@synaptics.com",
        "time": "Tue Oct 09 15:20:37 2018 -0700"
      },
      "committer": {
        "name": "chenhg",
        "email": "chenhg@synaptics.com",
        "time": "Tue Nov 20 16:56:21 2018 -0800"
      },
      "message": "Ignore outputs with direct flag when selectOutput.\n\nBUG: 117479947\nTest: android.media.cts.AudioNativeTest#testPlayStreamData\n\nChange-Id: I0eec86185b5582f82267a24f3568244bf1c8378f\n"
    },
    {
      "commit": "7bd9b8d6f218550323db5e8c191175217a349812",
      "tree": "e5afd822491fed511c660d9f0413dd6896893988",
      "parents": [
        "f02f367f5ae3376a8305d0ae97548819696f457e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Nov 15 02:09:03 2018 +0000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Nov 15 02:09:03 2018 +0000"
      },
      "message": "Revert \"Audio Policy: add audio.msd.disable property for MSD detour\"\n\nThis reverts commit f02f367f5ae3376a8305d0ae97548819696f457e.\n\nReason for revert: Committed accidentally\n\nChange-Id: I3cc92123fc2dca1f1ab497655c6d2f9b10853920\n"
    },
    {
      "commit": "71c9091118aefb3cadb96955e7618ca4e296dd33",
      "tree": "df749f6e0410b0aa5046a4a5d53dc385633f086f",
      "parents": [
        "a0fd81b4ceeee9a946aa1c7ec033e659a556988b"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Wed Oct 31 09:10:12 2018 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Thu Nov 15 09:16:54 2018 +0900"
      },
      "message": "Keep verbose log statements, but silence them by default\n\nDo not strip out ALOGV statements in production builds,\nbut keep them silent by setting the default log level\nfor AudioPolicyManager to D.\n\nBug: 113756665\nTest: adb shell setprop log.tag.APM_AudioPolicyManager V\n      check logcat for verbose log messages from APM\nChange-Id: I0129a07e3afa11634945763b8d976699ce13093e\n"
    },
    {
      "commit": "f02f367f5ae3376a8305d0ae97548819696f457e",
      "tree": "9551f31b1aaabfa9a283c5536e362ffe713201b2",
      "parents": [
        "69985f830f322ef33cf0b947a2fe09ec04d34de2"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Nov 09 12:44:16 2018 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Nov 09 12:47:41 2018 -0800"
      },
      "message": "Audio Policy: add audio.msd.disable property for MSD detour\n\nAPM checks audio.msd.disable property before reporting presence\nof the MSD module to allow bypassing the MSD in tests and\nfor vendors to create tracks directly on the main output.\n\nBug: 63901775\nTest: MSD prototype\nChange-Id: I8ffb12fc81b3c71d810eeb8d90f54fef282e80f2\n"
    },
    {
      "commit": "985d15a9c7e45e7e7021aa53a48de3fa222e3815",
      "tree": "08ff1bb1abb133aa5c1a50c8f1fbb0640c53b6a2",
      "parents": [
        "efd99ec863f5a69f20dfacea3f6f4835962c5362"
      ],
      "author": {
        "name": "nobuaki tanaka",
        "email": "nobuaki.xb.tanaka@sony.com",
        "time": "Wed Jul 19 13:38:51 2017 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Tue Oct 30 16:06:36 2018 +0900"
      },
      "message": "Apply stream volume for the correct device\n\nDuring music playback via headset, if sonification stream sounds,\nsonification volume is limited to music volume in computeVolume().\nHowever if application plays sonification stream continuously,\nsetStreamVolumeIndex can be called before previous sonification\nsound stops.\nThis behavior leads unexpected volume settings then\nsonification volume is not limited to music volume.\nThis fix sets the correct device which is not filtered by\nVolume::getDeviceForVolume then avoid to update incorrect device volume.\n\nBug: 118098429\nTest: Repeat alarm during music playback from headset\n\nChange-Id: I92f9bd070dd9d5b7b523147e6c2ca1f233a53eb4\n"
    },
    {
      "commit": "d6b4110320591df820d9c9db5e31b20a0072f47e",
      "tree": "af94208f43671baedf417ed7e488d26690ac99b1",
      "parents": [
        "e0bc1a9b8ee77919211819d03404aca893f8bcbf",
        "dc3d7f5b463381e6c8043b06de6e2de7a2176517"
      ],
      "author": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Wed Oct 24 14:46:51 2018 -0700"
      },
      "committer": {
        "name": "Bill Yi",
        "email": "byi@google.com",
        "time": "Wed Oct 24 14:46:51 2018 -0700"
      },
      "message": "Merge pie-platform-release to aosp-master - DO NOT MERGE\n\nChange-Id: Ie34345bdf4de88a81005e7afa4db54a3be7478f9\n"
    },
    {
      "commit": "6e97e8078287f5c0a49be6283de401c454796320",
      "tree": "a4e55f3a8388fa21ef3fac084cb6db646831b20e",
      "parents": [
        "387b0b64c245d66b55ac33db4b551b612bdda4ed",
        "599f3305dcb7f482289fac679cb1a63ad78aae4e"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Oct 16 18:12:06 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 16 18:12:06 2018 -0700"
      },
      "message": "Merge \"audio: fix switch to break or use FALLTHROUGH_INTENDED\"\nam: 599f3305dc\n\nChange-Id: I179a79cc58c02c59dc08a8cc8ef1e6e33899ccf3\n"
    },
    {
      "commit": "39399600e89237ba8e3f27f68b58c204c3cdd679",
      "tree": "e3b24ce1074058b20cc54ae46a54e118b6342526",
      "parents": [
        "f5b1d442c7e2bf4de3ba0378af29585a5adcdc93"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Oct 16 14:42:13 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Oct 16 14:42:13 2018 -0700"
      },
      "message": "audio: fix switch to break or use FALLTHROUGH_INTENDED\n\nTest: compile, sanity\nBug: 117509050\nChange-Id: I9439f201b3d1f4485ab698d7bed063a02f17f8f0\nMerged-In: 320fd852fb98174804e5f505773500f1cf76f3af\n(cherry picked from commit 320fd852fb98174804e5f505773500f1cf76f3af)\n"
    },
    {
      "commit": "320fd852fb98174804e5f505773500f1cf76f3af",
      "tree": "3eb8319d3076340883afe026b540c05ef7b8c50a",
      "parents": [
        "24bf51ae92285202bdbe3fa00c7c83e93c5a03e2"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Oct 09 14:06:37 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Oct 10 11:12:37 2018 -0700"
      },
      "message": "audio: fix switch to break or use FALLTHROUGH_INTENDED\n\nTest: compile, sanity\nBug: 117509050\nChange-Id: I9439f201b3d1f4485ab698d7bed063a02f17f8f0\n"
    },
    {
      "commit": "72b9ee114d4b5b0017578afe826e8431f0362f96",
      "tree": "1d110a34c0f7b6442be8e316c1936294a7fac87c",
      "parents": [
        "b003ba18ad8746ef945d0622586b140f3dfadcbe",
        "c29d82b089c3a6409640c697c4832eb5de357a54"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Oct 09 17:32:16 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 09 17:32:16 2018 +0000"
      },
      "message": "Merge \"AudioPolicyManager: Convert dump to use String8 (part 2)\""
    },
    {
      "commit": "b003ba18ad8746ef945d0622586b140f3dfadcbe",
      "tree": "4a6052b8a04ee6b14e262b8aa30a7a0e964560cb",
      "parents": [
        "7e8b1832c6f99a7998f81b942472f456efd24830",
        "bb54e20ba9afcf61cc6b41500ff8ab3dfc897203"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Oct 09 17:07:14 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 09 17:07:14 2018 +0000"
      },
      "message": "Merge \"AudioPolicyManager: Convert dump to use String8 (part 1)\""
    },
    {
      "commit": "c29d82b089c3a6409640c697c4832eb5de357a54",
      "tree": "3e61976439f1942204d30a084a602a081b0ea918",
      "parents": [
        "bb54e20ba9afcf61cc6b41500ff8ab3dfc897203"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Oct 05 12:23:17 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Oct 08 13:11:51 2018 -0700"
      },
      "message": "AudioPolicyManager: Convert dump to use String8 (part 2)\n\nTest: dumpsys of APM, diffs.\nBug: 117333182\nChange-Id: I18761416ec9dc97418b41054f85af67e6eb59f3a\n"
    },
    {
      "commit": "bb54e20ba9afcf61cc6b41500ff8ab3dfc897203",
      "tree": "99d0c86990fbf905083d4f41c215311ec75c4e09",
      "parents": [
        "d10b735cfd4eea74846bb5f53d37c8c2a3114d58"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Oct 05 11:42:02 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Oct 08 12:59:33 2018 -0700"
      },
      "message": "AudioPolicyManager: Convert dump to use String8 (part 1)\n\nTest: dumpsys of APM, diffs.\nBug: 117333182\nChange-Id: Ic046acb491efa363423b38a389b046c09ae9d5c9\n"
    },
    {
      "commit": "778bc1f6393c5437acb45943866d88607c67b1e5",
      "tree": "31e6043ab875d05a18636faa5da5d3f6313f3b2b",
      "parents": [
        "b4e880abdcde87ff89937f4f8de819af0cfe371f"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Sep 14 16:28:52 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Oct 05 09:32:51 2018 -0700"
      },
      "message": "audiopolicy: Move surround configuration to xml\n\nMove the configuration for supported surround formats\ninto APM xml config file.\n\nBug: 116356348\nTest: on elfin\nChange-Id: Ifba218fa2c03136a3a59eeee8077b00fba77c069\n"
    },
    {
      "commit": "4db16c962ff102e3fb722940c039654407e997f2",
      "tree": "aa117525900f92c290d301247edb2b465949c28d",
      "parents": [
        "dadea6249d41c155a9835dfd8005c6dbe63c773e",
        "86112351b499214284a4f52a6e0b4a38c81162cf"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 04 17:00:29 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 04 17:00:29 2018 +0000"
      },
      "message": "Merge \"audiopolicy: Fix crash in getMsdPatches\""
    },
    {
      "commit": "86112351b499214284a4f52a6e0b4a38c81162cf",
      "tree": "51feef4606253b8085589c55e3b89ff62bc75f9d",
      "parents": [
        "1a45cef93b8df626bed1d19e8830148627151d8b"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 04 09:02:49 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Oct 04 09:07:19 2018 -0700"
      },
      "message": "audiopolicy: Fix crash in getMsdPatches\n\nAdded a missing check for the possibility of not having an MSD module.\nRemove a check for the module handle, as mHwModules by design\ncan\u0027t contain modules with AUDIO_MODULE_HANDLE_NONE (see\nAudioPolicyManager::initialize).\n\nBug: 117253728\nTest: see the repro steps in the bug\nChange-Id: Ia8761a2e3ceccf9595b672c8ba48e086b457e3ae\n"
    },
    {
      "commit": "d10b735cfd4eea74846bb5f53d37c8c2a3114d58",
      "tree": "7085e4a58570440af04b040fe466e8d0b7d0725b",
      "parents": [
        "5e0659c82240821cfa6766d33cca438a5f09ef32",
        "39efb7a1267ac8b1131eecab260a7ae2887a9b0c"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Oct 04 00:52:06 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 04 00:52:06 2018 +0000"
      },
      "message": "Merge changes I7835e753,I5fe4d3e7\n\n* changes:\n  AudioPolicyManager: abort when client is removed while active\n  AudioOutputDescriptor: improve refcount logging\n"
    },
    {
      "commit": "39efb7a1267ac8b1131eecab260a7ae2887a9b0c",
      "tree": "c47ad805bdc6aa615b9d84e4632f3320267362a3",
      "parents": [
        "af036dab1e2075e1277883ef696a48f47d974413"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Wed Sep 26 15:39:28 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Oct 02 20:05:13 2018 -0700"
      },
      "message": "AudioPolicyManager: abort when client is removed while active\n\nThis can result in a refcount mismatch. It is safer to\nabort immediately.\n\nTest: Audio sanity, phone call\nBug: 112067674\nChange-Id: I7835e75342b4c1aa3d6d910ee782d3bc818bd553\n"
    },
    {
      "commit": "af036dab1e2075e1277883ef696a48f47d974413",
      "tree": "bc775cb5a2823dbe73354b5f36dd5fd0acaaf518",
      "parents": [
        "bbbfdd69d89ca651f855777c3c66b12793dc85ae"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Sep 21 10:46:21 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Oct 02 18:18:11 2018 -0700"
      },
      "message": "AudioOutputDescriptor: improve refcount logging\n\nImprove refcount to match exact client descriptor\nAbort on invalid client descriptor refcounts\nLog changes to active clients and refcounts\n\nTest: dumpsys of media.audio_policy\nBug: 112067674\nChange-Id: I5fe4d3e7135efbf9bc5bffb258374115d87c24e6\n"
    },
    {
      "commit": "3023b3822714916959d428cfef35d77d3fed4850",
      "tree": "b9afbf081b424a63cedfd0a6512be05b7c1f67a4",
      "parents": [
        "1212e0ad891e6ab2054761dcbf1a588e1ef843b3"
      ],
      "author": {
        "name": "Dean Wheatley",
        "email": "dwhea@dolby.com",
        "time": "Thu Aug 09 07:42:40 2018 +1000"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Oct 01 11:26:18 2018 -0700"
      },
      "message": "Release MSD patch for non-MSD direct outputs\n\nGive best chance of finding an Audio HAL output stream for the\nnon MSD direct output, by releasing the MSD patch before the request\nif it is using the same output device. The MSD patch is recreated\nall direct outputs have been closed.\n\nTest: atest CtsMediaTestCases:AudioTrackSurroundTest#testPlayIEC61937_48000\n      on an Android TV device with HDMI output active and an MSD that does\n      not support IEC61937\n\nChange-Id: Id2a7eb2fee165dcf6630e819b34b8be815ea512e\n"
    },
    {
      "commit": "2563f23c315ba45c1f319843c413f90630616dd3",
      "tree": "3a873d5cc0180f8824ace52a615b821137916b89",
      "parents": [
        "a9e84bc851221c34c0a8a3355636fa7b38efa3a5"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Sep 27 14:48:01 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Sep 27 15:52:51 2018 -0700"
      },
      "message": "Audio Policy: Use cached values for getSurroundFormats()\n\nDo not re-open outputs for dynamic parameter resolution.\nAPM opens outputs for dynamic parameters in checkOutputsForDevice.\n\nRemove \u0027Manual\u0027 word the from dump of surround formats,\nas \u0027mSurroundFormats\u0027 is also filled out in \u0027Auto\u0027 mode.\n\nTest: manual using Surround Sound Settings panel\nChange-Id: I55870ca7c021e80565722fd1d3ab1553a753a6b6\n"
    },
    {
      "commit": "a289aea016a66fd8929e120e46268da8cf5a2f34",
      "tree": "677b63bd14f4c341eb707d003db0acdab46ebb1c",
      "parents": [
        "05fa8856abaa1e050c3c8e6ba97fc8878ed7600a"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Sep 17 15:26:23 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Sep 20 09:11:24 2018 -0700"
      },
      "message": "audiopolicy: Refactor XML deserializer for the APM config\n\n -- Move deserialization traits classes into the .cpp file;\n\n -- Use unique_ptr for managing libxml objects lifetime;\n\n -- Define node and attribute names inline. This makes them\n    inlined in the code, but that\u0027s OK since they are typically\n    only used once.\n\n -- Avoid using reference types for \"out\" parameters.\n\n -- Check the status of deserializing collections.\n\n -- Misc renamings and generalizations for clarity.\n\nTest: Compare dumpsys media.audio_policy A/B, check audio\nChange-Id: Ib188964dee94acbccd701a58d45d3df206487d81\n"
    },
    {
      "commit": "5dddbfdd9d7df353e69a48c571f37c435a9cf0fd",
      "tree": "1e15b0e168f7a04d38292e0eacf500df72661d71",
      "parents": [
        "c5fee0a8854f5decd3b567d2383cd38f0aada4f4"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Sep 11 14:15:05 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Sep 12 16:24:19 2018 -0700"
      },
      "message": "AudioPolicyManager: Add more logging for surround formats\n\nHelpful changes for debugging the TV Surround Sound Settings:\n\n- add a couple of ALOGV messages for get/setSurroundFormats;\n\n- add more ALOGW for problems to setSurroundFormatEnabled;\n\n- add dumping for APM::mSurroundFormats.\n\nTest: check logcat and dumpsys of APM\nChange-Id: Iedcdf8bc55d9c23937c1c5754dac47c37402b535\n"
    },
    {
      "commit": "b0688d699b8c2f406e001a5c991f3e0515c84ab9",
      "tree": "0b2444fe7f07c79f9cda5a683303e6cd52961564",
      "parents": [
        "592dd7bf150cee7990958632425c411366252083"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 14 15:49:18 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 10 14:07:45 2018 -0700"
      },
      "message": "audio policy: fix getDevicesForStream() with preferred route\n\nFix getDevicesForStream() to return correct device when the stream\nis active with an explicit preferred device selection.\n\nTest: manual test with AudioExplicitRouting app.\nChange-Id: I3f135b98b50c570ac7123c723f195da64a2d1e20\n"
    },
    {
      "commit": "592dd7bf150cee7990958632425c411366252083",
      "tree": "4cee35a646c148839ed4839a96d03a2464b425ba",
      "parents": [
        "8f42ea1fd1c813d9ed97ade72d7514e883cf7cb9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Aug 05 18:58:48 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 10 14:07:45 2018 -0700"
      },
      "message": "audiopolicy: refactor playback activity ref counting\n\nPlayback activity ref couting is now based on active state\nof PlaybackClientDescriptor.\n\nThe active reference count per stream on each output is still\nused because it provides a simple implementation for duplicated output.\n\nTest: CTS tests for AudioTrack and Routing\nTest: manual audio smoke test\n\nChange-Id: Ifadb1d24131581461aace14a5b25e7c7582c57cb\n"
    },
    {
      "commit": "8f42ea1fd1c813d9ed97ade72d7514e883cf7cb9",
      "tree": "4a6c16fd8b856a10fd122170d55a93899cc2613c",
      "parents": [
        "97ac871cd4f075b3d4b47557a81e9e05ad7762ec"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 08 09:08:25 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 10 14:07:45 2018 -0700"
      },
      "message": "audio policy: remove AudioSession class\n\nNow that clients are tracked individually, tracking by\naudio session is no needed anymore.\nModify management of client activity, preempted sound trigger\nsessions and silenced uids to rely on RecordClientDescriptor\ninstead of AudioSession.\n\nTest: CTS test for AudioRecord\nTest: manual capture audio tests for all use cases\n\nChange-Id: Ieef3e05daea98aec9320412393f912bd6bd7e046\n"
    },
    {
      "commit": "97ac871cd4f075b3d4b47557a81e9e05ad7762ec",
      "tree": "a6a547e02e4d736e45f275b4c93c2576ef30e675",
      "parents": [
        "dd6f1835aa352c167d04f4280289988faed7f590"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 27 18:59:02 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 10 14:07:45 2018 -0700"
      },
      "message": "audio policy: refactor preferred route implementation\n\nRemove SessionRoute class and replace by use of\npreferredDevice and active state in ClientDescriptor\n\nAlso fix the behavior for other clients using same strategy as\nclient with preferred route: the preferred route is only used if\nno other clients using the same strategy are active without a preferred\nroute.\nIf all clients have a preferred route, the route of the last active\nclient is used.\n\nAlso fixed getOutputForAttr() to return correct selected device ID when\ndynamic policies are used.\n\nTest: CTS RoutingTest, AudioPlayRoutingNative, AudioRecordRoutingNative\nTest: Manual: AudioExplicitRouting, UplinkMusicSampleApp\n\nChange-Id: Id342c2241ace3e1a359ea74f4a539a395f793b86\n"
    },
    {
      "commit": "0f6e640075173b76c3925f2cf92d9faf5ce8caba",
      "tree": "e0b4dc6b94fd7f516b411e1fdbd6f115d772a083",
      "parents": [
        "9d83f9d405290b952ba519213eeef918df2b2a76"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 06 11:20:45 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu Sep 06 11:21:22 2018 -0700"
      },
      "message": "AudioPolicyManager: Update property get\n\nUse built-in prop_get_bool and prop_get_int32 for consistent behavior.\n\nTest: Play Music and disable offload\nChange-Id: I0a76430ceffadac529c193f3b19b5dd1cd7aa467\n"
    },
    {
      "commit": "6aecd3553601595e2c33689d459c28fff738729e",
      "tree": "a9459c055169ab5dd90492e308ef8607f8fbe215",
      "parents": [
        "7377a7822adb06797de13ce64d7a3981009a7e8c",
        "3e7eb5eb24e6bf9a31495dee5e5f8252728a2b7d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 27 03:31:19 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 27 03:31:19 2018 +0000"
      },
      "message": "Merge \"audiopolicy: fix for ringtone and offload music playback concurrency\""
    },
    {
      "commit": "0d143ae1968f51a1ddc8aac5cb8d453abed2f09d",
      "tree": "8343b327da248ceb69e9d9bd58d87e91305754bc",
      "parents": [
        "976d139bd0be18c9106ce8ea5f1d15c217354c80"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Wed Jul 18 13:01:53 2018 +0300"
      },
      "committer": {
        "name": "android-build-team Robot",
        "email": "android-build-team-robot@google.com",
        "time": "Thu Aug 16 16:39:36 2018 +0000"
      },
      "message": "Allow playing output to default output device when during uplink playback\n\nChange the current behavior of AudioPolicyManager during incall music playback to allow apps that want to play audio with AUDIO_STREAM_MUSIC to default device to route the audio to the default device chosen by the engine (and not the one forced by the ongoing incall music routing). The current behavior still playes the audio to the default output device, which will be set to the TELEPHONY_TX device whenever there is ongoing uplink playback. This change will only affect a case in which uplink playback is in progress and another app tries to play audio using the music stream at that time.\n\nTest: Tested manually that the behavior described in the bug is fixed and that both apps can play audio to two different output devices.\nBug: 111467967.\nChange-Id: I25bccb635ea436bb6827483732e53c49c4b27825\n(cherry picked from commit b2f18166ff6a85305e8921a64c47f8cbff4575e2)\n"
    },
    {
      "commit": "5654fa737782fb27f3f79f77e4a4b41b1280e1fa",
      "tree": "af22fc7cf781bb43e07c97322cc0b9988aca666c",
      "parents": [
        "d3dcfbe703e2ed596516eaa208c021e740590fa0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 10 15:05:24 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 10 15:05:24 2018 -0700"
      },
      "message": "audio policy: fix bad auto merge conflict resolution\n\nWhen commit a81f098f1 was merged from aosp to pi-dev-plus-aosp\nthere was a problem where a code block already present in pi-dev\nfor the same fix (commit b62d78b72d9) was duplicated.\nThis caused double muting of notifications and alarms when a camera\nsound is played in countries where this sound is enforced while unmuting\nonly once when camera sound stops.\n\nBug: 110913234\nTest: force camera sound and verify mute/unmute counts after using the\ncamera.\n\nChange-Id: Ie97e3642803310acbe5eb85a53a850e010a9f42f\n"
    },
    {
      "commit": "89bbe9e07c48fe5036a44b51951fe3b44ab4ac8f",
      "tree": "6b5d8e4ba69f3cdae0c4642c07919c238ff39492",
      "parents": [
        "93ea89f1d0f47994231ebde31c2f2665177fb513",
        "1d539d95ea476c525cc26ff059f6f6a1f6e3ea42"
      ],
      "author": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Tue Aug 07 02:15:14 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 07 02:15:14 2018 +0000"
      },
      "message": "Merge \"audiopolicy: reset capture state when input is closed\""
    },
    {
      "commit": "1d539d95ea476c525cc26ff059f6f6a1f6e3ea42",
      "tree": "7536317c06d311a10931b3d0feffa8b2be1799a6",
      "parents": [
        "965737edc28bd76f6424f9ff4c1f0315f28a0434"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Fri Mar 16 11:40:49 2018 -0700"
      },
      "committer": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Fri Aug 03 11:41:42 2018 +0800"
      },
      "message": "audiopolicy: reset capture state when input is closed\n\nAn active input can be closed before stopInput is called, thus\nleaving the input handle to be an unknown input, then the capture\nstate can keep in true which blocks sound trigger session.\nReset the capture state if needed when input is closed.\n\nBug: 75253700\nTest: manual\nauthored-by: Zhou Song \u003czhous@codeaurora.org\u003e\nChange-Id: I969aa346e503cab593c33b6ca408845d058f00bc\n"
    },
    {
      "commit": "5c00d01c85430178d19f6266f1bc5c94a29853c1",
      "tree": "652dbc8b4f49e1e8b384531c118dd0da3dd18a59",
      "parents": [
        "2046ec756ee59acc4cfa1d52eb97aaa84efc9754"
      ],
      "author": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Tue Jun 26 17:09:11 2018 -0700"
      },
      "committer": {
        "name": "Ari Hausman-Cohen",
        "email": "arihc@google.com",
        "time": "Tue Jul 31 18:01:28 2018 -0700"
      },
      "message": "Add helper method to convert usage to stream type.\n\nAdds audio_usage_to_stream_type method to aid in converting\naudio_usage_t to the legacy audio_stream_type_t.\n\nBug: 78527120\nTest: Builds\nChange-Id: I411bb687d0f46b82afef3a2e9ac6a974f922da91\n"
    },
    {
      "commit": "3e6c7e15913a812b8658504105100063d57d1d6e",
      "tree": "2ec1571636c46201df600aa9c25f57a727617b48",
      "parents": [
        "f344afa981e537b5f354352284272a8a51cf6759"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 27 17:09:23 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 30 11:34:53 2018 -0700"
      },
      "message": "audio policy: refactor HW audio sources\n\nRefactor management of hardware audio sources to make use of\nClientDescriptor class:\n- HW sources are now tracked by port ID and not audio patch handle.\n- startAudioSource() and stopAudioSource() APIs are updated to use\naudio_port_handle_t as source identifier.\n- AudioSourceDescriptor class is deleted and replaced by\nSourceClientDescriptor class deriving from TrackClientDescriptor\n\nTest: make.\nChange-Id: Ie418b566519a591f036b538a77319f8e30aa99a8\n"
    },
    {
      "commit": "83289653ef22399dae84f1e7bb75c32e1c432c95",
      "tree": "47957a89fa62912f428935fbb1a48ed721d38887",
      "parents": [
        "8248fbb82a2362791258eaedd7d9615ac8f20351"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Jul 30 06:13:57 2018 -0700"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Jul 30 06:13:57 2018 -0700"
      },
      "message": "AudioPolicyManager: Fix logging statement\n\nWe move our \u0027return\u0027 to after our ALOGD statement, so we\u0027ll\nget the information logged.\n\nTest: Treehugger\nChange-Id: Ieb6953633d197baf4311ca51a381f31bec884afc\n"
    },
    {
      "commit": "15be9d2bb881e79c06d90c855f9efa426fd42b78",
      "tree": "e5f3b8ac8934c4a7eb7c9d38a2a9252c68af46aa",
      "parents": [
        "fa69dc61def2931f01a1e14a3b385ffc56a4f2bc"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Nov 08 14:18:13 2017 +1100"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jul 27 16:37:31 2018 -0700"
      },
      "message": "audiopolicy: Add support for the MSD prototype\n\nMSD is a Multi-Stream Decoder. It\u0027s an optional module\nthat allows mixing of encoded surround streams with\nPCM streams.\n\nThis patch adds elementary support for setting up\na patch between the MSD module and actual output device,\nand prioritizing the MSD module\u0027s device for output.\n\nThe patch is always set up, and is automatically\nre-establishes itself if the actual output device changes.\n\nBug: 63901775\nTest: MSD prototype\nChange-Id: I9efa714455dae10b58bd5cc5cdf5557c0227b40c\n"
    },
    {
      "commit": "23e617d032700449f4a24521cc89734e514a6bf6",
      "tree": "d26b170b13b8f19c4f440882f22d7635e0c56ed4",
      "parents": [
        "9366193e6ba8e2c554de747a3ab58a336297c067",
        "8fc147b21a7627eeda6383ae501add4dc903634e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 27 00:06:24 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 27 00:06:24 2018 +0000"
      },
      "message": "Merge \"audio policy: use client descriptors\""
    },
    {
      "commit": "8fc147b21a7627eeda6383ae501add4dc903634e",
      "tree": "a2f8b9232c40384188296887ab22a66d8200ce54",
      "parents": [
        "fa4fd528583279049b334a75e3782c12e832403b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 22 19:13:55 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 27 00:05:08 2018 +0000"
      },
      "message": "audio policy: use client descriptors\n\nFirst step in implementing use of ClientDescriptor class to keep track\nof playback and capture activity:\n- update AudioPolicyInterface methods to just use port ID as\nclient identifier\n- add list of clients in input and output descriptors and update list\nwhen clients are added and removed.\n- list clients in audio policy manager dump.\n\nTest: Audio smoke tests. CTS tests for AudioTrack, AudioRecord, routing, recording and playback configurations\n\nChange-Id: Ia0f62f295d421fb845d57afcaa0ce77cd2c58775\n"
    },
    {
      "commit": "9366193e6ba8e2c554de747a3ab58a336297c067",
      "tree": "f6d9fe9e7cbe37902d023b33c24463f99d26b3fd",
      "parents": [
        "19283e9de83b5ade80a93b43589ea9a799414290"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jul 26 14:37:41 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Jul 26 14:37:41 2018 -0700"
      },
      "message": "audiopolicy: Refactor DeviceVector::getDevicesFromHwModule\n\nRename method audio_devices_t DeviceVector::getDevicesFromHwModule\ninto getDeviceTypesFromHwModule.\n\nIntroduce method DeviceVector DeviceVector::getDevicesFromHwModule.\n\nBug: 63901775\nTest: make\nChange-Id: Ieec0c116fa0a6ff20241d61f65202a8eaf9f0674\n"
    },
    {
      "commit": "3fcfb3c014335da69e381cef47d0065ef01350e6",
      "tree": "d1fd0eee10a2c0acc3eb91a1fcbc10afa57c9914",
      "parents": [
        "a18d8004284b7fb0e0372f595716974141cc6e79"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 23 11:24:05 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 24 19:09:40 2018 -0700"
      },
      "message": "audio policy: remove unused concurrent capture code\n\nRemove obsolete concurrent capture logic in audio policy manager\ngiven it is not reusable by the new policy being defined for\nconcurrent capture situations.\n\nTest: make\nChange-Id: I2f5d9f13b0e1d00889968ff4e97930eb464b4799\n"
    },
    {
      "commit": "a18d8004284b7fb0e0372f595716974141cc6e79",
      "tree": "1e286ccfb6943b979fc5f6706c6c69a7756237c7",
      "parents": [
        "0f7d299c5e308bc32333766590797992e7690966",
        "a18dced5af77307be66d8c05ac05e6160ab8d8ed"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 24 22:20:00 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 24 22:20:00 2018 +0000"
      },
      "message": "Merge \"audio policy: refactor record activity tracking (AudioSession)\""
    },
    {
      "commit": "9de8bd18b21642f6f1fb4e3ef75e44a2cc79f3ce",
      "tree": "3be2f968af8f8c7b3b52ae8fa52e7a052fa80fee",
      "parents": [
        "a2a19382e5870fb133b56dacc7ff3048cdaa407d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 23 16:41:31 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Jul 24 08:52:14 2018 -0700"
      },
      "message": "AudioPolicy: Reuse SortedVector comparison from AudioProfile\n\nOperation for comparing sorted vectors was defined twice in APM code:\nonce in AudioProfile.h as operator\u003d\u003d, then in APM as \u0027vectorsEqual\u0027\nmethod. Remove the latter and use the operator instead.\n\nTest: make\nChange-Id: I0697843aabb13539b7b552773d96dbb7fb56daa4\n"
    },
    {
      "commit": "759427dba449a06ccc6139fbdcce0ab7e47bf454",
      "tree": "f5a3ac68cf809e376e82176be0334acc839e288b",
      "parents": [
        "a746b36f237e6b05b207afac9a507cc706f5cdc6",
        "749fc66a89fc2e7dc5b9f9126ed2736e6afe678d"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Sat Jul 21 23:57:07 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jul 21 23:57:07 2018 -0700"
      },
      "message": "Merge \"Allow playing output to default output device when during uplink playback\" into pi-dev am: 6497af909a\nam: 749fc66a89\n\nChange-Id: I77e7c4d654ed82ef80fb9a0c3a93580a661e9933\n"
    },
    {
      "commit": "749fc66a89fc2e7dc5b9f9126ed2736e6afe678d",
      "tree": "dace26d094c03a68f925b2a9dae3d1bbbae38179",
      "parents": [
        "12e2425b4f6f81145153455c5914736a3f8e99b8",
        "6497af909a1218a842ae65f12f7d1f4c98159580"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Sat Jul 21 23:54:08 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jul 21 23:54:08 2018 -0700"
      },
      "message": "Merge \"Allow playing output to default output device when during uplink playback\" into pi-dev\nam: 6497af909a\n\nChange-Id: I692795874fe5b90ca04a2ff424cd19034bde1512\n"
    },
    {
      "commit": "a18dced5af77307be66d8c05ac05e6160ab8d8ed",
      "tree": "f23e3ffe92d2753871f194de45d8a69a60180726",
      "parents": [
        "68234ec840e4eefdb9d0bf400c745a09a07156c9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 20 15:14:54 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 20 15:30:25 2018 -0700"
      },
      "message": "audio policy: refactor record activity tracking (AudioSession)\n\nRefactor input activity ref counting and callbacks to align\nwith implementation for output.\n\nThis will help migration to per client activity tracking.\n\nTest: audio smoke test, CTS for AudioRecord\nChange-Id: I8806446f33d3090f1042e0956df81318646d5285\n"
    },
    {
      "commit": "b2f18166ff6a85305e8921a64c47f8cbff4575e2",
      "tree": "fc3f2f6aa205c71c4319945227b588a1e5787fea",
      "parents": [
        "b14fef4aba730eba6bd0b1426b726ac77987158f"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Wed Jul 18 13:01:53 2018 +0300"
      },
      "committer": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Thu Jul 19 16:25:52 2018 +0300"
      },
      "message": "Allow playing output to default output device when during uplink playback\n\nChange the current behavior of AudioPolicyManager during incall music playback to allow apps that want to play audio with AUDIO_STREAM_MUSIC to default device to route the audio to the default device chosen by the engine (and not the one forced by the ongoing incall music routing). The current behavior still playes the audio to the default output device, which will be set to the TELEPHONY_TX device whenever there is ongoing uplink playback. This change will only affect a case in which uplink playback is in progress and another app tries to play audio using the music stream at that time.\n\nTest: Tested manually that the behavior described in the bug is fixed and that both apps can play audio to two different output devices.\nBug: 111467967.\nChange-Id: I25bccb635ea436bb6827483732e53c49c4b27825\n"
    },
    {
      "commit": "e2594d983278c9fef290593eea6e9d91b048bb2c",
      "tree": "a2e300d501f95b67d1851e6463117b21c200622c",
      "parents": [
        "5b7d2948d4ec82107b6f1a6fa2b8d9d875c91e27",
        "37977159598ff6a85d37ee8dad812cb0b24dc737"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 13 16:47:54 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 13 16:47:54 2018 +0000"
      },
      "message": "Merge \"APM: Coalesce calls to check and update outputs\""
    },
    {
      "commit": "37977159598ff6a85d37ee8dad812cb0b24dc737",
      "tree": "27834557f2a16a2da716cb336f9abcc4f5bb7ee2",
      "parents": [
        "66c153a4e59006920865383372f86e829fdd0263"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jul 11 15:54:44 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jul 11 15:57:30 2018 -0700"
      },
      "message": "APM: Coalesce calls to check and update outputs\n\nIntroduce a method \u0027checkForDeviceAndOutputChanges\u0027 that calls\n\u0027check...\u0027 and \u0027update...\u0027 methods in the correct sequence.\n\nBug: 63901775\nTest: make\nChange-Id: I32fc39d5b62a29e9c1801cb89046fad6fa156073\n"
    },
    {
      "commit": "3839bc0122c23a33d52ff0247bfa70016d9769be",
      "tree": "41c27ee5f6a549144b266b8db56c4c63c38c7ef8",
      "parents": [
        "84c05cdca73f0378c92ed06147463c2962b5c1b6"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 10 18:33:34 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 10 18:38:47 2018 -0700"
      },
      "message": "audio policy: rescale volume index in setStreamVolumeIndex\n\nFix a problem in setStreamVolumeIndex() introduced by commit dcd4ab18\nwhere stream volumes where applied systematically when in call for\nall streams regardless of streamsMatchForvolume().\nAlso add index rescaling as in theory two streams matching for volume\ndo not have necessarily the same index range.\n\nBug: 111194621\nTest: repro steps in bug.\nChange-Id: I713b35921d4df19b521fc98281636a9c17483998\n"
    },
    {
      "commit": "84c05cdca73f0378c92ed06147463c2962b5c1b6",
      "tree": "a0c1a0e2e0c661e4254b0846f50924b2e566b553",
      "parents": [
        "93cef54d92ec55dac31a992a3ca8faccb960f54a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 10 16:56:27 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 10 16:56:27 2018 -0700"
      },
      "message": "audio policy: limit voice call index to max index\n\nWorkaround for issue 111194621: limit voice call volume\nindex to max value before computing voice volume.\n\nBug: 111194621\nTest: repro steps in bug.\nChange-Id: Id965a3cc9d0d20900c910f43f41d998917e6040d\n"
    },
    {
      "commit": "80182df39aedd2cd2b589e289e9196f524b9436d",
      "tree": "f4b661f5b5dc99d52a707b78c7ac992fd2cd2d97",
      "parents": [
        "b404289cd9fb7c7e3ac1b6ec4a546ab46bbf20ec",
        "7b1fd2308ed3404557b2b81ae582d281b0f33362"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 10 19:03:26 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 10 19:03:26 2018 +0000"
      },
      "message": "Merge \"setPreferedDevice considered ahead of Dynamic Rules\""
    },
    {
      "commit": "137c7aaab7cc8f41ed49c51b865af41fdac2a84b",
      "tree": "04002ea83574d8d7c3444bed134648ddececa1a5",
      "parents": [
        "cd56a1c2a0adcd21aad3a64c761aa3562d915be1",
        "ac9858be02edea7770ab3bb27d1cc15e4640fb26"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 09 23:31:25 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 09 23:31:25 2018 +0000"
      },
      "message": "Merge \"Use and test patch utilities from system/audio.h\""
    },
    {
      "commit": "ac9858be02edea7770ab3bb27d1cc15e4640fb26",
      "tree": "ff0385983e0302f6f81a902d0e63b680d6c83ff5",
      "parents": [
        "908c7d77355ae2c63a179a4ebfce69b7a6d31e3f"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jun 15 13:12:37 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 09 14:01:15 2018 -0700"
      },
      "message": "Use and test patch utilities from system/audio.h\n\nUse `audio_patch_is_valid` function.\n\nAdd basic tests for the following functions:\n  audio_patch_is_valid\n  audio_port_config_has_hw_av_sync\n  audio_patches_are_equal\n\nBug: 63901775\nTest: systemaudio_tests\nChange-Id: I378ab544e4148fda0dd7b9520d6fd57ff01cb34b\n"
    },
    {
      "commit": "dcd4ab18a3cdb8f5d382a635c8602a18288137c1",
      "tree": "c0f4c63eef85a850dc01687bc7f17be4cd24031e",
      "parents": [
        "87a837c62a1bd1be9143aee3660bb171424a08a5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 29 17:45:13 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 02 18:03:17 2018 -0700"
      },
      "message": "audio policy: remove special notifications handling in call\n\nNot needed anymore as this is handled by NotificationManager.\nExtend caping of alarm and ringtone volume to call volume to all\noutput devices (was only done for earpiece).\n\nTest: make\nChange-Id: I9a1cd8610e42fefd0518f6ccc68e50e5541884ed\n"
    },
    {
      "commit": "7b1fd2308ed3404557b2b81ae582d281b0f33362",
      "tree": "50ab0dd7048a1494247e2c971b8ab82cf511550b",
      "parents": [
        "a0d382085046ed3b3bea256fbe13051528596418"
      ],
      "author": {
        "name": "Scott Randolph",
        "email": "randolphs@google.com",
        "time": "Mon Jun 18 15:33:03 2018 -0700"
      },
      "committer": {
        "name": "Scott Randolph",
        "email": "randolphs@google.com",
        "time": "Fri Jun 22 17:03:50 2018 -0700"
      },
      "message": "setPreferedDevice considered ahead of Dynamic Rules\n\nAudio policy is updated to allow an applications expressed preference\nfor a specific audio device to override dynamic policy rules, just as it\nalready overrides the rest of the policy engine\u0027s logic.\nThis is important in allowing 1st party automotive applications to\nexplicitly targets specific audio buses.\n\nTest: build and run on Mojave\nChange-Id: I482b74cba40f6d6150f69856769a998158a54a94\n"
    },
    {
      "commit": "3e7eb5eb24e6bf9a31495dee5e5f8252728a2b7d",
      "tree": "c94d954e4295d662b78db83f37f06c46b42f5865",
      "parents": [
        "c22b754fa944017c5d4c5ca58a077fdf89842947"
      ],
      "author": {
        "name": "Yung Ti Su",
        "email": "andysu@google.com",
        "time": "Wed Jun 13 11:48:42 2018 +0800"
      },
      "committer": {
        "name": "Yung Ti Su",
        "email": "andysu@google.com",
        "time": "Fri Jun 22 07:13:21 2018 +0000"
      },
      "message": "audiopolicy: fix for ringtone and offload music playback concurrency\n\nRoot cause: music output is still active when setphonestate and will be\nreevaluate routing and change back to normal speaker.\n\nfollow the change of https://googleplex-android-review.git.corp.google.com/c/platform/frameworks/av/+/4292147\n\nBug: 110072502\nTest: self-tested over 30 times.\n\nChange-Id: Iec1c85f9cd24e3eae149fa27ad8d1ec2b23019e0\nSigned-off-by: Yung Ti Su \u003candysu@google.com\u003e\n"
    },
    {
      "commit": "9b6e81afbffda68de3cda913965c2dd64751fd4a",
      "tree": "0ef1b4671908592a4afdba7b318386d16178a921",
      "parents": [
        "cab5c6676d6cc9f42a0cbe9d864c6f677997c154",
        "4782b353e11d2658a25abf3ee77bfc3b9fa917e1"
      ],
      "author": {
        "name": "Android Build Merger (Role)",
        "email": "noreply-android-build-merger@google.com",
        "time": "Wed Jun 13 00:19:50 2018 +0000"
      },
      "committer": {
        "name": "Android Build Merger (Role)",
        "email": "noreply-android-build-merger@google.com",
        "time": "Wed Jun 13 00:19:50 2018 +0000"
      },
      "message": "[automerger] Merge \"audiopolicy: fix VoIP and system sound routing concurrency\" into pi-dev am: 70c2e5ea61 am: 4782b353e1\n\nChange-Id: I3efe62fd5318a2ef19a45f9a12a8d37d9997f152\n"
    },
    {
      "commit": "d21563205d17b6c61653501f5350812cbf18f58d",
      "tree": "2a7740e7f25caadf7165561429e3ba9e2a18295c",
      "parents": [
        "b58447bf324dca7be1989134deb10e3c78c1e7e7",
        "70c2e5ea61daffd458fd0e57be8376036281f737"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 12 17:14:53 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jun 12 17:14:53 2018 -0700"
      },
      "message": "Merge \"audiopolicy: fix VoIP and system sound routing concurrency\" into pi-dev\nam: 70c2e5ea61\n\nChange-Id: I8467ad2d0a86e2f04bd9aad1fc490900f2207fab\n"
    }
  ],
  "next": "484e927cf9e9bdd91f21796d52ea23c8fe49f670"
}
