)]}'
{
  "log": [
    {
      "commit": "298e1b3db0f94396249933c823b6ff55cf8fc1cc",
      "tree": "8deeed6f3a7001d40440a130e9f377ec3fb59a89",
      "parents": [
        "868c0a9e91df17dcad52b5a0dcacc51205dd8f46",
        "4ef19fa450e8b523741a22fabee8f62691abec37"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 22 20:47:54 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 22 20:47:54 2018 +0000"
      },
      "message": "Merge \"Update audio permission checking\""
    },
    {
      "commit": "d8ba3c4d8a56abf3afb8e793caaec97216251b41",
      "tree": "f7c31740b155cf5a8bba9c87e50b8e498322619c",
      "parents": [
        "31e2127d4b78daeedd36b6daabc4ba7dfe1b7ec7",
        "1888c866419cb11a422a36ad08e2e6ca2c2f8aeb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 18 11:30:44 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri May 18 11:30:44 2018 -0700"
      },
      "message": "Merge \"audio policy: add device to audio record media metrics\" into pi-dev am: 1ea2c0f91c\nam: 1888c86641\n\nChange-Id: Ic914228c52f19b2f745541aa5edd12bbd2f66419\n"
    },
    {
      "commit": "1888c866419cb11a422a36ad08e2e6ca2c2f8aeb",
      "tree": "2eb76c155a3bf0438ef3a105db30832010f9d3ea",
      "parents": [
        "34dfaeb3f46e45e538e21b6d788200f85b53d6be",
        "1ea2c0f91cb97b17cc8849cf14848b05684b63b7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 18 11:18:06 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri May 18 11:18:06 2018 -0700"
      },
      "message": "Merge \"audio policy: add device to audio record media metrics\" into pi-dev\nam: 1ea2c0f91c\n\nChange-Id: Ic9cacf6f5b2b9f3aa51367914f71c8c03592a415\n"
    },
    {
      "commit": "99fcae46d54639e7841d87b1dcacbc229bbf8dc4",
      "tree": "f1f6c0ffb8e22e7df27fbe5b5cd42e3bef3e7658",
      "parents": [
        "0ba1ae398e65718fba66bb1bd258d4d0a9ba6c28"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 17 16:59:18 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 17 18:17:44 2018 -0700"
      },
      "message": "audio policy: add device to audio record media metrics\n\nAdd information about requested and active input device type in\naudiopolicy media metrics on recording clients.\n\nBug: 78595399\nTest: recording over several devices, dumpsys media.metrics\nChange-Id: Ifeeb2c51ee3ed2dbb86406c0e8d74e7aa70dd8fb\n"
    },
    {
      "commit": "4ef19fa450e8b523741a22fabee8f62691abec37",
      "tree": "5d0eaaf73cebe029d1d8dd935d5c6fddb12ee70f",
      "parents": [
        "ab7ef300b74904bce6c5c810d9e5679abfa582e6"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue May 15 19:35:29 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Thu May 17 18:11:55 2018 -0700"
      },
      "message": "Update audio permission checking\n\nChange captureAudioOutputAllowed to check client pid.\n\nCheck calling uid with AID_AUDIOSERVER instead of calling pid with\nown pid. This is consistent, and works if AudioFlinger and\nAudioPolicyManager exist as different processes.\n\nRemove getpid_cached since getpid() is very fast. This removes\nany initialization issues.\n\nReplace getuid() with AID_AUDIOSERVER to remove ambiguity of\nmultiple native audio services for multiple users. Only\none exists regardless of users.\n\nDo not use multiuser UID checks for certain native services\nthat do not spawn for multiple users to prevent accidently exposure.\n\nMove permission checks to use ServiceUtilities for control and\nconsistency.\n\nRename isTrustedCallingUid to isAudioServerOrMediaServerUid\nso that permission check is explicitly known to caller.\n\nUpdate MediaLogService to use ServiceUtilities.\n\nTest: Basic sanity\nTest: AudioTrackTest, AudioRecordTest, SoundPool, SoundTrigger\nBug: 79485140\nChange-Id: Ib8ccb36929a9b4806c01626f32fa023a046d6020\n"
    },
    {
      "commit": "b1410279236c35e05edfb7aa96dec563759d073e",
      "tree": "7228325d07710a7366a5601b11e974b2f9dfdd02",
      "parents": [
        "18a64dc9e1bdb6f0bf80a76b86b3ca96ed5be333",
        "7221451768a69fa5bc8dbbff8ea76af47d3ea70a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 17 15:03:40 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 17 15:03:40 2018 -0700"
      },
      "message": "Merge \"audiopolicy: Optimize A2DP codec config change\" into pi-dev am: 0ba1ae398e\nam: 7221451768\n\nChange-Id: Iab6dde9d368f6647aeb1eab49dc7b45a6b96f756\n"
    },
    {
      "commit": "7221451768a69fa5bc8dbbff8ea76af47d3ea70a",
      "tree": "862cc3e9533ab6d1220c351fab87017e4a24dd77",
      "parents": [
        "52f0c23904b2249fb92ad015d74d9c6969930cdb",
        "0ba1ae398e65718fba66bb1bd258d4d0a9ba6c28"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 17 14:58:36 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 17 14:58:36 2018 -0700"
      },
      "message": "Merge \"audiopolicy: Optimize A2DP codec config change\" into pi-dev\nam: 0ba1ae398e\n\nChange-Id: I8a8da84dafe1f941b7fb0240ac353c35ea06ace3\n"
    },
    {
      "commit": "3432e0439d3b09756f125dfa734951c654d63baf",
      "tree": "a5ccde7855da94bf284d302e61adf0d155f0dcfa",
      "parents": [
        "5eb9d967e81ace00d96ab50b9264b25560e9df1d"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@codeaurora.org",
        "time": "Fri Apr 06 14:22:15 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 17 11:18:25 2018 -0700"
      },
      "message": "audiopolicy: Optimize A2DP codec config change\n\nHandle A2DP codec config change in audio HAL without\nclosing / re-opening outputs or invalidating streams\nfrom AudioPolicyManager.\n\nBug: 79476124\nTest: music playback over BT A2DP\nChange-Id: I87263da32815a4d4f6273068ef0b2a5b93c73b75\n"
    },
    {
      "commit": "4dbb7193c5fde752707bee899a018511e872f1e5",
      "tree": "e1b3fe47323886a0fd5751aafe35ce7dc5add0d6",
      "parents": [
        "815fc56caa35b91df0c8a4bb4659438e59e91152",
        "dc769682023ba8a8a5da07c3e3a3adfabe4bd612"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 16 17:47:25 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 16 17:47:25 2018 +0000"
      },
      "message": "Merge \"audio_server: Unify audio_patch creation\""
    },
    {
      "commit": "dc769682023ba8a8a5da07c3e3a3adfabe4bd612",
      "tree": "6f6a0991e71927cda302c4c489f69bd239023597",
      "parents": [
        "f1040d20210338eb850b000d4344ddc9a04eb493"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri May 04 15:34:08 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed May 16 09:43:33 2018 -0700"
      },
      "message": "audio_server: Unify audio_patch creation\n\nProvide PatchBuilder helper class instead of fiddling with\nstruct audio_patch directly.\n\nRename \u0027getAudioPortConfig\u0027 methods of AudioFlinger helper\nclasses into \u0027toAudioPortConfig\u0027 to match classes\nof AudioPolicyManager.\n\nFactor out common code in AudioPolicyManager that was\nadding audio patches. For that, AudioOutputDescriptor now inherits\nfrom AudioSessionInfoProvider, and the latter has been extended\nwith \u0027setPatchHandle\u0027 method.\n\nTest: switch to/from Bluetooth on phone calls and media playback,\n      use camcorder\nChange-Id: Idd99645dc6943ed078c4d94d0197fead7831ab4d\n"
    },
    {
      "commit": "f38ae75e82876fa231cc55bca761e6e22ede1867",
      "tree": "41c05c6b412169df2cf5c392684f27b32f974803",
      "parents": [
        "8bc70f7fc17d70e3d3be44d55e17c827fb6e2fb1",
        "0e66c708f9afc27195d6854977f70f070ba1e46b"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue May 15 14:52:05 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 15 14:52:05 2018 -0700"
      },
      "message": "Merge \"Add support for manually set surround formats.\" into pi-dev am: f824853eab\nam: 0e66c708f9\n\nChange-Id: If0fb97fcf33cb8b1b712238102d17f2c84c24f38\n"
    },
    {
      "commit": "0e66c708f9afc27195d6854977f70f070ba1e46b",
      "tree": "41f18c0a17321ae6f19a513fac91baaecb8a62cd",
      "parents": [
        "cfc4aff2d73d329bbc56dd1c322524d733a5972b",
        "f824853eabf8eab483de7387c001493dda63966b"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue May 15 14:01:54 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 15 14:01:54 2018 -0700"
      },
      "message": "Merge \"Add support for manually set surround formats.\" into pi-dev\nam: f824853eab\n\nChange-Id: Id134ce99f99d0fa067a95ed5e2f109ec96c7cfbf\n"
    },
    {
      "commit": "f824853eabf8eab483de7387c001493dda63966b",
      "tree": "2d56a1a846f7adf1e25a7cf4465d34d648cd861a",
      "parents": [
        "625e3020f8c070c8d8449af1bdaeaa002c11cc03",
        "817729095966c338615a8a791d2dbf774fc034ef"
      ],
      "author": {
        "name": "Jiabin Huang",
        "email": "jiabin@google.com",
        "time": "Tue May 15 20:54:28 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 15 20:54:28 2018 +0000"
      },
      "message": "Merge \"Add support for manually set surround formats.\" into pi-dev"
    },
    {
      "commit": "98da2a62079704c8f9b3963ed250d547addf45bd",
      "tree": "4bd61aa5282d38737277a251920ac9b5074b47d1",
      "parents": [
        "c84ef0a6d4d931caebbf1dfec5265d944de45dcb",
        "84b79e642ba977143d882c8270426dacfd6e117f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 15 12:42:20 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 15 12:42:20 2018 -0700"
      },
      "message": "Merge \"audio policy: reduce mute time when invalidating tracks\" into pi-dev am: c7c3213356\nam: 84b79e642b\n\nChange-Id: I22dc4c6d8ac63fe1e75e2cd03732261ad913e089\n"
    },
    {
      "commit": "84b79e642ba977143d882c8270426dacfd6e117f",
      "tree": "c3e546e33984a0d04088e07f906605b9187e099b",
      "parents": [
        "a18b655832a629d7d14967b137f27ed0a36417af",
        "c7c321335610ac2ee193c41ef673517ad43d6c42"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 15 12:12:35 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 15 12:12:35 2018 -0700"
      },
      "message": "Merge \"audio policy: reduce mute time when invalidating tracks\" into pi-dev\nam: c7c3213356\n\nChange-Id: I3d617996be5d86a74b5b1f113d5e37e75fbc4780\n"
    },
    {
      "commit": "ac3a690c79467612a12e2c3a216c8ea2c4efbd64",
      "tree": "b192daca5cbceadc29316e9b22413bcb3914a856",
      "parents": [
        "2c82a511797920451aa20ad5e089fc71aaff78af"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 11 16:39:10 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 14 18:35:05 2018 -0700"
      },
      "message": "audio policy: reduce mute time when invalidating tracks\n\nReplace fixed 2 seconds mute time in checkOutputForStrategy() by\na variable time based on actual maximum output latency.\n\nAlso fix problem where src outputs where queried from mOutputs list\ninstead of from mPreviousOutputs.\n\nBug: 70632415\nTest: manual connections/disconnection of BT A2DP and USB headset\nChange-Id: I3a9ea915a134d95a2dc5abea2fbfe6152f147e80\n"
    },
    {
      "commit": "315ebb417fedf88d42240844479604e79ea3ca2a",
      "tree": "7a12a33194ae96121e8322211945f0e9b211efe7",
      "parents": [
        "6c529b103e2a4079295c39c32b7aedcbae3295c8",
        "812511dbb573f2630a2a98d197e5cbeb3c595671"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 10 19:08:29 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 10 19:08:29 2018 -0700"
      },
      "message": "Merge \"audiopolicy: clean delayMs to 0 before reevaluate all outputs routing when call state changes\" into pi-dev am: ff9407d5c6\nam: 812511dbb5\n\nChange-Id: I2ce7d66029e81b7c0e47362bbcef54cf9ba2092b\n"
    },
    {
      "commit": "812511dbb573f2630a2a98d197e5cbeb3c595671",
      "tree": "16d2b76a2f6f2373f0a892aecd4ab68e2a18f29e",
      "parents": [
        "e34561be0524fc177c3c1ba973a4e739e6f01ec9",
        "ff9407d5c6eb3598edc2dd2405fb0d3367e726d4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 10 19:03:51 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 10 19:03:51 2018 -0700"
      },
      "message": "Merge \"audiopolicy: clean delayMs to 0 before reevaluate all outputs routing when call state changes\" into pi-dev\nam: ff9407d5c6\n\nChange-Id: Ica74623612e88680887789288c744a4a4a6a0275\n"
    },
    {
      "commit": "817729095966c338615a8a791d2dbf774fc034ef",
      "tree": "b9c23fc427ec841575b37c59280000467c5a1648",
      "parents": [
        "183eb5fb74b9c723ba8e8da9b3c962031bac2c6a"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Apr 02 17:52:27 2018 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu May 10 18:20:24 2018 -0700"
      },
      "message": "Add support for manually set surround formats.\n\nTo make surround sound setting more clear to users, we are changing\nsurround setting from ALWAYS to MANUAL. With MANUAL, users could enable\nsurround formats according to their need.\n\nBug: 67479735\nTest: Try creating AudioTrack with enable/disable surround formats.\nChange-Id: Ia6c0e1210ff6215f4b80a278a0aa90ca9543f262\n"
    },
    {
      "commit": "f60c824b23de449d3e31e69d5b91e3dba83067b1",
      "tree": "ba06f79b07ed975db58456cddb214248b3a48fbd",
      "parents": [
        "ec2c0359ecc1225ea8d15bd16fd6e01d5c006933"
      ],
      "author": {
        "name": "Yung Ti Su",
        "email": "andysu@google.com",
        "time": "Thu May 10 18:07:26 2018 +0800"
      },
      "committer": {
        "name": "Carter Hsu",
        "email": "carterhsu@google.com",
        "time": "Fri May 11 06:40:15 2018 +0800"
      },
      "message": "audiopolicy: clean delayMs to 0 before reevaluate all outputs routing when call state changes\n\nsince the delayMs is for updateCallRouting(),\nwe need to clean delayMs to 0 before reevaluate\nall outputs routing when call state changes.\nOtherwise, setPhoneState will cost too much time\nwhich will block UI making phone call.\nTest: self-test making phone call and check for delay time\nBug: 79187322\n\nTest: delayed time is reduced.\nChange-Id: I3f71af700efb958c0716b4bf28aa436d85c5af66\nSigned-off-by: Yung Ti Su \u003candysu@google.com\u003e\n"
    },
    {
      "commit": "99c58a82ce17440d3b050c8efbaa99f6db3f0668",
      "tree": "58fa385167bbb63f87487495fb34e1b9f1d5ec06",
      "parents": [
        "c3cb8cf7a9ceb364328183336fcacb1285aba883",
        "3b7f469b1ead2428a50bf4049e32b7a81fb2b7f6"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon May 07 11:20:57 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon May 07 11:20:57 2018 -0700"
      },
      "message": "collect more media metrics around audio am: 84e84a5dd3\nam: 3b7f469b1e\n\nChange-Id: I03941e3b776ba3cdb84ea39b07f1dcb903cbbf14\n"
    },
    {
      "commit": "3b7f469b1ead2428a50bf4049e32b7a81fb2b7f6",
      "tree": "210e40b23a608b6862988f838364434bdd6508cb",
      "parents": [
        "00838b0bc08a3eee51c458a8e560d36985973ef5",
        "84e84a5dd3b6d9ee4cf032e8d6206c70969b7107"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon May 07 11:14:24 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon May 07 11:14:24 2018 -0700"
      },
      "message": "collect more media metrics around audio\nam: 84e84a5dd3\n\nChange-Id: I3403aa6ec0f4bfd53a7ec80c8c45d28267797763\n"
    },
    {
      "commit": "84e84a5dd3b6d9ee4cf032e8d6206c70969b7107",
      "tree": "49fd8e4e911d62ac8be44ae91fdaf35902a234d9",
      "parents": [
        "527da4c9d30c977c0105a288b20a77f0f9e8d0d3"
      ],
      "author": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Thu May 03 18:45:07 2018 -0700"
      },
      "committer": {
        "name": "Ray Essick",
        "email": "essick@google.com",
        "time": "Mon May 07 16:32:02 2018 +0000"
      },
      "message": "collect more media metrics around audio\n\nnew fields in the media metrics \u0027audiorecord\u0027 record for more detail\nlength of time recorded, error conditions\nadd new media metrics type \u0027audiopolicy\u0027 that describes attempts to get\nmicrophone access -- success, failure on contention, what type of access\nwas requested, and (important for the contention) which programs are\ndoing the requesting and holding of the microphones.\n\nwhitelist the \u0027audiopolicy\u0027 metrics type with the  media.metrics service.\n\nBug: 78595399\nTest: concurrent/serial recordings, dumpsys media.metrics\nChange-Id: Ia17860940d4c329b0215b4cf97c6dacacb6a8e32\n"
    },
    {
      "commit": "b9e2f649aedfbd92d1ead1c8c06f51dadf38c962",
      "tree": "4b27a226e73911c9945fabb1ada7f95d16cc0a30",
      "parents": [
        "2334e15ad68771d58bd5913a1e9e164b5b94b585",
        "126495229dde741826639e3e48eaa371cf58d4ee"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 30 17:58:33 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 30 17:58:33 2018 -0700"
      },
      "message": "Merge \"AudioPolicyManager: Ensure direct output matches exact format\" into pi-dev am: 8d57302e2d\nam: 126495229d\n\nChange-Id: Ibd4368290502f620bc67d144253490442f9eaba2\n"
    },
    {
      "commit": "126495229dde741826639e3e48eaa371cf58d4ee",
      "tree": "88711211e303476d1c859c9e0e3ae51e00d041ab",
      "parents": [
        "f4326116945b1d7a2717eb8b2a8a7cb8f31257c7",
        "8d57302e2deaf84c039d616f6423541813b48c75"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 30 17:54:37 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 30 17:54:37 2018 -0700"
      },
      "message": "Merge \"AudioPolicyManager: Ensure direct output matches exact format\" into pi-dev\nam: 8d57302e2d\n\nChange-Id: I3005367e98e840800b72289565760488a47a9af2\n"
    },
    {
      "commit": "5659ed5327fbd6a412ecd65235eea68a5a59fd39",
      "tree": "cdbee9dc70ddf66800ec413587af91e182e98d81",
      "parents": [
        "e5a37268101a2c9d8019938f4e5ac9eec2e52fca"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 30 10:31:26 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 30 10:56:52 2018 -0700"
      },
      "message": "AudioPolicyManager: Ensure direct output matches exact format\n\nOtherwise AudioFlinger will fail on createTrack.\n\nTest: No regression on Play Music Offload playback\nBug: 77507038\nChange-Id: I0702e3047e385889861288072d4f5c6e99e8924d\n"
    },
    {
      "commit": "47d76fdbb237562b22100ee63e2b03c749c201e4",
      "tree": "0ccd08b3865813b4c5806db6e06e035db8dcaaf8",
      "parents": [
        "b34d37bb68f276dbc27581ea985220328b4891ee",
        "fd3ac44e7de0cd303ad12530378d4dfaf23e3526"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 30 09:56:35 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 30 09:56:35 2018 -0700"
      },
      "message": "Merge \"Fix getOutputForAttr to avoid binder parameter in/out change\" into pi-dev am: e5a3726810\nam: fd3ac44e7d\n\nChange-Id: Ife87d98b5f9faebc0c5445ea81eb451fc70da8cb\n"
    },
    {
      "commit": "fd3ac44e7de0cd303ad12530378d4dfaf23e3526",
      "tree": "620a89afbb1ada5dd32a4924282e1a300d61efe8",
      "parents": [
        "9bdd82e1fcb4b74988c314eec3b506730a7b0c0d",
        "e5a37268101a2c9d8019938f4e5ac9eec2e52fca"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 30 09:51:29 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 30 09:51:29 2018 -0700"
      },
      "message": "Merge \"Fix getOutputForAttr to avoid binder parameter in/out change\" into pi-dev\nam: e5a3726810\n\nChange-Id: Ic33233a6ccb3e291636f3d17cdc585ec7ce50b6b\n"
    },
    {
      "commit": "e5a37268101a2c9d8019938f4e5ac9eec2e52fca",
      "tree": "7d0c6be8f2a9bd25dc6703675a1df112a6d19172",
      "parents": [
        "487109674141a0adb4b173d9f7d682d29587fec3",
        "c88b06445e53ae806e94483a6ae8b2241fe3bf6f"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Apr 30 16:43:27 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 30 16:43:27 2018 +0000"
      },
      "message": "Merge \"Fix getOutputForAttr to avoid binder parameter in/out change\" into pi-dev"
    },
    {
      "commit": "c88b06445e53ae806e94483a6ae8b2241fe3bf6f",
      "tree": "af4d4c39a33d69d72813b2cf2b307669c892286b",
      "parents": [
        "ed4f0147db29c87d0404f78eb68dc7b7b81deed8"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 27 15:42:35 2018 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Apr 27 18:28:00 2018 -0700"
      },
      "message": "Fix getOutputForAttr to avoid binder parameter in/out change\n\nBug: 78796725\nTest: test_interference.cpp\nChange-Id: Iab9f337d750910c896839c8905c945a181a133c7\n"
    },
    {
      "commit": "5c3c29e53490558a8e538044921daa263df22414",
      "tree": "7f12f78fb46190f2802c9257775ddbed498d55db",
      "parents": [
        "5ec6e0d87fba281c66dd1644fcf9989bb9c95762",
        "e9108d0f23dfb59f59da8a55db8c91f2bdc3297f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 26 11:58:22 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 26 11:58:22 2018 -0700"
      },
      "message": "Merge \"audiopolicy: fix preferred device selection\" into pi-dev am: 90033d1913\nam: e9108d0f23\n\nChange-Id: I8ee6ed31b4f205f7c6178db8219439a56168bf95\n"
    },
    {
      "commit": "e9108d0f23dfb59f59da8a55db8c91f2bdc3297f",
      "tree": "bd2851c0307e2b9897570dd682b28cc705584a96",
      "parents": [
        "f854156ae82ba41965a3129df7fc1912fd36da5f",
        "90033d19134e13de6b7829db496925676c9d4d72"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 26 11:46:45 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 26 11:46:45 2018 -0700"
      },
      "message": "Merge \"audiopolicy: fix preferred device selection\" into pi-dev\nam: 90033d1913\n\nChange-Id: Id90deaf535ea24fcbc7024ca5832de675a9c847f\n"
    },
    {
      "commit": "2157f5bc0c54a77318e75076365eff739e07056f",
      "tree": "5e7ba0e1b401517aeaaebb68a8c6d2f7eab9a6e8",
      "parents": [
        "64da22285776f07a775afd45f9fc36cea1aa05e3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 25 18:33:02 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 25 18:33:02 2018 -0700"
      },
      "message": "audiopolicy: fix preferred device selection\n\nMake sure preferred device selection is taken into account\nin getOutputForAttr() even if called twice on the same session:\nForce changed flag when adding a SessionRoute even if\nthe same device is specified.\n\nAlso renamed SessionRoute isActive() to isActiveOrChanged() and\nhasRouteChanged() to getAndClearRouteChanged() for clarity.\n\nBug: 69680975\nTest: manual\nChange-Id: I3f3a659568c4dfc825a788753b0302136fd89871\n"
    },
    {
      "commit": "4dc3cb0ce536ecb4c58d08889cf482267825446d",
      "tree": "24526dcfc7e6655b5bd826eb414fa7b70957555c",
      "parents": [
        "f005be5fb524e98f3ada87693d2e2911229dab16",
        "2e5167e17a4c860a297c451e9892660db0ad8dab"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 23 18:08:22 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 23 18:08:22 2018 +0000"
      },
      "message": "Merge \"AudioPolicy: Print the actual config file name in the dump\""
    },
    {
      "commit": "f4f01aafa5d45d2c5b1acb80bba9fcaa64e70e61",
      "tree": "b860d7d086757ab2c862f0a29059949e3e4f3084",
      "parents": [
        "f5afe9d02a05dee2dee99e5fd23c920bd38bcac9",
        "030cb3b698958d5b291598b96463b450888e1a27"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 20 19:23:33 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Apr 20 19:23:33 2018 -0700"
      },
      "message": "Merge \"audiopolicy: evaluate all outputs routing when call state changes\" into pi-dev\nam: 030cb3b698\n\nChange-Id: I237d237b388a1434b3dda8e4c3da682d5595e865\n"
    },
    {
      "commit": "030cb3b698958d5b291598b96463b450888e1a27",
      "tree": "3838e8db0f932797f143a4996ca07d2bfbfcf411",
      "parents": [
        "ed4f0147db29c87d0404f78eb68dc7b7b81deed8",
        "2e2a8a993de1aa65a7e174ee1152240779350456"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Apr 21 01:41:19 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 21 01:41:19 2018 +0000"
      },
      "message": "Merge \"audiopolicy: evaluate all outputs routing when call state changes\" into pi-dev"
    },
    {
      "commit": "2e5167e17a4c860a297c451e9892660db0ad8dab",
      "tree": "7ada8498a06a1f3226fc0ec4bc035fbbf5bc6bba",
      "parents": [
        "c08db98c40e76a49da296e8834fd0a5a51214f60"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Apr 19 13:41:22 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Apr 20 16:45:53 2018 -0700"
      },
      "message": "AudioPolicy: Print the actual config file name in the dump\n\nSince the audio policy config file is looked up in many locations,\nspecify which one we have ended up using.\n\nSimplify rendering of the audio policy state header.\n\nTest: adb shell dumpsys media.audio_policy\nChange-Id: I0d410eb697898acf4e4beb2333949b1daf08c92b\n"
    },
    {
      "commit": "2e2a8a993de1aa65a7e174ee1152240779350456",
      "tree": "a49c322cbf9216ed7258c28539388b98d343de06",
      "parents": [
        "6b6f4313aae039f2d73664816e45834e65f79bf5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 20 16:21:33 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 20 16:30:02 2018 -0700"
      },
      "message": "audiopolicy: evaluate all outputs routing when call state changes\n\nWhen call state changes, it is possible that some outputs are active in\nwhich case their routing must be reevaluated.\nThis generalizes this behavior already implemented when a device is\nconnected/disconnected or a forced usage changed.\n\nThis is normally not needed as music is paused when a call is active\nbut there can be some race conditions where music resumes before the\naudio mode is actually updated due to the asynchronous nature of audio\nfocus and audio mode management.\n\nBug: 78248310\nTest: repro steps in bug. Audio smoke tests\nChange-Id: If491eb879a90cf29025bedb2bc77210f052bcb6a\n"
    },
    {
      "commit": "150b9846f846165344910b9211739cdb3054ccf4",
      "tree": "cb14ef2c92dc6210a145e34eef3e310f475262ff",
      "parents": [
        "56aad0ab6a23bfa750a3542f6bdcd21b70f082ac"
      ],
      "author": {
        "name": "Petri Gynther",
        "email": "pgynther@google.com",
        "time": "Tue Apr 17 18:46:10 2018 -0700"
      },
      "committer": {
        "name": "Petri Gynther",
        "email": "pgynther@google.com",
        "time": "Fri Apr 20 01:07:22 2018 -0700"
      },
      "message": "A2DP offload: switch to new properties + swap audio XML files\n\nBug: 63932139\nBug: 76201991\nTest: Manual A2DP testing (A2DP offload enabled and disabled)\nChange-Id: I08363a5ee3ede339f1c25baa70d44066d657d967\nMerged-In: I08363a5ee3ede339f1c25baa70d44066d657d967\n"
    },
    {
      "commit": "5a17cf8d6cf2bff974965d87e3ac5f6a05b3c666",
      "tree": "b71116c3a0be80ab0dc62d7ec1a17ea0f775c6ed",
      "parents": [
        "b7d75dd1106af8d0b1c1d82826b317d88598a963",
        "0bd5a3661d38b9c84cfc87b70d415e55d05e2f6f"
      ],
      "author": {
        "name": "Petri Gynther",
        "email": "pgynther@google.com",
        "time": "Fri Apr 20 00:55:21 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Apr 20 00:55:21 2018 -0700"
      },
      "message": "Merge \"A2DP offload: switch to new properties + swap audio XML files\" am: 80236d253e\nam: 0bd5a3661d\n\nChange-Id: If6509649831cf90112d83e485f9718300dfe924e\n"
    },
    {
      "commit": "f497f293021d2f983547c271db2cd11038100e93",
      "tree": "11d0ad8e3c0b6836d277bea01708e7bf3491d9f5",
      "parents": [
        "91a45a421b3598e3519a3d459957959e94b4d3c1"
      ],
      "author": {
        "name": "Petri Gynther",
        "email": "pgynther@google.com",
        "time": "Tue Apr 17 18:46:10 2018 -0700"
      },
      "committer": {
        "name": "Petri Gynther",
        "email": "pgynther@google.com",
        "time": "Thu Apr 19 11:34:50 2018 -0700"
      },
      "message": "A2DP offload: switch to new properties + swap audio XML files\n\nBug: 63932139\nBug: 76201991\nTest: Manual A2DP testing (A2DP offload enabled and disabled)\nChange-Id: I08363a5ee3ede339f1c25baa70d44066d657d967\n"
    },
    {
      "commit": "b3015a96982378dfe6ac5578f941c3480d303816",
      "tree": "3a345235085043df7704cd5c15f66244050723a2",
      "parents": [
        "56f91c54055d2d36b19d22abf391004fb1d9843e",
        "f255369091d48ba7475ee4aae840a8a9c7a15f07"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 17 10:15:36 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Apr 17 10:15:36 2018 -0700"
      },
      "message": "Merge changes from topic \"silence_mmap_capture_fix\" into pi-dev\nam: f255369091\n\nChange-Id: I2e7140f8c5ff6fb26783adcc38c03641a2e0aac8\n"
    },
    {
      "commit": "f255369091d48ba7475ee4aae840a8a9c7a15f07",
      "tree": "41a75f7dece0aae3664a6ab896535580bd38a85d",
      "parents": [
        "85d2e91d3cb2faaf42338df28d34c1cc1bc968bd",
        "0389387677385a5ab0341e7505258f489e5aacf5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 17 16:55:26 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 16:55:26 2018 +0000"
      },
      "message": "Merge changes from topic \"silence_mmap_capture_fix\" into pi-dev\n\n* changes:\n  audiopolicy: fix shared mmap capture\n  audioflinger: fix mmap interface callback lock\n  Revert \"Revert \"audioflinger: implement silenced capture for mmap\"\"\n"
    },
    {
      "commit": "56f91c54055d2d36b19d22abf391004fb1d9843e",
      "tree": "7611968dd6e86273c66464a67057c4b72606e66c",
      "parents": [
        "f0d93bf6e4955892e9ae76c158e226ce9dec758a",
        "85d2e91d3cb2faaf42338df28d34c1cc1bc968bd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 17 07:50:30 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Apr 17 07:50:30 2018 -0700"
      },
      "message": "Merge \"Make AudioPolicyManager::getInputForDevice prefer profile match on input fast flag\" into pi-dev\nam: 85d2e91d3c\n\nChange-Id: I53a34a352c845373aca3f8441c5e15db5f7c58e0\n"
    },
    {
      "commit": "85d2e91d3cb2faaf42338df28d34c1cc1bc968bd",
      "tree": "da64b9ee9d8f23b0dfa295ffd241121bb924d17f",
      "parents": [
        "554e08c6b00b2a57348f4545d450915a9e8c870a",
        "730b926555ccb9ad5f7d4c47bf01ade526cceef0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Apr 17 14:39:19 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 17 14:39:19 2018 +0000"
      },
      "message": "Merge \"Make AudioPolicyManager::getInputForDevice prefer profile match on input fast flag\" into pi-dev"
    },
    {
      "commit": "f0d93bf6e4955892e9ae76c158e226ce9dec758a",
      "tree": "da4697cf6ccff34fe53c071ab1d3386ea059d0cc",
      "parents": [
        "3fab4693929df83e5963f68e4f40d1d20a16bc0e",
        "554e08c6b00b2a57348f4545d450915a9e8c870a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 17:29:43 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 16 17:29:43 2018 -0700"
      },
      "message": "Merge \"Revert \"audioflinger: implement silenced capture for mmap\"\" into pi-dev\nam: 554e08c6b0\n\nChange-Id: I4844d586d7e0916bf1308d663ad486445021a125\n"
    },
    {
      "commit": "331679c8a5cd21a0e6a7a1d851e965e4721f7420",
      "tree": "9e3835bb805631ca42a90ded01796b73307a4642",
      "parents": [
        "554e08c6b00b2a57348f4545d450915a9e8c870a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 17:03:16 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 17:08:06 2018 -0700"
      },
      "message": "Revert \"Revert \"audioflinger: implement silenced capture for mmap\"\"\n\nThis reverts commit 611ebb95e76c230214780b7b583b8a3c5277ac7a.\n\nBug: 78118584\nbug: 72134552\nTest: \u0027adb shell write_sine_callback -m3 -pl -s100 -x\u0027 and Plug headphones in and out.\nTest: AAudio CTS tests\nChange-Id: I7558ad7b9c6c2d352ebce105382fe914c26fd35e\n"
    },
    {
      "commit": "554e08c6b00b2a57348f4545d450915a9e8c870a",
      "tree": "b66615256ee7a7eeac8a7e54c54c2fd872a3fdd0",
      "parents": [
        "c620796251df712274c16858c76628d802bbb4b1",
        "611ebb95e76c230214780b7b583b8a3c5277ac7a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 16 23:52:19 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 16 23:52:19 2018 +0000"
      },
      "message": "Merge \"Revert \"audioflinger: implement silenced capture for mmap\"\" into pi-dev"
    },
    {
      "commit": "611ebb95e76c230214780b7b583b8a3c5277ac7a",
      "tree": "1c8ef30309a0954a51a6b4c872f30ca399f064d2",
      "parents": [
        "a2f478ca0b2bda8db9b321f0cfa9e9d3cf6130f9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 19:43:59 2018 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 16 19:43:59 2018 +0000"
      },
      "message": "Revert \"audioflinger: implement silenced capture for mmap\"\n\nThis reverts commit a2f478ca0b2bda8db9b321f0cfa9e9d3cf6130f9.\n\nBug: 78118584\nChange-Id: Ie0da3dea445f2474c7a889c5f9919305c1c96d40\n"
    },
    {
      "commit": "730b926555ccb9ad5f7d4c47bf01ade526cceef0",
      "tree": "86d3404a2113dca7252c57f56829ec73d8569690",
      "parents": [
        "c4b259a584be3e7dc9aad83e0ead06c913ceb998"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Mar 29 15:01:26 2018 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Apr 16 12:16:16 2018 -0700"
      },
      "message": "Make AudioPolicyManager::getInputForDevice prefer profile match on input fast flag\n\nBug: 77292903\nTest: log name of selected profile\nChange-Id: Idad75627f399f01f353d49d5fd78d7cdb2953d60\n"
    },
    {
      "commit": "d25975fd2a84fa2bdc2f1b230d8ce1b3ffb683db",
      "tree": "dea0abd4e315faf0f7d8db96d54ec3749a1f59e6",
      "parents": [
        "476d050d3d4044b78a37b98411e33cc5f92d9b2d",
        "258fb48d1498c8d34d6877700db993938cc89f71"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 13 08:21:28 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Apr 13 08:21:28 2018 -0700"
      },
      "message": "Merge \"audio policy: make input device selection more consistent\" into pi-dev\nam: 258fb48d14\n\nChange-Id: I0a66540bd05d6e376fde5e24c5a2bdf0f1776a95\n"
    },
    {
      "commit": "258fb48d1498c8d34d6877700db993938cc89f71",
      "tree": "cec857b4eae1562b17b5a1e37faeadd3cbe2064b",
      "parents": [
        "c16f23e399969e9d82f0b245afb0870fa448e78e",
        "dc95a25769edbe9c47efd1e25962dbd399056157"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 13 15:14:34 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 13 15:14:34 2018 +0000"
      },
      "message": "Merge \"audio policy: make input device selection more consistent\" into pi-dev"
    },
    {
      "commit": "dc95a25769edbe9c47efd1e25962dbd399056157",
      "tree": "eccaa28c2227d69213c7649cb191a96e3e6b23b6",
      "parents": [
        "9fc25229e0723c93b453ab34957f22a643e2b602"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 12 12:46:56 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 12 18:33:50 2018 -0700"
      },
      "message": "audio policy: make input device selection more consistent\n\nMove logic forcing capture device selection when in call\nto engine so that the selection made when opening a capture stream\nis consistent with the selection made when starting the stream.\n\nBug: 73148976\nTest: manual with Oboe tester\nChange-Id: Iee91ffff7d06fc98fdb2c6b54ff1528e7a82596d\n"
    },
    {
      "commit": "476d050d3d4044b78a37b98411e33cc5f92d9b2d",
      "tree": "8bed5d50f8d97ebbb323e0ff3564cdba0d708a3c",
      "parents": [
        "43e143a93a1a730354ed0913c73b50a614599981",
        "c16f23e399969e9d82f0b245afb0870fa448e78e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Apr 12 18:22:59 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 12 18:22:59 2018 -0700"
      },
      "message": "Merge \"audioflinger: implement silenced capture for mmap\" into pi-dev\nam: c16f23e399\n\nChange-Id: I14571f66f097e067edc8b93f0eeaf2c778f1c962\n"
    },
    {
      "commit": "a2f478ca0b2bda8db9b321f0cfa9e9d3cf6130f9",
      "tree": "00e39e41acac99cc35c292c65c7bca60973fdd5a",
      "parents": [
        "9fc25229e0723c93b453ab34957f22a643e2b602"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Apr 10 19:09:40 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Apr 11 19:07:45 2018 -0700"
      },
      "message": "audioflinger: implement silenced capture for mmap\n\nImplement silencing of audio capture for idle UIDs for\nMMAP streams.\n\nUse audio HAL setMicGain() API to silence the mmap buffer for\nexclusive mode and when only one client is active in shared mode.\n\nAdd new MmapStreamCallback method onStreamSilenced() for AAudio\nservice to selectively silence streams from silenced UIDs in\nshared mode.\n\nBug: 72134552\nTest: manual\nChange-Id: I7c92ba0002bc5ba003c1a3c887edddf9ae53b538\n"
    },
    {
      "commit": "2c4019fab93d23523b07820ecf21f30849b78f1f",
      "tree": "a46a309917c64ea9591c3816fc8670fa0edc43fc",
      "parents": [
        "18008a8b4560bb421a90f2cd5fbc2c9e0fffc142",
        "4354cf89469067ef9a264d67b4bfef35213fa60a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 09 12:20:50 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 09 12:20:50 2018 -0700"
      },
      "message": "Merge \"audio policy: fix notification + voicemail routing\" into pi-dev\nam: 4354cf8946\n\nChange-Id: I9d2a33601be09730530b05343f43570438976ed7\n"
    },
    {
      "commit": "4354cf89469067ef9a264d67b4bfef35213fa60a",
      "tree": "05578bff5e5334784f0dc036b11059cc6933c188",
      "parents": [
        "fa33327eb3b81bf1f2173bef0d13ced98b1221c1",
        "7731b5add3a8ba0f57d8f4b299ba7a432ecc7119"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 09 19:00:14 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 09 19:00:14 2018 +0000"
      },
      "message": "Merge \"audio policy: fix notification + voicemail routing\" into pi-dev"
    },
    {
      "commit": "7731b5add3a8ba0f57d8f4b299ba7a432ecc7119",
      "tree": "504268c3b58c3cd373ce4a0062b7b70edb107615",
      "parents": [
        "79d1ed9b6473f4d094aaa6b53f41a6ba92916e42"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 06 15:47:22 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Apr 09 09:13:56 2018 -0700"
      },
      "message": "audio policy: fix notification + voicemail routing\n\nConsider an active VOICE_CALL stream as an indication\nthat notification routing and volume should match voice call routing.\n\nAlso limit notification volume to match current VOICE_CALL volume index,\nnot just VOICE_CALL volume curve with notification volume index.\n\nBug: 74019016\nTest: manual: receive notification while listening to voicemail and\ncheck volume and routing.\n\nChange-Id: Ia9309bdb10b42f6a4fa8745daf3129c90d44f0b8\n"
    },
    {
      "commit": "42a6dd5492869f33f42faa86cee4be3ee8395239",
      "tree": "363e9e674ae392346a4622beaecad15a3db57718",
      "parents": [
        "eead9b0533a7bdee199e93cff112e37bce5bc313",
        "2383098d54b6503875bdf0c6b649fa66f22d79ac"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Apr 05 11:48:02 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Apr 05 11:48:02 2018 -0700"
      },
      "message": "Merge \"Clear input routing when closeAllInputs().\" into pi-dev\nam: 2383098d54\n\nChange-Id: Ic35aca73024b4676d1776e2532b45f4d33781607\n"
    },
    {
      "commit": "829a00bd6e54ce78fe1a28d8739988e24ec4ab6d",
      "tree": "6cd0612f5863821718acc89a134c9e41457da163",
      "parents": [
        "93768b1382f021f29772cc72da6f48dc2fb225f7"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Apr 04 16:28:32 2018 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Apr 04 16:28:32 2018 -0700"
      },
      "message": "Clear input routing when closeAllInputs().\n\nWhen the device disconnect, all inputs will be closed before calling\nreleaseInput(). In that case, input route ref count will be wrong due to\nroute couldn\u0027t be removed in releaseInput() since the input is already\nclosed, that may cause the routing error. Clear input routes to prevent\nthe routing error when closing all inputs.\n\nBug: 77520691\nTest: Reconnecting the usb device, check the input routing.\nChange-Id: I754cf2774c9c38b751f918b32e881b6d464a7a01\n"
    },
    {
      "commit": "28eecdd3332df4658cb4c45f9deb537864656901",
      "tree": "3782f2f937967d72ff765dfcc18dee0732f602bd",
      "parents": [
        "c2c49ffaf0b6295092a600c86de0f26c7c3994ad",
        "83028d5920884992b16f34aca167cd6c27734d3c"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Fri Mar 30 17:55:29 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Mar 30 17:55:29 2018 +0000"
      },
      "message": "Merge \"Support query microphones information.\" into pi-dev\nam: 83028d5920\n\nChange-Id: I3c44938bcd6073a930687c45c94ebfc341331c75\n"
    },
    {
      "commit": "83028d5920884992b16f34aca167cd6c27734d3c",
      "tree": "84fcfdd9dbb1186a825a77270a69819c087ade7a",
      "parents": [
        "103f5a6268e820daa6a47c560e10a25514dd2ce1",
        "9ff780e58ff96ff98acaae4166bb218880bf9e73"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 30 16:59:41 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 30 16:59:41 2018 +0000"
      },
      "message": "Merge \"Support query microphones information.\" into pi-dev"
    },
    {
      "commit": "9ff780e58ff96ff98acaae4166bb218880bf9e73",
      "tree": "b54bf56b7f6ebc5950064d2908004abfe35d7162",
      "parents": [
        "2ca700737c14edc9141af170ee278853fd99fa87"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Mar 19 18:19:52 2018 -0700"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Mar 28 10:17:36 2018 -0700"
      },
      "message": "Support query microphones information.\n\nGet list of all/currently active microphones from hal.\n\nBug: 64038649\nTest: Manual Testing and Cts test\nChange-Id: Id39cae38ba040f9bc91571e713487f87c2eb67b0\n"
    },
    {
      "commit": "48842789e76bd4e5886ccd1ecc1514fc8886d011",
      "tree": "8cf3bbe7b8a59aff1bcc9379aa72524612869db8",
      "parents": [
        "3fdcae8a0ea22b2e5f1b4fbf79e7888b620aa1a7",
        "00f928c514fd5e2ea4004cb6e0ca665e337b57c4"
      ],
      "author": {
        "name": "Jakub Pawlowski",
        "email": "jpawlowski@google.com",
        "time": "Fri Mar 23 19:07:40 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Mar 23 19:07:40 2018 +0000"
      },
      "message": "Hearing Aid: use same rules for ring tones and notifications as headsets\nam: 00f928c514\n\nChange-Id: Ie504e5104b2c91096e4c475037cb110d8e69bd72\n"
    },
    {
      "commit": "00f928c514fd5e2ea4004cb6e0ca665e337b57c4",
      "tree": "3a75499da404c6c18f755295b7a8eb8abb3d0746",
      "parents": [
        "4a6842fc1a5787b58474b8495b51ea624d81868c"
      ],
      "author": {
        "name": "Jakub Pawlowski",
        "email": "jpawlowski@google.com",
        "time": "Thu Mar 22 13:20:03 2018 -0700"
      },
      "committer": {
        "name": "Jakub Pawlowski",
        "email": "jpawlowski@google.com",
        "time": "Fri Mar 23 18:49:47 2018 +0000"
      },
      "message": "Hearing Aid: use same rules for ring tones and notifications as headsets\n\nBug: 74812203\nChange-Id: I505750c89efed10fb23fd064edf0e9166f7002bb\n"
    },
    {
      "commit": "95c3e899e9db5e95f92eb4cc56787216bc29f3ff",
      "tree": "a085d25841b84c44b9960a6274927c46477687b4",
      "parents": [
        "fe2fd8138735e7d2160308df9a30fc9091b9d83b",
        "2b82a9a1b1c675509a7dda60231b63f9a7b93ca0"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Fri Mar 23 16:51:00 2018 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Mar 23 16:51:00 2018 +0000"
      },
      "message": "Merge \"The sonification sound is muted during a shutter sound\" am: a4c38d6eb4\nam: 2b82a9a1b1\n\nChange-Id: I899ee627557f15b16bd3dbc1a89a4be5f1030de2\n"
    },
    {
      "commit": "a4c38d6eb431ec2de5f8c918cb951523d22a453c",
      "tree": "c2347977f5cc5674ee685485842d19348b89bacf",
      "parents": [
        "39a4c1fd1b924ae74a32c1c15f21871a78b9e06a",
        "a81f098f1fa70a586ecf88478b44760b0d41a148"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 23 16:30:59 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 23 16:30:59 2018 +0000"
      },
      "message": "Merge \"The sonification sound is muted during a shutter sound\""
    },
    {
      "commit": "b62d78b72d9e63b93d869c9c8513f46235f83e03",
      "tree": "1274802d638242980024faf541c52748672cbbc8",
      "parents": [
        "337272811a792a9a6b2eac4e3796d365f80cd0d2"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Thu Jan 18 20:55:02 2018 +0900"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Mar 20 10:45:53 2018 -0700"
      },
      "message": "The sonification sound is muted during a shutter sound\n\nIn order to fulfill requirements from some operators the\nshutter sound must be heard clearly when playing a ringtone.\nThe new policy is that STRATEGY_SONIFICATION will be muted\non an output if FORCE_SYSTEM_ENFORCED is set.\n\nBug: 72295489\nTest: Check if ringtone is muted when playing shutter sound.\nChange-Id: I10a9ee91eed747fa526260738636b7506bc1f7a5\n"
    },
    {
      "commit": "40ed77288020322f7ffb30c984a2b39c7329bc60",
      "tree": "5d654af67b15dd9fa885e2e03bf7402eb88282a0",
      "parents": [
        "e8f1fe680dc26c04ec8becec4bf690d0a5435b83",
        "2ad7939f0a4a1625913fa8d011e711050569b606"
      ],
      "author": {
        "name": "Petri Gynther",
        "email": "pgynther@google.com",
        "time": "Tue Mar 13 02:00:33 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 02:00:33 2018 +0000"
      },
      "message": "Merge \"audiopolicy: Add support for A2DP offload audio policy config\" into pi-dev"
    },
    {
      "commit": "adb11ed8d4bea4b7c6f2254ba1afd998bc72d5c0",
      "tree": "a90a5f696fbd4f50448d345c9493553b9cf007bc",
      "parents": [
        "323717613f804aa507faaec2f6bd6fcd75273849"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@codeaurora.org",
        "time": "Wed Jan 31 20:26:59 2018 -0800"
      },
      "committer": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Mon Mar 12 13:36:36 2018 -0700"
      },
      "message": "audiopolicy: Add support for A2DP offload audio policy config\n\nAdd support for A2DP offload audio policy config in\nAudioPolicyManager.\n\nBug: 68824150\nTest: A2DP offload verified on supported codecs\nChange-Id: Ie62eaa10218d24e6ec51d20413fb35426ed5498a\n(cherry picked from commit 713273460076a6559e31c770fe6c51861127fd5c)\n"
    },
    {
      "commit": "323717613f804aa507faaec2f6bd6fcd75273849",
      "tree": "656cb69b8076293c0a3a65807903cafe10e99d5a",
      "parents": [
        "05fa245462238847528cd18e04aa77f85b0491a4"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@codeaurora.org",
        "time": "Wed Jan 31 20:24:23 2018 -0800"
      },
      "committer": {
        "name": "Pavlin Radoslavov",
        "email": "pavlin@google.com",
        "time": "Mon Mar 12 13:36:06 2018 -0700"
      },
      "message": "audiopolicy: Check if A2DP playback happens via primary output\n\nAudio policy implementation assumes A2DP playback to happen\nvia HW module other than the primary HAL. This need not be true\nalways, since primary audio HAL can support A2DP playback too.\nAdd an API to check if A2DP playback is supported via primary HAL,\nand if it is supported avoid suspendOutput.\n\nBug: 68824150\nTest: A2DP offload verified on supported codecs\nChange-Id: Ic5546bc2df632462dcc28442af561d05ba2d7c58\n(cherry picked from commit 68364ffbd312cdc28dd44e66c4d80ce5a6ec49ba)\n"
    },
    {
      "commit": "2ad7939f0a4a1625913fa8d011e711050569b606",
      "tree": "c479817b833fb09ecb710897f11fc747d223a920",
      "parents": [
        "dce7559514917e7975a0d2dcc11aaa97d770367a"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@codeaurora.org",
        "time": "Wed Jan 31 20:26:59 2018 -0800"
      },
      "committer": {
        "name": "Petri Gynther",
        "email": "pgynther@google.com",
        "time": "Mon Mar 12 19:17:44 2018 +0000"
      },
      "message": "audiopolicy: Add support for A2DP offload audio policy config\n\nAdd support for A2DP offload audio policy config in\nAudioPolicyManager.\n\nBug: 63932139\nBug: 68824150\nTest: A2DP offload verified on supported codecs\nChange-Id: Ie62eaa10218d24e6ec51d20413fb35426ed5498a\n(cherry picked from commit 713273460076a6559e31c770fe6c51861127fd5c)\n"
    },
    {
      "commit": "a8ee996bc065d6938c0e0a5904df7fff5d946fea",
      "tree": "e335626781eed7e03d6bc68b110297ca2dedcd4f",
      "parents": [
        "dce7559514917e7975a0d2dcc11aaa97d770367a"
      ],
      "author": {
        "name": "Aniket Kumar Lata",
        "email": "alata@codeaurora.org",
        "time": "Wed Jan 31 20:24:23 2018 -0800"
      },
      "committer": {
        "name": "Petri Gynther",
        "email": "pgynther@google.com",
        "time": "Mon Mar 12 19:16:49 2018 +0000"
      },
      "message": "audiopolicy: Check if A2DP playback happens via primary output\n\nAudio policy implementation assumes A2DP playback to happen\nvia HW module other than the primary HAL. This need not be true\nalways, since primary audio HAL can support A2DP playback too.\nAdd an API to check if A2DP playback is supported via primary HAL,\nand if it is supported avoid suspendOutput.\n\nBug: 63932139\nBug: 68824150\nTest: A2DP offload verified on supported codecs\nChange-Id: Ic5546bc2df632462dcc28442af561d05ba2d7c58\n(cherry picked from commit 68364ffbd312cdc28dd44e66c4d80ce5a6ec49ba)\n"
    },
    {
      "commit": "2d059936882d8d6b8f73dedd4f9a043bdd36405a",
      "tree": "fe78b96ace7cb7d76048ce76457ef478bef42461",
      "parents": [
        "cdf22ce8143ac4cc84c890eec49b213fc1db7231"
      ],
      "author": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Thu Feb 15 15:55:11 2018 -0800"
      },
      "committer": {
        "name": "Phil Burk",
        "email": "philburk@google.com",
        "time": "Fri Mar 02 22:48:45 2018 +0000"
      },
      "message": "audiopolicymanager: prevent MMAP stream collisions\n\nAn allocation of a second MMAP stream with a different\nrate or channel count could collide with an existing MMAP\nstream and cause it to fail.\n\nBug: 73369112\nTest: test_interference.cpp\nChange-Id: I8318ba897dd4999dd747d40a77b6850525616998\n"
    },
    {
      "commit": "98e38191c37d3e324b34a6aafeef8e43366003ef",
      "tree": "349602f9c4d9dd7f4720328cc72f891f9515a0ce",
      "parents": [
        "7c9dbd5440e8119ca439e4b9315843bd348b991f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 15 18:31:53 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 21 12:54:41 2018 -0800"
      },
      "message": "audioflinger: remove obsolete stream volume management\n\nRemove the ability to change stream volume globally (on all outputs)\nin audio flinger as this doesn\u0027t make sense when stream volume is\nmanaged per device.\n\nAlso, do not store stream volumes globally in audio flinger and apply\nthem when a new output is opened. The ground truth for stream volume is\nin audio policy so make sure stream volumes are systematically applied\nby audio policy when an output is opened according to the selected device.\n\nBug: 70332110\nTest: audio smoke tests\nChange-Id: I7180a428af53aafdee82aadbcaf284c028ac5554\n"
    },
    {
      "commit": "a949f46743a29b337ba15cedf9ffb6d813d1b4bd",
      "tree": "ac55a23cbbf5330f529f1c06c4d05d677c54e3e4",
      "parents": [
        "542906964badda8312c03464035dcb12698b0e95",
        "a7b4379046aca7ff9e08dc5f62ef0888423d6cc5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 16 17:31:13 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 16 17:31:13 2018 +0000"
      },
      "message": "Merge \"Update generation when there is device connection state changed.\""
    },
    {
      "commit": "332adf69b9cee8c261b321337b0b8efd57a69018",
      "tree": "53ff1343f02b92a6936040013b22d0a9a92d696a",
      "parents": [
        "da891a1e4a8e2bed310c2a42f4df795a1151f02f",
        "5babc4f104885c16a3dcfdfb5d99903c27ff2bd9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 16 04:16:32 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 16 04:16:32 2018 +0000"
      },
      "message": "Merge \"audio policy: fix regression with duplicated output handle\""
    },
    {
      "commit": "5babc4f104885c16a3dcfdfb5d99903c27ff2bd9",
      "tree": "2f260fb33ee4424dcea806c3ba3d96faedb9b644",
      "parents": [
        "31832c60d57558c2d5ddb2e45e4c6111ce9e55bb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 15 12:33:44 2018 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 15 17:36:04 2018 -0800"
      },
      "message": "audio policy: fix regression with duplicated output handle\n\nCommit fe2311274 made that IO Handle for duplicated outputs\nwere not allocated properly causing volume commands to be sent\nwith an invalid IO handle to audio flinger.\nWe then hit another problem with a legacy behavior which broadcasts volume\ncommands to all output threads if received with IOHandle 0.\n\nBug: 70332110\nTest: manual test.\nChange-Id: Ib133abab1575e3c90ba235f0a52d5ab845514719\n"
    },
    {
      "commit": "a7b4379046aca7ff9e08dc5f62ef0888423d6cc5",
      "tree": "e3f124d94d2619be8ae6418c8782a4e7e8c5768e",
      "parents": [
        "d8d4ef440fe25095d34e535e591edd8fa1457307"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Feb 15 16:04:46 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Thu Feb 15 16:04:46 2018 -0800"
      },
      "message": "Update generation when there is device connection state changed.\n\nWhen there is device connection state changed, the available\ninput/output devices will change. If we don\u0027t update the generation, it\nmay cause the number of ports different with same generation, which may\ncause crash in jni layer.\n\nBug: 73077399\nTest: run com.android.bluetooth.hfp.HeadsetServiceTest\nChange-Id: Ic2e477552a71582bcd38227b9a449eef5b82b18c\n"
    },
    {
      "commit": "2c6a243319474e518824b872894e9c5f274b81b6",
      "tree": "27cd47ae36810416e2a74aaddc983e4e4c09c217",
      "parents": [
        "f51cb69506670403cf1da2c66a3290c2f47344b6",
        "b3733cf0932256c57c74fc6670bd0e5bdd0edb4d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 15 22:27:31 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 15 22:27:31 2018 +0000"
      },
      "message": "Merge \"Revert \"Revert \"APM: Avoid route change mute of isolated sounds\"\"\""
    },
    {
      "commit": "b3733cf0932256c57c74fc6670bd0e5bdd0edb4d",
      "tree": "6f6e1187fa69cd0eefed4a91a4deede6434ae699",
      "parents": [
        "4a5b48197acdeaa397bf63a753af550bdea1b361"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 15 19:17:50 2018 +0000"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 15 19:17:50 2018 +0000"
      },
      "message": "Revert \"Revert \"APM: Avoid route change mute of isolated sounds\"\"\n\nThis reverts commit 4a5b48197acdeaa397bf63a753af550bdea1b361.\n\nReason for revert: original CL not at fault for b/70332110\n\nChange-Id: I3eef8a249305a66111e2f606155511a03b4d588a\n"
    },
    {
      "commit": "98c15702ca0c814fee9110efa14d70fc9937514e",
      "tree": "52b650fe7c6c07821b2543c62abde91de916747a",
      "parents": [
        "ec8d39d73a2a0167ae1c21edb005a62f87d2bd38",
        "4a5b48197acdeaa397bf63a753af550bdea1b361"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 08 21:56:12 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 08 21:56:12 2018 +0000"
      },
      "message": "Merge \"Revert \"APM: Avoid route change mute of isolated sounds\"\""
    },
    {
      "commit": "4a5b48197acdeaa397bf63a753af550bdea1b361",
      "tree": "c224cba0fe55a8dca9deff2519a2fc9fedd7e7ef",
      "parents": [
        "7c7124e693b20eafb4e0e86f996419c5597e0fbf"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 08 17:22:32 2018 +0000"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Feb 08 17:22:32 2018 +0000"
      },
      "message": "Revert \"APM: Avoid route change mute of isolated sounds\"\n\nThis reverts commit 7c7124e693b20eafb4e0e86f996419c5597e0fbf.\n\nReason for revert: suspect for b/70332110\n\nChange-Id: Ia19a59018c705faa9ac521353da3d417dbbfe2ef\n"
    },
    {
      "commit": "c0c831a8811b438093ca7f1d01b0ccf8c2a345d3",
      "tree": "5cf5f9aa3c6d0e6c55a1dfec40a7e322e42414f4",
      "parents": [
        "3923b1b71628e668f9b11ed4891ed2840dd331cd"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Jan 29 17:55:15 2018 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Jan 29 21:13:59 2018 -0800"
      },
      "message": "Fix explicit routing failed.\n\nIn AudioPolicyManager.getInputForAttr, we should get device descriptor\nfrom available input devices, but not output devices. When using output\ndevices, the explicit routing will never work.\n\nBug: 72670086\nTest: run cts\nChange-Id: Ib37ffb70334afc6c7c8ddd7baf6439b146205d45\n"
    },
    {
      "commit": "c3c1fc630e21f36d2e3f56fac3503c471fbc3a15",
      "tree": "921aa645df7244475712d172ba9349046aad2106",
      "parents": [
        "254d783c0db9d7af6b863ad1819f5c4a543a939d",
        "f317240cde612c3509c7d0950484516ed33fd664"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 24 17:41:23 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 24 17:41:23 2018 +0000"
      },
      "message": "Merge \"Trivial comment fix\""
    },
    {
      "commit": "a81f098f1fa70a586ecf88478b44760b0d41a148",
      "tree": "156be2dfd34937b0f7bc9ded69d49fc2f19370ca",
      "parents": [
        "d9272a936e92e8142a32e5a4b4af777ef7ab06c8"
      ],
      "author": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Thu Jan 18 20:55:02 2018 +0900"
      },
      "committer": {
        "name": "Tomoharu Kasahara",
        "email": "tomoharu.kasahara@sony.com",
        "time": "Wed Jan 24 10:29:32 2018 +0900"
      },
      "message": "The sonification sound is muted during a shutter sound\n\nIn order to fulfill requirements from some operators the\nshutter sound must be heard clearly when playing a ringtone.\nThe new policy is that STRATEGY_SONIFICATION will be muted\non an output if FORCE_SYSTEM_ENFORCED is set.\n\nBug: 72295489\nTest: Check if ringtone is muted when playing shutter sound.\nChange-Id: I10a9ee91eed747fa526260738636b7506bc1f7a5\n"
    },
    {
      "commit": "f317240cde612c3509c7d0950484516ed33fd664",
      "tree": "a56d57db0c7e43b1e4d04cf0613bde8dde594995",
      "parents": [
        "4ca350708ba8152d2832e7177eb028c8fb1c591d"
      ],
      "author": {
        "name": "Scott Randolph",
        "email": "randolphs@google.com",
        "time": "Tue Jan 23 17:06:53 2018 -0800"
      },
      "committer": {
        "name": "Scott Randolph",
        "email": "randolphs@google.com",
        "time": "Tue Jan 23 17:08:15 2018 -0800"
      },
      "message": "Trivial comment fix\n\nAdded missing letter in a word in a comment\n\nTest: NA\nChange-Id: Ica94700c0d42b0f0703d3d6c4867679b313eaf18\n"
    },
    {
      "commit": "766fb020a50b64bf9a808bd80df60c54c2ca8cc3",
      "tree": "acb92cb201889d2b56f41bc2a437da1aaae72c4e",
      "parents": [
        "652f9299bb8a7a50148d57a75de6ede831bfed85"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Sun Jan 07 12:18:03 2018 +0200"
      },
      "committer": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Mon Jan 22 23:05:23 2018 +0200"
      },
      "message": "Support routing audio playback to telephony uplink\n\nThis change enables phone apps to play audio to the uplink stream\nduring a call.\nThis change maks the AUDIO_OUTPUT_FLAG_INCALL_MUSIC_UPLINK flag to be added to the flags that are sent to the HAL when an ongoing call is active, the chosen output device is the TX telephony device, the stream type is music, and the calling app has the MODIFY_PHONE_STATE permission.\nFor this change to take place, the following changes were made to the signature of getOutputForAttr in IAudioPolicyService:\n  1. Add pid (process id) parameter to getOutputForAttr.\n  2. Make the flags parameter a pointer so changed value can be\n  examined by calling function.\n\nBug: 69973354.\nTest: tested manually.\nChange-Id: I74cef3f8b66de6e0e8f87b6235130c2cdf423da7\n"
    },
    {
      "commit": "65a438c6429c7f46cb0ab056c7f672ea0aa9e7f5",
      "tree": "d2b98e3247afd27d7272d23b226dc4e10fb8f5f9",
      "parents": [
        "2917aa469abba347a1ab1e6fa766d62721182788",
        "f4ddfefc8ba59a8486d91826154cc9447821409e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 20 04:09:36 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 20 04:09:36 2018 +0000"
      },
      "message": "Merge \"Don\u0027t record audio if UID is idle - media framework\""
    },
    {
      "commit": "f4ddfefc8ba59a8486d91826154cc9447821409e",
      "tree": "b24bb43846003ef5523f0d470e49389086138679",
      "parents": [
        "d6be64a3f22be3eceb0d6209c88dcad573c08191"
      ],
      "author": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Tue Jan 16 07:37:58 2018 -0800"
      },
      "committer": {
        "name": "Svet Ganov",
        "email": "svetoslavganov@google.com",
        "time": "Thu Jan 18 00:17:52 2018 -0800"
      },
      "message": "Don\u0027t record audio if UID is idle - media framework\n\nTo protect user\u0027s privacy if a UID is in an idle state we allow\nrecording but report silence (all zeros in the byte array) and once\nthe process goes in an active state we report the real mic data.\nThis avoids the race between the app being notified aboout its\nlifecycle and the audio system being notified about the state\nof a UID.\n\nTest: Added - AudioRecordTest#testRecordNoDataForIdleUids\n      Passing - cts-tradefed run cts-dev -m CtsMediaTestCases\n                    -t android.media.cts.AudioRecordTest\n\nbug:63938985\n\nChange-Id: I1442a9dda1553e9ea7a4a654c50555ac1ec06aa0\n"
    },
    {
      "commit": "7c605f65099f4db2ece707e07b5e844d5eefc9a6",
      "tree": "d39eee50d13843d2027c6fe10db30746ccdcdd2f",
      "parents": [
        "49f36ba3b4624ddd3d7efa34c95128a73bda6208"
      ],
      "author": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Mon Dec 25 00:01:52 2017 +0200"
      },
      "committer": {
        "name": "Nadav Bar",
        "email": "nadavbar@google.com",
        "time": "Mon Dec 25 11:56:54 2017 +0200"
      },
      "message": "AudioPolicy: enable phone apps to mute VOICE_CALL stream\n\nThis change enables an app that has the MODIFY_PHONE_STATE\npermission to mute the VOICE_CALL stream.\nThe change adds specific handling in  AudioPolicyManager\nfor the case in which volume index is 0 and stream type is VOICE call.\nThe permission check is done in the AudioService Java code for the\ncalling process.\n\nBug: 71017199\nFixes: 71017199\nTest: Tested manually\nChange-Id: Ibbf3b6948a4384a963d00347ebd04ccf6d56ebd5\n"
    },
    {
      "commit": "49f36ba3b4624ddd3d7efa34c95128a73bda6208",
      "tree": "9427c132f2f998021c1ae06078174c3396bc5f54",
      "parents": [
        "b3ded702104331ae35597eef28f670e407a1b519"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Dec 06 13:02:02 2017 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 22 20:05:46 2017 +0000"
      },
      "message": "Logs use either %#x or 0x%x for flags, channel mask, format, device\n\nPreferred is %#x but 0x%x is also permitted because it is widely used.\n\nThe benefit is that it reduces ambiguity and possible confusion,\nwithout needing to read the source code for each log.\n\nTest: builds OK and logs are less ambiguous\nChange-Id: Ie2404e071d22278b8bba1e094ad336887844212c\n"
    },
    {
      "commit": "bcbcb1bdda4f1970830fa4924e3a5f24171ae005",
      "tree": "9b1523a2e1e60e1a44582240f040581617fedaf0",
      "parents": [
        "823267338b2bee8c279306c07775feabfc2434a5"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Dec 13 13:03:35 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Sat Dec 16 00:52:18 2017 +0000"
      },
      "message": "audiopolicy: Add more tests, fix issues found\n\nAdded tests that ensure correct initialization of APM.\n\nFixed issues:\n\n  -- UB in VolumeCurvesForStream::volIndexToDb due to not\n     checking that the pointer is non-null;\n\n  -- AudioInputDescriptor::open and SwAudioOutputDescriptor::open\n     were not checking that the returned IO handle is valid,\n     this was causing an infinite loop in\n     AudioPolicyManager::selectOutputForMusicEffects, added an\n     assertion.\n\n  -- Memory leak of VolumeCurves collection in APM.\n\nTest: audiopolicy_tests\nChange-Id: Ia4ecca1dd03b74d7f93720f042da05d5a0c74a6b\n"
    },
    {
      "commit": "ad3f8a1082c101f2c218be64e48ae615676952ea",
      "tree": "ec94ad27cebafe5eccc8e04fa9b80ad20932813d",
      "parents": [
        "ceedc87e48c92e248123b9a9476053456e62e006"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Tue Dec 12 13:24:23 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Dec 13 16:20:45 2017 -0800"
      },
      "message": "audiopolicy: Add unit tests build target\n\nThis change adds audiopolicy_tests target for running\nunit tests of AudioPolicyManager class.\n\nAudioPolicyManager class is modified to allow\nfiner control over the configuration loading.\n\nTest: audiopolicy_tests\nChange-Id: Icf0cd7ff5b3b8b827b4f6909ff2c138ac2a2b82e\n"
    },
    {
      "commit": "733ce945741b1fc12cee92d8133c3136b4e6e0e0",
      "tree": "fbf765136f3dcccf9595c49bdc949e426194c379",
      "parents": [
        "447d53631b7560eace6016b2711a75533339cbcc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 12:18:25 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 12:45:51 2017 -0800"
      },
      "message": "audio policy: fix HAL stream activity ref counting\n\ncommit f05fc906 did not take into account the specificities of duplicated\noutputs causing a crash when accessing the profile (null for duplicated outputs)\nand not counting activity resulting from duplicated output activity.\nAlso account for HW source activity when connected to an output mix.\n\nBug: 70319466\nTest: CTS tests for AudioTrack and AudioRecord\nTest: audio smoke tests\n\nChange-Id: Id0364170794302e42212a90e1b40e28c1e7193fe\n"
    },
    {
      "commit": "3974e3b22856ef35dd73760056ff38b7a4062176",
      "tree": "2d6d5c222659f327302f69a833744b5ba7e1f74f",
      "parents": [
        "ea5523d88c6dc9662621db5fc62bf50eff0fe4ba"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 17:58:43 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 12 12:45:51 2017 -0800"
      },
      "message": "Revert \"Revert \"audio policy: add open and active count for IO profiles\"\"\n\nThis reverts commit 7b0e95327267f08e36b38fdd8fb2624e251b8e97.\n"
    },
    {
      "commit": "53b810ead5b726994fe6a28c6fa955e7b8799aaa",
      "tree": "15653882b1b062369bc046d9ef92ccfdffbe1281",
      "parents": [
        "5fb93fa294ee05a25f86312e926b5ca4e0d1d3b2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Dec 10 17:25:10 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 11 14:30:37 2017 -0800"
      },
      "message": "audio policy: fix device address passed when opening HAL  streams\n\nCommit fe231127 caused a regression where the device address is\nnot passed properly to audio HAL by openInputStream() or\nopenOutputStream(). The address must be read from available\ndevice descriptors, not supported devices in profiles which do not\nhave the current device address for removable devices.\n\nBug: 70321528\nTest: audio smoke tests,CTS  AudioRecordTest\nChange-Id: I83211a31f86391b80c3c244b436a2e36923ccea0\n"
    },
    {
      "commit": "b567ba06331aeac314f74c87f2e7b9badb4d6518",
      "tree": "e94de3eaa72bdec82109bce2ed608fa95ba3a604",
      "parents": [
        "1b2a794a27caab3a1320d22b872b04ef73e96555"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 08 11:16:27 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 08 17:23:26 2017 -0800"
      },
      "message": "audiopolicy: Refactor AudioPolicyManager::updateCallRouting\n\nThe code of the function had almost identical paths for\nRx and Tx patches creation. Factored them out, now it\u0027s much\neasier to see what is common, and what differs.\n\nTest: audio in still present incoming and outgoing telephony calls\nChange-Id: Ia02179513d76809e33c65b2dad465358acdbfc63\n"
    },
    {
      "commit": "1b2a794a27caab3a1320d22b872b04ef73e96555",
      "tree": "79f53eef61b788a5f49aaf26b5c897d7a6dac49f",
      "parents": [
        "2773dd7219e6cdc56471501c90808a1bafc31d39"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 08 10:18:09 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 08 12:06:18 2017 -0800"
      },
      "message": "audiopolicy: Remove ; after namespace bracket\n\nSemicolons are not needed after the closing bracket of\na namespace, remove it.\n\nTest: compiles\nChange-Id: Ie82930365f738fd9c95a9163839a68b772e49d95\n"
    },
    {
      "commit": "2773dd7219e6cdc56471501c90808a1bafc31d39",
      "tree": "9a514d61c4b618a1a2599c766e0e5b088876e542",
      "parents": [
        "a5e165d3a9074c09b67df5a89aa26b153cf69562"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 08 10:12:11 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 08 12:03:28 2017 -0800"
      },
      "message": "audiopolicy: Use C++11 atomics, factor out handle generation\n\nUpdate the code to use C++11 atomics. Make sure that\nunsigned ints are used as id counters (signed ints have undefined\noverflow behavior). Factor out common code from AudioPatch\nand AudioPort.\n\nTest: compiles\nChange-Id: Ic359e97795a6282a2937d88bead8a1de27c8db7a\n"
    }
  ],
  "next": "a5e165d3a9074c09b67df5a89aa26b153cf69562"
}
