)]}'
{
  "log": [
    {
      "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": "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"
    },
    {
      "commit": "484e927cf9e9bdd91f21796d52ea23c8fe49f670",
      "tree": "a4613c94a81ea09cbae3010205d513260782bc19",
      "parents": [
        "bebb9d118340d2ce7b518539eba23f877b6fd8ad"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 07 17:29:23 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 07 18:17:08 2018 -0700"
      },
      "message": "audiopolicy: fix VoIP and system sound routing concurrency\n\nOn platforms with dedicated output profiles for VoIP, activity on\nall output streams should be considered when use case priority is\nevaluated while selecting current device on a given output stream.\n\nFor now, implement a simple rule taking only into account output streams\nattached to the same audio HAL module and limited to voice call use\ncase.\nThis should be extended to all use cases with a refined rule\nconsidering mutually exclusive devices (using same backend) as opposed\nto all streams on the same audio HAL module.\n\nBug: 109640706\nTest: repro steps in b/109640706\nChange-Id: I2cea35911a6121980f128a3a3d694699364854eb\n"
    },
    {
      "commit": "708e038f7e6c452de8186e2d6981de7540495094",
      "tree": "fef4228ffb73cd20eb8a2a921ee6df687c92adc2",
      "parents": [
        "f4d3741b3a721f8e1f72ec3ca2684efe22526d80"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed May 30 09:53:04 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jun 01 12:39:15 2018 -0700"
      },
      "message": "audiopolicy: Brush up DeviceVector::getDevice... methods\n\nThe semantics of these methods wasn\u0027t consistent and wasn\u0027t clear\nfrom their names (and aggravated by the fact that audio_devices_t can\nbe used either as a single device, or as a mask):\n\n * sp\u003cDeviceDescriptor\u003e getDevice(type, address) -- \u0027type\u0027 is a single\n   device; if \u0027address\u0027 is an empty string, and no matching device\n   with an empty address is found, returns any device of this type;\n\n * DeviceVector getDevicesFromType(type) -- \u0027type\u0027 is a mask,\n   device addresses get ignored;\n\n * DeviceVector getDevicesFromTypeAddr(type, address) -- \u0027type\u0027 is\n   a single device, address is matched exactly. So in practice, only\n   1 device could be returned.\n\nChanges:\n\n * \u0027getDevicesFromType\u0027 renamed to \u0027getDevicesFromTypeMask\u0027 --\n   emhpasizes the fact that \u0027type\u0027 can be a mask;\n\n * \u0027getDevicesFromTypeAddr\u0027 removed, usages replaced with a call to\n   \u0027getDevice\u0027. There were just 2 usages, and their intent seem\n   to be covered by the semantics of \u0027getDevice\u0027.\n\nTest: verified basic audio functionality and Auto with simulator\nChange-Id: If3e42e4c06f42573fd33ba1303febe0625e079e6\n"
    },
    {
      "commit": "bd1a7046c0ad30f5a6ca214023c618a6080da04e",
      "tree": "a4720becac883cefd1f37444986eb94a98397196",
      "parents": [
        "150bbbc71adc612b45264ad7a5fa180e8deef4ef",
        "c65863d32ed0bf83128b72346bdbd8ec1fd791d4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 24 12:25:31 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 24 12:25:31 2018 -0700"
      },
      "message": "Merge \"audio polcy: fix explicit device routing in call\" into pi-dev am: 944c05e857\nam: c65863d32e\n\nChange-Id: I291dc90b37f3ac07135ab2bfa7f2e748c16c0304\n"
    },
    {
      "commit": "150bbbc71adc612b45264ad7a5fa180e8deef4ef",
      "tree": "a00050208c87a40db933b74853a0adf55025830a",
      "parents": [
        "b1dd2d9b7b0a3da1db8d3e3c2a76509a53a316e9",
        "d4f615b1743d2810be6f83ebd4dc4c266c455dab"
      ],
      "author": {
        "name": "HW Lee",
        "email": "hwlee@google.com",
        "time": "Thu May 24 10:59:40 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 24 10:59:40 2018 -0700"
      },
      "message": "Merge \"audiopolicy: keep BT SCO vol at 0 dB on VoIP\" into pi-dev am: cd182409e3\nam: d4f615b174\n\nChange-Id: I7985bc296c3c9a29fdfcbc066143c310052787b5\n"
    },
    {
      "commit": "7be71d225fd6d44cc38eaef532c2eb502dcadb91",
      "tree": "fd930e9c5f1f45015264e9548c75301b7e16cc61",
      "parents": [
        "85599801bae7907bd1bc0e4cad1b834d16920776"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed May 23 16:51:46 2018 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed May 23 17:15:11 2018 -0700"
      },
      "message": "Zero initialize audio_port_config and containing structs\n\nAdd zero initialization for struct audio_port_config and\nthe structures that contain it: audio_port and audio_patch.\n\nLeft intact places where the struct is overwritten completely\nor memset\u0027d right after declaration.\n\nTest: make\nChange-Id: I889e55fd7c7b8810ef840090a9f0a85d55eaedb3\n"
    },
    {
      "commit": "c65863d32ed0bf83128b72346bdbd8ec1fd791d4",
      "tree": "787db022ccbe0783a56dcea56d2e64b19def8746",
      "parents": [
        "d4f615b1743d2810be6f83ebd4dc4c266c455dab",
        "944c05e8575d63cf53a9a0825465b37f63645784"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 23 15:17:25 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 23 15:17:25 2018 -0700"
      },
      "message": "Merge \"audio polcy: fix explicit device routing in call\" into pi-dev\nam: 944c05e857\n\nChange-Id: I5809839168eef59067e6ed46fafc223f519ced46\n"
    },
    {
      "commit": "d4f615b1743d2810be6f83ebd4dc4c266c455dab",
      "tree": "0ff4e83124a4583d6afa678a2e4f076188ba64ed",
      "parents": [
        "ca39936b7aae51f69e98f6ba978f82546d2ef264",
        "cd182409e34c0bb9da0136fd3a9e436fb09ab313"
      ],
      "author": {
        "name": "HW Lee",
        "email": "hwlee@google.com",
        "time": "Wed May 23 14:32:15 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 23 14:32:15 2018 -0700"
      },
      "message": "Merge \"audiopolicy: keep BT SCO vol at 0 dB on VoIP\" into pi-dev\nam: cd182409e3\n\nChange-Id: Ic64d424613765327c77d211888776a6b976b8bd1\n"
    },
    {
      "commit": "944c05e8575d63cf53a9a0825465b37f63645784",
      "tree": "253721d4dc3ef04e720e6bdb58527061a57eab0f",
      "parents": [
        "cd182409e34c0bb9da0136fd3a9e436fb09ab313",
        "f3a5a6014a8bf7915bcf9297d536c707c212086d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 23 21:05:37 2018 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 23 21:05:37 2018 +0000"
      },
      "message": "Merge \"audio polcy: fix explicit device routing in call\" into pi-dev"
    },
    {
      "commit": "f3a5a6014a8bf7915bcf9297d536c707c212086d",
      "tree": "36e3815839146def5e5a0e1584a3a5bdf2f2bd8d",
      "parents": [
        "c2d0641bc02e08a74c458002d9460299cd1ff490"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 22 18:42:55 2018 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 23 08:51:46 2018 -0700"
      },
      "message": "audio polcy: fix explicit device routing in call\n\nMake sure tracks with an explicit routing request are not systematically invalidated\nwhen starting while another track on the same strategy is already active.\n\nAlso fix a problem where explicit routing is not taken into account by\ngetNewOutputDevice() when in call because the strategy with the\nexplicit routing is not evaluated.\n\nBug: 69680975\nBug: 79878501\nTest: voice call regression, CTS for explicit audio routing, test case\nfor b/79878501\n\nChange-Id: I99b83f8a3304549bf327c3c327f6671f777cfb4b\n"
    },
    {
      "commit": "da7581eca3523a21142a3d259531c938f8dc717c",
      "tree": "d83d3684141ee10394501e147d0e169b739d4d35",
      "parents": [
        "edfea741746883b3ca5898ccfcd6059b1c50204b"
      ],
      "author": {
        "name": "HW Lee",
        "email": "hwlee@google.com",
        "time": "Tue May 22 18:31:34 2018 +0800"
      },
      "committer": {
        "name": "HW Lee",
        "email": "hwlee@google.com",
        "time": "Wed May 23 14:02:07 2018 +0800"
      },
      "message": "audiopolicy: keep BT SCO vol at 0 dB on VoIP\n\nThe BT SCO volume of VoIP is set as the value computed with the volume\nindex, while that of voice call keeps constant (0 dB). It causes the\noutput sound of VoIP being multiplied by a gain computed with the\nvolume index, then the sound hears different if the volume index has\nbeen changed before. Therefore, the volume of VoIP on BT SCO should keep\nat 0 dB as well.\n\nBug:78206701\nTest: manual audio test\nChange-Id: I888b2f7c0869902dd5e0adf77f711e7b9fd7e108\nSigned-off-by: HW Lee \u003chwlee@google.com\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "b3015a96982378dfe6ac5578f941c3480d303816"
}
