)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "a5e165d3a9074c09b67df5a89aa26b153cf69562",
      "tree": "c41079e712a68ff295d8bb7bf713885ca63a2682",
      "parents": [
        "22f920a8a520614d872024400bf0e371c77dcc7e"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 07 17:08:02 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Dec 08 12:01:19 2017 -0800"
      },
      "message": "audiopolicy: Make fields of HwModule private\n\nIt\u0027s a good practice not to expose fields of the class.\nUse getter / setter methods instead.\n\nTest: compiles\nChange-Id: I9d939d17fafdfff016a300d4f5a979bdc8414f2b\n"
    },
    {
      "commit": "2478d528186436f693b02c3534f04425086b638c",
      "tree": "d0b3cd0db05607b688da0b4c24f23513dcb47c46",
      "parents": [
        "cf84e596c53d5f85b64665a66ed2ec212ecff618"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 07 13:02:28 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 07 16:43:38 2017 -0800"
      },
      "message": "audiopolicy: Use range for loops in managerdefinitions classes\n\nUse \"range for\" loops where it improves readability.\n\nChange-Id: I4fc0360956b7aa70b9e282b83f6bb371c05a8522\nTest: compiles\n"
    },
    {
      "commit": "cf84e596c53d5f85b64665a66ed2ec212ecff618",
      "tree": "37382644a3e514337cdbb1882ee6a272680758fd",
      "parents": [
        "7e22e94d0654d7ab4c31aee7f7120542e358a5ab"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 07 11:25:11 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 07 16:43:38 2017 -0800"
      },
      "message": "audiopolicy: Refactor and fix loops in AudioPolicyManager\n\n  -- Use range for loops where possible.\n\n  -- Replace some loops over DeviceVector with a call to already\n     existing search function.\n\n  -- Fix unsigned integer overflow in a loop that decrements\n     the loop counter.\n\nChange-Id: I2ab544b8176310c15c16c04b72c2800d8526e5a5\nTest: compiles\n"
    },
    {
      "commit": "7e22e94d0654d7ab4c31aee7f7120542e358a5ab",
      "tree": "4ac3687d1298ab0c5387f8346318272792c4e23e",
      "parents": [
        "4f1e084744ee82f29a8e6c04f99a1d915e44be12"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 07 10:04:29 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 07 16:40:20 2017 -0800"
      },
      "message": "audiopolicy: Minor cleanups\n\n  -- ensure opening bracket in \u0027for\u0027 loops is at the same line\n     with the loop statement;\n\n  -- remove \"-\" probably appeared from merge conflict resolution.\n\nChange-Id: I1ac5bc51def6f1a208042d55608e9f6e90ef8205\nTest: compiles\n"
    },
    {
      "commit": "7b0e95327267f08e36b38fdd8fb2624e251b8e97",
      "tree": "0c412e78c95e72016e18612167e463ccb3205da2",
      "parents": [
        "79e94ec95e5d2a8c13998c2f05ae63326f7468d0"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 12:20:56 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 22:26:21 2017 +0000"
      },
      "message": "Revert \"audio policy: add open and active count for IO profiles\"\n\nBug: 70319466\n\nThis reverts commit f05fc9061254a3329bf0a3b40e27cac87b51b4cc.\n"
    },
    {
      "commit": "79e94ec95e5d2a8c13998c2f05ae63326f7468d0",
      "tree": "54df020a89feb83f12f0fd0ecef243e1c8d3f875",
      "parents": [
        "64ed5cb45b3226c5c946603c026e1b73d14ee7d8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 12:20:45 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 22:24:40 2017 +0000"
      },
      "message": "Revert \"audio policy: add parsing for profile max open and active count\"\n\nBug: 70319466\n\nThis reverts commit 89984a0cbb2bc52112d7b98f5f1c13001326b130.\n"
    },
    {
      "commit": "64ed5cb45b3226c5c946603c026e1b73d14ee7d8",
      "tree": "75df581a30722231c471363983f5bff75b2cede0",
      "parents": [
        "44804b4c684b4b870cf0df1e7ace11a152eeec19",
        "460451e5d7b9813926fe8fc17283e77b63adaee7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 07 21:53:30 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 07 21:53:30 2017 +0000"
      },
      "message": "Merge \"Revert \"audio policy: fix regression in A2DP playback\"\""
    },
    {
      "commit": "460451e5d7b9813926fe8fc17283e77b63adaee7",
      "tree": "7fb04597d265f47100d93d98ae91a394ae2ade21",
      "parents": [
        "3a0bd6fcb215376eb3f27b5b4588a13f6f0f9a34"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 12:20:33 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 07 21:17:40 2017 +0000"
      },
      "message": "Revert \"audio policy: fix regression in A2DP playback\"\n\nBug: 70319466\n\nThis reverts commit 995ba712ed77e36129485f5ac811cf328d0a27f6.\n"
    },
    {
      "commit": "44804b4c684b4b870cf0df1e7ace11a152eeec19",
      "tree": "0da1c4240615fdac87dfa2de5a293dae6e2cdd4b",
      "parents": [
        "3ad57c2e5b0e8d58f05314c947ff615671571e97",
        "d4120148e72b2352f19f74dd493e903992371ef9"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Dec 07 16:41:57 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 07 16:41:57 2017 +0000"
      },
      "message": "Merge \"audiopolicy: Refactor HwModuleCollection\""
    },
    {
      "commit": "d4120148e72b2352f19f74dd493e903992371ef9",
      "tree": "fe81d9ec22eda9966fddaf89388c7870efb76a58",
      "parents": [
        "3a5608cf069994725f6e50950f0462e91dcd8c51"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Dec 06 15:49:22 2017 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Dec 06 18:00:54 2017 -0800"
      },
      "message": "audiopolicy: Refactor HwModuleCollection\n\n -- make AudioPolicyManager::mHwModules to only store\n    loaded modules; all modules stored in mHwModulesAll;\n    this removes lots of checks for HwModule::mHandle;\n\n -- use \"for range\" loops when iterating over mHwModules;\n\n -- use HwModulesCollection::getModuleFromName for finding\n    the remote submix module;\n\n -- log statements print HwModule\u0027s name instead of index.\n\nTest: audio still works\nChange-Id: I2d86caae23e87e25b6a367cb4042741f0b32e99c\n"
    },
    {
      "commit": "995ba712ed77e36129485f5ac811cf328d0a27f6",
      "tree": "9159f47fec4b7e14b950cd3602bfefba8bb84997",
      "parents": [
        "1b2de88f1659106dadf31794907f4fb66d8baec1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 05 18:45:46 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 05 18:45:46 2017 -0800"
      },
      "message": "audio policy: fix regression in A2DP playback\n\ncommit f05fc906 introduced a regression preventing playback over A2DP\nto resume after the second time an A2DP device is connected.\n\nBug: 70245910\nTest: Audio smoke test, CTS test for AudioTrack.\nChange-Id: Ic6b5da96debf62be08ae12efec27ad36854fe3c5\n"
    },
    {
      "commit": "3b935c6d9ada8fed370106c7741919e68e6e7c39",
      "tree": "7c7bd12ac4240bd4dc1349651efd77515511b9f4",
      "parents": [
        "f7e309d64bdbc37da47a6863025281c321f3cfd5",
        "89984a0cbb2bc52112d7b98f5f1c13001326b130"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 04 20:46:30 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 04 20:46:30 2017 +0000"
      },
      "message": "Merge \"audio policy: add parsing for profile max open and active count\""
    },
    {
      "commit": "1ac4db1cbe8ce9da74a54cad95879499d536ffb4",
      "tree": "9ad8fbe7c8ec9ef6959d87db08868f4e13687a42",
      "parents": [
        "261be854cf49b978d5591d669e9d7943749c6028",
        "f05fc9061254a3329bf0a3b40e27cac87b51b4cc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 04 20:35:30 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 04 20:35:30 2017 +0000"
      },
      "message": "Merge \"audio policy: add open and active count for IO profiles\""
    },
    {
      "commit": "9db89dcf3660ceb942a056f6642936522862b8e8",
      "tree": "1e9ab7f4836f6b72f868cc0fd0a0127511b49e05",
      "parents": [
        "9410a2f434162790badead38fa5e65e697b1674e",
        "fe23112742eeb6199c3aa1f3dfcf800fc2aa0e26"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 04 19:12:44 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 04 19:12:44 2017 +0000"
      },
      "message": "Merge \"audio policy: refactor output and input opening\""
    },
    {
      "commit": "89984a0cbb2bc52112d7b98f5f1c13001326b130",
      "tree": "313ee27abab6102d5c72367a3d15c788f276f031",
      "parents": [
        "f05fc9061254a3329bf0a3b40e27cac87b51b4cc"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Nov 22 15:43:49 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 28 09:36:49 2017 -0800"
      },
      "message": "audio policy: add parsing for profile max open and active count\n\nAdd parsing of \"maxOpenCount\" and \"maxActiveCount\" for input and\noutput profiles in audio_policy_configuration.xml\n\nTest: Manual with modified audio policy configuration file\nChange-Id: I352875912bacd81776e9f2e72c37bc3d3d2ac4df\n"
    },
    {
      "commit": "f05fc9061254a3329bf0a3b40e27cac87b51b4cc",
      "tree": "aa6f6c000bc5dcf7264e76cc24a354265fd53970",
      "parents": [
        "fe23112742eeb6199c3aa1f3dfcf800fc2aa0e26"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 21 12:08:15 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 28 09:35:17 2017 -0800"
      },
      "message": "audio policy: add open and active count for IO profiles\n\nRemove the hardcoded limit of one open output stream per IO profile\nand add a max open count per IO profile.\nSame thing for maximum number of active input streams per IO profile.\n\nNow both the maximum number of opened streams and active streams for\na given profile is stored in that profile.\n\nFor now only defaults are set corresponding to legacy behavior,\nbut these values will be loaded form the audio policy configuration file.\n\nTest: AudioTrack and AudioRecord CTS tests\n\nChange-Id: I5ebcc7f8a06b3f0a52815d241c561bb65e036026\n"
    },
    {
      "commit": "dd60115699e42811289432dddfecaf4ab8d187fe",
      "tree": "2c2d43e715fe3f475dd8fd52b19c168bc0072d1d",
      "parents": [
        "cd742b9174eac9f8b6a108512818f2d3a2392ea8"
      ],
      "author": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 27 14:53:37 2017 -0800"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Mon Nov 27 14:53:37 2017 -0800"
      },
      "message": "When surround setting is ALWAYS, report all surround formats.\n\nBug: 37960084\nTest: Manually test on fugu\nChange-Id: Ie8c7289c85fdc63216e637352ac0e2bbe1097a4a\n"
    },
    {
      "commit": "fe23112742eeb6199c3aa1f3dfcf800fc2aa0e26",
      "tree": "5297ab7f4a098bd8c0c0e89e27a54e9fd450ce5a",
      "parents": [
        "a221a7c81776add538e6cd82cddfa427364beb79"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 17 17:48:06 2017 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Nov 21 14:14:49 2017 -0800"
      },
      "message": "audio policy: refactor output and input opening\n\nRefactor the way input and output streams are open so that common\nlogic is centralized in AudioOutputDescriptor and AudioInputDescriptor\nclasses.\n\nThis is in preparation of adding reference counting for ouputs and inputs\nopened for a given profile.\n\nTest: Manual\nChange-Id: Id806e23077eb41f6398400ab40aeaa694c7d5603\n"
    },
    {
      "commit": "7db8b99d00f2399faba9de2f8b2c13b05d10aec5",
      "tree": "cef4ea60750b20629d21f3c3f33789acc8aaf12e",
      "parents": [
        "68f1d2842541f043ca318b01690a7cdb41b1df78"
      ],
      "author": {
        "name": "Hongwei Wang",
        "email": "hwwang@google.com",
        "time": "Tue Nov 14 13:26:54 2017 -0800"
      },
      "committer": {
        "name": "Hongwei Wang",
        "email": "hwwang@google.com",
        "time": "Tue Nov 14 14:18:59 2017 -0800"
      },
      "message": "Adds AUDIO_DEVICE_IN_FM_TUNER/_BUS to virtual input device list\n\nBug: 69311798\nTest: m -j\nChange-Id: I4e7de370c61be48b8dcfd178bbc47d7ce68fe107\n"
    },
    {
      "commit": "c990152585f6b654ffe7e1dbff483d4ecddc019b",
      "tree": "0e64a122e3f6e0188d49e6ec3be64f17a57fbc52",
      "parents": [
        "97e8b37f946c024d9cad312fd7f1a30f56cb3302"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Nov 10 20:07:54 2017 -0800"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Nov 13 14:37:58 2017 -0800"
      },
      "message": "Check for valid format before match in AudioPolicyManager::selectOutput\n\nTest: MediaPlayerTest#testConcurentPlayAudio\nBug: 69054370\nChange-Id: I11763187d4e7b69f8b242547d1e9e27afe6223be\n"
    },
    {
      "commit": "8f8932c41e7c0a1f65e3556733ed33bbc88793ce",
      "tree": "b93e401ecbe5c0e5152a227b604dcc99999a6ddc",
      "parents": [
        "7c92ffe076acb119ba58777519b9d2d2efc0f627",
        "f4e63452b37c799c9387a6a88b46e6191f6a5f7e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 06 21:37:01 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 06 21:37:01 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"audio policy: refactor getOutput() method\"\"\""
    },
    {
      "commit": "8f4563efb2ff1e0cf5428d227d5a29623b1e27e7",
      "tree": "2cd0fd57a177c9c9bf315c5b9e27283694e71161",
      "parents": [
        "e72b63e9fb2161880704724b597bea57eeb77499",
        "575bb3aa6358661addac9fa8204630a27056b129"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 06 20:45:25 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 06 20:45:25 2017 +0000"
      },
      "message": "Merge \"Config deserialization: allow negative gain\""
    },
    {
      "commit": "f4e63452b37c799c9387a6a88b46e6191f6a5f7e",
      "tree": "5c46fb22c92c574b84335fedca13f98e13434db8",
      "parents": [
        "e198f26cae6f0b5c67340935c291363fdfff87f1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 06 19:31:46 2017 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Nov 06 19:31:46 2017 +0000"
      },
      "message": "Revert \"Revert \"audio policy: refactor getOutput() method\"\"\n\nThis reverts commit e198f26cae6f0b5c67340935c291363fdfff87f1.\n\nChange-Id: I65eb2905adb45c3809a499d85c1a8ef68cec7ed5\n"
    },
    {
      "commit": "e198f26cae6f0b5c67340935c291363fdfff87f1",
      "tree": "a08455486befa3d1ed0ebd6d3eb8257f51dcfb7d",
      "parents": [
        "e1dd2075105317ef8ff2b924423c88856e8fe8ea"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Nov 04 00:13:42 2017 +0000"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Nov 04 00:13:42 2017 +0000"
      },
      "message": "Revert \"audio policy: refactor getOutput() method\"\n\nThis reverts commit e1dd2075105317ef8ff2b924423c88856e8fe8ea.\n\nChange-Id: I4b7a2177af5bff5013ec4fe7fcdeb722f6b158c5\n"
    },
    {
      "commit": "e1dd2075105317ef8ff2b924423c88856e8fe8ea",
      "tree": "5c46fb22c92c574b84335fedca13f98e13434db8",
      "parents": [
        "9a60e1ad4762bd428ddc158e5a50641649698ec4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 03 09:26:21 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Nov 03 09:26:21 2017 -0700"
      },
      "message": "audio policy: refactor getOutput() method\n\ngetOtuput() was long replaced by getOutputForAttr() for the purpose of\nquerying an appropriate HAL output stream for a given playback use case.\nIt is now only used internally by AudioSystem to find an existing output\ncorresponding to a given stream type in limited cases.\n\nThis CL simplifies getOutput() by removing unused arguments and just\nreturning an output from already opened outputs.\nThis is in preparation of limiting access to audio policy binder calls\nto what is strictly needed by apps.\n\nTest: test main playback, capture and call use cases.\nChange-Id: I137c5526aa7e82303b43948326c77ec798f432f5\n"
    },
    {
      "commit": "9a60e1ad4762bd428ddc158e5a50641649698ec4",
      "tree": "a08455486befa3d1ed0ebd6d3eb8257f51dcfb7d",
      "parents": [
        "a75fdf5ff87a75a52e5d782d0169ca61fe39e95c",
        "5ff158fd499f581bdc1c3e91bbc03ce15eeeb77c"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Nov 01 15:47:39 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 01 15:47:39 2017 +0000"
      },
      "message": "Merge \"Fix integer sanitizer in audiopolicyservice.\""
    },
    {
      "commit": "5ff158fd499f581bdc1c3e91bbc03ce15eeeb77c",
      "tree": "75a48894b0cdb09735bd00750aa5caf03136ad32",
      "parents": [
        "ad764cd0e198a0ede404c53e2da5fd38ecb1e049"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Mon Oct 30 09:06:24 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Mon Oct 30 09:06:24 2017 -0700"
      },
      "message": "Fix integer sanitizer in audiopolicyservice.\n\nA size_t was being converted to a ssize_t after an intended overflow\nhad already occurred. This makes the conversion explicit.\n\nunsigned integer overflow: 0 - 1 cannot be represented in type \u0027unsigned\nint\u0027\n\nTest: Compiled with the change and checked the sanitizer output.\nBug: 30969751\nChange-Id: Ic15cc4b5d8295e14e3588ffa240830f7570dcaf3\n"
    },
    {
      "commit": "575bb3aa6358661addac9fa8204630a27056b129",
      "tree": "fd8a1ace3283d4c4094d76ac17a267667ba3241d",
      "parents": [
        "6086cd30a510375fb7d060467ef062f7ba697f3c"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Oct 27 16:49:20 2017 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Fri Oct 27 16:49:20 2017 -0700"
      },
      "message": "Config deserialization: allow negative gain\n\nAudio policy configuration deserializer did not support negative gains\nin audio profiles.\n\nAs those gains are most always attenuation (negative) this mean that\nprofile can not currently contain gains.\n\nTest: policy sysdump show negative gain\nTest: play music and assistant work on speaker, skylab\nBug: 68229318\nChange-Id: I7d72a0dd464aa77847d7e3ec0cfb4dcf7ac25b24\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "7c7124e693b20eafb4e0e86f996419c5597e0fbf",
      "tree": "6f6e1187fa69cd0eefed4a91a4deede6434ae699",
      "parents": [
        "c56f27b269800c1e8441908c3d564c63e0257f56"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Fri Oct 20 12:03:34 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Oct 23 11:42:29 2017 -0700"
      },
      "message": "APM: Avoid route change mute of isolated sounds\n\nTest: Notification and touch sound\nBug: 65497566\nChange-Id: I1ebe375dcac908ef3b9de18010366a59d041fdb2\n"
    },
    {
      "commit": "e156e8fff8b6523c82692ac3d75adb1005d36201",
      "tree": "9086e4f884f11a3842ccd8df53a3d87708d86b57",
      "parents": [
        "cadabe1d7243f9d78e50b7834842f9f86dbaab63",
        "f3b73f46c70a5a5530e1e628d59baf055c6ffd56"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 05 23:25:28 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 05 23:25:28 2017 +0000"
      },
      "message": "Soundtrigger service: fix cross deadlock with audio policy service am: 338e8ba374\nam: f3b73f46c7\n\nChange-Id: I8fdf045c57eb96e099d632f1a00b89bd6b3e62c5\n"
    },
    {
      "commit": "338e8ba374432cc4ee853f4fcefcf7bd7bae3bb9",
      "tree": "0f22e5975405924e3935701ae973ab3201f7524e",
      "parents": [
        "7b7f4e0f8bdf7542561ece15c4ffc2542fb7750d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 05 10:58:38 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Oct 05 11:56:38 2017 -0700"
      },
      "message": "Soundtrigger service: fix cross deadlock with audio policy service\n\nDo not hold Module mutex when calling into audio policy manager to\navoid cross deadlock with audio poicy service mutex: Audio policy manager\ncan call into sound trigger service with its mutex held in methods like\nstopInput().\n\nRegression introduced by fix for b/64340921 commit f759b8c4\n\nBug: 64340921\nBug: 67310830\nTest: repro steps in b/67310830\nChange-Id: Ie50b2e7c55fe9828a3fd8de6b31eb4a492791583\n"
    },
    {
      "commit": "92197f86b1184133107ee66314467f4676850ab8",
      "tree": "2e35076e4f171f06c8d3e441dd7b3784226f917f",
      "parents": [
        "5d81cf35fb108d6a2412f770087861ad4be5020c",
        "282ca695834f9cf9f63536cab2d6592b18fc011a"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 18 22:47:16 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 18 22:47:16 2017 +0000"
      },
      "message": "Fix various AAudio device selection issues am: ad2e7b902c\nam: 282ca69583\n\nChange-Id: I051d56560608444c47b5a827ef921b878e8f4a4e\n"
    },
    {
      "commit": "ad2e7b902c0432a0db40906a4b1f5b693ce439dd",
      "tree": "c4830cedbf63c641325e082fd30484a3bff58e49",
      "parents": [
        "b92c988ffc48f093ab8615896b02b8c8e10e19b2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Sep 14 20:06:42 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Sep 18 12:58:30 2017 -0700"
      },
      "message": "Fix various AAudio device selection issues\n\nBug: 65292224\n- Audio policy manager should not use an unavailable device when an explicit\nroute is requested. This causes a device selection made by a client to\nbecome sticky after device disconnection.\n\nBug: 64945845\n- Remove spurious device change callback occuring after registering a\nnew client to audio server by creating a specific configuration event\nfor client registration.\n- Do not keep strong references to device callback interfaces in\nAudioTrack, AudioRecord and AudioSystem.\n- Do not update selected device in AudioTrack and AudioRecord when\nnot active as the new device selection on the stream is because of other\nclients activity which is not relevant to an inactive client.\n\nBug: 65693340\n- Fix missing increment of SessionRoute ref count in getInputForAttr() for\nMMAP inputs\n\nTest: AAudio CTS tests\n\nChange-Id: I2a01b02e8b064d352004f6065495fd99aee55745\n"
    },
    {
      "commit": "7374d0182a525acb5dfe86f7dc7181c382502667",
      "tree": "9d0cb4d8b973272eee18f762fd458c27c6d10543",
      "parents": [
        "5e44deb3fa65eb3dd7c354d5b794240f8e70a88d",
        "2b7a321700c9588fa00f7d1de16713d14b168004"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Sep 14 16:57:52 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 14 16:57:52 2017 +0000"
      },
      "message": "Merge \"Fix aosp generic fallback configuration sample rate\" into oc-mr1-dev am: b26a52ce9e\nam: 2b7a321700\n\nChange-Id: I80394aadb1b95d0b164a78424c18dba7beb11e5f\n"
    },
    {
      "commit": "74c600844f656b4d449c967af1fa9ffbfedb7287",
      "tree": "104a7e62f5aa58afa4fedf4c613dafc6c9ec29b6",
      "parents": [
        "7ec98736f087a44d3f3045f304f7fc1ecb14b97f"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Sep 11 11:18:07 2017 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Wed Sep 13 16:50:09 2017 +0000"
      },
      "message": "Fix aosp generic fallback configuration sample rate\n\nThe configuration sample rate format is restricted by the XSD.\nIt is supposed to be a list of number separated by commas.\nIn the generic configuration they was a space after a comma.\n\nBug: 65535343\nTest: Following script:\n\nsetup() {\n    BUILD_ID\u003d$1\n    TARGET_PRODUCT\u003d$2\n    TARGET_BUILD_TYPE\u003d${3:-userdebug}\n    TARGET_ARCH\u003d${4:-arm64}\n    set +x\n\n    echo \"The following three variables can be overridden\" \\\n         \"by setting the corresponding environment variable\"\n    set -x\n    TEST_SUITES_TARGET\u003d${VTS_TEST_SUITES_TARGET:-test_suites_${TARGET_ARCH}}\n    BASE_TARGET\u003d${VTS_BASE_TARGET:-${TARGET_PRODUCT}-${TARGET_BUILD_TYPE}}\n    AOSP_TARGET\u003d${VTS_AOSP_TARGET:-aosp_${TARGET_ARCH}_ab-${TARGET_BUILD_TYPE}}\n    set +x\n\n    download() {\n        local target\u003d$1\n        local file\u003d$2\n        test -f $file ||\n            /google/data/ro/projects/android/fetch_artifact --bid $BUILD_ID --target $target $file ||\n            { local r\u003d$?; rm $file; return $r; }\n    }\n\n    echo \"Downloading\"\n    download $TEST_SUITES_TARGET \u0027android-vts.zip\u0027\n    download $BASE_TARGET \"${TARGET_PRODUCT}-img-${BUILD_ID}.zip\"\n    download $AOSP_TARGET \"aosp_${TARGET_ARCH}_ab-img-${BUILD_ID}.zip\"\n\n    echo \"Unzipping\"\n    rm -r system.img android-vts\n    unzip aosp_${TARGET_ARCH}_ab-img-$BUILD_ID.zip system.img\n    unzip android-vts.zip\n\n    echo \"Building vbmeta without verity\"\n    avbtool make_vbmeta_image --flag 2 --output vbmeta.img\n\n    set -x\n    adb reboot bootloader\n    fastboot update ${TARGET_PRODUCT}-img-$BUILD_ID.zip --skip-reboot\n    fastboot flash vbmeta vbmeta.img || echo \"Warning: Device does not support vbmeta\"\n    fastboot erase system\n    fastboot flash system system.img\n    fastboot erase metadata\n    fastboot -w\n    fastboot reboot\n    \n    echo \"Board setup\"\n    echo \"You may now start vts-tradefed with:\"\n    echo \u0027$ ANDROID_BUILD_TOP\u003d PATH\u003d\"$PWD:$PATH\" vts-tradefed\u0027\n}\nVTS_TEST_SUITES_TARGET\u003dtest_suites_arm64_fastbuild3d_linux setup 4327646 sailfish\n\nrunTest() {\n    ANDROID_BUILD_TOP\u003d PATH\u003d\"$PWD/android-vts/tools:$PATH\" vts-tradefed run commandAndExit vts --skip-all-system-status-check --primary-abi-only --skip-preconditions --module VtsHalAudioV2_0Target -t CheckConfig.audioPolicyConfigurationValidation\n}\nrunTest\n# Test fail as expected\nadb root ; adb disable-verity ; adb reboot ; adb wait-for-device ; adb root ; adb wait-for-device ; adb remount\n# Apply the patch\nadb shell sed -i -e \u0027s/8000, 16000/8000,16000/\u0027 /system/etc/primary_audio_policy_configuration.xml\nrutTest\n# Test succeed !\n\nChange-Id: I2a39606cd820b5cd27a640248bf692204ec2cd71\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "16965f958bd9803699724c85b58cb82a73482e0f",
      "tree": "82f828b0928be0f6dc13d33214967c393b82771f",
      "parents": [
        "6c6c69e249e3069c627cbf85538e0b1549f2cbf7",
        "0111e0fe975a4ff43e9133f4a4ab7805dc188325"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:46:53 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:46:53 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415 am: d08327d1a2 am: 74f84d987b am: 355a18f58d am: c8f3cf02eb am: 8cad724158 am: 122ec92c42 am: fa5a0cedea am: 19f0196da3\nam: 0111e0fe97\n\nChange-Id: Ica9a08d4629b753db96c3d455ed0bc585e48b67c\n"
    },
    {
      "commit": "0111e0fe975a4ff43e9133f4a4ab7805dc188325",
      "tree": "1de516e31ccace0773ae406bcd6ca4b82ee02d80",
      "parents": [
        "6cebbee7fcd45cce33b312e87e023173f6243225",
        "19f0196da3e386c2b73240870b3580468181903c"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:39:48 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:39:48 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415 am: d08327d1a2 am: 74f84d987b am: 355a18f58d am: c8f3cf02eb am: 8cad724158 am: 122ec92c42 am: fa5a0cedea\nam: 19f0196da3\n\nChange-Id: Ia47b4f3d752e74ba9c4bf02ccb74c33c9c5f9dd4\n"
    },
    {
      "commit": "3aedd716efab8780d046ca449c7bd8993c163d36",
      "tree": "a20bd0808b260b5e13d7be93175b8b18af001109",
      "parents": [
        "1612c4934e41aa4a881cecd76f6ae0a93c51797a",
        "fa5a0cedea92c922e695a9846148965a519eba53"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:38:24 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:38:24 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415 am: d08327d1a2 am: 74f84d987b am: 355a18f58d am: c8f3cf02eb am: 8cad724158 am: 122ec92c42\nam: fa5a0cedea\n\nChange-Id: I984f888d01b2ef8d79297c8fa258d9f213b9bd0b\n"
    },
    {
      "commit": "fa5a0cedea92c922e695a9846148965a519eba53",
      "tree": "98e36586f95b4c193d3e269c86f1303d433aed0f",
      "parents": [
        "337a3fbbfca38472641d88b6f659f37f6f6eb477",
        "122ec92c425ce898753d24edd4a43d634a630959"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:35:53 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:35:53 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415 am: d08327d1a2 am: 74f84d987b am: 355a18f58d am: c8f3cf02eb am: 8cad724158\nam: 122ec92c42\n\nChange-Id: Ifa8953ad8057a4d7dcddeae1793e00168ea90c58\n"
    },
    {
      "commit": "122ec92c425ce898753d24edd4a43d634a630959",
      "tree": "34f6484abb85cfc9b4eed000c1812f1f63be5fdb",
      "parents": [
        "099005643902d7a26bbefa5d316ea85cdd2d53bc",
        "8cad7241589b1473ee4dac3e4f2fdc559520da59"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:33:46 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:33:46 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415 am: d08327d1a2 am: 74f84d987b am: 355a18f58d am: c8f3cf02eb\nam: 8cad724158\n\nChange-Id: I1d0102e75a068bd6a2af21b9126b907703928db7\n"
    },
    {
      "commit": "c8f3cf02eb6c9f3246af40fd41872e3c79b3a689",
      "tree": "2cc06cc8a6ad6ad03692c0f6b8d561e57a7e595f",
      "parents": [
        "75612faf767b32cd4cdceded70e9bb2821890b0d",
        "355a18f58d63882c122db64702fdee66ce6fe857"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:24:48 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:24:48 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415 am: d08327d1a2 am: 74f84d987b\nam: 355a18f58d\n\nChange-Id: I5f3a24175f1aa70fb1f8d62a449685e9103cad18\n"
    },
    {
      "commit": "355a18f58d63882c122db64702fdee66ce6fe857",
      "tree": "6973b6a87b1525c63ef10b465d6c88f527a31355",
      "parents": [
        "6b936f54ff3e54367a2176f455c4fb8700c91d99",
        "74f84d987be37b971f02eb0b4d824599626a9936"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:21:26 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:21:26 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415 am: d08327d1a2\nam: 74f84d987b\n\nChange-Id: Ie2c1acfdc523c6774dd2f90e0b42a9f274731d57\n"
    },
    {
      "commit": "74f84d987be37b971f02eb0b4d824599626a9936",
      "tree": "3207477eda89f12135465200e6e9af1ce1a58b4e",
      "parents": [
        "c66d4db7053b3e132c9b378f34f8c667b4be3f71",
        "d08327d1a2782f7ff7b8d46da106f7cc63bbef44"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:17:17 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:17:17 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454 am: b995c31415\nam: d08327d1a2\n\nChange-Id: Ia8bdb1eae19450a3c6df255945a8cded55b15909\n"
    },
    {
      "commit": "d08327d1a2782f7ff7b8d46da106f7cc63bbef44",
      "tree": "4971eea7f1bd719b3ed02c651947be3adbc9ec80",
      "parents": [
        "177ee220b9b5051065c01c8b8ca9ce7d29fe29a0",
        "b995c31415c73917f9ab907ec2334e69e638feda"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:15:47 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:15:47 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev am: e472e51100 am: 0a8a0c4474 am: ae465be454\nam: b995c31415\n\nChange-Id: Iff099acd6ee928f37d2b91144a06d9c78a2a5aae\n"
    },
    {
      "commit": "0a8a0c44745624cfb19bfed21aa7a03ab47cdea3",
      "tree": "6c8ba7c40a8029f36445dc232fc89cd0fab1b53a",
      "parents": [
        "e77ea73939a337fc363814a34c15c076d32899c5",
        "e472e51100fca5ce7b5518480402ecc8d819ae39"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Mon Sep 11 22:10:43 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 22:10:43 2017 +0000"
      },
      "message": "Merge \"AudioPolicyService: Acquire mutex for SoundTriggerSession\" into mnc-dev\nam: e472e51100\n\nChange-Id: I82f359a057762b8b0fac97d137a2fb20083a518b\n"
    },
    {
      "commit": "0888c8495f51b7e1314bd24f5d7da8e738818dc1",
      "tree": "fff9cf38a16ca93862620e7b202a0cdf08b5a40d",
      "parents": [
        "53d72d1fe9add369b0dd35886e305d5d4ca30201",
        "469b161303e53d98b957e66247d013cc249b5b0e"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Aug 31 19:40:36 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 31 19:40:36 2017 +0000"
      },
      "message": "Merge \"APM: invert priority of sonification and enforced routing strategies\" into oc-mr1-dev am: 12907260c6\nam: 469b161303\n\nChange-Id: I6034bd3ba8b492bde1fcbb72ad5c153b8c06d635\n"
    },
    {
      "commit": "12907260c63d0d2a4710804a8c2d60417ea22b55",
      "tree": "d00765f3e89da673f6290bf59450b4921bba9e70",
      "parents": [
        "c4a226e8584b3d87c2503ddfcde336f63e7c6487",
        "178683baaf6fd23d80ce926cee103b3af8f9a9a8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Aug 31 16:59:20 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 31 16:59:20 2017 +0000"
      },
      "message": "Merge \"APM: invert priority of sonification and enforced routing strategies\" into oc-mr1-dev"
    },
    {
      "commit": "53d72d1fe9add369b0dd35886e305d5d4ca30201",
      "tree": "4a64dbaec5fb9e272b32b675b85b050ac0962d33",
      "parents": [
        "3f644e74f0974bae8a95b5e3a7624f6ebebb197c",
        "c986721b98341536b8f5cfd6f6f16ee4139faa30"
      ],
      "author": {
        "name": "Shuhei Miyazaki",
        "email": "Shuhei.Miyazaki@sony.com",
        "time": "Thu Aug 31 05:08:41 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 31 05:08:41 2017 +0000"
      },
      "message": "Merge \"Set output volume for routing device in startSource()\" into oc-mr1-dev am: c4a226e858\nam: c986721b98\n\nChange-Id: If40a0218b9d648cd5af71ef56b37661a4c4ec2b9\n"
    },
    {
      "commit": "178683baaf6fd23d80ce926cee103b3af8f9a9a8",
      "tree": "f2911079deed6c66d5d7b2f0445ffde014d4fafd",
      "parents": [
        "aba0e98b085cc613003bf42dbfe1ad0a3bb2348e"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Aug 30 18:07:06 2017 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Aug 30 18:23:14 2017 -0700"
      },
      "message": "APM: invert priority of sonification and enforced routing strategies\n\nOn device where the SONIFICATION (alarm, ringtone) strategy is\n  supported by SPEAKER_SAFE, prevent switching output devices\n  when the ENFORCED_AUDIBLE (shutter sound) strategy starts\n  by having SONIFICATION at a higher priority than\n  ENFORCED_AUDIBLE.\n\nTest: take photos while phone rings\nBug: 64386853\nChange-Id: I2f7bb45599bd51b2142611eefb84789a985e8841\n"
    },
    {
      "commit": "6fe70331b17a513765153afd7f895f807518bb91",
      "tree": "ac948ab97018c984ff14339584efb7282b6a5fbd",
      "parents": [
        "da071c34f3378a36d39ee0f89cdef4e1f98c3750"
      ],
      "author": {
        "name": "Shuhei Miyazaki",
        "email": "Shuhei.Miyazaki@sony.com",
        "time": "Mon Jul 31 15:21:28 2017 +0900"
      },
      "committer": {
        "name": "jiabin",
        "email": "jiabin@google.com",
        "time": "Wed Aug 30 17:55:21 2017 -0700"
      },
      "message": "Set output volume for routing device in startSource()\n\ngetNewOutputDevice selects a device by checking active strategy when\nstartSouce() is called. This behavior sometimes leads to set\nunsupported device volume index. For example, BT A2DP resume from combo\noutput. a2dp output only supports A2DP sound devices. If sonification\nstream is played via A2DP and Speaker during music playback, volume\nindex for speaker is applied as music volume when resume playback until\nsonification stream is closed. At this time, A2DP device is selected as\nrouting device, so volume and routed device does not match.\nTo avoid this situation, setting volume index from supported device\nin startSource().\n\nBug: 64053820\nTest: Check volume after alarm sound finish during music playback via BT.\nChange-Id: I71dae2c77d82abc0227ec45fc6c40bfd8f51c8c2\n"
    },
    {
      "commit": "faa10a64016300504691653f4beb451cb66ec197",
      "tree": "34cc0270e00b49fff76021e45874a89dd8d539f6",
      "parents": [
        "032d22e18a59941c9a03802a126a9577ab5d193b"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 25 15:52:05 2017 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Aug 28 14:50:58 2017 -0700"
      },
      "message": "Fix policy log typos\n\nTest: logs have space between values\nChange-Id: I9398d52db7e807e7d47254aacd6aaea33006070d\n"
    },
    {
      "commit": "5cd72d8b4f07ced237eaaa24c24ca90c5832bac7",
      "tree": "eb1a3e921face541ebff4911458604f5ce2cd381",
      "parents": [
        "13e4dad5f0eafbe1c46fcbde6da9b37fcd57e422"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Aug 24 11:12:56 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Thu Aug 24 12:33:03 2017 -0700"
      },
      "message": "audiopolicy: Fix null port handling in AudioOutputDescriptor\n\nAudioOutputDescriptor can be created with a null port\nfor a duplicated output descriptor (see\nAudioPolicyManager::checkOutputsForDevice). There used to be\na check for null port in getModuleHandle method prior to\nag/Ie90943ee3102cdb8adf89fdd2addd2c279b1e5bf. Restoring\nthe null check to prevent crash in getModuleHandle.\n\nBug: 63715585\nChange-Id: If3f9563c58cd44ac95c8e27e0560375a404e5db6\nTest: make\n"
    },
    {
      "commit": "c88e154ec556f0467f11484b493918ce5725227a",
      "tree": "02951151f5276279859d25bb73042cb2a2337c89",
      "parents": [
        "bb91aba1984efb6de49474b72c8d860bbb80efce",
        "6f6607e027a1eba4a96cd674e4ed9d6cd5f28bdf"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 17 02:28:27 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 17 02:28:27 2017 +0000"
      },
      "message": "Merge \"soundtrigger: require RECORD_AUDIO permission for DSP hotword\" into oc-mr1-dev am: 78ae57b319\nam: 6f6607e027\n\nChange-Id: I131494c57a4ddfa616a5260fb1855263b59901fc\n"
    },
    {
      "commit": "3dff3e5a29391e7e4cee251dbc4a01c0b48a8a8f",
      "tree": "c82b02b0837272b7d6b64bf22dae9be9fd849bdf",
      "parents": [
        "a5ec8b0ec9c94fd9474fae1d1d1dc798ae6c4d2d"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Aug 16 12:42:01 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Aug 16 12:42:01 2017 -0700"
      },
      "message": "audiopolicy: Remove AUDIO_POLICY_TEST code\n\nThis code isn\u0027t used, should be removed.\n\nBug: 63715585\nChange-Id: Ie19e31d790fff08f3a99e4e3f2a8c8dacb840e07\nTest: make\n"
    },
    {
      "commit": "7504b9eb4561df88550f874cf0ce95b6f4d09927",
      "tree": "0991a83bf78a67170a0707d8e300578c9c46727f",
      "parents": [
        "2c8c51d4aeffc4d561a67b06d20fff67d9a5a5aa"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 15 18:17:26 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 16 08:29:05 2017 -0700"
      },
      "message": "soundtrigger: require RECORD_AUDIO permission for DSP hotword\n\nCheck android.permission.RECORD_AUDIO permission in addition to\nandroid.permission.CAPTURE_AUDIO_HOTWORD for DSP hotword operations\nas those require access to device microphone.\n\nBug: 62265680\nTest: check \"OK Google\" detection with and without DSP\nChange-Id: Icba2520331164bcd618e91916ca701e677d419b8\n"
    },
    {
      "commit": "f759b8c4bcce2d3b3d45551be461f04297fa2bd3",
      "tree": "6b1f8510c36843e66653474c5fb06399e2e13566",
      "parents": [
        "a0388f92c70e4321ebfe3c41e08c454d63937998"
      ],
      "author": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Aug 15 12:48:54 2017 -0700"
      },
      "committer": {
        "name": "Andy Hung",
        "email": "hunga@google.com",
        "time": "Tue Aug 15 19:55:28 2017 +0000"
      },
      "message": "AudioPolicyService: Acquire mutex for SoundTriggerSession\n\nTest: Enable always on GSA\nBug: 64340921\nChange-Id: I05d8c680be97ba4c92081425596addcc038f7dda\n"
    },
    {
      "commit": "0aeaeb7b221e8d2800f669f339a99f6852b94a42",
      "tree": "988ae3dad249585950d2af53627c5e8c277a1c98",
      "parents": [
        "0826fea636eed742dd5ffd41f91781c55e913c8b",
        "5c90ca291eac32a868d2434b7e63d98ee2115ee9"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Aug 08 00:29:53 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 08 00:29:53 2017 +0000"
      },
      "message": "Merge \"APM: cap earpiece voice in call by voice volume\" into oc-dr1-dev am: a7a28931f1 am: 15cda5e5a6\nam: 5c90ca291e\n\nChange-Id: I31e5e909c8ce325da7d7e98d0508b3021b86ba6c\n"
    },
    {
      "commit": "5c90ca291eac32a868d2434b7e63d98ee2115ee9",
      "tree": "59b5a3596f5bf3db4676b32437948a03e4a50e03",
      "parents": [
        "2e2d634c661c80e6c70a11d3e428d07bed9378d2",
        "15cda5e5a6c3271ad569268483e77294fcddbf8e"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Aug 08 00:26:23 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 08 00:26:23 2017 +0000"
      },
      "message": "Merge \"APM: cap earpiece voice in call by voice volume\" into oc-dr1-dev am: a7a28931f1\nam: 15cda5e5a6\n\nChange-Id: I0b93ed61504fccc3fac8d5b3e0e7b7b88062ee2f\n"
    },
    {
      "commit": "4d519c7becf4891a7aafc3032097a088e72aeda3",
      "tree": "0c42cabe444d37776472c9505eb41de719ea9d33",
      "parents": [
        "d75cc634761653810e3b0d5aea951b5a59f47f83",
        "a7a28931f13d2612bc6e8742d470364f93bdfe03"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Aug 08 00:23:55 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 08 00:23:55 2017 +0000"
      },
      "message": "Merge \"APM: cap earpiece voice in call by voice volume\" into oc-dr1-dev\nam: a7a28931f1\n\nChange-Id: Id1c78125fdb8c0b7cdf0352d59661aa8e02d7664\n"
    },
    {
      "commit": "719a987e9d8cb54bc7da74941a8bfacbc844900d",
      "tree": "4632b96c5136184ffb14b243fbb44d713ca4a98a",
      "parents": [
        "ddef08e7254cd593881711b9f812e062676b4b3d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sat Aug 05 13:51:35 2017 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Aug 07 12:25:57 2017 -0700"
      },
      "message": "APM: cap earpiece voice in call by voice volume\n\nThe volume curves between AUDIO_STREAM_VOICE_CALL and other streams\n  used during a call on AUDIO_DEVICE_OUT_EARPIECE can vary greatly,\n  particularly when the volume curve is used to tune the voice signal\n  going to earpiece, not just to select a desired curve shape.\nThis can be problematic during a call as a sound playing on a different\n  stream may be assigned a much louder attenuation value than that\n  of voice.\nThe fix consists in comparing the attenuation computed for earpiece\n  to the one for VOICE_CALL, and using the lowest value (with a 3dB\n  headroom).\n\nTest: see bug\nBug: 63395386\nBug: 63976807\nBug: 38194285\n\nChange-Id: Ia55e05e2a1d6fc55d45147f4234b693a905714cc\n"
    },
    {
      "commit": "1b034d6e861a64e9157c00746e33e1158031d7ea",
      "tree": "a2573e32e8626faf7f2ae824430a9b4d151e0ab4",
      "parents": [
        "4ae3491dea79c23102a1c63ad4a9ec524a9f9aa3",
        "6e4c5c6e30eac783c6642470b2ab24be20a8f534"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 28 15:32:51 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 28 15:32:51 2017 +0000"
      },
      "message": "Merge \"Align policy xml example with xsd\""
    },
    {
      "commit": "6e4c5c6e30eac783c6642470b2ab24be20a8f534",
      "tree": "dbeec24c046a305fb7d3480ae048dd755dae631e",
      "parents": [
        "ee67de173a49d97d805c228d2e03a2b3f786a9e1"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Jul 27 16:15:25 2017 -0700"
      },
      "committer": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu Jul 27 16:19:52 2017 -0700"
      },
      "message": "Align policy xml example with xsd\n\nThe xml example contained an intel extension (htmi HAL) that is no longer\nallowed after trebbleisation.\n\nAdditionally a route was specified twice which is not allowed.\n\nBug: 38184704\nTest: xmllint --noout --xinclude --schema hardware/interfaces/audio/2.0/config/audio_policy_configuration.xsd frameworks/av/services/audiopolicy/config/audio_policy_configuration.xml\nChange-Id: I56c3a38c840bf7757f4667cec103ad212531b071\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "58091c2e6c4bb9cec306cbfb47518d65af431200",
      "tree": "63aee582ecbb100d7f0de516581f984a57718500",
      "parents": [
        "b636c4fd77c445887eb785f3d94c2aa080572b13",
        "72ad4b91d6ece44b7967080c44695227c6789147"
      ],
      "author": {
        "name": "David Lin",
        "email": "dtwlin@google.com",
        "time": "Wed Jul 26 18:03:27 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 26 18:03:27 2017 +0000"
      },
      "message": "audiopolicy: do not check for mode_in_communication for voip flags\nam: 72ad4b91d6\n\nChange-Id: I742803dd00cdd5bcbdf23b99bb6b415f3f118def\n"
    },
    {
      "commit": "72ad4b91d6ece44b7967080c44695227c6789147",
      "tree": "9024805bd48a40a394aaca464ba4ec16b1efc738",
      "parents": [
        "db5beef4cf663e01dcdd65e953dc136b06ac81f4"
      ],
      "author": {
        "name": "David Lin",
        "email": "dtwlin@google.com",
        "time": "Tue Jul 25 23:46:47 2017 -0700"
      },
      "committer": {
        "name": "David Lin",
        "email": "dtwlin@google.com",
        "time": "Tue Jul 25 23:46:47 2017 -0700"
      },
      "message": "audiopolicy: do not check for mode_in_communication for voip flags\n\nSome VoIP clients may choose to open the streams as soon as the phone\nstate is set to MODE_RINGTONE to allow lower start latency when the call\nis connected. This patch removes the unnecessary check conditions for\nMODE_IN_COMMUNICATION since the stream type is sufficient indicator for\nsetting the flags for VoIP calls.\n\nBug: 62782025\nTest: manual voip mo and mt calls tests\nChange-Id: Idc7e1b6f33921580c0937dee71b2b2105cbd31eb\nSigned-off-by: David Lin \u003cdtwlin@google.com\u003e\n"
    },
    {
      "commit": "9584601561ad1d3b4fc1b0035c3f3e5bbd3e499e",
      "tree": "0f3268ed27ec2f843c79924a4b779afa06fc2b98",
      "parents": [
        "6c3359f522fa5c528d7eef5deaaf0d2c9c365089"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 17 10:34:02 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Mon Jul 17 10:56:37 2017 -0700"
      },
      "message": "Append additional owners to projects\n\nThis releaves reviewing burden from the frameworks/av owners.\nNote that the lists of owners are inherited from the parent\ndirectories thus the people listed in these files are owners\n*in addition* to people listed in frameworks/av/OWNERS,\nand frameworks/av/{media|services}/OWNERS.\n\nChange-Id: I5e2db1c40cb807b906b2701fe446c874a8d19983\nTest: not needed\n"
    },
    {
      "commit": "cb4dae216758d9e9a28050f65097f1ce905c03e9",
      "tree": "4c3c49679384d70006675e9e06c7e8e8117e206c",
      "parents": [
        "0acb3209107802e2ab116f8374aab886579729bb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 01 19:39:32 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 12 12:17:33 2017 -0700"
      },
      "message": "aaudio: indicate client UID and PID to audio flinger\n\nImplement correct indication of client UID and PID to audio flinger\nfor AAudio MMAP streams in both exclusive mode and shared mode.\n- Add start/stop client methods on MMAP streams used only when the MMAP\nstream is in AAudio service and carries a mix of shared streams.\n- Add \"In Service\u0027\" indication from \"client\" side to AAudioServiceStreamMMAP\nso that the behavior can be adapted accordingly.\n- Modify logic on audio flinger side with regard to mmap tracks and\naudio HAL stream activity:\n  - use same audio session for all clients on a same stream to match\n  audio policy logic to share same direct output stream for clients on same\n  session. This is also more consistent with current volume and effect\n  handling as all MMAP  clients sharing the same output stream have the\n  same volume and use case.\n  - start/stop the HAL when the stream is started/stopped with the initial client\n  handle (returned when the stream is opened) but do not create a track.\n  AAudioService implementation will always send an additional start command before\n  first client starts and a stop command after last client stops,\n  in both shared and exclusive mode.\n  - start/stop a track only if the start/stop stream command is received\n  with a handle different from the initial handle.\n- Allow more than one active client from the same UID on a MMAP input in audio policy.\n\nBug: 62950008\nTest: verify playback and capture in mmap mode\nMerged-In: I86151bbb637ff172d2fd5f813056eab13a7bcd3c\nChange-Id: I86151bbb637ff172d2fd5f813056eab13a7bcd3c\n"
    },
    {
      "commit": "a54f1283fdd9adbd64ecca4e14af56aaa0e8c825",
      "tree": "cdadd19276119f775480482778c2df15a6ae264f",
      "parents": [
        "20e6916035865710b7a30ac7f2eac1311e2c2e70"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 01 19:39:32 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 11 18:21:40 2017 -0700"
      },
      "message": "aaudio: indicate client UID and PID to audio flinger\n\nImplement correct indication of client UID and PID to audio flinger\nfor AAudio MMAP streams in both exclusive mode and shared mode.\n- Add start/stop client methods on MMAP streams used only when the MMAP\nstream is in AAudio service and carries a mix of shared streams.\n- Add \"In Service\u0027\" indication from \"client\" side to AAudioServiceStreamMMAP\nso that the behavior can be adapted accordingly.\n- Modify logic on audio flinger side with regard to mmap tracks and\naudio HAL stream activity:\n  - use same audio session for all clients on a same stream to match\n  audio policy logic to share same direct output stream for clients on same\n  session. This is also more consistent with current volume and effect\n  handling as all MMAP  clients sharing the same output stream have the\n  same volume and use case.\n  - start/stop the HAL when the stream is started/stopped with the initial client\n  handle (returned when the stream is opened) but do not create a track.\n  AAudioService implementation will always send an additional start command before\n  first client starts and a stop command after last client stops,\n  in both shared and exclusive mode.\n  - start/stop a track only if the start/stop stream command is received\n  with a handle different from the initial handle.\n- Allow more than one active client from the same UID on a MMAP input in audio policy.\n\nBug: 62950008\nTest: verify playback and capture in mmap mode\nChange-Id: I86151bbb637ff172d2fd5f813056eab13a7bcd3c\n"
    },
    {
      "commit": "b64230e6f42e87a84725d9934d9e25c638d761b1",
      "tree": "92d4d93a541195da3719b35474b89e89ebfaa8ab",
      "parents": [
        "ab5c38a7ac2ba27e680a95cac6c0b9d61c08771b",
        "9f2b9d3a001834c1e1990ac8e2a8717ad38c7eee"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 11 18:02:26 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 11 18:02:26 2017 +0000"
      },
      "message": "Merge \"audio policy: fix audio device properties loading\" into oc-dr1-dev am: ed0f8f425d\nam: 9f2b9d3a00\n\nChange-Id: Ieb6145d4120f3197a7b841fccc9250f92db5f384\n"
    },
    {
      "commit": "83efe1c6bd6fa206560377960358ec95aa6a1c41",
      "tree": "5dd69d5f069370fffc9ae73660f9c8641017b636",
      "parents": [
        "15fb0ee6bd752ccde960b961dd1e9113c37e5f8b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 09 16:51:08 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sun Jul 09 16:51:08 2017 -0700"
      },
      "message": "audio policy: fix audio device properties loading\n\nOnly load removable digital device properties from streams\nwith dynamic profiles. This avoids aggregating properties from\nother stream profiles when the device can also be reached via those\nprofiles.\n\nBug: 38423100\nTest: connect various USB devices and check properties are loaded\nproperly.\n\nChange-Id: Ie5eed397d3a475848a3d423d18ffae9d55917ac4\n"
    },
    {
      "commit": "4fb615c2774c04b4d36d8f9d88dd4aa291296288",
      "tree": "6ce96b0a49b22c440b7b70be61a862e214d8d960",
      "parents": [
        "8f5520a7378e7af0fcc6a8b693f29a6ddffbbbcd"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Mon Jun 26 10:28:13 2017 -0700"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Fri Jul 07 17:20:47 2017 -0700"
      },
      "message": "Audio policy: Parse new audio policy configuration file\n\nFor treble, files shared between vendor and system must have a schema.\nAs .conf did not support such feature, transition to an xml based\nconfiguration file.\n\nThis new format has several changes:\n - library path are now relative to the standard effect directories\n - effect parameters are no longer supported (nobody used them)\n\nTest: Check that the dumpsys is similar than with the legacy formal\nBug: 37492580\nChange-Id: Ie6bd84ed88124991600fa238cc13714874eefad9\nSigned-off-by: Kevin Rocard \u003ckrocard@google.com\u003e\n"
    },
    {
      "commit": "e049eb2dc2b2ccd5f307791fa2534abb8896884e",
      "tree": "54dcd4d06b7afc1756e93ab04c9574c1786c4218",
      "parents": [
        "9063fa7966a6d531595d8ada46d7667c569fc308",
        "f64d1add0be1a9e401fe682bf24fad8e226ef1a4"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sat Jul 01 01:21:12 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jul 01 01:21:12 2017 +0000"
      },
      "message": "Merge \"Audio routing: Fix notification routing during A11y playback\" into oc-dr1-dev am: 53f4c18b5a\nam: f64d1add0b\n\nChange-Id: I125d4754063892f23ce470a0f72114e0fa7d8782\n"
    },
    {
      "commit": "94c26c06d8f1c3821cc0c7994e233874f5c8ea84",
      "tree": "7fc9ce5c37fe9c0508cc957f7f5419a55f9f2488",
      "parents": [
        "f3ffd1ced8c4709388f8ed5c9a49284f36aa5b97"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jun 30 14:50:01 2017 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Fri Jun 30 14:50:01 2017 -0700"
      },
      "message": "Audio routing: Fix notification routing during A11y playback\n\nWhen notifications are played, the audio policy checks if media\n  is playing for deciding which devices will play it. In the\n  absence of media, the notification is duplicated on speaker\n  and headset. With media playing, the notification routing\n  is set to that of the media strategy.\nThe bug is observed during A11y playback on headset with a\n  notification playing: A11y is playing on headset, but the\n  device can\u0027t play the notification on speaker + headset at\n  the same time, resulting in the notification playing in and\n  out based on the A11y playback in headset.\nThe fix is to also consider A11y activity when routing\n  notification playback (under STRATEGY_SONIFICATION_RESPECTFUL).\n  This improves the UX the notification is not missed, and\n  doesn\u0027t cut in and out.\n\nTest: play Talkback on headset, receive notification at the same time.\nBug: 62907561\nChange-Id: Ib924ec41cb7e16d6f2686d8615facba08e256ade\n"
    },
    {
      "commit": "04e4bc8ca4c1eca1e71e6d1a7f6d2c776eff487b",
      "tree": "8cd088c7ade38cfaeb717612f5dc58e352ce53d9",
      "parents": [
        "8b43fd31a39afd8365243f175d1b98f4b79c0a21",
        "105ab1ea0c5ae02278cf18243984b9fa0b49d2fa"
      ],
      "author": {
        "name": "Chris Thornton",
        "email": "thorntonc@google.com",
        "time": "Thu Jun 29 03:14:54 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jun 29 03:14:54 2017 +0000"
      },
      "message": "Merge \"prevent preempting overlapping sound trigger audio streams\" into oc-dr1-dev am: 81ccb8fec9\nam: 105ab1ea0c\n\nChange-Id: Ied9d5c45fadbeac3db295eff7faec837f0538c14\n"
    },
    {
      "commit": "81ccb8fec9eab4a05e94fc4a4f6dacc8348804e1",
      "tree": "9b60e65102b42e1056a62d842a52327a5a18fa25",
      "parents": [
        "5f1b1e7c18583905ce2348b64dbb7fee9ca01824",
        "2b8646482dc74cf1afef50a812691600aa229090"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jun 29 03:03:44 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 29 03:03:44 2017 +0000"
      },
      "message": "Merge \"prevent preempting overlapping sound trigger audio streams\" into oc-dr1-dev"
    },
    {
      "commit": "7202f80d8b6a9ef21de6328ce118b464c0293176",
      "tree": "deeaee161b8393d0e5351807aa61f18eb4a2c040",
      "parents": [
        "5a6dfd54b25216c02f0863e86de0560e51dc33a5",
        "a2c2cbc00c92efe1b1b12e4d2e2e8a30c518689f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jun 28 21:51:00 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jun 28 21:51:00 2017 +0000"
      },
      "message": "Merge \"Audio policy: fix volume change on DEVICE_OUT_SPEAKER_SAFE\" into oc-dr1-dev am: 888fd19ac4\nam: a2c2cbc00c\n\nChange-Id: I4f50dfc7bdff3805831b54cb7105b3a65fca280b\n"
    },
    {
      "commit": "2b8646482dc74cf1afef50a812691600aa229090",
      "tree": "6cb571d5fa9e5b1e8620b06ae1b91d586b99423b",
      "parents": [
        "66feec9ff333bbf0b2590f1b321fbf880e1405a4"
      ],
      "author": {
        "name": "Chris Thornton",
        "email": "thorntonc@google.com",
        "time": "Tue Jun 27 21:26:07 2017 -0700"
      },
      "committer": {
        "name": "Chris Thornton",
        "email": "thorntonc@google.com",
        "time": "Wed Jun 28 13:34:47 2017 -0700"
      },
      "message": "prevent preempting overlapping sound trigger audio streams\n\nIf the sound trigger hal indicates that concurrent_capture is true, the\nstream should not be preempted when when another sound trigger stream is\nopened.\n\nTest: Verify that multiple streams are not closed when triggered by\ndifferent engines.\nBug: 35956563\n\nChange-Id: I3d5df136403e47fcc1280f63b25216f326b74d6f\n"
    },
    {
      "commit": "b7fdce6e1654e573c25ec19fa6dfeb79dc4e6597",
      "tree": "aa0e6704fa21540f3e1d359c41583f2e30074a1b",
      "parents": [
        "66feec9ff333bbf0b2590f1b321fbf880e1405a4"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jun 27 19:38:42 2017 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Jun 27 19:38:42 2017 -0700"
      },
      "message": "Audio policy: fix volume change on DEVICE_OUT_SPEAKER_SAFE\n\nWhen changing stream volume, compare given device and current device\n  for stream both as filtered through Volume::getDeviceForVolume.\nThis behavior matters for Android devices playing notifications and\n  ringtones on the AUDIO_DEVICE_OUT_SPEAKER_SAFE, which is filtered\n  out for volumes (see Volume.h for getDeviceForVolume() method).\n\nTest: play a ringtone and modify volume with vol keys\nBug: 63004956\nChange-Id: I139099f34e0ab091fd0ea761c75949656549f77a\n"
    },
    {
      "commit": "66feec9ff333bbf0b2590f1b321fbf880e1405a4",
      "tree": "ebb1043a6aaf48ac109eb7022a999ae4bc31f0cc",
      "parents": [
        "d4ef5f1eafa099eb40e68a1dfc7b701e4a8d0b1a",
        "2ac7694396640821f6723672e25b2372220bf060"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 27 01:18:39 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 27 01:18:41 2017 +0000"
      },
      "message": "Merge \"Set initial audio device for AudioTrack and AudioRecord\" into oc-dr1-dev"
    },
    {
      "commit": "2ac7694396640821f6723672e25b2372220bf060",
      "tree": "0cd5a8c58898fcb145f4b879ea64aeb260266ce2",
      "parents": [
        "ffd80b92df8521dd28ab5fd08b1098a58cb280e8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 22 17:17:09 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 26 16:29:08 2017 +0000"
      },
      "message": "Set initial audio device for AudioTrack and AudioRecord\n\nBug: 62090113\nTest: run AAudio test and verify a valid device is reported just\nafter opening playback or capture streams in legacy mode.\n\nMerged-In: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\n\nChange-Id: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\n"
    },
    {
      "commit": "9ae8c597d9a0c8cedc4047fc4716d7361453f6ab",
      "tree": "4c8824f15e744d82243f4a3caab1d67b208afd47",
      "parents": [
        "5af194cf79f280034430f2f65b02a89f261dbbc8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 22 17:17:09 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jun 26 08:04:19 2017 -0700"
      },
      "message": "Set initial audio device for AudioTrack and AudioRecord\n\nBug: 62090113\nTest: run AAudio test and verify a valid device is reported just\nafter opening playback or capture streams in legacy mode.\n\nChange-Id: Ic8be42e1735690eb00c811ef0cb8b5abb36172d6\n"
    },
    {
      "commit": "16aca446109043656d9b14105a716ea6c2fed967",
      "tree": "13cf4fdf26552b57ce61520b05a9d353f572a0b9",
      "parents": [
        "f470b52e20e6672cc38b5da2cd7349edaf1ba359",
        "ac4e42982d4537732b30e71c9a00ba0077944984"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Jun 22 22:39:48 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 22 22:40:06 2017 +0000"
      },
      "message": "Merge \"Monitoring of recording: uid of recording session\""
    },
    {
      "commit": "cb815c959f4d1a23ae212b06e30f7813c35f4f1f",
      "tree": "e885e8af6a8ac5f2153e883aff40d8e0041a5f83",
      "parents": [
        "ffd80b92df8521dd28ab5fd08b1098a58cb280e8",
        "851d3ff273dcab849a617586c50a2e1392edefed"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 21 20:50:20 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 21 20:50:21 2017 +0000"
      },
      "message": "Merge \"APM: Allow VOIP_TX input selection\" into oc-dr1-dev"
    },
    {
      "commit": "851d3ff273dcab849a617586c50a2e1392edefed",
      "tree": "13712e14c4f0b3965d91070c9e6d167574b6865f",
      "parents": [
        "5dd96d24e898701f6a37e0b49ef105d2bd637133"
      ],
      "author": {
        "name": "Haynes Mathew George",
        "email": "hgeorge@codeaurora.org",
        "time": "Mon Jun 19 20:01:57 2017 -0700"
      },
      "committer": {
        "name": "David Lin",
        "email": "dtwlin@google.com",
        "time": "Tue Jun 20 11:44:17 2017 -0700"
      },
      "message": "APM: Allow VOIP_TX input selection\n\nSet flag to select VOIP_TX input profile if input source\nis VOICE_COMMUNICATION and phone state is MODE_IN_COMMUNICATION\n\nBug: 62495679\nTest: Hangout call\nChange-Id: I3b1bb9fbcdd5687ebb002facf0684983333e9a53\n"
    },
    {
      "commit": "10c94f7a68644aed1a008469fba48ec2b246ca8d",
      "tree": "95b66c3b105bf71e3390ea11a5156acae6ef4cd4",
      "parents": [
        "053359a38a8b4993732e3283990594e2b92d9426",
        "aeeb179f5e1c99dba6a02ac4a21e43163568760b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 20 17:10:15 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 20 17:10:16 2017 +0000"
      },
      "message": "Merge \"audio policy config: add USB_HEADSET device\" into oc-dr1-dev"
    },
    {
      "commit": "ac4e42982d4537732b30e71c9a00ba0077944984",
      "tree": "1774e0b1cba1a173c29aaca85d4147e178c69346",
      "parents": [
        "c407bd4b32b99cab78e773ac51a57f49cd0985ea"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Thu Dec 22 11:39:31 2016 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Jun 19 18:03:28 2017 +0000"
      },
      "message": "Monitoring of recording: uid of recording session\n\nPass uid of recording session along with other existing information\n  in the recording monitoring callback.\nDefine new structure, record_client_info, to group uid (new),\n  session id (existing) and source (existing) and simplify\n  method signatures and marshalling code.\n\nTest: run cts -m CtsMediaTestCases -t android.media.cts.AudioRecordingConfigurationTest#testAudioManagerGetActiveRecordConfigurations\nBug 62579636\n\nChange-Id: I18f66d7e55640a21f31021416a12a3e8094c3690\n"
    },
    {
      "commit": "aeeb179f5e1c99dba6a02ac4a21e43163568760b",
      "tree": "eaa9fc5c592c5bdd1e481944412811794311abb2",
      "parents": [
        "af69fd92a9d67c4761f7d9dd723670eafd29a494"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jun 17 15:28:14 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jun 17 15:28:14 2017 -0700"
      },
      "message": "audio policy config: add USB_HEADSET device\n\nAdd definitions and routes for USB_HEADSET device\nin default audio policy configuration for USB HAL.\n\nBug: 36220140\nTest: check music/video playback, voice/VoIP\ncalls, OK google and  Camcorder with and without USB headset\n\nChange-Id: Ic62b38fc9628c8ec44ddca17e82419be4f1e0fea\n"
    },
    {
      "commit": "ac9cef5f3288df6e65cb4488e2615cc3c07b70d0",
      "tree": "3369bd965510d5c3e8ea6257bb1368a677e535c6",
      "parents": [
        "3c1ba2cd6276ee4304ba082fbe40fd870c1746c8"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 09 15:46:26 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 15 10:42:59 2017 -0700"
      },
      "message": "audio policy: add method to query dB attenuation for a certain volume and device\n\nBug: 62492975\nTest: Check dB value returned to AudioService when stream volume is\nchanged\n\nChange-Id: I8d0a945e9151d230b93634e4b9e57bab68f44fa8\n"
    },
    {
      "commit": "ab714031437084d599076952c9f81383964cf588",
      "tree": "cdb4a06fb3f1bb4db08455a7ccc1e460f90bfaa6",
      "parents": [
        "76229a8e733bdfb00c929fb57cc25ed99a25041a",
        "18ffb8304a8bf73c12c03948d1781f2ef1311243"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 14 08:22:44 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jun 14 08:22:44 2017 +0000"
      },
      "message": "Merge \"added audio policy configuration files for generic target\" into oc-dev\nam: 18ffb8304a\n\nChange-Id: Ida8122c4e1fc5361ec1fea833fde8953454c2793\n"
    },
    {
      "commit": "87977a493692e39f42547b986175b68d83c57d10",
      "tree": "f1dd7eb5d747de7da2c1c723d022984c6ed89e03",
      "parents": [
        "1d32e9f8e5ba52d69c6319270c8a63a995d2c4f2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Feb 20 14:31:42 2017 -0800"
      },
      "committer": {
        "name": "SzuWei Lin",
        "email": "szuweilin@google.com",
        "time": "Wed Jun 14 02:14:38 2017 +0000"
      },
      "message": "added audio policy configuration files for generic target\n\nBug: 62524944\nTest: make\nChange-Id: Ifa8b523d3f1f09dfb6f8e88fab12e170b628dfb5\n"
    },
    {
      "commit": "2ee7aab4a39139a86a24ca14f718eb20a1b355db",
      "tree": "1a7501567d6af64aa958f26453ee9360833bfd4a",
      "parents": [
        "bcbc56bfd43e071cf8b199e9e6dfc835d1f29ab6"
      ],
      "author": {
        "name": "YOUNG HO CHA",
        "email": "ganadist@gmail.com",
        "time": "Thu May 25 23:16:51 2017 +0900"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu May 25 11:26:52 2017 -0700"
      },
      "message": "Android.mk: remove $TOP in LOCAL_C_INCLUDES\n\nTest: make systemimage\n\nChange-Id: I5f83786afe3f2c65819b127b041cb74fc4c989ac\nSigned-off-by: YOUNG HO CHA \u003cganadist@gmail.com\u003e\n"
    },
    {
      "commit": "e0d4f6479b411fd89284d437ad46d96e3046cd55",
      "tree": "1e040c01b6189f10192801cfa4c72ff5070b3a7f",
      "parents": [
        "579b69e88270bcd3d7b128edb1c75b94722425b0",
        "6e8a79b46a590c564aac6713090144ee61f27f37"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 19 20:21:30 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri May 19 20:21:30 2017 +0000"
      },
      "message": "Merge \"audio policy manager: do not reapply same forced usage\" into oc-dev am: 6aa929c929\nam: 6e8a79b46a\n\nChange-Id: If8531ecf1314ab5a8df5818f23537f370614fb77\n"
    },
    {
      "commit": "6e8a79b46a590c564aac6713090144ee61f27f37",
      "tree": "28c45e84bd631ade1d61efc0a2dc09e14c6d5273",
      "parents": [
        "baa89cc5bc8d7e7ddb9f9c9a3c259df59f7c5c99",
        "6aa929c9296180abac526f594137f18c38620c62"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 19 20:19:41 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri May 19 20:19:41 2017 +0000"
      },
      "message": "Merge \"audio policy manager: do not reapply same forced usage\" into oc-dev\nam: 6aa929c929\n\nChange-Id: I24d35bbf3c08960aefad9f18c243871ba508b7fe\n"
    },
    {
      "commit": "6aa929c9296180abac526f594137f18c38620c62",
      "tree": "c88153335c7554d23aaf8979479dc541d41796a6",
      "parents": [
        "9d4d8f81f01c5dcc8cfdd667136ead8056180afc",
        "8dc87a60e69f462e0382d025c335e45699025b48"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 19 20:13:19 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 19 20:13:20 2017 +0000"
      },
      "message": "Merge \"audio policy manager: do not reapply same forced usage\" into oc-dev"
    },
    {
      "commit": "17037f9916134959ab6d5aa150389ac7e961f0f0",
      "tree": "109340c83e59f31f85d1ccbe4c9a7aaf739408d9",
      "parents": [
        "b5768ba3268deb18d291a1743d1580449b463e69",
        "be08ba90dfb26f7b7425d19a5db90c09756e7d17"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu May 18 21:50:41 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 18 21:50:41 2017 +0000"
      },
      "message": "Merge \"audiopolicy: Two session can not offload concurrently\" into oc-dev am: 46260c3742\nam: be08ba90df\n\nChange-Id: I9d36d30d9310e94d6c452d11f03d4cc6525e67f4\n"
    },
    {
      "commit": "be08ba90dfb26f7b7425d19a5db90c09756e7d17",
      "tree": "752336f46e794bea2c522f9d3f0e20e11f76363f",
      "parents": [
        "65d96f774d9a01fd54fd2b3fbfaf21036ba321e6",
        "46260c37420f82a6e664b740365b2537767e5a76"
      ],
      "author": {
        "name": "Kevin Rocard",
        "email": "krocard@google.com",
        "time": "Thu May 18 21:41:43 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 18 21:41:43 2017 +0000"
      },
      "message": "Merge \"audiopolicy: Two session can not offload concurrently\" into oc-dev\nam: 46260c3742\n\nChange-Id: I26ab34add9e632eddec417fc7b042387dc4d1c0a\n"
    },
    {
      "commit": "8dc87a60e69f462e0382d025c335e45699025b48",
      "tree": "55e44b41c7092969c031dc32c189a0b232625595",
      "parents": [
        "38ad5e22885a4b02d0429ecb4c1b4446373a3551"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue May 16 19:00:40 2017 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 17 14:38:47 2017 -0700"
      },
      "message": "audio policy manager: do not reapply same forced usage\n\nSkip systematic audio path and volume reevaluation when the new\nforced configuration for the selected usage is the same as current one.\n\nBug: 38276985\nTest: try repro steps in b/38276985. Check regressions with audio routing for music\nand calls over speaker, headset and Bluetooth\n\nTest: connect BT A2DP and launch CNN\nChange-Id: Id43a5270c666065e099d02d9e52de86b20cb8039\n"
    }
  ],
  "next": "84c621e937c82c25b5b6d633edee17616e08a61a"
}
